NAT(Network Address Translation)이란?
NAT(Network Address Translation)은 네트워크에서 IP 주소와 포트 번호를 변환하는 기술입니다.
이를 통해 여러 대의 디바이스가 동일한 공인 IP 주소를 공유하고, 인터넷 연결을 가능하게 합니다.
NAT는 네트워크 연결 공유, 보안 강화, IP 주소 부족 문제 등 다양한 목적으로 사용됩니다.
iptables란?
iptables는 리눅스 운영 체제에서 네트워크 패킷 필터링 및 방화벽 기능을 제공하는 유틸리티입니다.
이를 사용하여 네트워크 트래픽을 관리하고, 보안 정책을 설정할 수 있습니다.
iptables는 네트워크 계층에서 동작하며, IP 주소, 포트 번호, 패킷 상태 등을 기반으로 패킷을 필터링하거나 수정할 수 있습니다.
iptables를 사용하여 NAT 설정 예제
리눅스 우분투에서 iptables를 사용하여 NAT 설정을 구성하는 예제입니다.
NAT 설정을 통해 로컬 네트워크의 디바이스가 공인 IP 주소로 통신할 수 있습니다.
# NAT 설정을 위한 POSTROUTING 체인 설정
iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
# 패킷 전달을 허용하기 위한 FORWARD 체인 설정
iptables -A FORWARD -i eth1 -o eth0 -j ACCEPT
iptables -A FORWARD -i eth0 -o eth1 -j ACCEPT
위의 예제에서는 POSTROUTING 체인에 -o eth0 -j MASQUERADE를 추가하여 로컬 네트워크의 디바이스들이 공인 IP 주소로 패킷을 전송할 수 있도록 설정합니다.
또한, FORWARD 체인을 통해 패킷의 전달을 허용합니다.
포트 포워딩(Port Forwarding) 설정 예제
리눅스 우분투에서 iptables를 사용하여 포트 포워딩 설정을 구성하는 예제입니다.
포트 포워딩을 사용하면 외부에서 로컬 네트워크의 특정 포트로 접근할 수 있습니다.
# 포트 포워딩을 위한 PREROUTING 체인 설정
iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 80 -j DNAT --to-destination 192.168.1.100:80
# 포트 포워딩된 패킷을 ACCEPT하기 위한 FORWARD 체인 설정
iptables -A FORWARD -i eth0 -o eth1 -p tcp --dport 80 -d 192.168.1.100 -j ACCEPT
위의 예제에서는 PREROUTING 체인에 -i eth0 -p tcp --dport 80 -j DNAT --to-destination 192.168.1.100:80를 추가하여 외부에서 로컬 네트워크의 80번 포트로 접근하면 192.168.1.100의 80번 포트로 포워딩되도록 설정합니다.
또한, FORWARD 체인을 통해 포트 포워딩된 패킷을 ACCEPT합니다.