IPv6client64:ff9b::c633:642aNAT64translator+ DNS64IPv4server198.51.100.42v6 client reaches v4 destination, transparently

NAT64 및 DNS64

11 분 읽음네트워킹

일부 셀룰러 네트워크는 Reliance Jio의 상당 부분인 T-Mobile US와 같이 수년 동안 IPv6 전용을 실행해 왔습니다. 사용자는 여전히 나머지 웹과 마찬가지로 IPv4 사이트에 접속합니다. 변환은 IPv4와 IPv6 세계를 연결하는 한 쌍의 기술인 NAT64와 DNS64를 통해 이루어집니다. IPv6 전환의 조용한 중간 행위를 어떻게 명확하게 이해합니다.

전체 기사 본문은 아래에 영어로 제공됩니다.

NAT64DNS64는 IPv6 전용 클라이언트가 IPv4 전용 서버에 연결할 수 있게 해주는 기술입니다. 이를 통해 네트워크는 인터넷의 IPv4 부분에 대한 액세스를 잃지 않고 IPv6 전용을 배포할 수 있습니다. T-Mobile US, 기타 여러 주요 이동통신사 및 많은 기업 네트워크는 프로덕션에서 이 패턴을 사용합니다.

그들이 해결하는 문제

IPv4에서 IPv6로의 전환은 점진적이었습니다. 많은 서버가 여전히 IPv4 전용입니다. 네트워크가 IPv6 전용으로 실행되는 경우 프로토콜이 이전 버전과 호환되지 않기 때문에 클라이언트가 해당 서버에 직접 연결할 수 없습니다.

순진한 대답은 듀얼 스택입니다. 모든 장치에는 IPv4 및 IPv6 주소가 모두 있습니다. 듀얼 스택은 작동하지만 두 개의 병렬 네트워크 스택을 무기한 유지해야 합니다. 일부 네트워크는 단일 스택 IPv6을 사용하고 나머지 IPv4 범위에 대해 변환을 사용하기로 결정했습니다.

NAT64 작동 방식

NAT64는 네트워크 경계의 상태 저장 변환기입니다.

  • IPv6 전용 네트워크에 연결된 IPv6 인터페이스
  • IPv4 인터넷에 연결된 IPv4 인터페이스(IPv4 주소 풀 포함)
  • A 변환 테이블은 IPv6 소스를 할당된 IPv4 포트에 매핑

IPv6 클라이언트가 IPv4에 연결하려고 할 때 server:

  1. 클라이언트는 IPv4 대상을 인코딩하는 특수 IPv6 주소로 IPv6 패킷을 보냅니다.
  2. NAT64 변환기는 IPv6 인터페이스에서 패킷을 수신합니다.
  3. IPv6 주소에서 IPv4 대상을 추출하고 IPv4 풀에서 포트를 할당한 다음 할당된 IPv4 소스가 있는 IPv4 패킷으로 패킷을 다시 씁니다. port.
  4. 패킷은 정상적으로 IPv4 대상으로 흐릅니다.
  5. 응답 패킷은 NAT64의 IPv4 인터페이스로 돌아옵니다.
  6. NAT64는 매핑을 조회하고 IPv6 패킷을 재구성한 후 클라이언트로 다시 전달합니다.

