IPv6 전환 메커니즘

**IPv6 전환 메커니즘**(IPv6 transition mechanism)은 1983년부터 사용된 인터넷 프로토콜 버전 4(IPv4) 인프라에서 후속 주소 지정 및 라우팅 시스템인 인터넷 프로토콜 버전 6(IPv6)으로 인터넷 전환을 용이하게 하는 기술이다. IPv4 및 IPv6 네트워크는 직접적으로 상호 운용되지 않으므로, 전환 기술은 두 네트워크 유형의 호스트가 다른 모든 호스트와 통신할 수 있도록 설계되었다.

기술적 기준을 충족하기 위해 IPv6는 현재의 IPv4로부터 간단한 전환 계획을 가져야 한다. 국제 인터넷 표준화 기구(IETF)는 인터넷 드래프트와 Request for Comments 프로세스를 통해 워킹 그룹과 논의를 진행하여 이러한 전환 기술을 개발하고 있다. 일부 기본 IPv6 전환 메커니즘은 RFC 4213에 정의되어 있다.

## 스테이트리스 IP/ICMP 변환
**스테이트리스 IP/[[인터넷 제어 메시지 프로토콜|ICMP]] 변환** (**SIIT**)은 IPv6와 IPv4의 패킷 헤더 형식 간을 변환한다. SIIT 방식은 IPv4 변환 주소라고 불리는 IPv6 주소 클래스를 정의한다. 이들은 접두사 을 가지며 로 작성될 수 있으며, 여기서 IPv4 형식 주소 는 IPv6 지원 노드를 나타낸다. 이 접두사는 전송 프로토콜 헤더 체크섬 변경을 피하기 위해 0 값의 체크섬을 생성하도록 선택되었다.
이 알고리즘은 영구적으로 할당된 IPv4 주소가 없는 IPv6 호스트가 IPv4 전용 호스트와 통신할 수 있도록 하는 솔루션에 사용될 수 있다. 주소 할당 및 라우팅 세부 사항은 사양에서 다루지 않는다. SIIT는 스테이트리스 네트워크 주소 변환의 특수한 경우로 볼 수 있다.

이 사양은 NGTRANS IETF 워킹 그룹의 산물이며, 2000년 2월 썬 마이크로시스템즈의 E. Nordmark에 의해 처음 작성되었다. 2011년에 개정되었고, 2016년에 현재 개정판이 발표되었다.

## 터널 브로커
터널 브로커는 IPv4 인터넷 전송 링크에서 IPv6 트래픽을 캡슐화하여 IPv6 연결을 제공하며, 일반적으로 6in4를 사용한다. 이는 IPv4 인터넷 내에 IPv6 터널을 설정한다. 터널은 터널 설정 프로토콜(TSP) 또는 AYIYA를 통해 관리될 수 있다.

## 6rd

6rd는 레미 데프레스가 개발했다. 이는 ISP의 IPv4 인프라를 통해 IPv6 서비스를 신속하게 배포하는 것을 용이하게 하는 메커니즘이다. IPv4와 IPv6 주소 간의 스테이트리스 주소 매핑을 사용하며, IPv4 패킷과 동일하게 고객 노드 간에 최적화된 경로를 따르는 자동 터널을 통해 IPv6 패킷을 전송한다.

2007년에 네이티브 주소를 사용하는 IPv6 서비스의 초기 대규모 배포에 사용되었다 (RFC 5569). 프로토콜의 표준-트랙 사양은 RFC 5969에 있다.

## 전송 릴레이 변환
**전송 릴레이 변환** (**TRT**) 방식은 두 호스트 사이의 중간 장치 역할을 한다. 변환기의 기능은 IPv6 주소를 IPv4 주소로 변환하고 그 반대로도 변환하는 것이다. TRT는 IP 주소 매핑과 사용자 지정 IP 주소를 통해 이 변환을 수행한다.

예를 들어, IPv6 주소()에서 IPv4 주소()로 패킷이 전송될 경우, 주소는 로 읽힌다. 패킷은 먼저 IPv6/TCP 프로토콜을 통해 변환기로 라우팅된 다음, 변환기에서 IPv4/TCP 프로토콜을 통해 IPv4 호스트로 라우팅된다.

