스크립트에서 다음 두 줄을 발견했습니다.
echo "1" > /proc/sys/net/ipv4/ip_forward/
echo "0" > /proc/sys/net/ipv4/conf/eth0/send_redirects
첫 번째 줄은 IP 전달을 켜서 내 컴퓨터를 라우터처럼 작동하게 만듭니다.
그래도 두 번째 줄의 기능을 정확히 이해하고 싶습니다. send_redirects
인터페이스에서 스위치가 꺼지는 eth0
데 그게 무슨 뜻인가요? send_redirect
이 맥락에서 무엇입니까 ?
답변1
'ip_forward'는 IPv4에 대한 패킷 전달을 활성화하는 것입니다.
'리디렉션 보내기'는 노드가 라우터 역할을 하는 경우에만 활성화됩니다. 즉, 호스트는 ICMP Redirect 메시지를 보내서는 안 됩니다. 이는 라우터가 특정 대상에 사용할 수 있는 더 나은 라우팅 경로에 대해 호스트에 알리는 데 사용됩니다. 이후 호스트는 경로 캐시 항목을 업데이트하고 ICMP 리디렉션 메시지를 통해 제안된 최적의 경로/경로를 통해 후속 패킷을 직접 전달합니다.
그러나 이러한 라우팅 정보 업데이트 메커니즘은 위험하며 ICMP 리디렉션이 원하는 경로로 리디렉션하기 위해 악성 소프트웨어/공격자에 의해 변조/위조될 수 있으므로 보안 커뮤니티의 우려 사항입니다.
자세한 내용과 '리디렉션 메시지가 지정하는 새 게이트웨이 주소가 리디렉션이 통과하는 동일한 연결된(서브) 네트에 없으면 리디렉션 메시지를 자동으로 폐기해야 합니다'와 같은 조항은 RFC 1122(초 3.3.1 및 부록 A)를 참조하세요. 도착했거나 리디렉션 소스가 지정된 대상에 대한 현재 첫 번째 홉 게이트웨이가 아닌 경우'
답변2
동일한 LAN에 여러 라우터가 있는 경우 리디렉션이 발생합니다. 예를 들어 하나의 호스트와 두 개의 라우터로 구성된 네트워크가 있다고 가정해 보겠습니다. 호스트는 라우터 A에 패킷을 보낼 수 있으며 라우터 A는 라우팅 테이블에서 지시하므로 동일한 LAN을 통해 라우터 B에 해당 패킷을 보내야 할 수도 있습니다. 그런 다음 라우터 A는 호스트에 리디렉션 메시지를 보내 해당 특정 대상에 대한 패킷을 라우터 B로 직접 보내는 것이 더 효율적이라는 것을 알릴 수 있습니다.
send_redirect
라우터를 끄면 이러한 리디렉션 메시지가 전송되지 않습니다 .