지금까지 네트워크 장비가 패킷을 처리하는 방법에 대해 배웠다.
종단 장비에서 패킷이 시작되어 중간 네트워크 장비에서 이 패킷을 처리하는 과정 외에도 IP 네트워크에는 통신을 도와주고 사용자를 편리하게 해주는 다양한 서비스와 프로토콜이 있다.
- NAT(Network Address Translation)
- 하나의 IP를 사용해 여러 단말 장비를 포함하는 네트워크를 구축할 수 있게 해주는 기술
- 사설 IP 주소를 공인 IP 주소로 변환하여 인터넷에 접속할 수 있도록 도와준다.
- DNS(Domain Name System)
- 사용자가 복잡한 목적지 IP를 기억하지 않고도 도메인 이름을 사용할 수 있게 해주는 시스템
- 도메인 이름과 IP 주소를 매핑하여 사용자가 편리하게 네트워크에 접속할 수 있도록 도와줌
- GSLB(Global Service Load Balancing)
- 사용자가 가장 가까운 지역의 데이터 센터에 접속하여 신속한 서비스를 받을 수 있도록 도와주는 기술
- 전 세계에 분산된 데이터 센터들 중에서 가장 효율적인 서비스를 제공받을 수 있다.
- DHCP(Dynamic Host Configuration Protocol)
- 사용자가 IP 설정을 하지 않아도 자동으로 IP 주소를 할당해주는 프로토콜
- 이를 통해 네트워크에 연결된 기기들이 IP 주소를 자동으로 받아 사용할 수 있다.
앞으로의 포스팅에서 이들에 대해 차례로 알아볼 텐데, 이번엔 먼저 NAT에 대해 알아보자!
NAT란?
NAT(Network Address Translaion, 네트워크 주소 변환)는 이름 그대로 네트워크 주소를 변환하는 기술로, 주로 사설 IP 주소를 공인 IP 주소로 변환하는 데 사용된다.
큰 특징을 정리하면 아래와 같다.
- 하나의 네트워크 주소를 다른 주소로 변환하거나 여러 개의 IP를 하나의 IP로 변환
- 사설 IP > 공인 IP / 공인 IP > 또 다른 공인 IP 변환 가능
- AFT(Address Family Translation)도 NAT의 일종 (IPv4 > IPv6 / IPv6 > IPv4)
- 실생활에서 많이 사용하는 기술
- 회사 네트워크
- 노트북과 PC가 공유기를 통해 통신사에 연결되거나,
- 스마트폰이 통신사 장비를 통해 외부와 통신하는 등
- 다양한 장비에서 사용 (L3장비 - 라우터, L3 스위치 / L4장비 - 방화벽, 로드 밸런서 등)
NAT 는 하나의 네트워크 주소를 다른 주소로 1:1 변환하는 것이 기본이지만, IP 주소 고갈 문제를 해결하기 위해 여러 개의 IP를 하나의 IP로 변환하는 기술(NAPT 혹은 PAT*라고 불림)도 포함한다. NAT는 라우팅을 원활하게 해줄 뿐만 아니라, 다양한 주소 변환이 가능하게 해서 서비스의 전체 흐름을 파악하는 데 중요한 역할을 한다.
*NAPT(Nework Addrus Port Transation, RFC2663) : 여러개의 IP를 하나의 IP로 변환하는 기술의 공식 용어. PAT(Port Addres Transaltiom)라고도 불린다.
NAT/PAT 용도, 필요성
- IPv4 주소 고갈문제 해결
- 인터넷의 대중화로 IP 주소 요구가 증가
- NAT는 IPv4 주소 고갈 문제를 해결하는 중요한 방법으로 활용
- 사설 IP를 공인 IP로 변환하면서 효율적으로 IP 주소를 관리할 수 있다.
- 참고 : IP 주소 | 클래스풀 - IP 주소 부족 해결 전략
- 보안 강화
- IP 주소를 변환 → 내부 네트워크의 IP 주소 체계를 외부에 숨기는 역할
- 외부로부터의 불필요한 접근을 차단하므로 보안을 강화할 수 있다.
- IP 주소 체계가 같은 두 개의 네트워크 간 통신
- 공인 IP는 유일하므로 중복X, 그러나 사설 IP는 중복될 수 있음
- 서로 다른 회사나 조직에서 같은 사설 IP 주소를 사용해 직접 연결/통신하면 충돌 가능성
- 더블 나트(Double NAT)를 통해 이들 사이의 통신을 가능하게 함
- 설정 변경 최소화
- IP 주소는 인터넷 독립기관으로 등록하고 직접 운영하는 경우를 제외하면 통신사업자나 IDC 쪽에서 할당받아 사용
- 이 경우 회선사업자나 IDC를 변경하면 공인 IP 주소도 변경되어 서버나 PC 설정 변경이 필요
- 그러나 NAT/PAT를 이용하면 회선과 IDC 이전 시에도 내부 네트워크 구성 변경 없이 공인 IP 주소만 변경할 수 있다.
- 한계
- IP 주소 변환으로 인해 장애 발생 시 문제 해결이 어려울 수 있음
- 애플리케이션 개발자는 NAT 환경을 고려해야 하는 추가적인 부담
- 이런 한계를 극복하기 위해 IPv6 전환 등 새로운 기술들이 계속 개발
NAT 동작 방식
- 특정 사용자(10.10.10.10)가 웹 서버(20.20.20.20)로 통신한다고 가정
- 사용자 👉🏻 웹 서버 접근
- 출발지 IP 10.10.10.10
- 목적지 IP 20.20.20.20 , 서비스 포트 80 으로 패킷 전송
- 출발지 서비스 포트는 임의로 할당(2000번 포트로 가정)
- NAT 장비 👉🏻 사용자가 보낸 패킷 수신
- NAT 정책에 따라 외부 네트워크와 통신이 가능한 11.11.11.11(공인 IP)로 IP 주소 변경
- 변경 전과 후의 IP 주소를 NAT 테이블에 저장
- NAT 장비 👉🏻 출발지 주소를 11.11.11.11로 변경한 후 목적지 웹 서버로 패킷 전송
- 웹 서버 👉🏻 패킷 수신, 사용자에게 응답을 보냄
- 출발지 : 웹 서버(20.20.20.20)
- 목적지 : 11.11.11.11(NAT 장비에 의해 변환된 공인 IP)로 설정되어 전송됨
- NAT 장비 👉🏻 웹 서버로부터 응답 패킷 수신
- NAT 테이블에서 목적지 IP에 대한 출발지 IP 주소가 10.10.10.10임을 확인
- NAT 변환 테이블에서 확인된 원래 패킷의 출발지 IP(10.10.10.10)로 패킷을 변경한 후 사용자에게 전송.
- 최종적으로 사용자가 패킷 수신
PAT 동작 방식
NAT 예제와 동일한 출발지와 목적지, NAT 장비는 PAT로 동작
- 사용자 👉🏻 웹 서버 접근
- 출발지 IP 10.10.10.10
- 목적지 IP 20.20.20.20 , 서비스 포트 80 으로 패킷 전송
- 출발지 서비스 포트는 임의로 할당(2000번 포트로 가정)
- NAT 장비 👉🏻 사용자가 보낸 패킷 수신
- NAT 정책에 따라 외부 네트워크와 통신이 가능한 11.11.11.11(공인 IP)로 IP 주소 변경
- 출발지의 다수의 사용자가 동일한 공인 IP로 변환되어야 함
- 출발지 IP 뿐 아니라 출발지 서비스 포트도 변경
- 출발지 IP, 출발지 서비스 포트 모두 변경, 변경 정보 NAT 테이블에 저장
- NAT 장비 👉🏻 변환된 출발지 IP 주소인 11.11.11.11과 서비스 포트 3000으로 패킷을 재작성, 웹 서버로 전송
- 웹 서버 👉🏻 사용자로부터 패킷을 수신, 사용자에게 응답
- 출발지 IP : 웹 서버의 IP 주소인 20.20.20.20으로 설정
- 목적지 IP : NAT 장비에 의해 변환된 공인 IP인 11.11.11.11과 서비스 포트로 설정
- NAT 장비 👉🏻 웹 서버로부터 응답 패킷 수신해 NAT 테이블 확인
- 웹 서버로부터 받은 패킷의 목적지 IP 주소인 11.11.11.11이 원래 10.10.10.10이며, 서비스 포트 3000이 원래 2000인 것을 확인
- NAT 테이블에서 확인한 목적지 IP 주소와 서비스 포트로 패킷을 재작성한 후 사용자에게 전달
- 사용자는 NAT 장비에서 역변환된 패킷을 받아 웹 페이지를 표시
만약 다른 IP를 가진 사용자가 동일하게 20.20.20.20으로 접속하면, NAT 장비에서는 출발지 IP만 11.11.11.11로 동일하게 변경하고, 서비스 포트는 다른 포트로 변경함
즉, PAT은 NAT와 유사한 방식으로 동작하며, IP 주소와 서비스 포트를 함께 변경하여 사용자를 구분한다.
그러나 서비스 포트 개수에 제한이 있으며, 동시에 모두 사용 중이거나 재사용할 수 없을 때는 정상적으로 동작하지 않는다.
따라서 동시 사용자가 많은 경우 공인 IP 주소를 하나가 아닌 풀(Pool)로 구성해야 한다.
PAT에서는 출발지에서 목적지로 갈 때 NAT 테이블이 생성되지만, PAT IP가 목적지일 때는 해당 IP의 바인딩 정보를 확인할 수 없다. 즉, PAT는 DNAT에는 적용되지 않고, SNAT에만 적용된다.
DNAT와 SNAT에 대해 지금부터 알아보자.
SNAT, DNAT
NAT를 사용해 네트워크 주소를 변환할 때 어떤 IP 주소를 변환하는지에 따라 두 가지로 구분된다.
- SNAT(Source NAT): 출발지 주소를 변경하는 NAT
- DNAT(Destination NAT): 도착지 주소를 변경하는 NAT
SNAT와 DNAT는 트래픽이 출발하는 시작 지점을 기준으로 구분되며, 어떤 주소를 변경해야 하는지는 서비스 흐름과 목적에 따라 결정된다.
역 NAT 과정
- 요청 시 SNAT : 목적지로 전송
- 응답 : 출발지 목적지 반대 → DNAT
- NAT 장비를 처음 통과할 때 NAT 테이블 생성 → 별도 설정 없이 반대로 패킷 변환 가능
- 따라서 트래픽 요청 시작 지점만 고려해 SNAT 설정
👉🏻 NAT가 정상적으로 수행되려면 역 NAT 과정이 함께 수행되어야 함
SNAT(Source NAT)
- 사설에서 공인으로 통신할 때
- 출발지에서는 사설 IP를 공인 IP로 변경하여 서비스를 요청하고, 목적지에서는 출발지 IP를 확인하여 응답을 보낼 수 있는 경로를 찾는다.
- 보안
- 보안상의 이유로 내부 IP 주소를 숨기거나, 내부 IP가 대외사의 IP 대역과 중복될 때 사용
- 로드 밸런서의 구성에 따라 SNAT를 사용하여 응답 트래픽이 로드 밸런서를 거치게 할 수 있다.
DNAT(Destination NAT)
- 로드 밸런서
- 서비스 요청을 로드 밸런서의 서비스 VIP(Virtual IP)로 보내고, 로드 밸런서에서는 해당 서비스 VIP를 실제 서버의 IP로 변경하여 서비스를 제공
- 사내와 대외망의 연동
- 대외사와의 네트워크 구성에서 중복되는 IP 주소를 피하기 위해 사용
- 대외망의 NAT 장비를 이용하여 대외사의 IP를 특정 IP 대역으로 변경
- 모든 대외사를 대외망 전용 NAT 대역으로 라우팅 처리 가능 → 라우팅 설정을 개별적으로 할 필요 없이 구성할 수 있다.
동적 NAT, 정적 NAT
- 정적 NAT : 출발지와 목적지의 IP를 미리 매핑해 고정해놓은 NAT
- 특정 IP간의 매핑 관계가 항상 일정하므로 서비스의 방향성을 고려하지 않고 NAT 설정이 가능
- 이러한 특징 때문에 1:1 NAT라고도 불린다.
- 동적 NAT : 출발지나 목적지의 IP가 사전에 정해져 있지 않고, NAT를 수행할 때 IP를 동적으로 변경
- 출발지나 목적지 중 적어도 한 곳은 다수의 IP로 구성된 IP 풀이나 범위(range)로 설정
- NAT가 필요할 때마다 IP 풀에서 선택한 IP로 매핑 → NAT 테이블에 저장
- NAT 테이블은 설정된 시간 동안 유지되지만, 일정 시간 동안 통신이 없을 경우 사라진다.
- 따라서 동적 NAT 설정 시 서비스 흐름을 신중히 고려해야 한다.
동적 NAT | 정적 NAT | |
NAT 설정 | 1:N, N:1, N:M | 1:1 |
NAT 테이블 | NAT 수행 시 생성 | 사전 생성 |
NAT 테이블 타임아웃 | 동작 | 없음 |
NAT 수행정보 | 실시간 확인 or 별도 변경 로그 저장 | 별도 필요 X |
참고
⌜IT 엔지니어를 위한 네트워크 입문⌟ 길벗, 2023
[7장] 통신을 도와주는 네트워크 주요 기술 | 7.1 NAT/PAT (p.214~224)
* 책을 참고해 필요한 내용을 정리한 것이므로, 책의 내용과 다를 수 있습니다.
GitHub 댓글