2007年5月4日 星期五

Linux NAT 設定

基本上,要設定 NAT server,以下的語法是必須的:(假設連外介面為 ppp0)
# (start)============================== 清除防火牆規則 ==============================(start)
iptables -F
iptables -X
iptables -t nat -F
iptables -t nat -X
iptables -t mangle -F
iptables -t mangle -X
# (end)============================== 清除防火牆規則 ==============================(end) # (start)============================== 設定預設規則 ==============================(start)
iptables -P INPUT DROP
iptables -P OUTPUT ACCEPT
iptables -P FORWARD ACCEPT
# (end)============================== 設定預設規則 ==============================(end) # (start)============================== NAT設定 ==============================(start)
# 檢查相依模組
depmod -a

# 預先掛載模組
modprobe ip_tables
modprobe ip_nat_ftp
modprobe ip_conntrack
modprobe ip_conntrack_ftp
modprobe ip_conntrack_irc
modprobe iptable_nat

echo "1" > /proc/sys/net/ipv4/ip_forward # 封包遞送
echo "1" > /proc/sys/net/ipv4/ip_dynaddr # 針對動態IP使用者

# 此僅為設定範例(請視情況修改)
iptables -t nat -A POSTROUTING -o ppp0 -s 192.168.1.0/24 -j MASQUERADE # SNAT(封包偽裝)
# (end)============================== NAT設定 ==============================(end)
大致以上這些設定,在大部分的 distribution 中,就可以讓 NAT 正常運作了!


【注意】

但在 Ubuntu 上面要設定 NAT,跟其他的 distribution 有些不太一樣,如果對外連線是以 pppoe 的方式連線的(也就是一般的ADSL),還需要多加上以下這一行:
iptables -A FORWARD -o ppp0 -p tcp -m tcp --tcp-flags SYN,RST SYN -m tcpmss --mss 1400:1536 -j TCPMSS --clamp-mss-to-pmtu

參考連結:

沒有留言:

張貼留言