Sırasıyla 8006 ve 8007 numaralı bağlantı noktalarında özel HTTP ve HTTPS hizmetleri barındırıyorum. Sunucuyu "etkinleştirmek" için iptables kullanıyorum; yani gelen HTTP ve HTTPS bağlantı noktalarını yönlendirmek için:
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
Bu bir cazibe gibi çalışır. Ancak sunucumu yeniden devre dışı bırakan başka bir komut dosyası oluşturmak istiyorum; iptables'ı yukarıdaki satırları çalıştırmadan önceki durumuna geri yükleyin. Ancak bu kuralları kaldırmak için sözdizimini bulmakta zorlanıyorum. Çalışıyor gibi görünen tek şey tam bir sifon:
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
Ancak bu, istenmeyen diğer iptables kurallarını da silecektir.
-I
yerine-A
ilişkinACCEPT
hatları. Bunun nedeni, tipik olarak, son satırın (INPUT
örneğin zincir için) birDROP
veya olmasıdırREJECT
ve kuralınızın bundan önce gelmesini istersiniz.-A
yeni kuralı son kuralın arkasına koyarken-I
, başlangıçta koyar.