
1. NAT(Network Address Translation)의 개요
- 컴퓨터에서 인터넷을 사용하려면 IP 주소를 부여받아야 하고, 보통 이 주소는 공인 IP라고 부름
- IP 주소 부족 현상을 해결하기 위한 방안 중 한 기술이 NAT
- 네트워크의 주소를 변환하여 주는 역할을 하는 것
- 한 개의 공인 IP 주소를 가지고 여러 대의 컴퓨터의 인터넷 접속이 필요한 경우에, 공인 IP 주소를 공유하여 여러 대의 컴퓨터가 인터넷 접속이 가능하게 하는 설정이 대표적인 경우
2. NAT의 사용 예
1. 하나의 공인 IP 주소를 공유하여 다수의 PC에서 인터넷을 사용하는 경우

2. 하나의 IP 주소를 이용하여 다수의 서버를 연결하여 사용하는 경우

3. 투명 프락시
- Squid와 같은 프락시 서버를 운영하는 경우에는 사용자들의 웹 브라우저에 프락시 서버 설정을 해줘야 함
- 이러한 경우 별도의 설정 없이 해당 시스템을 통과하는 패킷은 자동으로 프락시 서버로 연결해서 사용 가능
3. iptables에서 NAT의 분류 및 설정
- iptables에서 NAT는 SNAT(Source NAT)와 DNAT(Destination NAT)로 구분
- SNAT은 공인 IP 주소 하나로 다수의 컴퓨터가 인터넷 접속이 가능하게 하는 경우이고, DNAT은 하나의 공인 IP 주소로 다수의 서버를 운영하는 경우가 해당
1. SNAT
- 패킷의 소스 주소인 발신지를 변경한다는 의미
- 방화벽 내부의 사설 IP 주소를 사용하는 192.168.1.2인 컴퓨터가 www.ihd.or.kr과 같은 웹 사이트를 방문하기 위해서는 공인 IP 주소가 필요
- 이 때 SNAT 정책을 설정하여 방화벽 통과할 때 공인 IP 주소가 부여되도록 설정
- SNAT은 라우팅 경로가 결정된 이후에 설정된다고 하여 NAT 테이블의 POSTROUTING 사슬에 정책 설정을 함
[설정 예]
- eth0 장치를 통해 나가는 패킷에 203.247.50.3번 주소를 부여
iptables -t nat -A POSTROUTING -o eth0 -j SNAT --to 203.247.50.3
- eth0 장치를 통해 나가는 패킷에 203.247.50.3번부터 203.247.50.7번 사이의 주소를 부여
iptables -t nat -A POSTROUTING -o eth0 -j SNAT --to 203.247.50.3-203.247.50.7
- eth0 장치를 통해 나가는 패킷에 대해 공인 IP 주소를 부여. MASQUERADE는 유동 IP주소를 사용하는 경우에 설정
iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
2. DNAT
- 패킷의 도착지 주소를 변경한다는 의미
- 패킷의 목적지 주소가 먼저 변경되고 그 변경된 주소로 새로운 라우팅 경로를 찾음
- DNAT은 라우팅 이전 단계에서 적용된다고 하여 NAT 테이블의 PREROUTING 사슬에 정책을 설정
[설정 예]
- 목적지 주소 203.247.50.3의 80번 포트인 경우에 192.168.1.11의 80 포트로 연결
iptables -A PREROUTING -t nat -p tcp -d 203.247.50.3 --dport 80 -j DNAT --to 192.168.1.11:80
- 목적지 주소 203.247.50.3의 25번 포트인 경우에 192.168.1.12의 25 포트로 연결
iptables -A PREROUTING -t nat -p tcp -d 203.247.50.3 --dport 25 -j DNAT --to 192.168.1.12:25
- 목적지 주소 203.247.50.3의 53번 포트인 경우에 192.168.1.10의 53 포트로 연결
iptables -A PREROUTING -t nat -p udp -d 203.247.50.3 --dport 53 -j DNAT --to 192.168.1.10:53
💡 NAT의 사용
리눅스에서 NAT를 사용하려면 관련 설정 파일에 설정이 되어 있어야 함. cat 명령으로 값을 확인해서 0으로 출력된다면 다음과 같이 설정하면 됨
echo 1 > /proc/sys/net/ipv4/ip_forward
💡 투명 프락시 설정 예
iptables -t nat -A PREROUTING -i eth1 -p tcp --dport 80 -j REDIRECT --to-port 3128
'Linux' 카테고리의 다른 글
| [Linux] firewall-cmd : 런타임 및 영구 설정 분할 지원 (0) | 2026.04.26 |
|---|---|
| [Linux] iptables 설정 저장 반영 - iptables-save / iptables-restore (0) | 2026.04.14 |
| [Linux] iptables (0) | 2026.04.06 |
| [Linux] DHCP(Dynamic Host Configuration Protocol) (0) | 2026.03.31 |
| [Linux] Squid Proxy (0) | 2026.03.16 |