TRT는 DNS ALG로 알려진 AAAA 레코드와 A 레코드 간의 DNS 변환과 유사한 작업을 사용한다.

## NAT64

섬네일|NAT64 및 DNS64
NAT64는 IPv6 호스트가 IPv4 서버와 통신할 수 있도록 하는 메커니즘이다. NAT64 서버는 최소한 하나의 IPv4 주소와 32비트의 IPv6 네트워크 세그먼트(예: )의 종단점이다. IPv6 클라이언트는 이러한 비트를 사용하여 통신하려는 IPv4 주소를 내장하고, 결과 주소로 패킷을 보낸다. 그러면 NAT64 서버는 IPv6 주소와 IPv4 주소 사이에 NAT 매핑을 생성하여 통신할 수 있도록 한다.

## DNS64
**DNS64**는 도메인의 AAAA 레코드를 요청받았을 때, A 레코드만 찾으면 A 레코드로부터 AAAA 레코드를 합성하는 DNS 서버를 설명한다. 합성된 IPv6 주소의 첫 번째 부분은 IPv6/IPv4 변환기를 가리키고, 두 번째 부분은 A 레코드의 IPv4 주소를 내장한다. 해당 변환기는 일반적으로 NAT64 서버이다. DNS64의 표준-트랙 사양은 RFC 6147에 있다.

이 전환 메커니즘에는 두 가지 주목할 만한 문제가 있다.
* DNS가 원격 호스트 주소를 찾는 데 사용되는 경우에만 작동한다. IPv4 리터럴이 사용되면 DNS64 서버는 절대로 관여하지 않는다.
* DNS64 서버가 도메인 소유자가 지정하지 않은 레코드를 반환해야 하므로, 변환을 수행하는 DNS 서버가 도메인 소유자의 서버가 아닌 경우 루트에 대한 DNSSEC 유효성 검사가 실패한다.


```yaml
# DNS 확인자 2606:4700:4700:64는 ipv6test.google.com에 대한 AAAA 레코드를
# NAT64 주소 64:ff9b::<original-ipv4>로 합성한다.
$ nslookup ipv6test.google.com 2606:4700:4700::64

권한 없는 응답:
ipv6test.google.com	canonical name = ipv6test.l.google.com.
이름:	ipv6test.l.google.com
주소: 64:ff9b::8efa:c3e4
```


;구현
* 언바운드 DNS 서버(dns64 모듈을 통해)
* unbound opkg 패키지를 통한 OpenWrt

## ISATAP

ISATAP (Intra-Site Automatic Tunnel Addressing Protocol)은 IPv4 네트워크 위에 듀얼 스택 노드 간에 IPv6 패킷을 전송하기 위한 IPv6 전환 메커니즘이다.

6over4(IPv4 멀티캐스트를 사용하는 이전 유사 프로토콜)와 달리, ISATAP은 IPv4를 가상 비방송 다중 접근 네트워크(NBMA) 데이터 링크 계층으로 사용하므로 기본 IPv4 네트워크 인프라가 멀티캐스트를 지원할 필요가 없다.

## 464XLAT
464XLAT은 IPv6 전용 네트워크의 클라이언트가 IPv4 전용 인터넷 서비스에 접근할 수 있도록 한다.

클라이언트는 SIIT 변환기를 사용하여 IPv4에서 IPv6로 패킷을 변환한다. 이 패킷은 NAT64 변환기로 전송되어 IPv6에서 IPv4로 다시 변환된 후 IPv4 전용 서버로 전달된다. 클라이언트 변환기는 클라이언트 자체 또는 중간 장치에 구현될 수 있으며 CLAT(Customer-side transLATor)으로 알려져 있다. NAT64 변환기 또는 PLAT(Provider-side transLATor)는 서버와 클라이언트(CLAT를 통해) 모두에 도달할 수 있어야 한다. NAT64의 사용은 UDP, TCP 및 ICMP를 사용하는 클라이언트-서버 모델로 연결을 제한한다.

