tcpdump
내 네트워크(KVM 가상 머신, 브리지 네트워크)에 일부 ICMP 리디렉션이 있음을 보여줍니다. 나는 그것들과 내 시스템이 어떻게 작동하고 보이는지 자세히 살펴보기로 결정했습니다. 예상대로 작동하지 않는 것으로 나타났습니다.
내가 그렇다고 가정하자1.1.1.1그리고 나 ping 2.2.2.2
:
# ping 2.2.2.2
PING 2.2.2.2 (2.2.2.2) 56(84) bytes of data.
64 bytes from 2.2.2.2: icmp_seq=1 ttl=63 time=0.569 ms
From 4.4.4.4: icmp_seq=2 Redirect Host(New nexthop: 3.3.3.3)
64 bytes from 2.2.2.2: icmp_seq=2 ttl=63 time=0.690 ms
From 4.4.4.4: icmp_seq=3 Redirect Host(New nexthop: 3.3.3.3)
보시다시피 여러 개의 리디렉션이 수신되고 있습니다.3.3.3.3좋아보이는데 왠지 주인님(1.1.1.1) 무시해.
# sysctl -a|grep accept_redirects
net.ipv4.conf.all.accept_redirects = 1
net.ipv4.conf.default.accept_redirects = 1
net.ipv4.conf.eth0.accept_redirects = 1
net.ipv4.conf.lo.accept_redirects = 1
해당 새 경로에 대한 항목이 없으며 비어 있습니다 ip route list
.ip route list cache
커널 버전은 다음과 같습니다:
# uname -a
Linux foo.bar 3.16.0-4-amd64 #1 SMP Debian 3.16.7-ckt20-1+deb8u3 (2016-01-17) x86_64 GNU/Linux
/proc/sys/net/ipv4/conf/*/accept_redirects
값을 변경해 도 효과가 0|1
없습니다 .networking restart
reboot
나는 희망수용하다ICMP 리디렉션 - 어떤 아이디어가 있나요?
고쳐 쓰다:
# ip -d route
unicast default via 4.4.4.4 dev eth0 proto boot scope global
unicast 1.1.1.0/24 dev eth0 proto kernel scope link src 1.1.1.1
unicast 4.4.4.4 dev eth0 proto boot scope link
답변1
목적지까지 더 나은 경로/게이트웨이를 정의하기 위해 ICMP 리디렉션이 전송됩니다.
경로의 게이트웨이/출구와 동일한 네트워크에 IP 주소가 있어야 하므로 경로는 다음 조건이 모두 충족되는 경우에만 라우팅 테이블에 삽입됩니다.
accept_redirects
1로 설정- 문제의 머신에는 주소가 게이트웨이 네트워크에 속하는 인터페이스가 있습니다.
- 대상 경로와 동일한 네트워크에 IP 주소가 없습니다.
그렇지 않으면 경로가 삭제됩니다.
스푸핑된 ICMP 리디렉션에는 알려진 보안 위험이 있으므로 맹목적으로 리디렉션을 허용하지 않습니다. ICMP 리디렉션은 일시적인 네트워크 오류나 네트워크 설계 오류를 가릴 수도 있습니다.
답변2
Rui F Ribeiro의 답변에 추가 :
secure_redirects는 이제 기본값이 1이고 아직 기존 게이트웨이 중 하나에 속하지 않은 리디렉션 대상을 거부하므로 비활성화해야 할 수도 있습니다.
또는 대상 IP를 동일한 인터페이스에 대한 두 번째 기본 게이트웨이(아마도 더 낮은 메트릭 사용)로 추가할 수 있는 경우에도 작동합니다. 혹시 어떻게 하는지 아시는 분 계시면 댓글 남겨주세요.