나는 GNU/Linux 기반 라우터가 최소한 다음 ICMPv4 메시지를 보낼 것으로 예상합니다: net unreachable
, host unreachable
. 특히 호스트에 연결할 수 없다는 메시지가 나에게 중요합니다. 라우터가 대상 호스트와 동일한 네트워크에 있지만 IP를 확인할 수 없는 경우, 즉 호스트 자체에 연결할 수 없다는 의미이므로 라우터는 호스트에 연결할 수 없는 메시지를 보내야 합니다.
지금은 규칙을 만들어야 해요 iptables
. 하지만 정의된 대로 이 메시지를 보내고 싶습니다.RFC, 자동으로 다음을 의미합니다.데이터그램의 인터넷 대상 필드에 지정된 네트워크에 게이트웨이 라우팅 테이블의 정보를 기반으로 도달할 수 없는 경우(예: 해당 네트워크까지의 거리가 무한함), 게이트웨이는 데이터그램의 인터넷 소스 호스트에 대상 도달 불가능 메시지를 보낼 수 있습니다. . 데이터그램. 또한 일부 네트워크에서는 게이트웨이가 인터넷 대상 호스트에 연결할 수 없는지 여부를 확인할 수 있습니다. 대상 호스트에 연결할 수 없는 경우 이러한 네트워크의 게이트웨이는 대상에 연결할 수 없음 메시지를 소스 호스트에 보낼 수 있습니다.그건 그렇고, 관련된 라우팅 프로토콜은 없습니다. 기본적으로 각 라우터는 최대 3개의 서브넷에 대한 게이트웨이입니다.
내가 무엇을해야 하나?
답변1
좋아, 계속해서 질문을 편집하고 범위를 변경하세요. 무슨 말인지는 모르겠지만:
라우터가 대상 호스트와 동일한 네트워크에 있지만 IP를 확인할 수 없는 경우(즉, 호스트 자체에 연결할 수 없음을 의미) 라우터는 호스트에 연결할 수 없음 메시지를 보내야 합니다.
예감이 듭니다. 라우터가 동일한 네트워크 세그먼트에 있는 경우 정의에 따라 대상에 도달할 수 있습니다. "IP를 확인할 수 없습니다"라는 말이 무슨 뜻인지 명확하지 않습니다.
그러나 대상 호스트가 다운되면 라우터는 다음과 같이 동작합니다.정확히표준에 따라 설명하는 방식입니다. 그래서 당신이 원하는 것이 표준 동작과 다른지 잘 모르겠습니다 ...
라우터의 응답에 따라 상위 수준 소프트웨어가 조치를 취하는 방법은 또 다른 이야기입니다. 그러나 표준에 따르면 당신이 요구하는 것처럼 보이는 동작을 얻어야 합니다.
원래 답변
이 문제를 해결하려면 iptables
(귀하의 문제가 무엇인지 전혀 모르겠습니다) 다음을 설정해야 합니다.빈 경로(반품블랙홀 경로). 그러나 필요한 ICMP 메시지를 반환하므로 전자를 원할 수도 있습니다.
트릭은 iptables
허용되는 값 중 하나를 사용하는 것입니다.
... -j REJECT --reject-with ...
인용하다어떻게:
REJECT
This module has the same effect as `DROP', except that the
sender is sent an ICMP `port unreachable' error message. Note
that the ICMP error message is not sent if (see RFC 1122):
o The packet being filtered was an ICMP error message in the
first place, or some unknown ICMP type.
o The packet being filtered was a non-head fragment.
o We've sent too many ICMP error messages to that destination
recently (see /proc/sys/net/ipv4/icmp_ratelimit).
REJECT also takes a `--reject-with' optional argument which
alters the reply packet used: see the manual page.
따라서매뉴얼 페이지("거부(IPv6 특정)" 및 "거부(IPv4 특정)" 검색):
- IPv6: icmp6-no-route, no-route, icmp6-adm-prohibited, adm-prohibited, icmp6-addr-unreachable, addr-unreach, icmp6-port-unreachable 또는 port-unreach(또는 tcp-reset)
- IPv4: icmp-net-unreachable, icmp-host-unreachable, icmp-port-unreachable, icmp-proto-unreachable, icmp-net-prohibited, icmp-host-prohibited 또는 icmp-admin-prohibited(또는 tcp-reset)
IPv4의 경우 질문에 따라 및 별도로 찾아보세요 icmp-net-unreachable
.icmp-host-unreachable