;구현
* T-모바일 US는 464XLAT를 사용하여 IPv6 전용이 되었다.
* 오렌지 폴스카(Orange Polska)는 2013년 9월에 IPv6 전용(CLAT/NAT64/DNS) 서비스를 시작했으며, 2015년 1월까지 모든 ADSL, VDSL, FTTH 게이트웨이를 마이그레이션했다.
* 텔스트라는 2020년 2월 464XLAT를 사용하여 모바일 서비스에 대해 IPv6 전용이 되었다.
* 안드로이드는 2013년에 출시된 안드로이드 젤리빈 4.3부터 CLAT의 네이티브 구현을 포함한다.
* 윈도우 10은 2017년 크리에이터스 업데이트 이후 데스크톱 및 모바일에 대해 WWAN 전용 464XLAT 네이티브 구현을 가지고 있다.
* 윈도우 11 (24H2)은 윈도우 10과 동일한 구현을 가지고 있다. 향후 버전에서는 다른 네트워크 장치(현재 WWAN으로 제한됨)에 대한 CLAT 지원이 확장될 예정이다. 구현은 RFC 7050 (ipv4only.arpa DNS 쿼리), RFC 8781 (PREF64), RFC 8925 (DHCP 옵션 108) 표준을 사용할 것이다.
* macOS는 2022년에 출시된 Ventura부터 네이티브 CLAT 지원을 시작한다.
* iOS는 2018년에 출시된 버전 12.0부터 네이티브 CLAT 구현을 가지고 있다. 또한 애플은 앱 스토어에 제출되는 모든 앱이 IPv6 네트워크에서 작동해야 한다고 요구한다.
* clatd는 리눅스용 CLAT 구현이다.
* 네트워크 매니저 (개발 중)
* 라우터용 OpenWrt 리눅스 OS는 464xlat 패키지를 통해 clat에 대한 선택적 지원을 제공한다.
* FreeBSD는 릴리스 12.1부터 NAT64 CLAT를 구현했다.

## Dual-Stack Lite (DS-Lite)

섬네일|DS-Lite
**듀얼 스택 라이트** 기술은 인터넷 접속을 위해 고객 댁내 장치(CPE)에 IPv4 주소를 할당하는 것을 포함하지 않는다. CPE는 근거리 통신망의 네트워킹 요구 사항에 따라 LAN 클라이언트를 위해 사설 IPv4 주소를 분배한다. CPE는 IPv6 패킷 내에 IPv4 패킷을 캡슐화한다. CPE는 전역 IPv6 연결을 사용하여 패킷을 전역 IPv4 주소를 가진 ISP의 캐리어급 NAT(CGN)에 전달한다. 원래 IPv4 패킷은 복구되고 IPv4 패킷에 대해 NAT가 수행되어 공용 IPv4 인터넷으로 라우팅된다. CGN은 CPE 공용 IPv6 주소, 사설 IPv4 주소 및 TCP 또는 UDP 포트 번호를 세션으로 기록하여 트래픽 흐름을 고유하게 식별한다.

**경량 [[4over6]]**은 NAT 기능을 ISP 측에서 CPE로 이동시켜 캐리어급 NAT를 구현할 필요성을 없애면서 DS-Lite를 확장한다. 이는 각 CPE에 공유 IPv4 주소에 대한 포트 범위를 할당함으로써 달성된다. NAT 기능을 CPE로 이동하면 ISP는 각 가입자에 대해 추적되는 상태의 양을 줄일 수 있어 변환 인프라의 확장성을 향상시킨다.

## V4-via-v6 라우팅

V4-via-v6 라우팅은 IPv4 주소가 최종 호스트에만 할당되고 중간 라우터에는 IPv6 주소만 할당되는 기술이다. IPv4 경로는 평소와 같이 전파되며, 패킷 변환이나 캡슐화는 사용되지 않지만 IPv6 넥스트 홉을 사용한다. V4-via-v6는 코어 네트워크에 IPv6 주소만 할당하면 되므로 필요한 관리량을 줄이지만, 여전히 코어 네트워크가 IPv4 패킷을 전달할 수 있어야 한다.

V4-via-v6는 경계 경로 프로토콜(BGP) 및 바벨 라우팅 프로토콜에 정의되어 있다. 이는 버드 인터넷 라우팅 데몬 및 babeld에 구현되었다.

## MAP
주소 및 포트 매핑(MAP)은 시스코 시스템즈의 IPv6 전환 제안으로, A+P 포트 주소 변환과 ISP 공급자의 내부 IPv6 네트워크를 통한 IPv4 패킷 터널링을 결합한다. MAP-T 및 MAP-E는 2015년 7월 표준 트랙에 진입했으며, 스카이 이탈리아는 2021년 일찍이 인터넷 서비스에 MAP-T를 배포했다.

