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
'Skills > Network' 카테고리의 다른 글
Packet Sniffer Code in C using Linux Sockets (BSD) – Part 2 (0) | 2014.07.31 |
---|---|
Wireshark Filters – PPPoE, DHCP & VLAN ID (0) | 2014.07.30 |
Iptables (0) | 2014.07.09 |
TCPDUMP 옵션 및 사용법 (0) | 2014.07.07 |
네트워크 관련지식 (재정리를 위해 참고) (0) | 2014.05.22 |
댓글