리눅스는 항상 ICMP 리디렉션을 보냅니다


14

라우터로 사용되는 데비안 스퀴즈 (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 리디렉션이 전송되는 것을 방지하는 방법은 무엇입니까?

답변:


14

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

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


5
"all"디렉토리의 요점은 무엇입니까? 모호한 인상을 받았는데 다른 모든 항목의 값을 덮어 쓰겠습니까?
Elrond

@Elrond all는 덮어 쓰지 않고 비트 단위 연산을 수행합니다. vs 에 대한이 답변을alldefault 참조하십시오 . send_redirectsOR매개 변수이므로 all.send_redirects0으로 설정 하면 인터페이스 설정에 따라 나옵니다.
Leif Arne Storset
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.