Kiedy ustawię iptables, aby przekierował port, jak go cofnąć?

13

Czytałem na wielu stronach, jak używać iptables do przekierowania jednego portu na drugi w Linuksie. Na przykład przekierowanie portu 80 na 8080 wyglądałoby tak ...

iptables -t nat -A PREROUTING -p tcp --dport 80 -j REDIRECT --to 8080

Martwię się, co jeśli zmienię zdanie? Nigdzie nie czytałem, który daje składnię do poprawienia. Zakładam, że istnieje (prosty?) Sposób, aby to zrobić, ale jestem zbyt nowy w systemie Linux, aby intuicyjnie wymyślić, jak przywrócić pierwotne zachowanie portu 80 bez ponownej instalacji systemu operacyjnego.

Syndog
źródło

Odpowiedzi:

6

Możesz użyć opcji -D, aby usunąć iptables z reguł. Na przykład

Najpierw wypisz łańcuch, z którego chcesz usunąć regułę, użyj --line-numbers

sudo iptables -L RH-Firewall-1-INPUT  -n --line-numbers

Chain RH-Firewall-1-INPUT (2 references)
num  target     prot opt source               destination
1    ACCEPT     tcp  --  0.0.0.0/0            0.0.0.0/0           tcp dpt:80
2    ACCEPT     all  --  0.0.0.0/0            0.0.0.0/0
3    ACCEPT     icmp --  0.0.0.0/0            0.0.0.0/0           icmp type 255
4    ACCEPT     esp  --  0.0.0.0/0            0.0.0.0/0
5    ACCEPT     ah   --  0.0.0.0/0            0.0.0.0/0
6    ACCEPT     udp  --  0.0.0.0/0            224.0.0.251         udp dpt:5353
7    ACCEPT     udp  --  0.0.0.0/0            0.0.0.0/0           udp dpt:631
8    ACCEPT     tcp  --  0.0.0.0/0            0.0.0.0/0           tcp dpt:631
9    ACCEPT     all  --  0.0.0.0/0            0.0.0.0/0           state RELATED,ESTABLISHED
10   ACCEPT     tcp  --  0.0.0.0/0            0.0.0.0/0           state NEW tcp dpt:22
11   REJECT     all  --  0.0.0.0/0            0.0.0.0/0           reject-with icmp-host-prohibited

Aby usunąć wiersz 6

sudo iptables -D RH-Firewall-1-INPUT 6
sudo iptables -L RH-Firewall-1-INPUT  -n --line-numbers

Chain RH-Firewall-1-INPUT (2 references)
num  target     prot opt source               destination
1    ACCEPT     tcp  --  0.0.0.0/0            0.0.0.0/0           tcp dpt:80
2    ACCEPT     all  --  0.0.0.0/0            0.0.0.0/0
3    ACCEPT     icmp --  0.0.0.0/0            0.0.0.0/0           icmp type 255
4    ACCEPT     esp  --  0.0.0.0/0            0.0.0.0/0
5    ACCEPT     ah   --  0.0.0.0/0            0.0.0.0/0
6    ACCEPT     udp  --  0.0.0.0/0            0.0.0.0/0           udp dpt:631
7    ACCEPT     tcp  --  0.0.0.0/0            0.0.0.0/0           tcp dpt:631
8    ACCEPT     all  --  0.0.0.0/0            0.0.0.0/0           state RELATED,ESTABLISHED
9    ACCEPT     tcp  --  0.0.0.0/0            0.0.0.0/0           state NEW tcp dpt:22
10   REJECT     all  --  0.0.0.0/0            0.0.0.0/0           reject-with icmp-host-prohibited

Jeśli konfiguracja iptables zapisywane w pliku nie zapomnij, aby zaktualizować plik ( iptables-save, service iptables saveetc.)

Iain
źródło
23

Jeśli piszesz skrypty, łatwiej je usunąć z definicji:

Przykład:

Dodać:

iptables -t nat -A PREROUTING -p tcp --dport 80 -j REDIRECT --to 8080

Zwróć uwagę na -A ? to znaczy dodaj .

Usuwać:

iptables -t nat -D PREROUTING -p tcp --dport 80 -j REDIRECT --to 8080

Zwróć uwagę na -D ? to znaczy usuń .

bithavoc
źródło
To było bardzo przydatne!
MadPhysicist
3

http://linux.die.net/man/8/iptables :

ahem

iptables -L, --list [chain]
    List all rules in the selected chain. If no chain is selected, all chains are listed. As every other iptables command, it applies to the specified table (filter is the default), so NAT rules get listed by

    iptables -t nat -n -L

    Please note that it is often used with the -n option, in order to avoid long reverse DNS lookups. It is legal to specify the -Z (zero) option as well, in which case the chain(s) will be atomically listed and zeroed. The exact output is affected by the other arguments given. The exact rules are suppressed until you use

    iptables -L -v

...

iptables -D, --delete chain rule-specification
iptables -D, --delete chain rulenum
    Delete one or more rules from the selected chain. There are two versions of this command: the rule can be specified as a number in the chain (starting at 1 for the first rule) or a rule to match. 
Cześć71
źródło
0

Odpowiedź bithavoc jest prawidłowa. Ponieważ nadal nie mam wystarczającej liczby punktów, aby móc to skomentować, dodaję dodatkowe informacje jako nową odpowiedź:

Dodaj nową regułę przekierowania

$ sudo iptables -t nat -D PREROUTING -p tcp --dport 443 -j REDIRECT --to 5671

Lista reguł NAT

$ sudo iptables -t nat -L
Chain PREROUTING (policy ACCEPT)
target     prot opt source               destination         
REDIRECT   tcp  --  anywhere             anywhere             tcp dpt:https redir ports 5671

Chain INPUT (policy ACCEPT)
target     prot opt source               destination         

Chain OUTPUT (policy ACCEPT)
target     prot opt source               destination         

Chain POSTROUTING (policy ACCEPT)
target     prot opt source               destination     

-t natPrzełącznik jest konieczne, aby móc routingu zasad.

Usuń regułę

$ sudo iptables -t nat -D PREROUTING -p tcp --dport 443 -j REDIRECT --to 5671
[ec2-user@ip-172-31-27-46 ~]$ sudo iptables -t nat -L
Chain PREROUTING (policy ACCEPT)
target     prot opt source               destination         

Chain INPUT (policy ACCEPT)
target     prot opt source               destination         

Chain OUTPUT (policy ACCEPT)
target     prot opt source               destination         

Chain POSTROUTING (policy ACCEPT)
target     prot opt source               destination         
Vaibhaw
źródło