네트워크 주소 변환(network address translation; NAT)

NAT란 네트워크 주소 변환(Network Address Translation)의 약자로 하나의 공인 IP주소를 다수의 사설IP로, 또는 그 반대로 상호 전환하여 네트워크 트래픽을 주고받는 기술입니다. 공유기의 핵심 기술로, 외부 네트워크와 통신하기 위해 반드시 거쳐야 하는 단계이기 때문에 NAT 성능은 공유기의 데이터 전송속도와 연관되어 있습니다.

패킷을 전달하기만 하는 일반적인 라우팅과 달리, 공인 ip 를 비공인 ip 로 변환하는 것처럼 NAT는 IP주소를 변환(정확히는 패킷 재분류, 재포장)해야 함.

보통 nat라 하면 stateful napt를 말하는데, 라우팅 과정에서 nat를 수행하려면 단순히 패킷을 목적지로 전달하기만 하는 것뿐만 아니라 그 라우터를 지나는 경로에 어떤 커넥션이 맺어져 있는지 알고 있어야 하고, 패킷을 전달할 때 그 패킷이 어떤 커넥션에 속하는 패킷인지 분류해야 함. 따라서 커넥션 목록을 갖고 있어야 하고, 패킷을 분류하는 작업이 필요함.

더불어서 주소 해석 결과로 ip 헤더의 목적 또는 원본 ip 주소/포트가 바뀌게 되므로 이에 따라 ip 헤더의 체크섬도 재계산해야 함. 따라서 패킷을 까서 고쳐야 하고, 그만큼 CPU를 더 많이 필요로 함. 패킷 한 개 1500바이트 기준으로 NAT쓰루 아웃풋이 대략 1기가비트에 근접하면 실사용에 무리 없을 것이다.

내부통신은 무관함. nat와 라우팅 과정에서는 dhcp와 dns는 개입하지는 않는다.

중급 이상 공유기들은 이 과정들을 하드웨어에서 지원한다.