IPv6 주소·헤더·ND·자동 설정
128비트 주소와40바이트 헤더를 읽고 RS/RA·NS/NA·DAD의 역할을 구분한다. 수업의 IPv6 활성화·정적 경로·NBMA 사례와 /80·/96 자동 설정 오해를 함께 정리한다.
개념부터 찾아보기
정의·역할·동작 원리를 독립 페이지에서 확인하세요. 본문의 밑줄 용어에도 설명이 있습니다.
이 노트에서 설명할 수 있게 되는 것
- 128비트 주소와 40바이트 기본 헤더를 읽는다.
- RA·SLAAC·ND의 역할을 분리한다.
- IPv6 장애를 주소·이웃·경로·MTU 순서로 해석한다.
01주소를 128비트로 표현하고 정확히 줄이기
- 128비트 표기 주소는 16비트 그룹 8개를 콜론으로 구분하며 그룹 하나는 최대 4개의 16진수 문자다. 2001:0db8:0001:0000:0000:0000:0000:0010은 2001:db8:1::10으로 줄일 수 있다.
- 그룹 안의 선행 0을 생략할 수 있지만 뒤의 0을 임의로 지울 수 없다.
- 연속된 0그룹을::로 줄이는 것은 주소 전체에서 한 번만 가능하다.
- 생략 규칙::가 두 번 있으면 어느 위치에 0그룹이 몇 개 들어가야 하는지 결정할 수 없다. 복원할 때 명시된 그룹 수를 8에서 빼 생략된 0그룹 수를 계산한다.
- /64는 앞 64비트가 프리픽스라는 뜻이다.
- 주소의 긴 표기와 짧은 표기는 같은 128비트 값을 나타내며 별도 주소가 아니다.
- 이 문서는 설명용 2001:db8::/32를 사용한다.
02Global·Link-local·ULA·Multicast·Anycast
- 유니캐스트 범위Global unicast, , unique local은 주소의 용도와 범위를 구분한다. fe80::/10 링크 로컬은 같은 링크에서 사용하며 라우터가 다른 링크로 전달하지 않는다.
- 주소가 인터페이스별 범위를 가지므로 같은 값이 서로 다른 링크에 있을 수 있고, 다음 홉으로 사용할 때 인터페이스 식별이 중요하다.
- ::1은 자기 자신을 가리키는 loopback이며 링크 로컬과 다르다.
- 멀티캐스트·애니캐스트ff00::/8은 multicast로 뒤의 flags와 scope가 전달 범위 등을 나타낸다. ff02::1은 링크 범위의 all-nodes, ff02::2는 all-routers다.
- 에는 broadcast가 없다.
- Anycast는 여러 노드에 같은 유니캐스트 형태 주소를 배치해 기준으로 가까운 한 노드에 전달하는 개념이며 지리적으로 가장 가까운 단말이나 항상 최저 hop이라는 뜻은 아니다.
- 에서도 anycast를 구현할 수 있으므로 만의 독점 기능으로 설명하지 않는다.
- 주소 할당과 변환전역 주소의 사용 가능 범위는 현재의 주소 할당 정책을 따라야 하며 앞자리 모양만으로 판정하지 않는다. ULA의fc00::/7도 전역 인터넷 을 보장하는 주소가 아니다.
- 주소가 넓어 가 주소 절약의 필수 수단이 되지 않는다는 점과 실제 전환·정책 환경에서 번역 기술이 사용될 수 있다는 점을 함께 구분한다.
03고정 40바이트 헤더와 Next Header 연결
- 기본 헤더Version4비트는 6, Traffic Class8비트는 DSCP/ECN 같은 분류, Flow Label20비트는 흐름 식별에 사용된다. 이 있다고 IP가 처럼 연결 상태와 재전송을 보장하는 연결 지향 프로토콜로 바뀌지 않는다.
- Payload Length16비트는 기본 40바이트 이후의 길이를 나타내므로 확장 헤더가 있으면 그 길이도 포함한다.
- 특수한 jumbogram 처리와 일반 길이 계산은 구별한다.
- ·Next Header8비트는 바로 다음 확장 헤더 또는 상위 프로토콜을 식별한다. 6· 17·ICMPv6 58이 대표값이다.
- 확장 헤더도 자신의 로 다음 구조를 이어 가므로 기본 헤더 뒤가 곧바로 라고 가정하지 않는다.
- Hop Limit8비트는 전달 횟수 제한이고 출발지·목적지 주소는 각각 128비트다.
- 와 달리 기본 헤더 체크섬은 없다.
설명과 함께 보는 보조 도식
IPv6 기본 헤더
확장 헤더가 없는 기본 부분은 40바이트다.
뒤쪽 · Next Header를 따라 확장 헤더 또는 전송 계층으로 이동한다.
버전·트래픽·흐름 4 B
Version 4 bit, Traffic Class 8 bit, Flow Label 20 bit
길이·다음·홉 4 B
Payload Length 2 B, Next Header 1 B, Hop Limit 1 B
출발지 16 B
128비트 출발 주소
2001:db8:100::10목적지 16 B
128비트 목적 주소
2001:db8:200::20각 필드를 누르면 역할과 예시를 확인할 수 있습니다. 칸의 너비는 실제 바이트 비율과 다릅니다.
04ND는 ARP보다 넓은 이웃 탐색 기능이다
- 는 ICMPv6 메시지를 사용한다.
- Router Solicitation133과 Router Advertisement134는 라우터·프리픽스·기본 경로 등 정보를 얻는 데 사용하고, Neighbor Solicitation135와 Neighbor Advertisement136은 주소 해석·도달성 확인 등에 사용한다.
- Redirect137은 더 적절한 다음 홉을 알려 주는 별도 메시지다.
- 패킷을 주소 길이로만 늘린 구조가 아니다.
- ·의 역할는 대상 주소에서 계산한 를 활용해 해당 주소를 가진 노드를 찾을 수 있다. 단말은 neighbor cache에 와 링크 계층 주소·도달성 상태를 유지한다.
- 에서 시간이 지나 이 됐다고 곧바로 고장이라는 뜻은 아니다.
- 이후 사용 과정에서 · 등 도달성 확인 단계로 이어질 수 있다.
- 이웃 해석 캐시와 은 서로 다른 자료다.
05Neighbor Cache 상태와 도달 가능성의 근거
- 링크 계층 주소를 모르는 상태이며 멀티캐스트 로 해석을 시도한다. 주소 해석 완료와 이후 이웃의 지속적인 도달 가능성 확인은 서로 다른 단계다.
- 과 최근 양방향 도달 가능성을 확인한 항목은 이다. 유효한 확인 기간이 지나 이 되어도 MAC 대응을 즉시 버리는 것은 아니며 첫 데이터 전송에 사용할 수 있다.
- 전환 이웃으로 실제 데이터를 보낼 때 로 바뀐다. 상위 계층의 진행 확인을 기다려 불필요한 를 줄이며 RFC 4861의 기본 DELAY_FIRST_PROBE_TIME은 5초다.
- 와 실패기다리는 동안 확인이 없으면 캐시된 링크 주소를 사용한 유니캐스트 로 한다. 정해진 재시도에도 확인되지 않으면 항목을 제거하고 필요 시 다음 홉 선택도 재검토한다.
- 확인으로 인정할 정보Solicited 나 전진 경로의 전달 성공을 나타내는 상위 계층 정보는 도달 가능성 확인에 쓰일 수 있다. 아무 패킷 하나를 수신했다고 역방향 송신 경로까지 정상으로 단정하지 않는다.
06Solicited-node 멀티캐스트 주소와 Ethernet MAC 계산
- 가상 대상 주소대상의 유니캐스트 주소를 2001:db8::1234:5678로 잡는다. 전체 128비트 중 마지막 24비트는 0x345678이다.
- 그룹 조합ff02::1:ff00:0/104의 마지막 24비트에 0x345678을 넣으면 ff02::1:ff34:5678이 된다. 이 그룹을 이용해 같은 링크의 해당 주소 소유자를 찾는다.
- 주소 조합 멀티캐스트를 에 싣는 규칙은 33:33 뒤에 목적지의 마지막 32비트를 붙이는 것이다. 결과는 33:33:ff:34:56:78이다.
- 충돌하는 그룹 이해하위 24비트가 같은 여러 주소는 같은 그룹에 속할 수 있다. 의 Target Address 전체를 읽어 실제 대상인지 구분해야 한다.
- 캡처 대조 목적지와 목적지가 위 대응인지, ICMPv6 안의 Target Address가 원래 유니캐스트 주소인지 함께 본다. 그룹 주소 자체가 이웃 캐시에 저장할 유니캐스트 IP는 아니다.
07SLAAC·RA·DAD로 주소를 만드는 순서
- 인터페이스 식별자일반적인 SLAAC는 /64 프리픽스와 64비트 식별자를 결합한다. 식별자는 modified EUI-64, 안정적 비공개 방식, 임시 주소 방식 등을 사용할 수 있다.
- 의 출발지아직 소유하지 않은 주소를 검사하는 는 미지정 출발지 ::를 사용한다. 일반 이웃 해석 와 목적·필드가 다르다.
- 주소 수명과 경로는 on-link·autonomous 여부, preferred/과 을 별도로 전달한다. 주소는 새 연결의 출발지 선택에서 피할 수 있지만 유효기간이 남은 기존 통신에는 쓰일 수 있다.
- 링크 로컬 주소 준비인터페이스가 링크 로컬 주소를 구성하고 로 중복을 검사한다. 넓은 주소 공간 자체가 충돌 부재를 보장하지는 않는다.
- 라우터 광고 수신호스트가 를 보내거나 주기적인 를 기다린다. 의 프리픽스와 라우터 정보는 서로 다른 역할로 읽는다.
- SLAAC 주소 생성Prefix Information의 autonomous 플래그와 적절한 프리픽스 조건을 만족하면 인터페이스 식별자를 결합한다. 생성한 주소는 바로 확정된 주소로 취급하지 않는다.
- 중복 검사와 사용 주소의 결과를 확인한 뒤 사용한다. 주소 생성과 기본 게이트웨이 발견은 같은 필드 하나로 완료되는 과정이 아니다.
08DHCPv6·수동 설정·Dual Stack
- 와 기본 경로는 SLAAC만 쓰는 것이 아니다. 수동 주소, 상태 기반 , SLAAC와 추가정보 등을 조합할 수 있다.
- 의 서버·클라이언트는 UDP547·546을 사용하고 DORA와 메시지 이름·구조가 다르다.
- 일반적인 기본 라우터 발견은 를 사용하므로 DHCPv4처럼 서버가 주소와기본게이트웨이를모두준다고 가정하지 않는다.
- Dual Stack·터널·번역한 인터페이스에 와 를 함께 두는 dual stack은 양쪽 프로토콜을 병행하는 방식이다. 패킷을 안에 캡슐화하는 터널과 주소·프로토콜을 변환하는 번역은 별개다.
- 6to4와 는 서로 다른 방식이며 모든 -over- 터널의 공통 이름이 아니다.
- 또한 를 켰다고 이 자동 협상되고 모든 패킷이 암호화되지는 않는다.
09MTU·조각화·ICMPv6의 관계
- 최소 와 조각화 라우터는 전달 중 패킷을 처럼 조각내지 않는다. 경로의 보다 큰 패킷은 ICMPv6 Packet Too Big으로 송신자에게 알려 크기를 조정하게 한다.
- 필요한 조각화는 송신자가 Fragment 확장 헤더를 사용한다.
- 재조립과 상위 전송의 데이터 크기 조정이 제대로 동작하려면 관련 ICMPv6 메시지의 반환 경로가 필요하다.
- ICMPv6 처리따라서 ‘는 ping뿐이므로모두차단’하면 의 주소 해석·라우터 발견· 처리까지 망가뜨릴 수 있다. 모든 ICMPv6를 무제한 허용하라는 뜻도 아니다.
- 링크 로컬 제어 메시지의 scope· 검증과 실제 필요한 오류 메시지를 고려해 정책을 정한다.
- 작은 패킷은 되는데 큰 데이터만 멈추면 와 Packet Too Big 수신을 연결해 분석한다.
실습: IPv6 인터페이스와 RIPng 패킷 구분
인터페이스 주소와 업데이트에서 링크 로컬·멀티캐스트· 포트의 역할을 나눈다.
실습 구성과 전제
- Loopback 출력과 캡처는 별도 연습의 관찰 예다. 동일 라우터의 연속 실행으로 해석하지 않는다.
- 재구성 설정은 문서용 2001:db8::/32를 사용한다.
주소 설정과 라우팅 활성화 구분
- 주소 보유와 인터페이스 사이의 전달은 별개다. 라우터 기능에는 unicast-routing을 설정한다.
- show interface brief에서 링크 로컬과 설정 주소를 따로 읽는다. 링크 로컬은 같은 링크의 인접 통신에 사용한다.
textipv6 unicast-routing interface Loopback0 ipv6 address 2001:db8:1::1/64 end show ipv6 interface brief show ipv6 route주소를 문서용으로 바꾼 재구성 예시
원본 크기로 보기 ↗- Loopback0에 [up/up]이 보인다.
- FE80::로 시작하는 주소와 다른 IPv6 주소가 두 줄로 표시된다.
확인 기준up/up과 주소 확인 뒤 원격 목적지의 경로표도 확인한다.
RIPng 참여 인터페이스 지정
- 클래식 IOS의 LAB enable은 해당 인터페이스를 에 참여시킨다. 의 network 명령과 구분한다.
- 가 있어도 주소·PVC 매핑·링크 동작이 준비되지 않으면 피어와 업데이트를 교환하지 못한다.
textipv6 router rip LAB interface Serial1/0.123 ipv6 rip LAB enable end show ipv6 rip show ipv6 route rip주소·PVC가 준비된 IOS 연습망에서 사용하는 예시
확인 기준실제 링크에 업데이트가 있는지 확인한다.
동일 링크의 IPv4와 IPv6 제어 구분
- 캡처에 Hello와 RIPng가 함께 보인다. 물리 링크 하나가 여러 프로토콜을 운반할 수 있다.
- RIPng는 521→521, 목적지 ff02::9, Response다. Version 1을 RIPv1 또는 RIPv3라는 이름으로 바꾸지 않는다.
textWireshark 표시 필터: ripng 비교: ipv6 && udp.port == 521실습 흐름을 재구성한 명령 예시. 장치·인터페이스 이름은 구성에 맞춰 사용한다.
원본 크기로 보기 ↗- RIPng·OSPF Hello·Q.933 상태 메시지가 같은 목록에 있다.
- 선택한 UDP Source/Destination Port는 모두 521이며 목적지는 ff02::9다.
확인 기준RIPng의 ff02::9와 for 의 ff02::a를 혼동하지 않는다.
실습에서 확인한 동작 원리
- 주소 설정· 활성화·프로토콜 참여는 각각 다른 단계다.
- 이름이나 숫자를 외우기보다 패킷 필드로 실제 프로토콜을 확인한다.
설정·출력 추가로 확인하기 6장
아래 화면을 펼쳐 위 실습의 설정값, 명령과 확인 기준을 비교해 보세요. 각 묶음은 별도 실습 기록입니다.
실습 화면 묶음 01 1장
원본 크기로 보기 ↗- 「듀얼 스택 (IPv4, IPv6) 실습」 문맥에 삽입된 원본 실습·개념 참고 화면이다. IPv6 주소·헤더·ND·자동 설정 학습 내용과 함께 당시 구성·설정·관찰 결과를 비교할 수 있다.
실습 화면 묶음 02 1장
원본 크기로 보기 ↗- 「ipv6」 문맥에 삽입된 원본 실습·개념 참고 화면이다. IPv6 주소·헤더·ND·자동 설정 학습 내용과 함께 당시 구성·설정·관찰 결과를 비교할 수 있다.
실습 화면 묶음 03 1장
원본 크기로 보기 ↗- 학습 원본 · IPv6 주소와 터널 구성의 해당 절에 수록된 화면·도식이다.
실습 화면 묶음 04 1장
원본 크기로 보기 ↗- 학습 원본 · IPv6 주소와 터널 구성의 6to4 tunneling에 수록된 화면·도식이다.
실습 화면 묶음 05 1장
원본 크기로 보기 ↗- 학습 원본 · IPv6 주소와 터널 구성의 6to4 tunneling에 수록된 화면·도식이다.
실습 화면 묶음 06 1장
원본 크기로 보기 ↗- 수업 원본 자료 · IPv6 헤더의 필드 배치. 원문에서 「IPv6 헤더」에 배치된 그림 또는 화면이다.
동작·명령 참고 문서
10IOS 주소·전달·정적 다음 홉 설정
- 전달 활성화 unicast-routing은 라우터의 전달 기능을 켜는 전역 설정이다. 인터페이스에 address를 설정하는 작업과 다르다.
- 일반 global 주소를 설정하면 가 활성화되므로 enable을 항상 추가해야 하는 것은 아니다.
- enable은 별도 global 주소 없이 링크 로컬만 필요한 경우에도 사용할 수 있다.
- 정적 다음 홉아래 는 다음 홉을 링크 로컬로 지정하므로 출구 인터페이스도 함께 쓴다. 주소가 같은 fe80::2라도 어느 링크의 이웃인지를 구별해야 하기 때문이다.
- show route의 C는 connected 프리픽스, L은 로컬 자기 주소/128을 나타낸다.
- C·L만 있다고 멀리 있는 다른 LAN까지 자동 학습된 것은 아니다.
ipv6 unicast-routing
interface GigabitEthernet0/0
ipv6 address 2001:db8:1::1/64
ipv6 address fe80::1 link-local
no shutdown
!
ipv6 route 2001:db8:2::/64 GigabitEthernet0/0 fe80::2
!
show ipv6 interface brief
show ipv6 interface GigabitEthernet0/0
show ipv6 neighbors
show ipv6 route문서용프리픽스와예시링크로컬을사용한IOS구성. 상대의주소·귀환경로가필요하다.
11NBMA 실습을 통해 보는 주소 범위
- NBMA의 주소 매핑실습 예제에서는 multipoint에서 매핑만으로 가 해결되지 않아 주소와 DLCI의 매핑을 추가했다. Global 주소 매핑과 프로토콜이 이웃 통신에 사용할 매핑도 구분했다.
- 이는 레거시 NBMA의 링크별 전달 제약이지 모든 망에서 수동 매핑을 해야 한다는 의미는 아니다.
- 주소 범위· 식별자링크 로컬 주소의 사용 범위는 링크별이며, 임의로 생성한 주소도 중복 여부를 확인해야 한다. 주소는 인터페이스와 scope를 기준으로 읽어야 한다.
- RIPng의 UDP521·인터페이스별 활성화는 의 major-network 선택 방식과 다르다.
- 에서도 Router ID는 32비트 식별자를 사용하므로 global주소와 동일한 128비트 값으로 넣지 않는다.
12주소는 있는데 외부로 전달되지 않는 RA 상태
- 서로 다른 수명주소의 Preferred/, 온링크 프리픽스 정보의 수명, Default 은 별도로 관리된다. 주소가 유효해도 기본 라우터 항목만 만료될 수 있다.
- 의 Prefix Information의 L은 해당 프리픽스에 대한 온링크 판단과 연결된다. L이 0이라는 사실만으로 그 프리픽스가 반드시 오프링크라는 선언으로 해석하지 않는다.
- 의 A는 해당 프리픽스를 SLAAC 주소 형성에 사용할 수 있음을 나타낸다. A와 L은 독립적이므로 주소 자동 생성과 이웃에게 직접 전송할지의 판단을 구분한다.
- 가상 장애 분기SLAAC 주소는 남아 있고 같은 링크의 서버와 통신하지만 외부 목적지 경로가 없다면 Default Router List와 을 조사한다. 성공 여부만 다시 보는 것으로는 설명되지 않는다.
- 링크 로컬 문맥기본 게이트웨이가 fe80:: 주소이면 출력 인터페이스가 주소의 범위를 결정한다. 같은 fe80::1이 여러 링크에 있어도 동일 라우터 항목으로 합치지 않는다.
함께 보는 학습 자료
아래 공식 자료를 본문의 개념·예제와 함께 읽어 보세요. 자료별로 확인할 위치와 관찰할 내용을 적었습니다.
RFC 4861 §7.3·Appendix C: 이웃 도달성 상태
이 실패를 뜻하지 않는 이유와 데이터 송신 후 ·로 바뀌는 조건을 표로 확인한다.
- 도달성 확인과 단순 패킷 수신의 차이
- 사용 후 시작
- Appendix C의 재시도·실패 분기
이해했는지 확인하기
- 이웃 조회가 ARP인지 ICMPv6인지 구분하는가?
- 기본 라우터 정보가 어디에서 왔는지 확인했는가?
- IPv4와 IPv6를 각각 시험해 실패 경로를 구분했는가?