개념적으로 NAT44와 유사합니다(일반

IPv4

NAT64가 내장된 IPv6 주소는 마지막 32비트에 IPv4 주소가 내장된 특정 IPv6 접두사(잘 알려진 접두사는 64:ff9b::/96)를 사용합니다.

  • 를 통해 198.51.100.42에 도달합니다. NAT64의 경우 클라이언트는 주소 64:ff9b::c633:642a(마지막 32비트는 198.51.100.42를 16진수로 인코딩함)를 사용합니다.

클라이언트는 이것이 변환인지 알 필요가 없으며 단지 IPv6 주소만 볼 수 있습니다. 하지만 클라이언트는 이 특수 주소를 어디서 얻나요?

DNS64가 공백을 메웁니다

대부분의 클라이언트는 IP 주소에 직접 연결하지 않고 DNS를 통해 호스트 이름에 연결합니다. DNS64는 합성을 처리하는 수정된 DNS 확인자입니다.

  1. Client는 example.com에 대한 DNS를 쿼리합니다.
  2. DNS64 확인자는 AAAA(IPv6) 레코드를 조회합니다. 존재하는 경우 정상적으로 반환합니다.
  3. A(IPv4) 레코드만 존재하는 경우 DNS64는 IPv4 주소를 NAT64 접두사에 삽입하여 가짜 AAAA 레코드를 합성합니다.
  4. Client는 일반 AAAA 레코드처럼 보이는 것을 반환합니다.
  5. Client는 IPv6 주소에 연결합니다.
  6. 패킷은 NAT64를 통해 흐릅니다. 그리고 IPv4로 변환됩니다.

클라이언트는 이에 대해 전혀 인식하지 못합니다. IPv6를 보고, IPv6를 보내고, IPv6으로 응답을 받습니다. 번역은 보이지 않습니다.클라이언트 호환성을 위한

464XLAT

NAT64 + DNS64는 거의 모든 응용 프로그램에서 작동하지만 일부 응용 프로그램은 작동하지 않습니다. 특히 IPv4 리터럴(호스트 이름 아님)을 전달하는 응용 프로그램이 중단됩니다. 해결책은 464XLAT(CLAT — 고객 측 변환기):

  • 클라이언트 장치는 IPv4 스택이 있는 것처럼 가장하는 CLAT를 실행합니다.
  • IPv4가 필요한 앱은 CLAT와 통신하여 IPv6으로 변환됩니다.
  • IPv6 패킷은 NAT64를 통과합니다. 일반적으로.

Android와 iOS는 모두 464XLAT를 지원합니다. T-Mobile US는 이 조합을 사용합니다. 결과: T-Mobile의 Android 휴대폰은 네트워크 계층에서 IPv6 전용이지만 앱은 마치 IPv4가 여전히 작동하는 것처럼 작동합니다.

배포된 위치

  • T-Mobile US — 2014년부터 NAT64를 사용하여 IPv6 전용을 실행했습니다.
  • Reliance Jio(인도) — IPv6 전용 배포, IPv4 대상용 NAT64.
  • 많은 기업 대부분 IPv6 내부 네트워크를 갖춘 는 레거시 IPv4 전용 서비스에 NAT64를 사용합니다.
  • 일부 클라우드 제공업체는 IPv6 전용 VPC용 NAT64 서비스를 제공합니다.

L제한사항

  • State-heavy. 변환기는 모든 활성 연결에 대한 상태를 유지합니다. 트래픽에 따라 리소스 요구 사항이 증가합니다.
  • 연결당 제한이 있습니다. 다른 NAT와 마찬가지로 포트 풀은 IPv4 주소당 동시 연결에 대한 최대값을 설정합니다.
  • 일부 프로토콜은 어려움을 겪습니다. 페이로드(이전 SIP, FTP)에 IP 주소를 포함하는 프로토콜에는 애플리케이션 계층 게이트웨이가 필요합니다. 대부분의 최신 프로토콜에는 이 문제가 없습니다.
  • DNS 전용 변환. DNS를 우회하고 IPv4 리터럴에 연결하는 앱에는 CLAT가 필요합니다.
  • DNSSEC 합병증. 합성된 AAAA 레코드는 원본에서 서명되지 않습니다. DNSSEC를 검증하는 클라이언트는 이를 거부할 수 있습니다. 솔루션이 존재하지만 복잡성이 추가됩니다.

최종 게임

NAT64는 전환 기술입니다. 예상되는 최종 상태는 IPv4 전용 대상이 가장자리에서 처리되는 드문 예외일 만큼 충분히 보편적인 IPv6입니다. 그때까지는 NAT64 + DNS64 + 464XLAT를 통해 네트워크가 서비스 저하 없이 IPv6 전용으로 전환될 수 있습니다. 이 조합은 10년 넘게 생산되어 왔으며 진지하게 배포할 수 있을 만큼 충분히 성숙되었습니다.

자주 묻는 질문

NAT64 뒤에 있습니까?
T-Mobile US, Reliance Jio 또는 특정 IPv6 전용 네트워크를 사용하지 않는 한 그렇지 않을 수도 있습니다. 대부분의 홈 및 기업 네트워크는 순수 IPv6 + NAT64가 아닌 듀얼 스택(두 프로토콜 모두)입니다.
NAT64가 성능에 영향을 미치나요?
겸손하게. 변환 단계에서는 마이크로초가 추가됩니다. 상태 테이블은 메모리 오버헤드를 추가합니다. 일반적인 웹 브라우징의 경우 그 영향은 측정할 수 없습니다. 연결 속도가 매우 높은 워크로드의 경우 오버헤드가 중요합니다.
VPN이 NAT64와 작동하나요?
주로. 대부분의 VPN 클라이언트는 기본적으로 IPv4를 터널링합니다. NAT64는 이를 투명하게 처리합니다. 이중 NAT와 잘 작동하지 않는 일부 VPN 프로토콜에는 문제가 있을 수 있습니다. 최신 WireGuard 및 OpenVPN 구성은 이를 올바르게 처리합니다.
모든 네트워크가 NAT64를 사용하지 않는 이유는 무엇입니까?
듀얼 스택은 운영상 더 간단하고 이해하기 쉽습니다. NAT64는 IPv4가 클라이언트에 대해 여전히 작동할 때 한계 이익을 위해 복잡성을 추가합니다. NAT64를 사용하는 순수 IPv6 전용은 조직에 IPv4 주소가 충분하지 않거나 IPv6를 사용하려는 경우 주로 매력적입니다.
NAT64와 CGNAT의 차이점은 무엇입니까?
CGNAT는 IPv4에서 IPv4로의 변환입니다(내부 프라이빗 IPv4, 외부 공용 IPv4). NAT64는 IPv6에서 IPv4로의 변환입니다. 다양한 프로토콜 계층 둘 다 IPv4 부족을 위한 전환 기술이지만 서로 다른 문제를 해결합니다.
NAT64 및 DNS64 설명: IPv6 전용 네트워크가 IPv4 인터넷과 통신하는 방법