Tôi có một số Debian Squeeze (6.0.6 được cập nhật) được sử dụng làm bộ định tuyến.
Khi một liên kết không hoạt động, họ gửi chuyển hướng ICMP đến các máy chủ cục bộ. Đây là hành vi mặc định của Debian và một số người khác. Vì vậy, một khi liên kết trở lại với cuộc sống, các máy chủ không thể truy cập nó cho đến khi khởi động lại.
Tôi không muốn bất kỳ chuyển hướng ICMP nào được gửi từ các bộ định tuyến đó.
Tôi đã thử nghiệm echo 0 > /proc/sys/net/ipv4/conf/all/send_redirects
và sysctl -w net.ipv4.conf.all.send_redirects=0
đưa net.ipv4.conf.all.send_redirects=0
vào /etc/sysctl.d/local.conf
Mỗi giải pháp đó đưa giá trị phù hợp vào/proc/sys/net/ipv4/conf/all/send_redirects
Nhưng ...
hạt nhân cứ gửi chuyển hướng ICMP. Ngay cả sau khi khởi động lại:
$ 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
Và bảng định tuyến của máy chủ cục bộ (máy tính Windows) bị ô nhiễm.
Tôi có thể ngăn chặn điều này với netfilter:
iptables -t mangle -A POSTROUTING -p icmp --icmp-type redirect -j DROP
Bất cứ ý tưởng về lý do tại sao phương pháp thông thường không hoạt động?
Và làm thế nào để ngăn chặn chuyển hướng ICMP được gửi, mà không cần sử dụng netfilter?