IP 마스커레이딩(Masquerading:가장)의 목적은 여러분의 네트워크 상의 사설, 라우팅이 안되는 IP 주소를 가진 기계들이 IP의 가장을 통하여 인터넷을 접근하는 것을 허용하기 위해서 입니다. 여러분의 사설 네트워크에서 인터넷을 목적지로 하는 트래픽은 반드시, 그 요청을 만든 기계로 경로가 되돌아갈 수 있는 응답들을 위하여, 조작되어져야 합니다. 이것을 하기 위하여, 커널은 반드시 각각의 패킷의 source IP 어드레스를 변경하고, 그러므로 응답은 인터넷에서 사용 가능하지 않은 요청을 만든 사설 IP 주소 대신에 변경된 것에 따라 다시 되돌아오게 됩니다. 리눅스는 기계가 속하는 접속과 되돌와오는 패킷을 적절하게 재경로하는 것을 추적하기 위하여 접속 추적 (conntrack)을 사용 합니다. 그러므로 여러분의 사설 네트워크를 떠난 트래픽은 여러분의 우분투 게이트웨이 기계로 향할 때 "가장"이 됩니다. 이 절차는 인터넷 접속 공유로 마이크로소프트의 문서에서는 알려져 있습니다.
이것은 하나의 iptables 규칙을 가지고 완수할 수 있고, 여러분의 네트워크 설정에 따라 약간 다를 수 있습니다:
sudo iptables -t nat -A POSTROUTING -s 192.168.0.0/16 -o ppp0 -j MASQUERADE
위의 명령은 여러분의 사설 주소 공간이 192.168.0.0/16 이고 인터넷을 사용하는 장치가 ppp0 라고 가정을 합니다. 문법은 다음과 같이 나누어질 수 있습니다:
-t nat -- nat 테이블로 가기 위한 규칙
-A POSTROUTING -- POSTROUTING chain에 덧붙이는(-A) 규칙
-s 192.168.0.0/16 -- 지정된 주소 공간에서 향하는 트래픽에 적용하는 규칙
-o ppp0 -- 지정된 네트워크 장치를 통하여 경유하도록 스케쥴된 트래픽에 적용하는 규칙
-j MASQUERADE -- 위에 설명된 대로 이 규칙에 일치하는 트래픽은 조작되기 위한 MASQUERADE 타켓으로 "jump" (-j)
필터 테이블 (대부분 또는 모든 패킷 필터링이 일어나는 기본 설정 테이블) 내의 각 체인은 ACCEPT 정책 을 기본값으로 갖지만, 만약 여러분이 게이트웨이 장치에 추가로 방화벽을 설정한다면, DROP 또는 REJECT 정책을 지정할 수 있고, 그 경우에는 여러분의 가장된 트래픽은 위의 규칙이 동작을 하기 위하여 FORWARD 체인을 통하는 것이 허용되어야 합니다:
sudo iptables -A FORWARD -s 192.168.0.0/16 -o ppp0 -j ACCEPT sudo iptables -A FORWARD -d 192.168.0.0/16 -m state --state ESTABLISHED,RELATED -i ppp0 -j ACCEPT
위의 명령은 여러분의 로컬 네트워크에서 인터넷으로 가는 모든 접속과 그 접속에 관련되는 모든 트래픽이 위의 규칙을 시작한 (즉 여러분의) 기계로 되돌아오는 것을 허용 합니다.