ทำไมกฎ iptables จึงหายไปเมื่อรีสตาร์ทระบบ Debian ของฉัน


48

ฉันเพิ่มกฎนี้:

sudo iptables -t nat -A OUTPUT -d a.b.c.d -p tcp \
       --dport 1723 -j DNAT --to-destination a.b.c.d:10000
  1. เมื่อรีสตาร์ทกฎคอมพิวเตอร์จะถูกลบ ทำไม?
  2. ฉันจะทำอย่างไรเพื่อให้กฎยังคงมีอยู่

คำตอบ:


45

ไม่มีตัวเลือกใน iptables ซึ่งจะทำให้กฎของคุณถาวร แต่คุณสามารถใช้iptables-saveและiptables-restoreเพื่อให้งานของคุณสำเร็จ

ขั้นแรกให้เพิ่มกฎ iptable โดยใช้คำสั่งที่คุณให้ไว้

จากนั้นบันทึกกฎ iptables ลงในไฟล์บางไฟล์เช่น/etc/iptables.confใช้คำสั่งต่อไปนี้:

$  iptables-save > /etc/iptables.conf

เพิ่มคำสั่งต่อไปนี้ใน/etc/rc.localเพื่อรีโหลดกฎในการรีบูตทุกครั้ง

$  iptables-restore < /etc/iptables.conf

15
บนเดเบียนมีiptables-persistentแพ็คเกจที่จะทำเช่นนี้
bahamat

7
เป็นการดีที่จะวางไว้rc.localเนื่องจากจะมีช่องว่างระหว่างหน้าต่างที่เปิดอยู่ระหว่างการเริ่มบริการและนโยบายไฟร์วอลล์ ฉันชอบใช้pre-up hook สำหรับ interface loopbackใน/etc/network/interfacesการเอาชนะนี้
poige

@poige: ฉันเห็นด้วย 100% rc.localอาจมีผลกระทบที่ตั้งใจ แต่มันก็เป็นสิ่งที่น่ารังเกียจในสถานการณ์นี้
JM Becker

3
@bahamat: การติดตั้งแพคเกจเป็นทางออกที่ดีที่สุดมันสมควรได้รับคำตอบของมันเอง
JM Becker

1
@TechZilla: เสร็จแล้ว
บาฮามา

53

(เนื่องจากมีข้อเสนอแนะที่จะทำให้คำตอบนี้เป็นของตัวเอง ... )

ใน Debian iptables-persistentติดตั้ง

แพ็คเกจจะโหลด/etc/iptables/rulesให้คุณโดยอัตโนมัติระหว่างการบู๊ต

เมื่อใดก็ตามที่คุณแก้ไขกฎของคุณให้เรียกใช้/sbin/iptables-save > /etc/iptables/rulesเพื่อบันทึกกฎ คุณยังสามารถเพิ่มสิ่งนั้นลงในลำดับการปิดเครื่องได้หากต้องการ


12
มีไฟล์กฎที่แตกต่างกันสองไฟล์: /etc/iptables/rules.v4และ/etc/iptables/rules.v6สำหรับ IPv4 และ IPv6 ตามลำดับ หากคุณต้องการให้ตารางนำไปใช้กับการเชื่อมต่อทั้งสองประเภทคุณต้องบันทึกลงในไฟล์กฎทั้งสอง
PetaspeedBeaver

11
อย่าเพิ่มลงในลำดับการปิดเครื่องของคุณ! หากคุณแปลงกฎของคุณระหว่างการเปลี่ยนแปลง / การตั้งค่าอย่างน้อยการรีบูตเครื่องเก่าที่ดีจะทำให้สิ่งต่าง ๆ กลับสู่สถานะการทำงานก่อนหน้านี้
VertigoRay

1

หลังจากติดตั้งiptables-persistentด้านบนคุณสามารถบันทึกกฎด้วยคำสั่งที่สั้นกว่าต่อไปนี้บน Ubuntu 16.04+: sudo netfilter-persistent save

และพวกเขายังสามารถคืนค่ากลับไปเป็นครั้งสุดท้ายที่คุณบันทึกไว้ด้วย: sudo netfilter-persistent reload

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.