본문 바로가기
  • AI (Artificial Intelligence)
Skills/Network

iptables 설정 [NAT]

by 로샤스 2014. 7. 14.

NAT 는 Network Address Translation 의 약자로 외부망과 내부망을 연결하는 다리역할을 한다. NAT는 2개의 chain을 포함하는데 PREROUTING 과 POSTROUTING 이다. PREROUTING 은 DNAT를 이용하여 처음패킷이 생길때 이용되고 POSTROUTING은 SNAT를 이용하여 패킷이 나갈때 이용된다.

여 기서 DNAT 와 SNAT 에 대해서 살펴보면 DNAT 는 Destination NAT 의 약자로 박화벽에서 특정 공인 IP를 내부의 사설 IP로 포워딩하는 경우 이용되며  SNAT는 Source NAT 의 약자로 내부의 사설 IP를 이용하여 외부 인터넷으로 연결된 공인IP로 변환하고자 하는 경우 이용된다.

이제 NAT 설정에 대해서 살펴보자.

IP forwarding 기능을 사용하고자 한다면

# echo 1 > /proc/sys/net/ipv4/ip_forward

라고 명령을 내리면 된다. 이 방법은 컴퓨터를 재부팅할 때 값이 0으로 되돌아가기 때문에 재부팅할 때마다 실행시켜줘야한다.

재부팅해도 1을 가지려면

# vi /etc/sysctl.conf  에서 net.ipv4.ip_forward 값을 1로 준다.

vi 열고 값 수정하고 저장하고 나오는게 귀찮다면 아래방법을 이용해도 무관하다.

find /etc -type f -name "sysctl.conf" -exec perl -pi -e "s/net.ipv4.ip_forward = 0/net.ipv4.ip_forward = 1/g" {} \;

내부네트워크에서 기본게이트웨이는 외부네트워크 주소를 준다.

예) 네트워크 설정
eth0 (내부)
IPADDR = 192.168.0.1
NETMASK = 255.255.255.0
GATEWAY = 1.2.3.4   ==> 이부분이 eth1 의 IPADDR 과 동일해야 한다.

eth1 (외부)
IPADDR = 1.2.3.4
NETMASK = 255.255.255.0
GATEWAY = 1.2.3.1

이제 방화벽 설정을 해보자.

iptables -A FORWARD -o eth0 -j ACCEPT
iptables -A FORWARD -o eth1 -j ACCEPT

iptables -t nat -A POSTROUTING -o eth1 -j MASQUERADE

위 방법은 앞서 설명한 바에 의하면 SNAT을 이용하여 설정을 한 것이다.

SNAT와 DNAT 을 정확히 이해하기 위해 MASQUERADE 대신 SNAT와 DNAT를 이용한다면

iptables -t nat -A POSTROUTING -o eth0 -j SNAT --to 1.2.3.4

iptables -t nat -A PREROUTING -i eth0 -j DNAT --to 192.168.0.2-254

이렇게 될 것이다.

설정이 정상적으로 되었는지 확인은 iptables -L 과 iptables -t nat -L 로 확인한다.









출처 : https://www.linux.co.kr/home2/board/subbs/board.php?bo_table=lecture&wr_id=1742









댓글