ICMP 기능
요약 ICMP(Internet Control Message Protocol) 기능을 사용하여 네트워크 문제를 진단하고 디바이스 연결성을 확인합니다.
기능 탐색기 를 사용하여 특정 기능에 대한 플랫폼 및 릴리스 지원을 확인합니다.
프로토콜 리디렉션 메시지
프로토콜 리디렉션이라고도 하는 ICMP 리디렉션은 스위치 및 라우터가 호스트에 라우팅 정보를 전달하는 데 사용하는 메커니즘입니다. 디바이스는 프로토콜 리디렉션 메시지를 사용하여 동일한 데이터 링크의 호스트에 지정된 대상에 사용할 수 있는 최적의 경로를 알립니다.
프로토콜 리디렉션 메시지 이해
프로토콜 리디렉션 메시지는 호스트에 라우팅 정보를 업데이트하고 대체 경로에서 패킷을 전송하도록 알립니다. 호스트가 스위치 S1을 통해 데이터 패킷을 보내려고 하고 S1이 이 데이터 패킷을 다른 스위치 S2로 보낸다고 가정해 보겠습니다. 또한 호스트에서 S2로의 직접 경로를 사용할 수 있다고 가정합니다(즉, 호스트와 S2가 동일한 이더넷 세그먼트에 있음). 그런 다음 S1은 프로토콜 리디렉션 메시지를 전송하여 대상에 대한 최상의 경로가 S2에 대한 직접 경로임을 호스트에 알립니다. 그런 다음 호스트는 패킷을 S1을 통해 보내는 대신 S2로 직접 보내야 합니다. S2는 S1에서 수신한 원래 패킷을 의도한 대상으로 계속 보냅니다.
프로토콜 리디렉션에 대한 자세한 내용은 RFC-1122 및 RFC-4861 을 참조하십시오.
-
스위치는 데이터 패킷에 라우팅 정보가 포함된 경우 프로토콜 리디렉션 메시지를 보내지 않습니다.
-
모든 EX 시리즈 스위치는 IPv4 및 IPv6 트래픽 모두에 대한 프로토콜 리디렉션 메시지 전송을 지원합니다.
프로토콜 리디렉션 메시지 비활성화
기본적으로 디바이스는 IPv4 및 IPv6 트래픽 모두에 대해 프로토콜 리디렉션 메시지를 보냅니다. 보안상의 이유로 디바이스가 프로토콜 리디렉션 메시지를 보내지 못하도록 설정할 수 있습니다.
전체 디바이스에 대한 프로토콜 리디렉션 메시지를 비활성화하려면 계층 수준에서 또는 no-redirects-ipv6
문을 [edit system]
포함합니다 no-redirects
.
-
IPv4 트래픽의 경우:
[edit system] user@host# set no-redirects
-
IPv6 트래픽의 경우:
[edit system] user@host# set no-redirects-ipv6
디바이스에서 리디렉션 메시지 전송을 다시 활성화하려면 구성에서 문(IPv4 트래픽의 경우) 또는 no-redirects-ipv6
문(IPv6 트래픽의 경우)을 삭제합니다no-redirects
.
인터페이스별로 프로토콜 리디렉션 메시지를 비활성화하려면 계층 수준에서 문을 [edit interfaces interface-name unit logical-unit-number family family]
포함합니다 no-redirects
.
-
IPv4 트래픽의 경우:
[edit interfaces interface-name unit logical-unit-number] user@host# set family inet no-redirects
-
IPv6 트래픽의 경우:
[edit interfaces interface-name unit logical-unit-number] user@host# set family inet6 no-redirects
핑(Ping)
Ping은 ICMP를 사용합니다. 성공적인 ping은 디바이스가 대상에 ICMP 에코 요청을 보내고 대상이 ICMP 에코 응답으로 응답하는 경우입니다. 그러나 장치가 ping 요청에 응답하지 않도록 하려는 상황이 있을 수 있습니다.
멀티캐스트 Ping 패킷에 대한 라우팅 엔진 응답 비활성화
기본적으로 라우팅 엔진은 멀티캐스트 그룹 주소로 전송된 ICMP 에코 요청에 응답합니다. 멀티캐스트 핑 패킷을 무시하도록 라우팅 엔진을 구성하면 권한이 없는 사람이 네트워크에서 프로바이더 에지(PE) 디바이스 목록을 발견하는 것을 방지할 수 있습니다.
라우팅 엔진이 이러한 ICMP 에코 요청에 응답하지 않도록 하려면 계층 수준에서 문을 포함합니다 no-multicast-echo
.[edit system]
[edit system] user@host# set no-multicast-echo
Ping 응답에서 IP 주소 및 타임스탬프 보고 비활성화
명령을 record-route
옵션으로 실행하면 ping
라우팅 엔진은 기본적으로 ICMP 에코 요청 패킷의 경로와 ICMP 에코 응답의 타임스탬프를 표시합니다. 및 no-ping-timestamp
옵션을 구성 no-ping-record-route
하면 권한이 없는 사용자가 PE(Provider Edge) 디바이스 및 해당 루프백 주소에 대한 정보를 검색하는 것을 방지할 수 있습니다.
라우팅 엔진을 구성하여 핑 요청 패킷의 IP 헤더에서 옵션 설정을 record-route
비활성화할 수 있습니다. 옵션을 비활성화하면 record-route
라우팅 엔진이 응답에 ICMP 에코 요청 패킷의 경로를 기록 및 표시하는 것을 방지합니다.
옵션의 record route
설정을 비활성화하도록 라우팅 엔진을 구성하려면 계층 수준에서 명령문을 포함합니다 no-ping-record-route
.[edit system]
[edit system] user@host# set no-ping-record-route
ICMP 에코 응답에서 타임스탬프 보고를 비활성화하려면 계층 수준에서 옵션을 포함합니다 no-ping-time-stamp
.[edit system]
[edit system] user@host# set no-ping-time-stamp
소스 담금질 메시지
디바이스가 너무 많거나 원하지 않는 데이터그램을 수신하는 경우 원본 디바이스에 소스 소멸 메시지를 보낼 수 있습니다. 소스 담금질 메시지는 발신 디바이스에 신호를 보내 전송 중인 트래픽 양을 줄입니다.
기본적으로 디바이스는 ICMP 소스 소멸 메시지에 반응합니다. ICMP 소스 소멸 메시지를 무시하려면 계층 수준에서 문을 포함합니다no-source-quench
.[edit system internet-options]
[edit system internet-options] no-source-quench;
ICMP 소스 소멸 메시지 무시를 중지하려면 문을 사용합니다.source-quench
[edit system internet-options] source-quench;
TTL(Time-to-Live) 만료
패킷 헤더의 TTL(Time-to-Live) 값은 패킷이 네트워크를 통해 이동하는 시간을 결정합니다. TTL 값은 패킷이 통과하는 각 디바이스(또는 홉)와 함께 감소합니다. 디바이스가 TTL 값이 0인 패킷을 수신하면 패킷을 버립니다. TTL 만료 메시지는 ICMP를 사용하여 전송됩니다.
IPv4 주소를 ICMP TTL(Time-to-Live) 만료 오류 메시지의 소스 주소로 사용하도록 디바이스를 구성할 수 있습니다. 즉, ICMP 오류 패킷에 대한 응답으로 루프백 주소를 소스 주소로 구성할 수 있습니다. 네트워크에 중복된 IPv4 주소가 있어 traceroute 목적으로 디바이스 주소를 사용할 수 없는 경우 이 방법이 유용합니다.
소스 주소는 IPv4 주소여야 합니다. 소스 주소를 지정하려면 계층 수준에서 옵션을 [edit system icmp (System)]
사용합니다ttl-expired-source-address source-address
.
[edit system icmp] user@host# set ttl-expired-source-address source-address
이 구성은 ICMP TTL 만료 메시지에만 적용됩니다. 다른 ICMP 오류 응답 메시지는 수신 인터페이스의 주소를 소스 주소로 계속 사용합니다.
속도 제한 ICMP 트래픽
라우팅 엔진에서 ICMPv4 또는 ICMPv6 메시지를 생성하여 라우팅 엔진으로 전송할 수 있는 속도를 제한하려면 계층 수준에서 적절한 속도 제한 문을 [edit system internet-options]
포함합니다.
-
IPv4의 경우:
[edit system internet-options] icmpv4-rate-limit bucket-size bucket-size packet-rate packet-rate
-
IPv6의 경우:
[edit system internet-options] icmpv6-rate-limit bucket-size bucket-size packet-rate packet-rate
속도 제한 ICMP 오류 메시지
기본적으로 TTL이 만료되지 않은 IPv4 및 IPv6 패킷에 대한 ICMP 오류 메시지는 초당 1패킷(pps)의 속도로 생성됩니다. 네트워크 정체를 유발하지 않고 네트워크에 충분한 정보를 제공한다고 판단되는 값으로 이 속도를 조정할 수 있습니다.
TTL 만료된 IPv4 또는 IPv6 패킷의 경우, ICMP 오류 메시지의 속도를 구성할 수 없습니다. 500pps로 고정되어 있습니다.
속도 제한 ICMPv4 및 ICMPv6 오류 메시지 이유
속도 한계를 조정하는 사용 사례의 예로는 웹 서비스를 제공하는 데이터 센터가 있습니다. 이 데이터 센터가 인터넷을 통해 호스트와 통신할 때 MTU가 9100바이트인 점보 프레임을 사용하는 네트워크에 많은 서버가 있다고 가정해 보겠습니다. 이러한 다른 호스트에는 1500바이트의 MTU가 필요합니다. 연결의 양쪽에 MSS(최대 세그먼트 크기)가 적용되지 않는 한, 서버는 너무 커서 데이터 센터의 에지 라우터에 도달할 때 조각화되지 않고 인터넷을 통해 전송할 수 없는 패킷으로 응답할 수 있습니다.
TCP/IP 구현에서는 기본적으로 dont-fragment
비트가 1로 설정된 경로 MTU 검색이 활성화되어 있는 경우가 많기 때문에 전송 디바이스는 너무 큰 패킷을 단편화하지 않고 삭제합니다. 디바이스는 패킷이 너무 커서 대상에 연결할 수 없음을 나타내는 ICMP 오류 메시지를 반환합니다. 이 메시지는 오류가 발생한 위치에 필요한 MTU도 제공합니다. 송신 호스트는 해당 연결에 대한 송신 MSS를 조정하고 단편화 문제를 방지하기 위해 더 작은 패킷 크기로 데이터를 다시 전송해야 합니다.
높은 코어 인터페이스 속도에서 오류 메시지에 대한 기본 속도 제한인 1pps는 네트워크에 이 서비스가 필요한 호스트가 많을 때 모든 호스트에 알리기에 충분하지 않을 수 있습니다. 그 결과 아웃바운드 패킷이 자동으로 삭제됩니다. 이 작업은 데이터센터 에지 라우터가 각 코어 대면 인터페이스에서 처리하는 요청의 양에 따라 추가 재전송 또는 백오프 동작을 트리거할 수 있습니다.
이 경우 속도 제한을 늘려 더 많은 양의 초과된 패킷이 송신 호스트에 도달할 수 있도록 할 수 있습니다. (코어 대면 인터페이스를 더 추가하는 것도 문제를 해결하는 데 도움이 될 수 있습니다.)
속도 제한 방법 ICMPv4 및 ICMPv6 오류 메시지
계층 수준에서 [edit chassis]
속도 제한을 구성하지만 섀시 전체의 제한은 아닙니다. 대신, 속도 제한은 인터페이스 제품군별로 적용됩니다. 즉, 예를 들어, 로 family inet
구성된 여러 물리적 인터페이스가 구성된 속도로 ICMP 오류 메시지를 동시에 생성할 수 있습니다.
이 속도 제한은 10초 이상 지속되는 트래픽에만 적용됩니다. 속도 제한은 5초 또는 9초와 같이 지속 시간이 짧은 트래픽에는 적용되지 않습니다.
-
ICMPv4에 대한 속도 제한을 구성하려면 문을 사용합니다.
icmp
[edit chassis] user@host# set icmp rate-limit rate-limit
Junos OS 릴리스 19.1R1부터 최대 속도가 50pps에서 1000pps로 증가했습니다.
-
ICMPv6에 대한 속도 제한을 구성하려면 문을 사용합니다.
icmp6
[edit chassis] user@host# set icmp6 rate-limit rate-limit
또한 속도 제한 값이 DDoS 보호 구성과 상호 작용할 수 있다는 점을 고려해야 합니다. 최대 전송 단위(MTU)를 초과하는 예외 패킷의 기본 대역폭 값은 250pps입니다. DDoS 보호는 패킷 수가 해당 값을 초과할 때 위반 플래그를 지정합니다. 속도 제한을 현재 mtu-exceeded
대역폭 값보다 높게 설정하는 경우, 속도 제한과 일치하도록 대역폭 값을 구성해야 합니다.
예를 들어, ICMP 속도 제한을 300pps로 설정한다고 가정해 보겠습니다.
user@host# set chassis icmp rate-limit 300
해당 값과 일치하도록 디도스(DDoS) 공격 보호를 mtu-exceeded bandwidth
구성해야 합니다.
user@host# set system ddos-protection protocols exceptions mtu-exceeded bandwidth 300