OpenWRT: reguły iptables zostaną automatycznie usunięte

3

W mojej instancji OpenWRT dodałem reguły iptables do tabeli filtrów wejściowych, ale problem polega na tym, że po włączeniu systemu stwierdziłem, że reguły zostały usunięte. Co mogę zrobić, aby reguły nie były usuwane automatycznie.

kaio
źródło
1
Jakiej dystrybucji używasz?
amccormack
dlaczego dodałeś swoje ifconfigwyjście? To nie powinno być konieczne w przypadku tego pytania.
amccormack
Skontaktuj się z administratorem systemu i poproś go o pomoc, zamiast zadawać dwa razy to samo pytanie. Jeśli nie wiesz, kto modyfikuje pliki iptables, nie możemy ci pomóc. Możesz także spróbować użyć Google .
@amccormack Dodaję do oprogramowania układowego openwrt pakiet iptables-save i iptables-store Jak mogę pomóc mi dodać regułę do tabeli. dzięki

Odpowiedzi:

6

OpenWRT

Istnieje kilka sposobów edycji iptables w OpenWRT.

Bezpośrednie użycie iptables

OpenWRT uruchomi zawartość /etc/firewall.userprzy starcie. Jest to skrypt powłoki, więc będzie wyglądał mniej więcej tak:

root@OpenWrt:/etc# cat firewall.user 
# This file is interpreted as shell script.
# Put your custom iptables rules here, they will
# be executed with each firewall (re-)start.

iptables -A PREROUTING -t nat -i eth0 -p tcp --dport 22 -j DNAT --to 10.1.1.1:2222
iptables -A FORWARD -p tcp -d 10.1.1.1 --dport 2222 -j ACCEPT

Testowanie /etc/firewall.user

Po edycji /etc/firewall.userpliku prawdopodobnie będziesz chciał go przetestować. Wynika to z faktu, że możesz zobaczyć błędy, jeśli wykonasz skrypt podczas uruchamiania. Aby przetestować skrypt:

  • Najpierw usuń wszelkie reguły, na które skrypt ma wpływ. A iptables -Fzadziała, ale może usunąć reguły, których nie musisz testować.
  • Następnie uruchom bash /etc/firewall.user. Chcesz sprawdzić, czy w skrypcie są jakieś błędy. Jeśli otrzymasz jakieś wiadomości, prawdopodobnie masz literówkę.
  • Następnie uruchom iptables -Li upewnij się, że reguły, które chcesz dodać, zostały poprawnie dodane.
  • Na koniec uruchom ponownie urządzenie. W tym momencie powinieneś oczekiwać, że reguły zostaną dodane tak jak były ostatnim razem.

iptables-save i iptables-restore

OpenWRT (wraz z innymi dystrybucjami), ma iptables-savepolecenie. Po uruchomieniu iptables-save > myrulesbędziesz mieć plik, który zawiera wszystko, co jest konieczne do przywrócenia reguł iptables.

iptables-restore < myrules przeczyta plik reguł iptables i zastosuje je.

Trzeba więc utworzyć myrulesplik, a następnie uruchomić iptables-restore < myrulespodczas uruchamiania. Możesz uruchomić podczas uruchamiania, edytując /etc/rc.localplik.

Więcej informacji na temat iptables-savei iptables-restoremożna znaleźć tutaj .

Użyj składni konfiguracji zapory OpenWRT

/etc/config/firewallPlik może być edytowany, jak również. Zapora ogniowa „zapewnia interfejs konfiguracji, który wyodrębnia się z systemu iptables, zapewniając uproszczony model konfiguracji, który jest odpowiedni do większości zwykłych celów, umożliwiając jednocześnie użytkownikowi samodzielne dostarczenie potrzebnych reguł iptables”.

Więcej informacji można znaleźć tutaj

Inne dystrybucje

Debian lub Ubuntu

Jeśli korzystasz z Debiana lub Ubuntu, możesz wypróbować iptables-persistentpakiet.

sudo apt-get install iptables-persistent

Powyższe spowoduje zainstalowanie usługi. Następnie zapisze twoje reguły w /etc/iptables/rules.v4i /etc/iptables/rules.v6.

Możesz uzyskać więcej informacji o Ubuntu 12.04 tutaj , Ubuntu 14.04 tutaj .

CentOS

Jeśli korzystasz z CentOS, możesz zapisać reguły, uruchamiając:

/sbin/service iptables save 

który zapisze zawartość iptables do /etc/sysconfig/iptables. Poprzednia treść /etc/sysconfig/iptableszostanie zapisana w /etc/sysconfig/iptables.save.

Możesz uzyskać więcej informacji tutaj .

amccormack
źródło
dzięki @amccormack, ale używam disto jest openwrt
dzięki amccormack zrobiłem tak, jak powiedziałeś, ale po ponownym uruchomieniu stwierdzam, że reguły zostały usunięte. i zmieniam eth0 na eth0.2.
czy wprowadziłeś tam swoje zasady? Po prostu umieściłem tam kilka przykładowych reguł, aby pokazać, dokąd zmierzają. Dodam notatkę o testowaniu.
amccormack
@ amccormack Mam projekt, który jest aplikacją polegającą na dodawaniu reguł z tabeli w interfejsie filtru internetowego, dlatego utworzyłem skrypt, który pozwala dodawać reguły do ​​tabeli filtrów w następujący sposób: try: os.system ("iptables -D INPUT -m mac-source --mac "+ mac +" j DROP ") oprócz wyjątku e: print e os.system (" iptables INPUT -m mac-source --mac "+ mac +" j DROP ") zrobiłem nie dodawaj reguł ręcznie.
Tak długo, jak używasz os.system, dlaczego nie użyć go dwa razy. Uruchom także os.system("echo iptables -D INPUT -m mac-source --mac" + mac + "j DROP") >> /etc/firewall.user. Uważaj również na ryzyko rażącego wstrzykiwania poleceń podczas os.systemużywania, upewnij się, że biała lista zawiera dobre znaki.
amccormack