통신사의 IPv6 제공 방식에 대한 노트

인터넷에 잘 정리된게 없어서 함 정리해 봄.

기기가 공인 IPv6 주소를 부여받는 방법은 3가지가 있음(간단->복잡 순):

주소를 할당하는 프로세스는 … (RFC 4861)

기기가 router solicitation 메시지 (ICMPv6 type 133) link-local 멀티케스트 (ff02::01) -> 라우터가 RA 메시지(ICMPv6 type 134)로 응답

Wireguard capture of ICMPv6 router advertisement message

기기가 받은 RA 메시지 내용이…

이걸 좀 해석해 보자면,

리눅스는 1, 2, 4를 할당할 것임. 윈도와 IOS는 1, 2, 3, 4 죄다 할당하고, 주로 3만이 사용됨. 안드로이드는 1, 2, 3만 할당되고, 3만 주로 사용됨.

안드로이드는 IPv6 지원 시작한지 거의 10년 넘게 DHCPv6 구현 안하고 앉았음. DHCP를 굳이 돌리지 않아도 인터넷이 되니까.

https://en.wikipedia.org/wiki/Comparison_of_IPv6_support_in_operating_systems

Screen cap of Comparison of IPv6 support in OS from Wikipedia

그래서 안드로이드는 A flag 없고 M, O인 환경에서 IPv6 못 씀. 이런 환경은 여전히 유효한 IPv6 환경임에도 불구하고. 구글이 DHCPv6가 좋지 않다고 생각하는 이유는 여러가지 있을 것임:

IPv6와서도 DHCP가 사라지지 않은 이유는 어떤 기기에 주소를 고정 할당하면서도 다른 DNS, NTP나 임시주소를 부여하려면 여전히 DHCP 서버에 “reserved host” 설정하는 방법이 있음… 딱 그 한 case 밖에 안 떠오른다.

과거에 말하던 “유동IP”라는 개념은 IPv6와서는 3번 혹은 4번. 이론적으로 prefix가 각 ISP 서비스 지역에 고정된다 가정하면 2는 항상 고정일 것이고, IPv6 주소를 다른 사람과 수동으로 주고 받을 때(개인끼리 vnc나 sftp 접근 등) 2를 사용하면 됨.

공유기가 IPv6를 지원하기 위해 해야할 것은

ISP 공유기는 하도 개념없이 개발된게 많아서 잘 모르겠고, 일반 시중에서 살 수 있는 공유기는 기본 설정으로 그대로 두면 ISP에서 IPv6 서비스하면 기본설정 그대로 IPv6 사용 가능할 것임(자동 혹은 “브리지 모드”).

ISP 장비에 DHCPv6 요청으로 prefix 하나 달라고 요청할 수 있는데, 이를 prefix delegation(PD)이라고 함. Prefix 하나 받으면 그 전체 주소를 자유롭게 사용할 수 있음. 개인/회사에서 VPN 운영하거나, prefix 잘라서 부서간 주소공간 나누거나, IoT 등등에 쓸모 있음.

// 대부분의 보급형 네트워크 제품이 다 IPv6는 시원찮게 구현된 경향이 있음. 아직 ISP에서 널리 제대로 보급도 해주지 않기도 하고, 제품 개발자들 마저도 IPv6가 기존 v4에 비해 상당히 복잡하게 설계되어 있어 제대로 이해하고 제품 개발을 하지 않는 것이 것이 현실임

TODO

그래서 내가 알고 싶은거: 얼마나 많은 ISP들이 DHCPv6 서버를 돌리는지 궁금함. 단순히 v6 주소만 잡히는 것을 확인하는 것이 다가 아니다.

  1. DHCP-PD가 서비스 되는지의 여부
  2. SLAAC만 서비스하는지
  3. XLAT으로 페브릭을 구현했는지

등등… v4보다 설계 유연성이 상당히 높아졌음

모바일 네트워크는 당연히 안드로이드 때문에 무조건 M+O flag 환경이어야 함. 수집해야 할 정보들은 간단하게:

다른 정보는 높은 이해도가 필요함. 공유기의 구현 한계 때문에 정확한 값을 못 얻는 문제도 있다.

갤러리

IOS

IOS Wifi AP settings IOS Wifi AP settings: IPv6 Addresses test-ipv6.com result on IOS

IOS는 모바일 IPv6 주소가 설정 앱으로 안빠져 있어서 1, 2, 3, 4를 다 확인할 수 있는 방법 없음(전형적인 애플 디자인!). whatsmyip 같은 외부 사이트 사용해서 나오는 주소는 3번 뿐. 안드로이드는 DHCPv6 안하니까 의미 없음.

위 스샷은 두번째 주소가 3번으로 추정됨 (리스트 들어가기 전에 보이는 주소??). 첫번째 주소는 아마도 2번, 세번째 주소가 DHCP.

Windows

Windows Network & Internet Settings
netsh interface ipv6 show addresses

윈도는 3번이 GUI로 안빠져 있어서, netsh로 확인해야 함. 갈 길이 멀다.

Linux

ip -6 addr

3번이 기본 설정으로 활성화된 리눅스 배포판은 아직 없음. NetworkManager 등으로 따로 수동으로 설정해야 함. Global 속성이 한국어로 “공인 IP주소”. dynamic은 DHCP로 받았다는 의미. 64비트 prefix로 붙은게 2번.

COLOPHON

Signed-off-by: David Timber
Acked-by: 0
DATE COMMIT MSG
2024-08-06 ce874890654f telco-provided-ipv6: initial commit