네트워크 주소 변환
네트워크 주소 변환(Network Address Translation)은 주소가 소진된 후에도 IPv4가 오랫동안 작동하도록 유지해 준 테이프입니다. 이는 또한 P2P 앱에 홀 펀칭이 필요한 이유, 인터넷에서 직접 휴대폰에 연결할 수 없는 이유, 영상 통화가 때때로 특정 네트워크에서 연결을 거부하는 이유이기도 합니다. 자세히 이해할 가치가 있습니다.
전체 기사 본문은 아래에 영어로 제공됩니다.
네트워크 주소 변환(NAT)는 개인 네트워크의 여러 장치가 단일 공용 IP 주소를 공유할 수 있도록 라우터에서 사용하는 기술입니다. 이는 원래 IPv4 주소 고갈에 대한 임시방편이었습니다. 거의 모든 소비자 인터넷 연결의 영구적인 고정 장치가 되었습니다.
기본 작업
홈 네트워크는 일반적으로 RFC 1918 범위(10.0.0.0/8, 172.16.0.0/12, 192.168.0.0/16) 중 하나의 개인 IP를 사용합니다. 공용 인터넷에서는 라우팅할 수 없습니다. 노트북의 192.168.1.42는 집 밖에서는 아무것도 의미하지 않습니다.
노트북이 example.com:443에 대한 연결을 열면 패킷은 소스 192.168.1.42:55123와 함께 노트북을 떠납니다. 라우터는 패킷을 가로채고 소스를 your.public.ip:55123(또는 라우터가 선택한 새 포트)에 다시 쓴 다음 앞으로 전달합니다. 라우터는 매핑을 기억합니다. 응답이 your.public.ip:55123로 돌아오면 라우터는 매핑을 참조하고 대상을 192.168.1.42:55123에 다시 쓴 다음 이를 노트북으로 전달합니다. 노트북과 대상 모두 이런 일이 발생했는지 전혀 모릅니다.
매핑 테이블
A 소비자 라우터는 (내부 IP, 내부 포트, 외부 IP, 외부 포트, 프로토콜)로 인덱싱된 NAT 테이블을 유지합니다. 연결이 유휴 상태가 되면 각 행의 시간이 초과됩니다. 일반적으로 UDP의 경우 30초, TCP의 경우 몇 분 정도 걸립니다. 테이블이 가득 차면(저렴한 라우터는 수천 개의 항목만 저장) 오래되거나 유휴 항목이 제거됩니다.
NAT
NAT의 유형은 매핑 재사용에 대한 관대함이 다릅니다.
- 풀콘 NAT: 한 번
192.168.1.42:55123는pub.ip:55123로 매핑되었으며, any 외부 호스트는pub.ip:55123로 패킷을 보낼 수 있으며 내부로 전달됩니다. 가장 허용적입니다. - Restricted-cone NAT: 내부 장치가 이미 보낸 외부 호스트만 응답할 수 있습니다.
- Port-restricted-cone:는 제한된 원뿔과 같지만 포트도 일치해야 합니다.
- Symmetric NAT: 각 외부 대상에 대해 서로 다른 매핑이 생성됩니다. 외부에서 보면 동일한 내부 장치에 끊임없이 변화하는 여러 공개 주소가 있는 것처럼 보입니다. 가장 제한적이며 P2P 프로토콜의 경우 통과하기가 가장 어렵습니다.
NAT가 문제를 일으키는 이유
NAT는 엔드포인트에서 변경이 필요하지 않기 때문에 배포가 쉬웠습니다. 그러나 이는 인터넷의 원래 엔드투엔드 모델을 무너뜨렸습니다. 특정 피해:
- 들어오는 연결. 명시적인 포트 전달이 없으면 인터넷의 어느 누구도 NAT 뒤의 장치에 연결할 수 없습니다. 홈 연결에서 게임 서버, Minecraft 세계 또는 개인 웹사이트를 자체 호스팅하려면 포트 전달이나 릴레이가 필요합니다.
- Peer-to-Peer 앱. NAT 뒤의 두 장치는 서로 직접 호출할 수 없습니다. 공개 매핑을 검색하려면 조정 서버(STUN/ICE)가 필요하고, NAT가 통과하기에 너무 제한적인 경우에는 릴레이(TURN)가 필요합니다.
- 페이로드에 IP를 포함하는 프로토콜. 클래식 FTP와 SIP는 모두 클라이언트의 IP를 프로토콜 본문 내에 넣는데, NAT는 이를 다시 작성할 수 없습니다. 라우터의 ALG(애플리케이션 계층 게이트웨이)는 페이로드를 구문 분석하고 다시 작성해야 합니다. 이는 취약한 해결 방법입니다.
NAT vs PAT vs CGNAT
엄격히 말하면 대부분의 홈 라우터가 수행하는 작업은 PAT(포트 주소 변환)로 포트 번호와 주소를 변환하여 하나의 외부 IP를 통해 많은 내부 흐름을 멀티플렉싱합니다. "NAT"는 이에 대한 일상적인 이름입니다. Carrier-Grade NAT는 동일한 아이디어이지만 ISP 수준입니다. 많은 고객이 하나의 공용 IP를 공유하고 ISP는 규모에 따라 PAT를 수행합니다.
포트 전달 및 UPnP
NAT 뒤에서 들어오는 연결을 수락하려면 라우터에 "공용 포트 X에 도달하는 모든 패킷을 포트 Z의 내부 IP Y로 보내십시오"라고 지시해야 합니다. 그게 바로 포트 포워딩입니다. 라우터 관리자에서 수동으로 설정하거나 UPnP(Universal Plug and Play) 또는 NAT-PMP를 통해 애플리케이션에서 자동으로 요청할 수 있습니다. UPnP는 편리하지만 안전하지 않기로 악명 높습니다. LAN의 모든 프로그램은 방화벽에 구멍을 열 수 있으므로 일부 보안 가이드에서는 이를 비활성화할 것을 권장합니다.
Hairpin NAT 및 반사
공용 IP에서 네트워크 내부의 서버로 포트를 전달하는 경우, 공용 IP 이름을 사용하여 네트워크 내부에서 해당 서버에 액세스하는 것은 라우터가 "hairpin NAT"(NAT 루프백/반사라고도 함)를 지원하는 경우에만 작동합니다. 많은 저렴한 라우터는 그렇지 않습니다. 이것이 바로 "나의 자체 호스팅 서버가 외부에서는 작동하지만 내 소파에서는 작동하지 않는다"는 일반적인 혼란입니다.
NAT
IPv6을 대체하는 것은 NAT가 필요하지 않을 정도로 주소가 너무 많습니다. 모든 장치는 전역적으로 라우팅 가능한 주소를 얻습니다. IPv6 네트워크에는 일반적으로 종단간 중단 없이 NAT(원치 않는 인바운드 없음)의 보안 이점을 제공하는 상태 저장 방화벽이 있습니다. IPv6 채택가 증가함에 따라 NAT는 점차적으로 사라질 것이지만 수십 년 동안 지속될 것입니다.
자주 묻는 질문
- NAT는 방화벽인가요?
- 정확하지는 않지만 들어오는 연결에 대한 것과 같은 역할을 합니다. NAT는 나가는 트래픽에 대한 응답으로만 매핑을 생성하기 때문에 원치 않는 인바운드 패킷은 갈 곳이 없고 삭제됩니다. 이는 실제 보호이지만 때때로 존재해야 하는 명시적 정책 방화벽과 혼동되기도 합니다.
- NAT 뒤에서 화상 통화가 실패하는 이유는 무엇입니까?
- 화상 통화는 일반적으로 미디어 스트림에 UDP를 사용합니다. 대칭 NAT 뒤에 있는 두 장치는 외부 포트가 대상마다 다르기 때문에 직접 경로를 찾는 데 어려움을 겪을 수 있습니다. 대체 방법은 호출 서비스에서 작동하는 TURN 릴레이입니다. 속도가 느리고 비용이 더 많이 들지만 작동합니다.
- VPN이 NAT를 우회하나요?
- 네, 두 가지 면에서요. 첫째, VPN의 외부 연결은 홈 NAT가 변환해야 하는 유일한 것입니다. 터널이 설정되면 내부 애플리케이션 트래픽은 로컬 NAT에 표시되지 않습니다. 둘째, 목적지의 관점에서 볼 때 귀하의 트래픽은 귀하의 홈 IP가 아닌 VPN 서버의 공개 IP에서 오는 것처럼 보입니다.
- NAT 때문에 여러 웹사이트에서 추적될 수 있나요?
- 집에 있는 여러 장치가 공용 IP를 공유하므로 외부 사이트는 동일한 IP에서 많은 흐름을 볼 수 있습니다. 이는 개인 지문을 채취하는 것과 반대입니다. 그러나 타이밍, 브라우저 지문 및 계정 로그인은 여전히 사용자를 다시 연결합니다. NAT만으로는 프라이버시가 아닙니다.
- 커피숍 Wi-Fi에서 일부 소프트웨어가 제대로 작동하지 않는 이유는 무엇입니까?
- 커피숍에서는 통신업체급 NAT를 실행하거나 P2P 프로토콜, BitTorrent 및 일부 VPN 프로토콜을 차단하는 더 엄격한 NAT 유형을 적용하는 경우가 많습니다. 로컬 LAN은 비정상적인 트래픽의 속도를 제한할 수도 있습니다. 일반 HTTPS는 거의 모든 곳에서 작동합니다. 다른 모든 것은 도박입니다.