3. 자세한 설명

2.4.x 대의 커널 컴파일하는 경우:

다음의 커널 지원이 필요하다.

먼저, iptable과 masq 모듈이 커널에 컴파일, 설치가 되지 않았지만 모듈로만 존재하는 경우, 설치할 필요성이 있다. 만약 'insmod ipt_MASQUERADE"한다면, ip_tables, ip_conntrack 그리고 iptable_nat을 로드한다.

$> modprobe ipt_MASQERADE

인트라넷이 크거나, 두세대 이상의 컴퓨터를 인터넷에 연결할려고 하더라도 별로 큰 차이는 없다.

자, 다른 룰을 가지고 있지 않다는 가정하에, 다음을 하라.

$> iptables -F; iptables -t nat -F; iptables -t mangle -F

만약 iptables를 찾을 수 없다는 에러가 날 경우, iptables를 찾아 설치하라. 만약 nat과 같은 테이블이 없다면, nat 지원을 넣고 다시 커널을 컴파일하라. mangle이란 테이블이 없다고 하면, 걱정하지 마라, 마스커레이딩에 필요한 것이 아니다. 만약 iptables가 커널과 맞지 않다고 하면(incompatible), 2.4 이상의 커널을 구하여 iptables 지원을 하여 컴파일하라.

그리고, 고정 아이피인 경우 (예: DHCP가 아닌 네트워크):

$> iptables -t nat -A POSTROUTING -o eth0 -j SNAT --to 123.12.23.43

유동 아이피인 경우 (예: 모뎀 - 전화접속을 먼저 하라):

$> iptables -t nat -A POSTROUTING -o ppp0 -j MASQUERADE

마지막으로 커널에 확답을 주기 위해, 패킷포워딩을 한다 (매 리부팅시 한번만 실행하면 되지만, 여러번 해도 상관없다) :

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

이 모든 것이 작동될 경우, 내부 네트워크에서의 마스커레이딩만 허용하기를 바란다(다음장 참고). - 인터넷을 통한 접속을 원치 않을 것이기 때문이다.

먼저, 모든 연결을 허락한다. (e.g. FTP 서버 연결)

$> iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT

여기에서 에러가 난다면, 커널이 state tracking을 지원하지 않을 가능성이 크다. 재컴파일할 것을 권한다. 그리고, 이제 인트라넷(로컬, 내부 네트워크)으로부터의 새로운 연결만 허락한다. ppp0를 eth0나 자신의 외부 디바이스로 대체하라. (!는 '외에 어떤 것이든'란 뜻이다)

$> iptables -A INPUT -m state --state NEW -i ! ppp0 -j ACCEPT

이제 다른 모든 연결은 막는다:

$> iptables -P INPUT DROP  # 위의 두 줄이 성공했을 경우에만

처음 두 룰 중에 하나라도 실패한다면, 이 마지막 룰은 마스커레이딩하는 것을 막을 것이다. 이 룰을 되돌리기 위해선, "iptables -P INPUT ACCEPT"을 하면 된다.