본문 바로가기
<개인공부> - IT/[Network&Security]

#2. IPv6의 개념과 필수용어

by Aggies '19 2022. 11. 16.
반응형

  제목은 거창하지만 IPv6에서 알아야 기본적인 내용을 정리해 보려고 한다. 각 개념에 대한 구체적인 기술내용을 정리하기 이전 목차 또는 다음 개념을 알기위한 이정표 정도로 정리해두고자 한다. 보다 자세한 내용은 추후 포스트로 바로 이동할 수 있게 링크를 걸어둘 생각이다.

 

16진수로 구성된 숫자체계

  128bit의 길이를 가진 주소로 0부터 F로 IP 주소를 표현한다.

 

IPv6 주소의 유형
  1. Global Unicast Address (GUA): 전세계 유일하고 라우팅이 가능한 IPv6이다. IPv4의 공인 IP 주소랑 동일한 개념이며 이 주소의 시작은 2 또는 3으로 시작한다. e.g) 2001:db8:cafe:1::100
  2. Link-Local Unicast Address (LLUA): 논리적인 네트워크 세그먼트 또는 서브넷 내부, 내부 네트워크 안에서만 사용하는 주소이며 라우팅이 불가능한 주소이고 fe80으로 시작한다. IPv6가 활성화된 경우 LLUA는 꼭 필요한 주소이며 대개 OS에 의해서 자동으로 생성된다. 
  3. Unspecified Address: 0:0:0:0:0:0:0:0 또는 줄여서 ::로 설정된 IP주소를 IPv6 unspecified address라고 한다. 주소가 설정되지 않았거나 host에 IP주소가 할당된 적이 없는 경우를 의미한다. 
  4. Solicited-Node Multicast Address: IPv4에서 사용되는 브로드캐스팅 주소를 대신해 고안된 multicast address이다. ARP request와 같이 브로드캐스팅 응답을 처리하는 것은 성능 저하에 많은 영향을 준다. 반면 IPv6에서는 ICMPv6 Neighbor Discovery Protocol (NDP)를 이용하는데 multicast 주소로 전달을 하기에 NIC 카드에서부터 해당 트래픽을 차단한다.

 

주요 용어
  1. Prefix: IPv6에서 network portion을 표현한다. 
  2. Prefix length: IPv4의 subnet mask와 동일한 개념이며, IPv6의 network portion을 정의하는데 사용된다.
  3. Interface ID: IPv4의 host portion을 의미한다. IP 주소는 각 기기들의 (일반적인 서버, 커피머신, sensor 등) interface에 할당이 되며 각 장치들은 여러 개의 interface를 가질 수 있다는 것에 착안하여 interface ID라고 부른다.

ICMPv6 Neighbor Discovery Protocol (NDP)

  NDP는 같은 서브넷안에서 장치를 발견과 정보교환을 위해 사용한다. 5가지의 메시지 타입이 존재한다. Router Solicitation, Router Advertisement, Neighbor Solicitation, Neighbor Advertisement, 그리고 Redirect message가 그 종류이다. 앞에 소개된 4개의 메시지는 ICMPv6에서 새롭게 생긴 기능이며 Redirect message는 ICMPv4에도 존재를 하나 추가기능이 포함되어있다. 

  1. Neighbor Solicitation (NS)&Neighbor Advertisement (NA): IPv4의 ARP와 동일한 역할을 하는 메시지로 주소를 구하기 위해 사용하는 메시지이다. 아래 그림은 IPv4의 ARP의 동작방식과 IPv6에서 NS/NA 메시지가 사용되는 모습을 나타낸 그림이다.
  2. Router Solicitation (RS)&Router Advertisement (RA): RA는 라우터가 보내는 메시지로써 동일 서브넷 안에서 IPv6의 주소체계 정보를 알려주는 용도로 사용한다. 반대로 RS는 PC와 같은 호스트에서 보내는 정보이다.
