네트워크핵심 · 18분 읽기

IPv6 주소·헤더·ND·자동 설정

128비트 주소와40바이트 헤더를 읽고 RS/RA·NS/NA·DAD의 역할을 구분한다. 수업의 IPv6 활성화·정적 경로·NBMA 사례와 /80·/96 자동 설정 오해를 함께 정리한다.

개념부터 찾아보기

정의·역할·동작 원리를 독립 페이지에서 확인하세요. 본문의 밑줄 용어에도 설명이 있습니다.

이 노트에서 설명할 수 있게 되는 것

  1. 128비트 주소와 40바이트 기본 헤더를 읽는다.
  2. RA·SLAAC·ND의 역할을 분리한다.
  3. IPv6 장애를 주소·이웃·경로·MTU 순서로 해석한다.

01주소를 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 계산

  1. 대상의 유니캐스트 주소를 2001:db8::1234:5678로 잡는다. 전체 128비트 중 마지막 24비트는 0x345678이다.
  2. ff02::1:ff00:0/104의 마지막 24비트에 0x345678을 넣으면 ff02::1:ff34:5678이 된다. 이 그룹을 이용해 같은 링크의 해당 주소 소유자를 찾는다.
  3. 멀티캐스트를 에 싣는 규칙은 33:33 뒤에 목적지의 마지막 32비트를 붙이는 것이다. 결과는 33:33:ff:34:56:78이다.
  4. 하위 24비트가 같은 여러 주소는 같은 그룹에 속할 수 있다. 의 Target Address 전체를 읽어 실제 대상인지 구분해야 한다.
  5. 목적지와 목적지가 위 대응인지, ICMPv6 안의 Target Address가 원래 유니캐스트 주소인지 함께 본다. 그룹 주소 자체가 이웃 캐시에 저장할 유니캐스트 IP는 아니다.

07SLAAC·RA·DAD로 주소를 만드는 순서

  • 일반적인 SLAAC는 /64 프리픽스와 64비트 식별자를 결합한다. 식별자는 modified EUI-64, 안정적 비공개 방식, 임시 주소 방식 등을 사용할 수 있다.
  • 아직 소유하지 않은 주소를 검사하는 는 미지정 출발지 ::를 사용한다. 일반 이웃 해석 와 목적·필드가 다르다.
  • 는 on-link·autonomous 여부, preferred/과 을 별도로 전달한다. 주소는 새 연결의 출발지 선택에서 피할 수 있지만 유효기간이 남은 기존 통신에는 쓰일 수 있다.
  1. 인터페이스가 링크 로컬 주소를 구성하고 로 중복을 검사한다. 넓은 주소 공간 자체가 충돌 부재를 보장하지는 않는다.
  2. 호스트가 를 보내거나 주기적인 를 기다린다. 의 프리픽스와 라우터 정보는 서로 다른 역할로 읽는다.
  3. Prefix Information의 autonomous 플래그와 적절한 프리픽스 조건을 만족하면 인터페이스 식별자를 결합한다. 생성한 주소는 바로 확정된 주소로 취급하지 않는다.
  4. 주소의 결과를 확인한 뒤 사용한다. 주소 생성과 기본 게이트웨이 발견은 같은 필드 하나로 완료되는 과정이 아니다.

08DHCPv6·수동 설정·Dual Stack

  • 는 SLAAC만 쓰는 것이 아니다. 수동 주소, 상태 기반 , SLAAC와 추가정보 등을 조합할 수 있다.
    • 의 서버·클라이언트는 UDP547·546을 사용하고 DORA와 메시지 이름·구조가 다르다.
    • 일반적인 기본 라우터 발견은 를 사용하므로 DHCPv4처럼 서버가 주소와기본게이트웨이를모두준다고 가정하지 않는다.
  • 한 인터페이스에 와 를 함께 두는 dual stack은 양쪽 프로토콜을 병행하는 방식이다. 패킷을 안에 캡슐화하는 터널과 주소·프로토콜을 변환하는 번역은 별개다.
    • 6to4와 는 서로 다른 방식이며 모든 -over- 터널의 공통 이름이 아니다.
    • 또한 를 켰다고 이 자동 협상되고 모든 패킷이 암호화되지는 않는다.

