리눅스는 항상 ICMP 리디렉션을 보냅니다 리디렉션을 로컬 호스트로 보냅니다.

라우터로 사용되는 데비안 스퀴즈 (6.0.6 최신)가 여러 개 있습니다.
연결이 끊어지면 ICMP 리디렉션을 로컬 호스트로 보냅니다. 이것이 데비안과 다른 몇 가지 기본 동작입니다. 따라서 링크가 다시 활성화되면 호스트는 재부팅 할 때까지 연결할 수 없습니다.

해당 라우터에서 ICMP 리디렉션을 보내지 않으려 고합니다.

나는 시험 echo 0 > /proc/sys/net/ipv4/conf/all/send_redirectssysctl -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

왜 일반적인 방법이 작동하지 않는지에 대한 아이디어가 있습니까?
netfilter를 사용하지 않고 ICMP 리디렉션이 전송되는 것을 방지하는 방법은 무엇입니까?



답변

올바른 명령은 다음과 같습니다. echo 0 | tee /proc/sys/net/ipv4/conf/*/send_redirects
‘all’및 ‘interface_name’에 0이 있어야 비활성화 할 수 있습니다.

/etc/sysctl.conf파일 또는 이와 유사한, 당신은 ‘모든’+ ‘기본’세트 (또는 ‘모든’+ ‘인터페이스’하지만,이 파일이 처리 될 때 인터페이스 월은하지 이미 존재).


답변