โหลด iptables ใหม่


29

ฉันทำการเปลี่ยนแปลงไฟล์ iptables config /etc/iptables/filterในอูบุนตูและต้องการโหลดซ้ำ ฉันอ่าน man page และ googled ด้วย แต่หาข้อมูลไม่พบ ความช่วยเหลือใด ๆ ที่จะได้รับการชื่นชม.


คุณไม่ได้ให้ข้อมูลใด ๆ เกี่ยวกับเวอร์ชันของ Ubuntu ที่คุณใช้หรือค้นหาเว็บได้ดีก่อนโพสต์คำถามนี้

คำตอบ:


28

วิธีที่ง่ายที่สุดคือการรีบูท (เช่นถ้าด้านล่างไม่ทำงานรีบูตตรวจสอบว่ามีการเปลี่ยนแปลงหรือไม่)

วิธีที่สองที่ง่ายที่สุดคือการรีสตาร์ท daemons โดยใช้การกำหนดค่า iptables (google: restart daemon ubuntu)

ตัวอย่าง (ขึ้นอยู่กับการกำหนดค่าของคุณ):

/etc/init.d/iptables restart  

/etc/init.d/networking restart  

/etc/init.d/firewall restart

5
ไม่มีไฟล์ชื่อ /etc/init.d/iptables

1
เครือข่ายใดที่เกี่ยวข้องใน /etc/init.d พยายามเริ่มต้นใหม่

2
/etc/init.d/networking รีสตาร์ท?

1
ลิงก์ตายนั้นตายแล้ว
ดัสตินเกรแฮม

@DustinGraham ขอบคุณลิงค์เสียจะถูกลบ
Juha

37

โดยปกติกฎไฟร์วอลล์ของคุณจะอยู่ในไฟล์ปรับแต่ง /etc/iptables.firewall.rules

หากต้องการเปิดใช้งานกฎที่กำหนดไว้ในไฟล์ของคุณคุณต้องส่งกฎเหล่านั้นไปที่iptables-restore(คุณสามารถใช้ไฟล์อื่นได้หากต้องการ):

sudo iptables-restore < /etc/iptables.firewall.rules

และคุณสามารถตรวจสอบว่าพวกเขาเปิดใช้งานด้วย:

sudo iptables -L

หากคุณต้องการเปิดใช้งานกฎเดียวกันทุกครั้งที่คุณบูตคอมพิวเตอร์ให้สร้างไฟล์นี้:

sudo nano /etc/network/if-pre-up.d/firewall

ด้วยเนื้อหานี้:

#!/bin/sh
/sbin/iptables-restore < /etc/iptables.firewall.rules

และให้อนุญาตการดำเนินการ:

sudo chmod +x /etc/network/if-pre-up.d/firewall

หวังว่ามันจะช่วยคุณ =)

ไฟล์ตัวอย่างสำหรับ/etc/iptables.firewall.rules:

*filter

#  Allow all loopback (lo0) traffic and drop all traffic to 127/8 that doesn't use lo0
-A INPUT -i lo -j ACCEPT
-A INPUT -d 127.0.0.0/8 -j REJECT

#  Accept all established inbound connections
-A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT

#  Allow all outbound traffic - you can modify this to only allow certain traffic
-A OUTPUT -j ACCEPT

#  Allow HTTP and HTTPS connections from anywhere (the normal ports for websites and SSL).
-A INPUT -p tcp --dport 80 -j ACCEPT
-A INPUT -p tcp --dport 443 -j ACCEPT

#  Allow SSH connections
#
#  The -dport number should be the same port number you set in sshd_config
#
-A INPUT -p tcp -m state --state NEW --dport 22 -j ACCEPT

#  Allow ping
-A INPUT -p icmp -j ACCEPT

#  Log iptables denied calls
-A INPUT -m limit --limit 5/min -j LOG --log-prefix "iptables denied: " --log-level 7

#  Drop all other inbound - default deny unless explicitly allowed policy
-A INPUT -j DROP
-A FORWARD -j DROP

COMMIT

4
บน Ubuntu 14.10 ฉันไม่มี/etc/iptables.firewall.rulesแต่sudo iptables-restore < /etc/iptables/rules.v4ได้ผลกับฉัน
timbo

4

หากคุณดำเนินการตามกฎแล้วพวกเขากำลังทำงานอยู่และไม่จำเป็นต้องโหลดซ้ำ ในกรณีที่คุณมีไฟล์การกำหนดค่า แต่มันไม่ได้ถูกดำเนินการอย่างที่ดีที่สุดที่ฉันเคยเห็นคือการใช้iptables-apply(นามสกุล iptables)

iptables-apply -t 60 your_rules_file

การดำเนินการนี้จะใช้กฎเป็นเวลา 60 วินาที (10 เป็นค่าเริ่มต้น) และเปลี่ยนกลับหากคุณไม่ยืนยัน สิ่งนี้จะช่วยคุณในกรณีที่คุณถูกโยนออกจากระบบเนื่องจากกฎ (เช่นถ้าคุณใช้งานผ่าน ssh)

คุณสามารถใช้สิ่งต่อไปนี้แทน:

iptables-restore < your_rules_file; sleep 60; iptables-restore < clean_rules

ไม่การรีโหลดเป็นสิ่งจำเป็นอย่างยิ่งสำหรับการแก้ปัญหาโฮสต์ DDNS หาก IP ของโฮสต์ที่อ้างอิงใด ๆ เปลี่ยนแปลง iptables จะต้องทำการโหลดใหม่ เป็นการดีที่คุณจะทำเช่นนี้ทุก ๆ 30 นาทีจาก cron ไม่สะดวกในการรีบูตทุก ๆ 30 นาที
mckenzm


0

หลังจาก googling นิดหน่อยนี่คือสิ่งที่ฉันพบเพื่อรีสตาร์ท iptables . . sudo /etc/init.d/firewall รีสตาร์ท


3
ไม่มีไฟล์ชื่อ /etc/init.d/firewall

0

หากคุณต้องการโหลด IPtables ใหม่เพื่อตรวจสอบการเปลี่ยนแปลงที่คุณเพิ่งทำ คุณสามารถรีสตาร์ท Apache ด้วยบรรทัดคำสั่งด้านล่าง:

/etc/init.d/apache2 หยุด

/etc/init.d/apache2 เริ่มต้น

คำสั่งเหล่านี้อาจแตกต่างกันไปขึ้นอยู่กับรสนิยมของ Ubuntu และการแก้ไขในที่สุดที่อาจเกิดขึ้นก่อนหน้านี้

หวังว่านี่จะช่วยได้

ปิแอร์

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