Dynamic Address Allocation

  IP 주소는 정적 그리고 동적으로 할당하는 방법이 있다. IPv4와 다르게 IPv6에서는 다른 접근방법을 추구하는데 앞서 간단히 소개한 ICMPv6의 RA 메시지를 이용한다. RA 메시지는 시스코 장비기준으로 200초 마다 주기적으로 보내며 또는 RS 메시지를 수신했을 경우에도 보내게 된다. RA 메시지는 ff02::1의 multicast 주소로 보내는데 같은 네트워크 상에 있는 모든 IPv6 활성화 장치들은 이 메시지를 받는다. (물론, RA 메시지는 다른 라우터로 포워딩 되지 않음) 쉽게 말하면 IPv6에서는 DHCP가 없어도 동적으로 IP 주소를 할당할 수 있다.

  RA 메시지에는 다음의 정보가 포함된다.

  1. 해당 네트워크에서 사용하는 prefix와 prefix length
  2. Default gateway (Router 기준으로 egreee interface의 link-local address가 됨)
  3. Flags: Autonomous Address Configuration Flag (A flag), Other Configuration Flag (O flag), 그리고 Managed Address Configuration Flag (M flag)

  RA의 동작 방식은 3 가지로 나뉜다.

  1. Stateless Address Autoconfiguration (SLAAC): 시스코 IOS 장비에서 사용하는 기본값. Global Unicast Address를 생성하기 위해 RA에 있는 모든 정보를 사용한다.
  2. SLAAC & stateless DHCPv6 server: 앞선 방식과 동일한데 추가적인 정보를 stateless DHCPv6 서버에서 얻는다. DNS 서버 리스트가 그 예이다. 한 가지 알아둘 내용은 DHCPv6 서버에서는 Global Unicast Address에 대한 정보를 제공하거나 갖고 있지 않다.
  3. Statelful DHCPv6 server: IPv4에서 사용하는 DHCP 서버와 유사한 방식이다. RA 메시지에는 IPv6 주소를 얻기 위해서는 DHCPv6 server를 사용해야 한다고 제안한다. 하지만, 앞서 두 가지 방식과 마찬가지로 default gateway는 RA로 메시지를 통해서 동적으로 할당받아야 한다.

Client 장치는 SLAAC를 Global Unicast Address를 생성하기 위해서 사용한다. RA 메시지에 담긴 prefix 정보를 가지고 64-bit interface ID를 만드는데 이런 과정은 크게 두 가지로 이루어진다.

  1. Random value: Windows OS에서는 기본으로 사용되는 방식인데 64-bit 값을 무작위로 만든다.
  2. Extended Unique Identifier (EUI-64): MAC address (48bit) 사이에 16bit로 이루어진 fffe를 삽입해서 만든다. Leftmost bit (왼쪽에서 7번째 해당하는 bit)를 1로 설정한다.
  3. Statelful DHCPv6 server: IPv4에서 사용하는 DHCP 서버와 유사한 방식이다. RA 메시지에는 IPv6 주소를 얻기 위해서는 DHCPv6 server를 사용해야 한다고 제안한다. 하지만, 앞서 두 가지 방식과 마찬가지로 default gateway는 RA로 메시지를 통해서 동적으로 할당받아야 한다.

내용이 길었는데 요약하면 이러하다. Default gateway address는 무조건 RA 메시지에 의해서 설정되어야 한다. 다시 말해, DHCPv6 서버가 존재하더라도, RA 메시지는 무조건 host에게 전달되어 default gateway를 설정하게끔 해야 한다는 점.

 

Reference: IPv6 Fundamentals: A Straightforward Approach to Understanding IPv6, 2nd Edition by Rick Graziani

반응형

'<개인공부> - IT > [Network&Security]' 카테고리의 다른 글

#4. Global Unicast Address 설정방법  (0) 2022.12.01
#3. IPv6 주소 표현방법과 종류  (0) 2022.11.23
#1. IPv6이란?  (0) 2022.11.11
CORS란  (0) 2022.09.30
Application Programming Interfaces (API 란?)  (0) 2022.08.27