Khi tôi đặt iptables để định tuyến lại một cổng, làm cách nào để hoàn tác nó?


13

Tôi đã đọc trên nhiều trang web cách sử dụng iptables để định tuyến lại một cổng này sang cổng khác trong Linux. Chẳng hạn, việc định tuyến lại cổng 80 đến 8080 sẽ trông như thế này ...

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

Mối quan tâm của tôi là, nếu tôi đổi ý thì sao? Tôi đã không đọc bất cứ nơi nào đưa ra cú pháp để sửa nó. Tôi giả sử có một cách (đơn giản?) Để thực hiện, nhưng tôi còn quá mới với Linux để tìm ra cách khôi phục cổng 80 về hành vi ban đầu mà không cần cài đặt lại hệ điều hành.

Câu trả lời:


6

Bạn có thể sử dụng tùy chọn -D để iptables để xóa các quy tắc khỏi chuỗi của bạn. Ví dụ

Đầu tiên hãy liệt kê chuỗi bạn muốn xóa quy tắc khỏi, sử dụng - số dòng

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

Để xóa dòng 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

Nếu bạn đã lưu cấu hình iptables của mình trong một tệp, đừng quên cập nhật tệp ( iptables-save, service iptables savev.v.)


23

Nếu bạn đang viết kịch bản, việc xóa theo định nghĩa sẽ dễ dàng hơn:

Thí dụ:

Thêm:

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

Chú ý -A ? nó có nghĩa là thêm .

Để xóa:

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

Chú ý -D ? nó có nghĩa là xóa .


Điều này rất hữu ích!
MadPhysicist

3

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

ôi

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. 

0

Câu trả lời của bithavoc là câu trả lời đúng. Vì tôi vẫn không có đủ điểm để nhận xét về nó, tôi sẽ thêm thông tin bổ sung dưới dạng câu trả lời mới:

Thêm quy tắc định tuyến lại mới

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

Liệt kê các quy tắc 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     

Việc -t natchuyển đổi là cần thiết để có thể định tuyến quy tắc.

Xóa quy tắc

$ 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         
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.