NAT: Network Address Translation
- NAT(Network Address Translation)는 내부 네트워크의 모든 device들이 외부 세계(인터넷)에서는 단 하나의 IPv4 address만 사용하는 기술이다.
즉, 내부 네트워크(예: home network 10.0.0/24)에 여러 device(10.0.0.1, 10.0.0.2 등)가 있더라도, 외부에서는 모두 동일한 NAT IP address(예: 138.76.29.7)만 보인다.
- 내부 네트워크에서 외부로 나가는 모든 datagram은 동일한 NAT IP address(예: 138.76.29.7)를 source로 사용하지만, source port number는 각기 다르다.
- 내부 네트워크로 들어오는 datagram은 원래대로 내부 주소(10.0.0.x)와 포트로 전달된다.
NAT의 동작 원리와 장점
- 내부 네트워크의 모든 device들은 private IP address(10/8, 172.16/12, 192.168/16 prefix)를 사용한다. 이 주소들은 local network에서만 사용 가능하다.
- NAT를 사용하면 ISP로부터 단 하나의 public IP address만 할당받아도 된다.
- 내부 네트워크의 host 주소를 외부에 알리지 않고 자유롭게 변경할 수 있다.
- ISP를 바꿔도 내부 네트워크의 주소 체계는 그대로 유지할 수 있다.
- 외부에서는 내부 네트워크의 device들이 직접적으로 보이지 않으므로, 보안성이 향상된다.
NAT 구현 방식
NAT router는 다음과 같은 동작을 투명하게 수행한다.
- outgoing datagram(외부로 나가는 데이터그램): 각 데이터그램의 source IP address와 port 번호를 NAT IP address와 새로운 port 번호로 바꾼다.
- remote client/server는 (NAT IP address, new port #)를 목적지로 사용해 응답한다.
- NAT translation table(NAT 변환 테이블)에 (source IP address, port #)와 (NAT IP address, new port #) 쌍을 저장한다.
- incoming datagram(내부로 들어오는 데이터그램): 목적지 필드의 (NAT IP address, new port #)를 변환 테이블을 참고해 원래의 (source IP address, port #)로 바꾼다.
NAT 동작 예시
1. host 10.0.0.1이 128.119.40.186:80으로 datagram을 보낸다.
2. NAT router는 source address를 10.0.0.1:3345에서 138.76.29.7:5001로 바꾸고, 변환 테이블에 저장한다.
3. reply가 138.76.29.7:5001로 도착하면, NAT router는 변환 테이블을 참고해 10.0.0.1:3345로 전달한다.
NAT에 대한 논란과 현실
NAT는 논란이 많았다.
- router는 원래 layer 3까지만 처리해야 한다는 원칙에 어긋난다.
- 주소 부족 문제는 IPv6로 해결하는 것이 바람직하다.
- end-to-end argument(종단 간 원칙)에 위배된다(포트 번호를 네트워크 계층에서 조작).
- NAT traversal(내부에서 외부로 나가는 연결은 가능하지만, 외부에서 내부로 직접 연결은 어렵다) 문제가 있다.
그럼에도 불구하고 NAT는 널리 사용되고 있다.
- 가정, 기업, 4G/5G cellular network 등에서 광범위하게 사용된다.
IPv6: motivation
IPv6의 도입 동기는 다음과 같다.
초기 동기: 32비트 IPv4 address 공간이 모두 소진될 것이라는 우려 때문
추가 동기:
- speed processing/forwarding(라우터에서 40바이트 고정 길이 헤더로 빠른 처리 가능)
- flows에 대한 네트워크 계층의 차별적 처리 지원
IPv6 datagram format
IPv6 datagram은 128비트 주소 체계를 사용하며, 구조는 다음과 같다.
- version(버전), priority(우선순위), flow label(동일 flow 내 datagram 식별)
- payload length(데이터 길이), next header(상위 계층 프로토콜), hop limit(TTL과 유사)
- source address(128비트), destination address(128비트)
- payload(데이터)
IPv4와 비교해 IPv6에서 빠진 것
- checksum 없음(라우터에서의 속도 향상 목적)
- fragmentation/reassembly 없음
- options 없음(옵션은 상위 계층, next-header 프로토콜에서 처리)
Transition from IPv4 to IPv6
IPv4에서 IPv6로의 전환은 모든 router를 동시에 업그레이드할 수 없기 때문에 점진적으로 이루어진다.
- "flag day"(모두 한 번에 전환)는 불가능하다.
- IPv4 router와 IPv6 router가 혼재된 네트워크에서 어떻게 동작할지 고려해야 한다.
Tunneling(터널링): IPv6 over IPv4
Tunneling이란, IPv6 datagram을 IPv4 datagram의 payload(페이로드)로 캡슐화하여 IPv4 네트워크 구간을 통과시키는 방식이다.
- 즉, "packet within a packet"(패킷 속의 패킷) 구조로, IPv6 datagram 전체가 IPv4 datagram의 데이터 부분에 들어간다.
- 이런 터널링 기법은 4G/5G 등 다양한 망에서도 널리 사용된다.
Ethernet connecting two IPv6 routers
두 IPv6 router(A, B 또는 E, F)가 Ethernet을 통해 직접 연결되어 있을 때, 데이터 전달 구조는 다음과 같다.
- Ethernet은 두 IPv6 router를 연결하는 link-layer(링크 계층) 역할을 한다.
- 이때, IPv6 datagram(데이터그램)은 link-layer frame(링크 계층 프레임)의 payload(페이로드)로 캡슐화되어 전송된다.
- 즉, link-layer frame의 데이터 부분에 IPv6 datagram 전체가 포함되는 구조이다.
Tunneling and Encapsulation 구조
- 두 IPv6 router 사이에 IPv4 네트워크가 존재할 때, IPv6 datagram은 중간 IPv4 네트워크 구간에서 IPv4 datagram으로 캡슐화되어 전달된다.
- encapsulation(캡슐화) 과정:
- IPv6 datagram을 IPv4 datagram의 payload로 삽입
- IPv4 네트워크 구간을 통과
- 목적지 IPv6 router에서 다시 원래의 IPv6 datagram으로 복원
Tunneling 예시: 논리적/물리적 관점
논리적(logical) view
- IPv6 router A에서 E까지 IPv6 네트워크가 연결된 것처럼 보인다.
- 실제로는 중간에 IPv4 네트워크(터널)가 존재한다.
물리적(physical) view
- IPv6 router A에서 B까지는 IPv6 네트워크
- B에서 C, C에서 D, D에서 E까지는 각각 IPv4 네트워크 구간
- 각 IPv4 구간에서는 IPv6 datagram이 IPv4 datagram의 payload로 캡슐화되어 이동
- 터널 구간마다 src, dest 주소가 IPv4 주소로 바뀌고, 실제 데이터는 IPv6 datagram이 그대로 유지된다.
주소 변화
- 터널 구간에서는 source, destination 주소가 IPv4 주소로 설정된다.
- 터널의 시작과 끝에서는 원래의 IPv6 주소가 사용된다.
이와 같이, IPv4와 IPv6가 혼재된 환경에서 tunneling과 encapsulation을 활용하면, IPv6 네트워크의 연속성을 유지하면서 점진적으로 IPv6로의 전환이 가능하다.
IPv6: adoption
- Google 통계에 따르면 2023년 기준으로 약 40%의 client가 IPv6를 통해 서비스에 접근하고 있다.
- NIST 자료에 따르면, 미국 정부 도메인의 1/3이 IPv6를 지원한다.
- IPv6의 실제 도입과 사용에는 매우 오랜 시간이 소요되고 있다.
- 25년 이상이 지났음에도 여전히 완전한 전환은 이루어지지 않았다.
- 지난 25년간 WWW, 소셜 미디어, 스트리밍, 게임, 텔레프레즌스 등 애플리케이션 계층의 변화는 매우 빠르게 진행되었으나, 네트워크 계층의 IPv6 도입은 느리게 진행되고 있다.
IPv6 adoption이 느린 이유
IPv6 adoption(도입)이 매우 느린 이유는 다음과 같다.
기존 IPv4 네트워크와의 호환성 문제
- IPv6는 IPv4와 호환되지 않으므로, 모든 장비(router, switch, host 등)를 한 번에 교체하거나 업그레이드해야 한다.
- 그러나 실제 네트워크는 매우 방대하고, 다양한 장비가 혼재되어 있기 때문에, 전체를 동시에 전환하는 것은 사실상 불가능하다.
NAT(Network Address Translation)의 광범위한 사용
- IPv4 주소 부족 문제는 NAT를 통해 임시로 해결되고 있다.
- NAT를 사용하면 하나의 public IPv4 address로 수십, 수백 대의 device를 인터넷에 연결할 수 있으므로, 주소 부족에 대한 긴급성이 완화되었다.
경제적 비용과 실질적 필요성 부족
- IPv6로 전환하기 위해서는 네트워크 장비 교체, 소프트웨어 업그레이드, 인력 교육 등 많은 비용이 소요된다.
- 하지만 IPv4 환경에서도 대부분의 서비스가 정상적으로 동작하고 있기 때문에, 기업이나 기관 입장에서는 IPv6 전환의 즉각적인 필요성을 느끼지 못하는 경우가 많다.
애플리케이션 및 서비스의 IPv6 지원 부족
- 많은 애플리케이션, 서비스, 보안 장비, 네트워크 관리 도구 등이 IPv6를 완전히 지원하지 않는다.
- 이로 인해 IPv6만으로는 네트워크 운용에 제약이 생길 수 있다.
점진적 전환 구조
- IPv6 도입은 dual-stack(IPv4와 IPv6를 동시에 지원) 방식, tunneling(터널링) 등 점진적 방식으로 진행되고 있다.
- 이로 인해 완전한 IPv6-only 환경으로의 전환이 더욱 지연되고 있다.
반응형
'CS 지식 > 컴퓨터 네트워크' 카테고리의 다른 글
[네트워크] SDN과 Openflow 동작 원리와 미들박스(Middlebox) (0) | 2025.06.04 |
---|---|
[네트워크] IP 데이터그램 형식과 주소 할당 방식(서브넷, DHCP, CDIR) (1) | 2025.05.30 |
[네트워크] 라우터 내부 구조, 포트, 버퍼 관리, 스케쥴링 내부 동작 설명 (2) | 2025.05.28 |
[네트워크] 네트워크 계층 개요와 라우터, data plane, control plane (0) | 2025.05.28 |
[네트워크] TCP 혼잡제어의 원리와 발전, QUIC 프로토콜의 발달 (TCP congestion control) (0) | 2025.05.19 |
댓글