Wykonałem ten samouczek, aby skonfigurować reguły IP na Ubuntu 12.04. Wszystko działało poprawnie podczas instalacji - ale teraz wprowadziłem zmiany w zaporze, które nie utrzymują się po ponownym uruchomieniu. Nie rozumiem, dlaczego tak jest. Oto demonstracja tego, jak korzystam z iptables-persistent. Co ja robię źle?
$ sudo service iptables-persistent start
* Loading iptables rules... * IPv4... * IPv6...
$ sudo iptables -L //shows a certain rule
$ iptables -D INPUT ... //command successfully drops the rule
$ sudo iptables -L //shows rule has been deleted
$ sudo service iptables-persistent restart
* Loading iptables rules... * IPv4... * IPv6... [ OK ]
$ sudo iptables -L //rule is back
iptables
iptables-persistent
bernie2436
źródło
źródło
iptables -D INPUT
nie ma tej regułysudo
, czy na pewno zgłasza ona sukces? Czy zachowanie zmienia się, jeśli uruchomisz je w sobiesudo
?Odpowiedzi:
iptables-persistent
nie działa w ten sposób. Ponowne uruchomienieiptables-persistent
„usługi” nie przechwytuje bieżącego stanu iptables i nie zapisuje go; wystarczy przywrócić reguły iptables, które zostały zapisane podczas ostatniej konfiguracji pakietu.Aby skonfigurować
iptables-persistent
, musisz powiedzieć o swoim obecnym zestawie reguł iptables.Jednym ze sposobów osiągnięcia tego jest:
Lub, równoważnie,
iptables-persistent
pakiet zapewnia również:(Musisz odpowiedzieć „tak” na pytania dotyczące tego, czy zapisać reguły).
Następnie, przy następnym
iptables-persistent
uruchomieniu / ponownym uruchomieniu, oczekiwane zestawy reguł iptables zostaną załadowane.źródło
Bardzo prostym sposobem zapisania bieżących reguł iptables jest użycie polecenia:
sudo service netfilter-persistent save
Korzystając z powyższego, który działa przynajmniej w Ubuntu po zainstalowaniu pakietu
netfilter-persistent
(iiptables-persistent
), nie trzeba ręcznie uruchamiać poleceń iptables ani ponownie konfigurować pakietu (jak sugeruje to nawet zaakceptowana odpowiedź powyżej).źródło
sudo service netfilter-persistent save
czysudo service netfilter-persistent save .
? (Kropka na końcu.)Nie to
DROP
oznacza lub nie działa. Odman iptables
:Więc dodałeś nową regułę. Może skutecznie zastępować dowolną liczbę innych reguł, ale reguły te nadal istnieją.
Podczas sprawdzania takich rzeczy (twoich
iptables -L
wyników) wolałbym jegrep "string unique to this rule"
raczej karmić niż używać twoich oczu. Jest to łatwiejsze i szybsze, a także mniej podatne na błędy.Jeśli chcesz usunąć regułę, użyj
-D
przełącznika; strona podręcznika opisuje dwie formy:źródło
-D
oznacza „usuń”, a nie „DROP” Użycie terminu „DROP” oznacza coś innego niż cel skoku podczas mówienia, coiptables
jest mylące jak diabli.Jak wyjaśniono w @ steven-poniedziałek , możesz zapisać zestaw reguł samodzielnie we właściwym katalogu (mianowicie:)
/etc/iptables/rules.v{4,6}
.Jednak @OpenITeX ma rację: lepsze jest wywoływanie
save
akcjiservice netfilter-persistent
.Na dzień dzisiejszy (w 18.10) iptables-save jest wbudowany, ale nie
iptables-persistent
jest zainstalowany. Stąd katalog wtyczek wywoływany przez jest pusty, a usługa wypisuje, że zestaw reguł został zapisany, a nie był.service netfilter-persistent
TLDR: zainstaluj
iptables-persistent
i sprawdź, czy katalog/usr/share/netfilter-persistent/plugins.d
wtyczek zawiera wtyczki.Oto jak to wymyśliłem:
Następnie sprawdź
/usr/sbin/netfilter-persistent
skrypt, zauważ, że wywołuje on zewnętrzne skrypty:Potem zauważyłem, że
/usr/share/netfilter-persistent/plugins.d
było puste.źródło
Zainstaluj iptables-persistent:
zapisz reguły po dokonaniu pożądanych zmian:
źródło