偶尔会使用iptables的NAT转发功能,但是每次都没做笔记。每次都忘记导致调试半天。还是做个笔记吧:
首先开启ip转发功能

echo "1" > /proc/sys/net/ipv4/ip_forward
#修改net.ipv4.ip_forward = 1
vim /etc/sysctl.conf
#生效配置文件。
sysctl -p

以下命令3选一
#只指定出口网卡
iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
#指定只转发192.168.254.0/24段与出口网卡
iptables -t nat -A POSTROUTING -s 192.168.254.0/24 -o eth0 -j MASQUERADE
#指定只转发192.168.254.0/24段与出口IP 192.184.1.2
iptables -t nat -A POSTROUTING -s 192.168.254.0/24 -j SNAT --to-source 192.184.1.2

只放行192.168.254.0/24网段转发
iptables -P FORWARD DROP
iptables -A FORWARD -m state --state RELATED,ESTABLISHED -j ACCEPT
iptables -A FORWARD -s 192.168.254.0/24 -j ACCEPT

端口映射
#把eth0网卡的TCP 21999端口映射给192.168.254.6的8999(如果前后两个端口相同,后面可以不写)
iptables -t nat -A PREROUTING -i eth0 -p tcp -m tcp --dport 21999 -j DNAT --to-destination 192.168.254.6:8999
#放行TCP 8999端口转发
iptables -A FORWARD -p tcp -m tcp --dport 8999 -j ACCEPT
#把eth0网卡的UDP 21999端口映射给192.168.254.6的8999(如果前后两个端口相同,后面可以不写)
iptables -t nat -A PREROUTING -i eth0 -p udp -m udp --dport 21999 -j DNAT --to-destination 192.168.254.6:8999
#放行UDP 8999端口转发
iptables -A FORWARD -p udp -m udp --dport 8999 -j ACCEPT
#列出所有转发规则
iptables -t nat -L -n