## 초안 제안
다음 메커니즘은 여전히 논의 중이거나 IETF에서 폐기되었다.

### 4rd
IPv4 잔여 배포 (4rd)는 IPv6 네트워크를 통해 IPv4 서비스의 잔여 배포를 용이하게 하기 위한 실험적 메커니즘이다. 6rd와 마찬가지로 IPv6와 IPv4 간의 스테이트리스 주소 매핑을 사용한다. 이는 전송 계층 포트를 기반으로 하는 IPv4 주소 지정을 지원한다. 이는 A+P 모델의 스테이트리스 변형이다.

## 지원 중단된 메커니즘
이러한 메커니즘은 IETF에 의해 지원이 중단되었다.

### NAT-PT
네트워크 주소 변환/프로토콜 변환(**NAT-PT**)은 RFC 2766에 정의되어 있지만, 수많은 문제로 인해 RFC 4966에 의해 구식화되고 역사적 상태로 폐기되었다. 이는 일반적으로 DNS 애플리케이션 계층 게이트웨이(DNS-ALG) 구현과 함께 사용된다.

### NAPT-PT
NAT-PT와 거의 동일하지만 RFC 2766에 설명된 네트워크 주소 포트 변환 + 프로토콜 변환은 주소뿐만 아니라 포트 변환도 추가한다. 이는 주로 메커니즘의 한쪽에서 두 호스트가 메커니즘의 다른 쪽에서 동일하게 노출된 포트를 사용하는 것을 방지하기 위한 것으로, 애플리케이션 불안정 및 보안 결함을 유발할 수 있다. 이 메커니즘은 RFC 4966에 의해 지원이 중단되었다.

## 구현
* stone (소프트웨어), 윈도우 및 유닉스 기반 시스템용 포트 변환기.
* faithd, KAME 프로젝트의 BSD 기반 정적 TRT 구현
* CLATD, 리눅스용 CLAT/SIIT-DC 엣지 릴레이 구현
* WrapSix, 리눅스용 NAT64 구현
* TAYGA, 리눅스용 스테이트리스 NAT64 구현
* Jool, 리눅스용 SIIT 및 스테이트풀 NAT64 구현
* naptd, 사용자 수준 NAT-PT
* Ecdysis, DNS64를 포함하는 NAT64 게이트웨이
* 주소 패밀리 전환 라우터 (AFTR), DS-Lite 구현
* niit IPv6 네트워크를 통한 IPv4 유니캐스트 트래픽 전송을 허용하는 리눅스 커널 장치
* IVI  리눅스 커널(2.6만) 패치로 IPv4/IPv6 패킷 변환 구현
* 마이크로소프트 포어프론트 통합 액세스 게이트웨이, DNS64 및 NAT64를 구현하는 리버스 프록시 및 VPN 솔루션
* BIND, 버클리 인터넷 네임 도메인 DNS 서버, 버전 9.8부터 DNS64 구현
* PF (방화벽), OpenBSD 패킷 필터는 버전 5.1부터 IP 버전 변환을 지원하며 NAT64를 포함한다.

## 같이 보기

* 운영체제의 IPv6 지원 비교
* 소프트와이어 (프로토콜)

## 각주

## 외부 링크
* IPv6 in Practice, Benedikt Stockebrand (2006), 
* D. J. 번스타인 – IPv6 문제
* 크리스천과 티나 슈트라우프 – 전송 릴레이 변환기 사용 방법
* 네트워크 월드 – 듀얼 스택 라이트 이해 
* IETE 기술 검토 – 프로토콜 변환을 사용하지 않고 이기종 (IPv4/IPv6) 네트워크 간의 상호 운용성 보장
* KSII 인터넷 및 정보 시스템 트랜잭션 - [호스트 자동 감지 (IPv6, IPv6-in-IPv4 또는 IPv4) 네트워크 연결 구성](https://www.thefreelibrary.com/Configuring+hosts+to+auto-detect+(IPv6%2C+IPv6-in-IPv4%2C+or+IPv4)+network...-a0269432131)

분류:라우팅 소프트웨어
분류:IPv6
분류:IPv6 전환 기술