Dlaczego reguły iptables znikają podczas ponownego uruchamiania systemu Debian?

48

Dodaję tę zasadę:

sudo iptables -t nat -A OUTPUT -d a.b.c.d -p tcp \
       --dport 1723 -j DNAT --to-destination a.b.c.d:10000
  1. Po ponownym uruchomieniu reguły komputera są usuwane. Dlaczego?
  2. Co mogę zrobić, aby reguły pozostały niezmienione?
Jhonathan
źródło

Odpowiedzi:

45

W iptables nie ma opcji, która sprawi, że twoje reguły będą trwałe. Ale możesz użyć iptables-savei iptables-restorewypełnić swoje zadanie.

Najpierw dodaj regułę iptable za pomocą podanego polecenia.

Następnie zapisz reguły iptables do jakiegoś pliku, na przykład /etc/iptables.confużywając następującego polecenia:

$  iptables-save > /etc/iptables.conf

Dodaj następujące polecenie, /etc/rc.localaby przeładować reguły przy każdym ponownym uruchomieniu.

$  iptables-restore < /etc/iptables.conf
pradeepchhetri
źródło
15
Na Debianie jest iptables-persistentpakiet, który to zrobi.
bahamat,
7
Umieszczenie go jest raczej złym pomysłem, rc.localponieważ między uruchomieniem usług a zaporą obowiązywałaby luka w oknie. Wolę używać pre-up haka do interfejsu pętli zwrotnej w /etc/network/interfacescelu przezwyciężenia tego.
poige
@poige: Zgadzam się w 100%, rc.localmoże mieć zamierzony efekt, ale w tej sytuacji jest to kludge.
JM Becker,
3
@bahamat: Instalacja tego pakietu jest najlepszym rozwiązaniem, zasługuje na swoją własną odpowiedź.
JM Becker,
1
@TechZilla: Gotowe.
bahamat
53

(Ponieważ zasugerowano, aby zrobić z tego własną odpowiedź ...)

Podczas instalacji Debiana iptables-persistent.

Pakiet zostanie automatycznie załadowany /etc/iptables/rulespodczas rozruchu.

Za każdym razem, gdy modyfikujesz swoje reguły, biegnij, /sbin/iptables-save > /etc/iptables/rulesaby je zapisać. Możesz również dodać to do sekwencji zamykania, jeśli chcesz.

bahamat
źródło
12
Istnieją dwa różne pliki zasada: /etc/iptables/rules.v4i /etc/iptables/rules.v6dla IPv4 i IPv6 odpowiednio. Jeśli chcesz, aby tabela dotyczyła obu rodzajów połączeń, musisz zapisać ją w obu plikach reguł.
PetaspeedBeaver
11
Nie dodawaj go do sekwencji zamykania! Jeśli podczas wprowadzania zmian / konfiguracji zbankrutujesz swoje zasady, przynajmniej stary dobry restart uruchomi się z powrotem do poprzednio działającego stanu.
VertigoRay
1

Po instalacji iptables-persistentpowyżej możesz również zapisać reguły za pomocą następującego krótszego polecenia w systemie Ubuntu 16.04+: sudo netfilter-persistent save

Można je również przywrócić do poprzedniego stanu, w którym je zapisałeś: sudo netfilter-persistent reload

Robin Wilson
źródło