Setelah saya mengatur iptables untuk mengubah rute suatu port, bagaimana cara membatalkannya?

13

Saya telah membaca di banyak situs bagaimana menggunakan iptables untuk mengubah rute satu port ke yang lain di Linux. Misalnya, mengubah rute port 80 ke 8080 akan terlihat seperti ini ...

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

Kekhawatiran saya adalah, bagaimana jika saya berubah pikiran? Saya belum membaca di mana saja yang memberikan sintaks untuk memperbaikinya. Saya berasumsi ada cara (sederhana?) Untuk melakukannya, tapi saya terlalu baru di Linux untuk secara intuitif mencari cara mengembalikan port 80 ke perilaku aslinya tanpa menginstal ulang OS.

Syndog
sumber

Jawaban:

6

Anda bisa menggunakan opsi -D ke iptables untuk menghapus aturan dari rantai Anda. Sebagai contoh

Pertama-tama daftarkan rantai yang ingin Anda hapus aturannya, gunakan --line-number

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

Untuk menghapus baris 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

Jika Anda memiliki konfigurasi iptables yang disimpan dalam file jangan lupa untuk memperbarui file ( iptables-save, service iptables savedll.)

Iain
sumber
23

Jika Anda menulis skrip, lebih mudah untuk menghapus dengan definisi:

Contoh:

Menambahkan:

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

Perhatikan -A ? itu berarti menambah .

Untuk menghapus:

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

Perhatikan -D ? itu berarti hapus .

bithavoc
sumber
Ini sangat berguna!
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. 
Halo71
sumber
0

Jawaban oleh bithavoc adalah yang benar. Karena saya masih tidak memiliki cukup poin untuk mengomentarinya, saya menambahkan informasi tambahan sebagai jawaban baru:

Tambahkan aturan reroute baru

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

Daftar Aturan 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     

The -t natswitch diperlukan untuk dapat aturan routing.

Hapus Aturannya

$ 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
sumber