Saya hosting layanan HTTP dan HTTPS khusus di masing-masing port 8006 dan 8007. Saya menggunakan iptables untuk "mengaktifkan" server; yaitu untuk merutekan port HTTP dan HTTPS yang masuk:
iptables -A INPUT -i eth0 -p tcp --dport 80 -j ACCEPT
iptables -A INPUT -i eth0 -p tcp --dport 443 -j ACCEPT
iptables -A INPUT -i eth0 -p tcp --dport 8006 -j ACCEPT
iptables -A INPUT -i eth0 -p tcp --dport 8007 -j ACCEPT
iptables -A PREROUTING -t nat -i eth0 -p tcp --dport 80 -j REDIRECT --to-port 8006
iptables -A PREROUTING -t nat -i eth0 -p tcp --dport 443 -j REDIRECT --to-port 8007
iptables -A OUTPUT -t nat -d 127.0.0.1 -p tcp --dport 80 -j REDIRECT --to-ports 8006
iptables -A OUTPUT -t nat -d 127.0.0.1 -p tcp --dport 443 -j REDIRECT --to-ports 8007
Ini bekerja seperti pesona. Namun saya ingin membuat skrip lain yang menonaktifkan server saya lagi; yaitu mengembalikan iptables ke keadaan sebelum menjalankan baris di atas. Namun saya mengalami kesulitan mencari tahu sintaks untuk menghapus aturan-aturan ini. Satu-satunya hal yang tampaknya berhasil adalah flush lengkap:
iptables -F
iptables -X
iptables -t nat -F
iptables -t nat -X
iptables -t mangle -F
iptables -t mangle -X
iptables -P INPUT ACCEPT
iptables -P FORWARD ACCEPT
iptables -P OUTPUT ACCEPT
Tapi itu juga akan menghapus aturan iptables lain yang tidak diinginkan.
-I
daripada-A
untukACCEPT
garis. Ini karena biasanya, baris terakhir (untukINPUT
rantai misalnya) adalah aDROP
danREJECT
dan Anda ingin aturan Anda datang sebelum itu.-A
menempatkan aturan baru setelah aturan terakhir, sementara-I
menempatkannya di awal.