ฉันมี Debian Squeeze หลายตัว (6.0.6 ทันสมัย) ที่ใช้เป็นเราเตอร์
เมื่อลิงก์หยุดทำงานพวกเขาจะส่งการเปลี่ยนเส้นทาง ICMP ไปยังโฮสต์ในเครื่อง นี่คือพฤติกรรมเริ่มต้นของ Debian และอีกหลายคน ดังนั้นเมื่อลิงก์กลับมามีชีวิตโฮสต์จะไม่สามารถเข้าถึงได้จนกว่าจะรีบูต
ฉันไม่ต้องการให้มีการเปลี่ยนเส้นทาง ICMP จากเราเตอร์เหล่านั้น
ฉันทดสอบecho 0 > /proc/sys/net/ipv4/conf/all/send_redirects
และsysctl -w net.ipv4.conf.all.send_redirects=0
ใส่net.ipv4.conf.all.send_redirects=0
ลงใน/etc/sysctl.d/local.conf
โซลูชันเหล่านั้นทุกอันใส่ค่าที่ถูกต้อง/proc/sys/net/ipv4/conf/all/send_redirects
แต่ ...
เคอร์เนลส่งการเปลี่ยนเส้นทาง ICMP ไปเรื่อย ๆ แม้หลังจากรีบูต:
$ tcpdump -n -i eth0
00:56:17.186995 IP 192.168.0.254 > 192.168.0.100: ICMP redirect 10.10.13.102 to host 192.168.0.1, length 68
และตารางเส้นทางของโฮสต์ท้องถิ่น (คอมพิวเตอร์ Windows) จะปนเปื้อน
ฉันสามารถป้องกันสิ่งนี้ด้วย netfilter:
iptables -t mangle -A POSTROUTING -p icmp --icmp-type redirect -j DROP
มีความคิดเห็นใดเกี่ยวกับสาเหตุที่วิธีการปกติไม่ทำงาน
และจะป้องกันไม่ให้ส่ง ICMP redirect โดยไม่ใช้ netfilter ได้อย่างไร