Debian 'ละเว้น' /etc/network/if-pre-up.d/iptables


12

ฉันต้องการให้กฎของ iptables โหลดเมื่อเริ่มต้นโดยอัตโนมัติ ตามวิกิบน Debian สิ่งนี้สามารถทำได้โดยการวางสคริปต์ด้วยชื่อ iptables ใน /etc/network/if-pre-up.d/ ดังนั้นฉันก็ทำนี่คือสิ่งที่มันดูเหมือน:

cat /etc/network/if-pre-up.d/iptables 
#!/bin/sh
/sbin/iptables-restore < /etc/firewall/iptables.rules
/sbin/ip6tables-restore < /etc/firewall/ip6tables.rules

สคริปต์นี้ใช้งานได้: หากฉันเรียกใช้เป็นรูทกฎไฟร์วอลล์ของฉันจะถูกนำไปใช้ แต่ในการรีบูตไม่มีกฎไฟร์วอลล์ ผมทำอะไรผิดหรือเปล่า?

ตามคำขอ: / etc / network / interfaces (ฉันไม่ได้แตะไฟล์นี้)

user@DebianVPS:~$ cat /etc/network/interfaces 
# This file describes the network interfaces available on your system
# and how to activate them. For more information, see interfaces(5).

# The loopback network interface
auto lo
iface lo inet loopback

# The primary network interface
allow-hotplug eth0
iface eth0 inet dhcp

คุณจะกำหนดค่าอินเตอร์เฟซของคุณได้อย่างไร? คุณสามารถเพิ่มไฟล์ / etc / network / interfaces ได้หรือไม่?
bayindirh

โปรดทราบว่า/etc/network/if-pre-up.d/ไม่ทำงานอีกต่อไปใน Ubuntu 18.04 ดูserverfault.com/questions/914493/…
BurninLeo

คำตอบ:


6

ใช้iptables-persistentแพ็คเกจสำหรับงานนี้

กำหนดกฎของคุณใน/etc/iptables/rules.4และ/etc/iptables/rules.6และไม่ลืมที่จะเปิดใช้บริการ (ใช้update-rc.d, chkconfigหรือคุณเครื่องมือที่ชื่นชอบ


ในการติดตั้งแพ็คเกจ debconf จะถามคุณว่าคุณต้องการบันทึกกฎปัจจุบันหรือไม่ ดังนั้นหากคุณมีกฎที่กำหนดไว้แล้วคุณสามารถติดตั้งแพ็คเกจได้ dpkg-reconfigure iptables-persistentหากคุณต้องการที่จะเปลี่ยนพวกเขาในภายหลังเพียง
Braiam

10

ปัญหานี้อาจเกี่ยวข้องกับบิตสิทธิ์ของสคริปต์ของคุณ เอาต์พุตของคำสั่งนี้คืออะไร มันรวมไฟล์ของคุณหรือไม่

run-parts --test /etc/network/if-pre-up.d

เรียกใช้ชิ้นส่วน - ทดสอบ /etc/network/if-pre-up.d ให้ /etc/network/if-pre-up.d/iptables ซึ่งดูเหมือนว่าผลลัพธ์ที่ถูกต้องให้ฉัน
Cheiron

1
ตกลงดังนั้นคุณควรตรวจสอบเมื่อสคริปต์ของคุณทำงาน เพิ่มบรรทัดแรกเช่นนี้(date; set; echo) >> /tmp/iptables-cmd.logดังนั้นคุณจะเห็นเมื่อมีการเรียก ฉันยังพิมพ์สภาพแวดล้อมเพื่อตรวจสอบว่ามีข้อโต้แย้งใด ๆ คุณอาจตัดสินใจที่จะเรียกใช้ iptables ของคุณหลังจากอินเทอร์เฟซ eth * ล่าสุดทำงานแทนการรันทุกครั้งที่มีการเพิ่มส่วนต่อประสาน
eppesuig

3
ตอนนี้คุณโพสต์ของคุณinterfacesฉันเห็นว่าคุณไม่ได้ใช้ ifupdown แต่เป็นผู้จัดการเครือข่าย นี่คือสาเหตุที่สคริปต์ของคุณไม่ถูกเรียกใช้ โปรดตรวจสอบเอกสารนี้: ubuntuforums.org/showthread.php?t=1084308
eppesuig

นั่นอธิบายได้มาก ฉันคิดว่าตอนนี้ฉันแค่ไปกับคำตอบของ dawud ที่ดูเหมือนจะทำงานอย่างใดอย่างหนึ่ง
Cheiron

3
ส่วนทำงานค่อนข้างพิถีพิถันเกี่ยวกับชื่อของสคริปต์และการมีจุดในชื่อไฟล์ทำให้สคริปต์ถูกละเว้นเมื่อเริ่มต้นในกรณีของฉัน
alexm

0

ทำไมไม่ทำอย่างง่าย ๆ ล่ะ?

1 - สร้างกฎ iptables ของคุณ

2 - เรียกใช้ "sudo apt-get install iptables-persistent" มันจะถามคุณว่าคุณต้องการบันทึกกฎและกู้คืนกฎเหล่านั้นหลังจากบูตหรือไม่

3- คุณเป็นคนทำ


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