Debian 'abaikan' /etc/network/if-pre-up.d/iptables

12

Saya ingin aturan iptables saya dimuat secara otomatis saat startup. Menurut wiki di Debian ini dapat dilakukan dengan menempatkan skrip dengan nama iptables di /etc/network/if-pre-up.d/ Jadi saya lakukan, seperti inilah tampilannya:

cat /etc/network/if-pre-up.d/iptables 
#!/bin/sh
/sbin/iptables-restore < /etc/firewall/iptables.rules
/sbin/ip6tables-restore < /etc/firewall/ip6tables.rules

Skrip ini berfungsi: jika saya menjalankannya sebagai root, aturan firewall saya akan diterapkan. Tetapi saat reboot tidak ada aturan firewall. Apa yang saya lakukan salah?

Atas permintaan: / etc / network / interfaces (Saya tidak menyentuh file ini)

user@DebianVPS:~$ cat /etc/network/interfaces 
# This file describes the network interfaces available on your system
# and how to activate them. For more information, see interfaces(5).

# The loopback network interface
auto lo
iface lo inet loopback

# The primary network interface
allow-hotplug eth0
iface eth0 inet dhcp
Cheiron
sumber
Bagaimana Anda mengkonfigurasi antarmuka Anda? Bisakah Anda menambahkan / etc / network / interfaces file?
bayindirh
Harap dicatat bahwa /etc/network/if-pre-up.d/tidak berfungsi lagi di Ubuntu 18.04, lihat serverfault.com/questions/914493/…
BurninLeo

Jawaban:

6

Gunakan iptables-persistentpaket untuk tugas ini.

Tetapkan aturan Anda di /etc/iptables/rules.4dan /etc/iptables/rules.6dan jangan lupa untuk mengaktifkan layanan (menggunakan update-rc.d, chkconfigatau alat favorit Anda.

dawud
sumber
Pada instalasi paket, debconf menanyakan apakah Anda ingin menyimpan aturan saat ini. Jadi, jika Anda sudah memiliki aturan yang ditetapkan, Anda cukup menginstal paket. Jika Anda ingin mengubahnya nanti, cukup dpkg-reconfigure iptables-persistent.
Braiam
10

Masalah ini mungkin terkait dengan bit izin skrip Anda. Apa output dari perintah ini? Apakah ini termasuk file Anda?

run-parts --test /etc/network/if-pre-up.d
eppesuig
sumber
run-parts --test /etc/network/if-pre-up.d memberikan /etc/network/if-pre-up.d/iptables, yang tampaknya merupakan output yang benar bagi saya?
Cheiron
1
ok, jadi, Anda mungkin harus memeriksa kapan skrip Anda dijalankan. Tambahkan baris pertama seperti ini (date; set; echo) >> /tmp/iptables-cmd.log, sehingga Anda akan melihat kapan ia dipanggil. Saya selalu mencetak lingkungan untuk memeriksa setiap argumen yang lewat di sana. Anda mungkin memutuskan untuk menjalankan iptables hanya setelah antarmuka eth * terakhir selesai, alih-alih menjalankannya setiap kali antarmuka ditambahkan.
eppesuig
3
Sekarang Anda memposting Anda interfacessaya melihat bahwa Anda tidak menggunakan ifupdown, tetapi manajer jaringan. Inilah sebabnya mengapa skrip Anda tidak dipanggil. Silakan periksa dokumen ini: ubuntuforums.org/showthread.php?t=1084308
eppesuig
Nah itu menjelaskan banyak hal. Saya pikir sekarang saya hanya akan pergi dengan jawaban dawud, yang tampaknya berfungsi baik.
Cheiron
3
run-parts agak pilih-pilih tentang nama skrip dan memiliki titik dalam nama file menyebabkan skrip diabaikan pada saat startup dalam kasus saya.
alexm
0

Mengapa tidak melakukannya dengan cara mudah?

1 - buat aturan iptables Anda

2 - jalankan "sudo apt-get install iptables-persistent" itu akan menanyakan apakah Anda ingin menyimpan aturan dan mengembalikannya setelah boot.

3- Anda DILAKUKAN

alex
sumber
1
Duplikat dari jawaban yang diterima
Cheiron