ฉันโฮสต์บริการ HTTP และ HTTPS พิเศษบนพอร์ต 8006 และ 8007 ตามลำดับ ฉันใช้ iptables เพื่อ "เปิดใช้งาน" เซิร์ฟเวอร์ เช่นกำหนดเส้นทางพอร์ต HTTP และ HTTPS ขาเข้า:
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
งานนี้มีเสน่ห์เหมือนกัน อย่างไรก็ตามฉันต้องการสร้างสคริปต์อื่นที่ปิดการใช้งานเซิร์ฟเวอร์ของฉันอีกครั้ง; เช่นคืนค่า iptables กลับสู่สถานะก่อนที่จะรันบรรทัดด้านบน อย่างไรก็ตามฉันมีเวลายากในการหาไวยากรณ์เพื่อลบกฎเหล่านี้ สิ่งเดียวที่ดูเหมือนว่าใช้งานได้คือการล้างข้อมูลทั้งหมด:
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
แต่จะลบกฎ iptables อื่น ๆ ที่ไม่พึงประสงค์
-I
แทน-A
สำหรับACCEPT
บรรทัด นี่เป็นเพราะโดยทั่วไปแล้วบรรทัดสุดท้าย (สำหรับINPUT
เชน) เป็นDROP
หรือREJECT
และคุณต้องการให้กฎของคุณมาก่อนหน้านั้น-A
วางกฎใหม่หลังจากกฎล่าสุดขณะที่-I
วางกฎไว้ที่จุดเริ่มต้น