讓遠端外面的機器可以連進 NAT 的某台電腦, 只要 iptables 設定兩個 port 即可.
/sbin/iptables -t nat -A PREROUTING -p tcp --dport 5800 -i ppp0 -j DNAT --to 192.168.1.1
/sbin/iptables -t nat -A PREROUTING -p tcp --dport 5900 -i ppp0 -j DNAT --to 192.168.1.1
- ppp0: 看對外的網卡是哪個, 就換成哪個 ex: eth0, eth1
- 192.168.1.1: 要連進內部的 IP 是哪個, 由此設定.
再來下面是給電玩用的, AOE(AOC 世紀帝國), CS... 等.(此 script 參考自: Linux iptables 開啟 AOE 讓NAT可以玩啦!)
# AOE
echo 1 > /proc/sys/net/ipv4/ip_forward
IP_LOCAL=192.168.1.1
IPTABLES=/sbin/iptables$IPTABLES -t nat -A POSTROUTING -o ppp0 -j MASQUERADE
# for Serious Sam
$IPTABLES -t nat -A PREROUTING -p tcp --dport 4000 -i ppp0 -j DNAT --to $IP_LOCAL
$IPTABLES -t nat -A PREROUTING -p udp --dport 25600 -i ppp0 -j DNAT --to $IP_LOCAL# for AOE & AOC (require DirectPlay)
$IPTABLES -t nat -A PREROUTING -p tcp --dport 1100:5000 -i ppp0 -j DNAT --to $IP_LOCAL
$IPTABLES -t nat -A PREROUTING -p udp --dport 1100:7000 -i ppp0 -j DNAT --to $IP_LOCAL# for DirectPlay
$IPTABLES -t nat -A PREROUTING -p tcp --dport 47624 -i ppp0 -j DNAT --to $IP_LOCAL
$IPTABLES -t nat -A PREROUTING -p udp --dport 47624 -i ppp0 -j DNAT --to $IP_LOCAL
$IPTABLES -t nat -A PREROUTING -p tcp --dport 2300:2400 -i ppp0 -j DNAT --to $IP_LOCAL
$IPTABLES -t nat -A PREROUTING -p udp --dport 2300:2400 -i ppp0 -j DNAT --to $IP_LOCAL# for UnrealTournament
$IPTABLES -t nat -A PREROUTING -p udp --dport 7777:8000 -i ppp0 -j DNAT --to $IP_LOCAL
# for Server
$IPTABLES -t nat -A PREROUTING -p udp --dport 27900 -i ppp0 -j DNAT --to $IP_LOCAL# for CounterStrike
$IPTABLES -t nat -A PREROUTING -p tcp --dport 27005:27015 -i ppp0 -j DNAT --to $IP_LOCAL
$IPTABLES -t nat -A PREROUTING -p udp --dport 27005:27015 -i ppp0 -j DNAT --to $IP_LOCAL
然後打完電動後記得把 port 關掉, 最簡單的方法就是重新設定 iptables, 再把自己設的規則設回去.
/sbin/iptables --flush
/sbin/iptables --table nat --flush
/sbin/iptables --delete-chain
/sbin/iptables --table nat --delete-chain
下述兩種是 NAT 簡單的設法(挑其一修改使用即可):
/sbin/iptables -t nat -A POSTROUTING -s 192.168.1.0/24 -j MASQUERADE
/sbin/iptables -t nat -A POSTROUTING -o eth1 -s 192.168.1.0/24 -j MASQUERADE