ICMPv6 설명: IPv6를 작동하게 만드는 프로토콜
이웃 발견, 라우터 알림 및 ICMPv6 차단이 네트워크를 손상시키는 이유를 포함하여 IPv6 네트워킹에 필수적인 프로토콜인 ICMPv6를 이해하세요.
ICMPv6는 선택 사항이 아닙니다#
IPv4에서 ICMP는 진단을 처리합니다. 차단할 수 있으며 대부분의 것들이 여전히 작동합니다. IPv6는 그렇게 작동하지 않습니다.
TL;DR - 빠른 요약
핵심 포인트:
- ICMPv6는 필수입니다(IPv4 ICMP처럼 선택 사항이 아님). NDP, 라우터 발견 및 PMTUD를 처리합니다
- Neighbor Discovery Protocol(유형 133-137)은 ARP를 대체하고 SLAAC을 활성화합니다
- 유형 2(Packet Too Big)는 경로 MTU 발견에 중요합니다. 차단하면 연결이 중단됩니다
- 허용해야 하는 필수 유형: 1(Unreachable), 2(Too Big), 128-129(Ping), 133-137(NDP)
바로가기: Neighbor Discovery Protocol | 경로 MTU 발견 | 방화벽 규칙
ICMPv6는 IPv6의 신경계입니다. 오류 보고, 진단, 이웃 발견, 라우터 발견 및 주소 해석을 처리합니다. 잘못된 ICMPv6 메시지 유형을 차단하면 기본 연결이 중단되고, 호스트가 기본 게이트웨이를 찾을 수 없으며, 디버그하는 데 몇 시간이 걸리는 신비한 연결 중단이 발생합니다.
IPv6 사양은 ICMPv6를 추가 기능으로 취급하지 않습니다. 필수적이고 필수적인 구성 요소입니다. ICMPv6를 이해하는 것은 IPv6가 실제로 어떻게 작동하는지 이해하는 것입니다.
ICMPv6 vs ICMP (IPv4)#
ICMPv6는 IPv4의 ICMP에서 발전했지만 훨씬 더 많은 책임을 맡았습니다.
| 기능 | ICMPv4 | ICMPv6 | 영향 |
|---|---|---|---|
| 프로토콜 번호 | 1 | 58 | 다른 IP 다음 헤더 값 |
| 오류 메시지 | 대상 도달 불가, 시간 초과 등 | 동일한 오류, 개선됨 | 유사한 기능 |
| 진단 | 에코 요청/응답 (ping) | 에코 요청/응답 (ping) | 동일한 목적 |
| 주소 해석 | ARP (별도 프로토콜) | 이웃 발견 (ICMPv6) | ICMPv6가 ARP를 완전히 대체 |
| 라우터 발견 | ICMP 라우터 발견 (선택 사항) | 라우터 알림 (필수) | 자동 구성에 중요 |
| 단편화 | 라우터가 자동으로 처리 | 패킷 너무 큼 메시지 | 경로 MTU 발견 필요 |
| 멀티캐스트 관리 | IGMP (별도 프로토콜) | MLD 메시지 (ICMPv6) | ICMPv6가 IGMP 대체 |
주요 차이점: ICMPv6는 IPv4에서 별도 프로토콜을 사용한 기능을 흡수했습니다. ARP는 IPv4에서 계층 2에서 실행됩니다. IPv6에는 ARP가 없습니다. 이웃 발견은 대신 ICMPv6를 사용합니다. IGMP는 IPv4에서 멀티캐스트 그룹을 관리했습니다. IPv6는 ICMPv6 내에서 멀티캐스트 리스너 발견 (MLD) 메시지를 사용합니다.
이 통합은 프로토콜 스택을 단순화했지만 ICMPv6를 절대적으로 필수적으로 만들었습니다. 핵심 기능을 손상시키지 않고 차단할 수 없습니다.
메시지 유형 구조#
ICMPv6 메시지는 간단한 구조를 가지고 있습니다: 유형, 코드, 체크섬 및 메시지별 데이터. 유형 필드가 메시지 범주를 결정합니다.
유형 번호 범위:
- 0-127: 오류 메시지
- 128-255: 정보 메시지
이 분할은 필터링을 더 쉽게 만듭니다. 오류 메시지는 패킷 전달 문제를 보고합니다. 정보 메시지는 쿼리, 응답 및 이웃/라우터 발견을 처리합니다.
일반적인 메시지 유형#
| 유형 | 코드 | 이름 | 범주 | 목적 |
|---|---|---|---|---|
| 1 | 0-6 | 대상 도달 불가 | 오류 | 포트 닫힘, 경로 사용 불가 등 |
| 2 | 0 | 패킷 너무 큼 | 오류 | 경로에서 MTU 초과 |
| 3 | 0-1 | 시간 초과 | 오류 | 홉 제한 도달 또는 단편 시간 초과 |
| 4 | 0-2 | 매개변수 문제 | 오류 | 잘못된 패킷 헤더 |
| 128 | 0 | 에코 요청 | 정보 | Ping 요청 |
| 129 | 0 | 에코 응답 | 정보 | Ping 응답 |
| 133 | 0 | 라우터 요청 | 정보 | 라우터 정보 요청 |
| 134 | 0 | 라우터 알림 | 정보 | 라우터가 존재 및 구성 알림 |
| 135 | 0 | 이웃 요청 | 정보 | 주소 해석 및 도달 가능성 |
| 136 | 0 | 이웃 알림 | 정보 | 요청에 대한 응답 |
| 137 | 0 | 리디렉션 | 정보 | 더 나은 첫 번째 홉 라우터 존재 |
유형 번호가 중요함
ICMP 유형이 분산된 번호를 사용하는 IPv4와 달리 ICMPv6의 조직화된 유형 공간은 방화벽 규칙을 더 명확하게 만듭니다. 유형 133-137은 이웃 발견 프로토콜을 처리하여 NDP를 그룹으로 허용하거나 차단하기 쉽게 만듭니다.
이웃 발견 프로토콜 (NDP)#
이웃 발견 프로토콜은 IPv4의 ARP를 대체하고 IPv4가 여러 프로토콜을 통해 처리한 기능을 추가합니다. NDP는 전적으로 ICMPv6를 통해 실행되며 5가지 중요한 기능을 처리합니다:
- 주소 해석 - IPv6 주소를 MAC 주소에 매핑 (ARP 대체)
- 라우터 발견 - 구성 없이 로컬 라우터 찾기
- 접두사 발견 - 자동 구성을 위한 네트워크 접두사 학습
- 매개변수 발견 - MTU, 홉 제한 및 기타 매개변수 가져오기
- 다음 홉 결정 - 대상에 대한 최상의 라우터 식별
5가지 NDP 메시지 유형#
라우터 요청 (유형 133)#
호스트가 다음 예정된 라우터 알림을 기다리는 대신 즉시 자신을 알리도록 라우터에 요청하기 위해 보냅니다.
전송 시기:
- 호스트 부팅
- 인터페이스 온라인
- 호스트가 빠르게 구성을 원함
형식:
소스: 링크 로컬 주소 또는 ::
대상: ff02::2 (모든 라우터 멀티캐스트)
홉 제한: 255라우터 요청을 통해 호스트는 주기적인 알림을 기다리는 대신 몇 초 이내에 네트워크 구성을 얻을 수 있습니다.
라우터 알림 (유형 134)#
라우터가 자신의 존재를 알리고, SLAAC를 위한 접두사를 알리며, 구성 매개변수를 제공하기 위해 보냅니다.
전송 시기:
- 주기적으로 (몇 분마다)
- 라우터 요청에 대한 응답
- 라우터 구성 변경 시
포함 내용:
- 라우터 수명 (이 라우터를 얼마나 오래 사용할지)
- 네트워크 접두사 및 유효성
- MTU 권장 사항
- 홉 제한 제안
- SLAAC 및 DHCPv6에 대한 플래그
형식:
소스: 라우터의 링크 로컬 주소
대상: ff02::1 (모든 노드 멀티캐스트) 또는 요청 호스트
홉 제한: 255라우터 알림은 호스트가 자동으로 네트워크 구성을 학습하는 방법입니다. DHCP가 필요하지 않습니다. 라우터는 호스트가 자체 구성에 필요한 모든 것을 브로드캐스트합니다.
SLAAC는 라우터 알림에 의존
스테이트리스 주소 자동 구성 (SLAAC)은 라우터 알림에 완전히 의존합니다. 유형 134를 차단하면 호스트가 자동 구성할 수 없습니다. 링크 로컬 주소만 가지며 기본 경로가 없고 전역적으로 라우팅 가능한 주소가 없습니다.
이웃 요청 (유형 135)#
ARP 요청의 IPv6 동등물. 이웃의 MAC 주소를 검색하거나 이웃이 여전히 도달 가능한지 확인하기 위해 보냅니다.
전송 시기:
- IPv6 주소를 MAC 주소로 해석
- 이웃이 여전히 도달 가능한지 확인
- 중복 주소 탐지 (주소가 이미 사용 중인지 확인)
형식:
소스: 발신자의 주소 (또는 DAD의 경우 ::)
대상: 요청된 노드 멀티캐스트 주소 또는 대상 주소
홉 제한: 255이웃 요청 메시지는 브로드캐스트 대신 요청된 노드 멀티캐스트 주소를 사용합니다. 이로 인해 불필요한 처리가 줄어듭니다. 대상 호스트와 유사한 주소를 가진 호스트만 패킷을 받습니다.
이웃 알림 (유형 136)#
이웃 요청에 대한 응답. 발신자의 MAC 주소를 제공하거나 도달 가능성을 확인합니다.
전송 시기:
- 이웃 요청에 대한 응답
- 주소 변경에 대한 요청되지 않은 알림
형식:
소스: 발신자의 링크 로컬 또는 전역 주소
대상: 요청자의 주소 또는 모든 노드 멀티캐스트
홉 제한: 255리디렉션 (유형 137)#
라우터가 특정 대상에 대해 더 나은 첫 번째 홉 라우터가 존재함을 호스트에 알리기 위해 보냅니다.
전송 시기:
- 호스트가 라우터에 패킷 전송
- 라우터가 동일한 링크에서 더 나은 다음 홉을 알고 있음
- 라우터가 패킷을 전달하고 리디렉션 전송
형식:
소스: 라우터의 링크 로컬 주소
대상: 원래 발신자
홉 제한: 255리디렉션은 호스트가 복잡한 라우팅 테이블을 유지할 필요 없이 라우팅을 최적화합니다.
주소 해석 작동 방식#
호스트가 로컬 링크의 다른 IPv6 주소로 패킷을 보내야 할 때:
- 이웃 캐시 확인 - MAC 주소가 이미 알려져 있습니까?
- 이웃 요청 전송 - 그렇지 않으면 요청된 노드 멀티캐스트 주소로 NS 전송
- 이웃 알림 수신 - 대상이 MAC 주소로 응답
- 캐시 업데이트 - 향후 사용을 위해 매핑 저장
- 패킷 전송 - 원래 패킷 전달
요청된 노드 멀티캐스트 주소는 대상의 IPv6 주소에서 계산됩니다:
ff02::1:ff + IPv6 주소의 마지막 24비트
예:
IPv6: 2001:db8::a4b2:c3d4:e5f6:7890
요청된 노드: ff02::1:ff:f6:7890이 멀티캐스트 접근 방식은 IPv4의 브로드캐스트 기반 ARP에 비해 네트워크 트래픽을 줄입니다.
중복 주소 탐지
주소를 사용하기 전에 호스트는 소스 ::와 사용하려는 주소로 설정된 대상으로 이웃 요청을 보냅니다. 다른 호스트가 응답하면 주소가 이미 사용 중입니다. 이것은 SLAAC에서 주소 충돌을 방지합니다.
라우터 발견 상세 설명#
라우터는 라우터 알림 메시지를 통해 자신과 네트워크 구성을 알립니다. 호스트는 이러한 알림을 수신하고 이를 기반으로 자동 구성합니다.
라우터 알림 내용#
일반적인 RA 포함:
라우터 정보:
- 라우터 수명 (0-9000초, 0은 "기본 라우터 아님"을 의미)
- 도달 가능 시간 (이웃을 도달 가능하다고 간주하는 기간)
- 재전송 타이머 (이웃 요청 간 지연)
접두사 정보:
- 네트워크 접두사 (예: 2001:db8:1234::/64)
- 유효 수명 (주소가 유효한 기간)
- 선호 수명 (새 연결에 사용하는 기간)
- 플래그:
- L (링크상): 접두사가 로컬 링크에 있음
- A (자율): SLAAC에 사용
기타 옵션:
- MTU 권장 사항
- DNS 서버 (RDNSS 옵션)
- DNS 검색 도메인 (DNSSL 옵션)
SLAAC 주소 형성#
호스트가 A 플래그가 설정된 RA를 받으면:
- 접두사 가져오기 - 예:
2001:db8:1234::/64 - 인터페이스 식별자 생성 - MAC에서 파생되거나 무작위로 64비트
- 결합 -
2001:db8:1234::a4b2:c3d4:e5f6:7890 - 중복 주소 탐지 실행 - 다른 사람이 사용하지 않는지 확인
- 주소 구성 - 인터페이스에 추가
- 기본 경로 설정 - 라우터를 다음 홉으로 사용
이것은 사용자 개입이나 DHCP 서버 없이 자동으로 발생합니다.
구성을 제어하는 플래그#
라우터 알림에는 호스트가 자체 구성하는 방법을 알려주는 플래그가 포함됩니다:
- M (관리): 주소에 DHCPv6 사용 (SLAAC 아님)
- O (기타): 기타 구성에 DHCPv6 사용 (DNS, NTP 등)
일반적인 조합:
| M | O | 동작 |
|---|---|---|
| 0 | 0 | SLAAC만, DHCPv6 없음 |
| 0 | 1 | 주소는 SLAAC, DNS 등은 DHCPv6 |
| 1 | 0 | 주소는 DHCPv6 (드문 경우) |
| 1 | 1 | 모든 것에 DHCPv6 |
대부분의 네트워크는 M=0, O=0 (순수 SLAAC) 또는 M=0, O=1 (DNS용 SLAAC + DHCPv6)을 사용합니다.
경로 MTU 발견#
IPv6 라우터는 패킷을 단편화하지 않습니다. 소스는 전체 경로에 맞을 만큼 작은 패킷을 보내야 합니다. 여기서 ICMPv6 유형 2가 중요해집니다.
PMTUD 작동 방식#
- 호스트가 패킷 전송 - 인터페이스 MTU 사용 (일반적으로 1500바이트)
- 라우터가 더 작은 MTU 발견 - IPv6에서 단편화할 수 없음
- 라우터가 패킷 삭제 - ICMPv6 패킷 너무 큼 메시지를 다시 전송
- 메시지에 MTU 포함 - 허용되는 최대 크기를 발신자에게 알림
- 호스트가 패킷 크기 감소 - 더 작은 MTU로 재전송
- 연결 계속 - 적절한 패킷 크기 사용
패킷 너무 큼 메시지 형식:
유형: 2
코드: 0
MTU: 1280 (또는 다음 홉이 지원하는 것)
원래 패킷: 삭제된 패킷의 첫 번째 부분최소 IPv6 MTU는 1280바이트입니다. 모든 링크는 최소한 이 크기를 지원해야 합니다. 더 큰 패킷은 PMTUD가 작동해야 합니다.
유형 2를 차단할 때 발생하는 일#
패킷 너무 큼 메시지가 차단될 때 연결 증상:
- 초기 연결 작동 - SYN, SYN-ACK, ACK 패킷은 작음
- 데이터 전송 중단 - 큰 패킷이 자동으로 삭제됨
- 오류 메시지 없음 - 연결이 그냥 멈춤
- 분 후 시간 초과 - TCP가 결국 포기함
이것은 연결이 실패하기 전에 성공적으로 설정되기 때문에 디버그하기 가장 실망스러운 문제 중 하나입니다.
실제 시나리오:
$ curl -6 https://example.com/
# TLS 핸드셰이크 후 연결 중단
# 브라우저가 "로딩 중..." 영원히 표시
# SSH는 연결되지만 배너 교환 중 중단모두 일부 미들박스가 ICMPv6 유형 2를 차단했기 때문입니다.
패킷 너무 큼을 절대 차단하지 마세요
ICMPv6 유형 2를 차단하면 미묘하고 애플리케이션별 방식으로 연결이 중단됩니다. 방화벽과 라우터를 통해 양방향으로 이 메시지 유형을 항상 허용하세요.
에코 요청 및 에코 응답 (Ping)#
유형 128 (에코 요청) 및 유형 129 (에코 응답)은 IPv4 ping과 정확히 동일하게 작동합니다.
형식:
유형: 128 (요청) 또는 129 (응답)
코드: 0
식별자: 임의 (요청/응답 일치)
시퀀스: 각 ping마다 증가
데이터: 임의 페이로드진단 사용#
Ping은 가장 간단한 연결 테스트입니다:
# 기본 ping
ping6 2001:4860:4860::8888
# 소스 주소 지정
ping6 -I 2001:db8::10 2001:4860:4860::8888
# PMTUD 테스트를 위한 큰 패킷
ping6 -s 1400 google.com
# 플러드 ping (루트 필요)
sudo ping6 -f 2001:4860:4860::8888속도 제한 고려 사항#
많은 관리자가 정찰 및 DoS 공격을 방지하기 위해 ping을 속도 제한합니다. 이것은 프로덕션 서버에 합리적이지만 완전히 차단하면 문제 해결이 더 어려워집니다.
권장 접근 방식:
- 에코 요청/응답 허용
- 남용을 방지하기 위해 속도 제한
- 과도한 시도 기록
Linux 예:
# ping 허용하지만 속도 제한
ip6tables -A INPUT -p ipv6-icmp --icmpv6-type 128 \
-m limit --limit 10/sec --limit-burst 20 -j ACCEPT
ip6tables -A INPUT -p ipv6-icmp --icmpv6-type 128 -j DROP이것은 초당 10개의 ping을 허용하고 최대 20개까지 버스트하며 초과 트래픽을 삭제합니다.
방화벽 고려 사항#
ICMPv6 필터링은 어떤 유형이 필수이고 어떤 유형이 선택 사항인지 이해해야 합니다.
반드시 허용 (연결 중단)#
유형 2: 패킷 너무 큼
- 방향: 인바운드 및 아웃바운드 모두
- 이유: 경로 MTU 발견이 없으면 중단됨
- 범위: 모든 연결
유형 133-136: 이웃 발견
- 방향: 링크 로컬만 (홉 제한 255)
- 이유: 주소 해석 및 라우터 발견 실패
- 범위: 로컬 네트워크만
유형 1: 대상 도달 불가
- 방향: 인바운드 (트래픽에 대한 응답)
- 이유: TCP가 포트/경로가 존재하지 않을 때 알아야 함
- 범위: 모든 연결
허용해야 함 (진단 중단)#
유형 3: 시간 초과
- 방향: 인바운드
- 이유: 없으면 Traceroute 실패
- 영향: 라우팅 문제 진단 불가
유형 128-129: 에코 요청/응답
- 방향: 양방향
- 이유: Ping은 기본 연결 테스트
- 영향: 기본 도달 가능성 확인 불가
차단 가능 (정보만)#
유형 130-132: 멀티캐스트 리스너 발견
- 범위: 로컬 네트워크만
- 영향: 멀티캐스트가 최적으로 작동하지 않을 수 있음
유형 137: 리디렉션
- 영향: 로컬 네트워크에서 최적이 아닌 라우팅
- 보안: 일부 관리자가 경로 조작을 방지하기 위해 차단
iptables 규칙 예#
최소 호스트 방화벽:
# 필수 ICMPv6
ip6tables -A INPUT -p ipv6-icmp --icmpv6-type 1 -j ACCEPT # 대상 도달 불가
ip6tables -A INPUT -p ipv6-icmp --icmpv6-type 2 -j ACCEPT # 패킷 너무 큼
ip6tables -A INPUT -p ipv6-icmp --icmpv6-type 3 -j ACCEPT # 시간 초과
ip6tables -A INPUT -p ipv6-icmp --icmpv6-type 128 -j ACCEPT # 에코 요청
ip6tables -A INPUT -p ipv6-icmp --icmpv6-type 129 -j ACCEPT # 에코 응답
# 이웃 발견 (링크 로컬만, 홉 제한 255)
ip6tables -A INPUT -p ipv6-icmp --icmpv6-type 133 -m hl --hl-eq 255 -j ACCEPT
ip6tables -A INPUT -p ipv6-icmp --icmpv6-type 134 -m hl --hl-eq 255 -j ACCEPT
ip6tables -A INPUT -p ipv6-icmp --icmpv6-type 135 -m hl --hl-eq 255 -j ACCEPT
ip6tables -A INPUT -p ipv6-icmp --icmpv6-type 136 -m hl --hl-eq 255 -j ACCEPT홉 제한 확인 (--hl-eq 255)은 이웃 발견 패킷이 로컬 링크에서 시작되도록 보장합니다. 합법적인 NDP는 항상 홉 제한 255를 사용합니다. 라우터의 패킷은 감소된 값을 가질 것입니다.
nftables 동등물:
# 필수 ICMPv6
nft add rule ip6 filter input icmpv6 type { destination-unreachable, packet-too-big, time-exceeded, echo-request, echo-reply } accept
# 홉 제한 확인이 있는 이웃 발견
nft add rule ip6 filter input icmpv6 type { nd-router-solicit, nd-router-advert, nd-neighbor-solicit, nd-neighbor-advert } ip6 hoplimit 255 accept일반적인 실수: 모든 ICMPv6 차단
가장 일반적인 IPv6 방화벽 실수는 모든 ICMPv6를 차단하는 것입니다. 관리자는 모든 ICMP를 차단하는 IPv4 규칙을 포팅하고 IPv6가 왜 중단되는지 궁금해합니다. ICMPv6는 선택 사항이 아닙니다. 필수 유형을 허용하거나 연결 실패를 예상하세요.
ICMPv6로 문제 해결#
오류 메시지 읽기#
연결이 실패하면 tcpdump로 ICMPv6 오류 메시지를 확인하세요:
# 모든 ICMPv6 캡처
sudo tcpdump -i eth0 -n ip6 and icmp6
# 특정 유형
sudo tcpdump -i eth0 -n 'ip6 and icmp6 and ip6[40] == 1' # 유형 1 (대상 도달 불가)
sudo tcpdump -i eth0 -n 'ip6 and icmp6 and ip6[40] == 2' # 유형 2 (패킷 너무 큼)일반적인 오류 시나리오:
유형 1, 코드 1: 통신이 관리상 금지됨
# 방화벽이 트래픽 차단
18:23:45.123456 IP6 2001:db8::1 > 2001:db8::10: ICMP6, destination unreachable,
administratively prohibited, length 68방화벽 또는 액세스 제어 목록이 연결을 차단합니다.
유형 1, 코드 4: 포트 도달 불가
# 서비스가 실행되지 않음
18:23:45.234567 IP6 2001:db8::10 > 2001:db8::1: ICMP6, destination unreachable,
port unreachable, length 68대상 포트에서 아무것도 수신 대기하지 않습니다.
유형 2: 패킷 너무 큼
# MTU 문제
18:23:45.345678 IP6 2001:db8:1234::1 > 2001:db8::10: ICMP6, packet too big,
mtu 1280, length 1240경로 MTU가 발신자가 가정한 것보다 작습니다. 발신자는 패킷 크기를 1280바이트로 줄여야 합니다.
NDP용 Wireshark 사용#
Wireshark는 디스플레이 필터로 NDP 분석을 더 쉽게 만듭니다:
# 모든 ICMPv6
icmpv6
# 이웃 발견만
icmpv6.type >= 133 && icmpv6.type <= 137
# 라우터 알림
icmpv6.type == 134
# 특정 주소에 대한 이웃 요청
icmpv6.type == 135 && icmpv6.nd.ns.target_address == 2001:db8::10라우터 알림을 감시하여 네트워크가 제공하는 구성을 확인하세요:
# RA 필터링, 패킷 세부 정보에서 ICMPv6 계층 확장
# 확인:
# - 플래그 (M, O)
# - 접두사 정보
# - DNS 서버 (RDNSS 옵션)
# - MTU 옵션일반적인 문제 및 솔루션#
*문제: 호스트에 전역 IPv6 주소 없음, fe80::만 있음
진단:
# 라우터 알림 확인
sudo tcpdump -i eth0 -n 'icmp6 && ip6[40] == 134'원인:
- 네트워크에 라우터 없음
- 라우터가 RA를 보내지 않음
- 방화벽이 유형 134 차단
솔루션: 라우터에서 IPv6 활성화, RA 구성 확인, 방화벽 규칙 확인.
문제: Ping은 작동하지만 대용량 전송이 중단됨
진단:
# 큰 ping 패킷으로 테스트
ping6 -s 1400 target.example.com원인:
- 어딘가에서 ICMPv6 유형 2 차단됨
- 경로의 MTU 불일치
- 방화벽이 패킷 너무 큼 필터링
솔루션: 모든 방화벽을 통해 유형 2 허용, MTU 구성 확인.
문제: 같은 서브넷의 이웃에 도달할 수 없음
진단:
# 이웃 캐시 확인
ip -6 neigh show
# 이웃 요청 확인
sudo tcpdump -i eth0 -n 'icmp6 && ip6[40] == 135'원인:
- 방화벽이 유형 135/136 차단
- 스위치가 멀티캐스트 필터링
- 대상에서 IPv6 비활성화됨
솔루션: 방화벽을 통해 NDP 허용, 스위치 멀티캐스트 구성 확인.
문제: 호스트가 라우터 알림 무시
진단:
# RA가 도착하는지 확인
sudo tcpdump -i eth0 -n 'icmp6 && ip6[40] == 134'
# accept_ra 설정 확인 (Linux)
sysctl net.ipv6.conf.eth0.accept_ra원인:
- accept_ra 비활성화됨 (Linux)
- 호스트에서 IPv6 포워딩 활성화됨 (RA 처리 비활성화)
- RA에 유효하지 않은 홉 제한 (!= 255)
솔루션: accept_ra 활성화, 엔드 호스트에서 포워딩 비활성화, 라우터 구성 확인.
관련 기사#
- IPv6 기초 - IPv6 주소 지정의 기본 사항과 IPv6가 존재하는 이유를 알아보세요.
- IPv6 방화벽 구성 - 보안을 유지하면서 필수 ICMPv6를 허용하도록 방화벽을 구성하세요.
- IPv6 문제 해결 - ICMPv6를 사용하여 일반적인 IPv6 연결 문제를 진단하고 수정하세요.
네트워크 테스트
Ping 도구를 사용하여 ICMPv6 연결을 테스트하고 Traceroute 도구를 사용하여 ICMPv6 시간 초과 메시지가 실제로 작동하는 것을 확인하세요.
자주 묻는 질문#
IPv4 ICMP처럼 ICMPv6 ping을 차단할 수 있습니까?
연결을 중단하지 않고 에코 요청/응답 (유형 128-129)을 속도 제한하거나 차단할 수 있지만 문제 해결이 훨씬 어려워집니다. ICMP가 대부분 진단인 IPv4와 달리 ICMPv6에는 절대 차단해서는 안 되는 이웃 발견 및 경로 MTU 발견과 같은 필수 기능이 포함되어 있습니다. 원하면 ping을 차단하되 유형 1, 2 또는 133-136을 절대 차단하지 마세요.
NDP가 ARP처럼 브로드캐스트 대신 멀티캐스트를 사용하는 이유는 무엇입니까?
멀티캐스트가 더 효율적입니다. IPv4 ARP는 대상이 아니더라도 네트워크의 모든 호스트가 처리해야 하는 브로드캐스트를 보냅니다. IPv6 NDP는 대상의 IPv6 주소에서 계산된 요청된 노드 멀티캐스트 주소를 사용합니다. 일치하는 주소를 가진 호스트만 패킷을 처리합니다. 다른 모든 호스트는 하드웨어에서 필터링합니다. 이것은 특히 대규모 네트워크에서 CPU 부하와 네트워크 노이즈를 줄입니다.
라우터 요청과 라우터 알림의 차이점은 무엇입니까?
라우터 요청 (유형 133)은 라우터에게 즉시 자신을 알리도록 요청하는 호스트가 보낸 요청입니다. 라우터 알림 (유형 134)은 네트워크 접두사, 구성 매개변수 및 라우터 정보를 포함하는 라우터가 보낸 응답입니다. 라우터는 요청 없이 주기적으로 RA도 보냅니다. RS를 통해 호스트는 다음 주기적 RA를 기다리는 대신 부팅 시 빠르게 구성을 얻을 수 있습니다.
라우터는 얼마나 자주 라우터 알림을 보내야 합니까?
RFC 4861은 200-600초 (3.3-10분) 간격으로 RA를 권장합니다. 대부분의 구현은 기본적으로 200초입니다. 라우터는 라우터 요청에 즉시 응답하기도 합니다. 간격은 새 호스트에 대한 빠른 구성과 최소 네트워크 오버헤드의 균형을 맞춥니다. 너무 자주하면 대역폭을 낭비하고 너무 드물게 하면 자동 구성이 지연됩니다.
일부 ICMPv6 메시지가 홉 제한 255를 요구하는 이유는 무엇입니까?
홉 제한 255 요구 사항은 링크 외부 공격자가 위조된 이웃 발견 메시지를 보내는 것을 방지합니다. 합법적인 NDP 패킷은 로컬 링크에서 시작되며 항상 홉 제한 255를 사용합니다. 원격 공격자의 패킷은 라우터를 통과하여 홉 제한을 감소시킵니다. 홉 제한 < 255인 패킷을 거부함으로써 호스트는 로컬 네트워크 외부에서 오는 악의적인 라우터 알림 및 이웃 알림으로부터 보호됩니다.