09MTU·조각화·ICMPv6의 관계

  • 라우터는 전달 중 패킷을 처럼 조각내지 않는다. 경로의 보다 큰 패킷은 ICMPv6 Packet Too Big으로 송신자에게 알려 크기를 조정하게 한다.
    • 필요한 조각화는 송신자가 Fragment 확장 헤더를 사용한다.
    • 재조립과 상위 전송의 데이터 크기 조정이 제대로 동작하려면 관련 ICMPv6 메시지의 반환 경로가 필요하다.
  • 따라서 ‘는 ping뿐이므로모두차단’하면 의 주소 해석·라우터 발견· 처리까지 망가뜨릴 수 있다. 모든 ICMPv6를 무제한 허용하라는 뜻도 아니다.
    • 링크 로컬 제어 메시지의 scope· 검증과 실제 필요한 오류 메시지를 고려해 정책을 정한다.
    • 작은 패킷은 되는데 큰 데이터만 멈추면 와 Packet Too Big 수신을 연결해 분석한다.
LEARN THROUGH PRACTICE

실습: IPv6 인터페이스와 RIPng 패킷 구분

인터페이스 주소와 업데이트에서 링크 로컬·멀티캐스트· 포트의 역할을 나눈다.

실습 구성과 전제

  • Loopback 출력과 캡처는 별도 연습의 관찰 예다. 동일 라우터의 연속 실행으로 해석하지 않는다.
  • 재구성 설정은 문서용 2001:db8::/32를 사용한다.
  1. 주소 설정과 라우팅 활성화 구분

    • 주소 보유와 인터페이스 사이의 전달은 별개다. 라우터 기능에는 unicast-routing을 설정한다.
    • show interface brief에서 링크 로컬과 설정 주소를 따로 읽는다. 링크 로컬은 같은 링크의 인접 통신에 사용한다.
    text
    ipv6 unicast-routing
    interface Loopback0
     ipv6 address 2001:db8:1::1/64
    end
    show ipv6 interface brief
    show ipv6 route

    주소를 문서용으로 바꾼 재구성 예시

    IPv6 주소와 터널 구성원본 크기로 보기 ↗
    • Loopback0에 [up/up]이 보인다.
    • FE80::로 시작하는 주소와 다른 IPv6 주소가 두 줄로 표시된다.
    확인 기준

    up/up과 주소 확인 뒤 원격 목적지의 경로표도 확인한다.

  2. RIPng 참여 인터페이스 지정

    • 클래식 IOS의 LAB enable은 해당 인터페이스를 에 참여시킨다. 의 network 명령과 구분한다.
    • 가 있어도 주소·PVC 매핑·링크 동작이 준비되지 않으면 피어와 업데이트를 교환하지 못한다.
    text
    ipv6 router rip LAB
    interface Serial1/0.123
     ipv6 rip LAB enable
    end
    show ipv6 rip
    show ipv6 route rip

    주소·PVC가 준비된 IOS 연습망에서 사용하는 예시

    확인 기준

    실제 링크에 업데이트가 있는지 확인한다.

  3. 동일 링크의 IPv4와 IPv6 제어 구분

    • 캡처에 Hello와 RIPng가 함께 보인다. 물리 링크 하나가 여러 프로토콜을 운반할 수 있다.
    • RIPng는 521→521, 목적지 ff02::9, Response다. Version 1을 RIPv1 또는 RIPv3라는 이름으로 바꾸지 않는다.
    text
    Wireshark 표시 필터: ripng
    비교: ipv6 && udp.port == 521

    실습 흐름을 재구성한 명령 예시. 장치·인터페이스 이름은 구성에 맞춰 사용한다.

    9/10 - ipv6 · 실습·개념 참고 화면 2원본 크기로 보기 ↗
    • RIPng·OSPF Hello·Q.933 상태 메시지가 같은 목록에 있다.
    • 선택한 UDP Source/Destination Port는 모두 521이며 목적지는 ff02::9다.
    확인 기준

    RIPng의 ff02::9와 for 의 ff02::a를 혼동하지 않는다.

실습에서 확인한 동작 원리

  • 주소 설정· 활성화·프로토콜 참여는 각각 다른 단계다.
  • 이름이나 숫자를 외우기보다 패킷 필드로 실제 프로토콜을 확인한다.

설정·출력 추가로 확인하기 6장

아래 화면을 펼쳐 위 실습의 설정값, 명령과 확인 기준을 비교해 보세요. 각 묶음은 별도 실습 기록입니다.

실습 화면 묶음 01 1장
9/10 - ipv6 · 실습·개념 참고 화면 1원본 크기로 보기 ↗
  • 「듀얼 스택 (IPv4, IPv6) 실습」 문맥에 삽입된 원본 실습·개념 참고 화면이다. IPv6 주소·헤더·ND·자동 설정 학습 내용과 함께 당시 구성·설정·관찰 결과를 비교할 수 있다.
실습 화면 묶음 02 1장
9/11 - ipv6(tunneling) · 실습·개념 참고 화면 1원본 크기로 보기 ↗
  • 「ipv6」 문맥에 삽입된 원본 실습·개념 참고 화면이다. IPv6 주소·헤더·ND·자동 설정 학습 내용과 함께 당시 구성·설정·관찰 결과를 비교할 수 있다.
실습 화면 묶음 03 1장
IPv6 주소와 터널 구성원본 크기로 보기 ↗
  • 학습 원본 · IPv6 주소와 터널 구성의 해당 절에 수록된 화면·도식이다.
실습 화면 묶음 04 1장
IPv6 주소와 터널 구성 · 6to4 tunneling원본 크기로 보기 ↗
  • 학습 원본 · IPv6 주소와 터널 구성의 6to4 tunneling에 수록된 화면·도식이다.
실습 화면 묶음 05 1장
IPv6 주소와 터널 구성 · 6to4 tunneling원본 크기로 보기 ↗
  • 학습 원본 · IPv6 주소와 터널 구성의 6to4 tunneling에 수록된 화면·도식이다.
실습 화면 묶음 06 1장
IPv6 헤더 (2)원본 크기로 보기 ↗
  • 수업 원본 자료 · IPv6 헤더의 필드 배치. 원문에서 「IPv6 헤더」에 배치된 그림 또는 화면이다.
동작·명령 참고 문서

10IOS 주소·전달·정적 다음 홉 설정

  • unicast-routing은 라우터의 전달 기능을 켜는 전역 설정이다. 인터페이스에 address를 설정하는 작업과 다르다.
    • 일반 global 주소를 설정하면 가 활성화되므로 enable을 항상 추가해야 하는 것은 아니다.
    • enable은 별도 global 주소 없이 링크 로컬만 필요한 경우에도 사용할 수 있다.
  • 아래 는 다음 홉을 링크 로컬로 지정하므로 출구 인터페이스도 함께 쓴다. 주소가 같은 fe80::2라도 어느 링크의 이웃인지를 구별해야 하기 때문이다.
    • show route의 C는 connected 프리픽스, L은 로컬 자기 주소/128을 나타낸다.
    • C·L만 있다고 멀리 있는 다른 LAN까지 자동 학습된 것은 아니다.
text
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 실습을 통해 보는 주소 범위

  • 실습 예제에서는 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이 여러 링크에 있어도 동일 라우터 항목으로 합치지 않는다.
READ · OBSERVE · CONNECT

함께 보는 학습 자료

아래 공식 자료를 본문의 개념·예제와 함께 읽어 보세요. 자료별로 확인할 위치와 관찰할 내용을 적었습니다.

표준

RFC 4861 §7.3·Appendix C: 이웃 도달성 상태

이 실패를 뜻하지 않는 이유와 데이터 송신 후 ·로 바뀌는 조건을 표로 확인한다.

읽으면서 확인할 것
  • 도달성 확인과 단순 패킷 수신의 차이
  • 사용 후 시작
  • Appendix C의 재시도·실패 분기
학습 확인

이해했는지 확인하기

  • 이웃 조회가 ARP인지 ICMPv6인지 구분하는가?
  • 기본 라우터 정보가 어디에서 왔는지 확인했는가?
  • IPv4와 IPv6를 각각 시험해 실패 경로를 구분했는가?

함께 확인할 공식 자료