- 环境初始化
# 开启白名单后,允许自身对外的连接 iptables -I INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT iptables -I FORWARD -m state --state RELATED,ESTABLISHED -j ACCEPT # 白名单设置 iptables -P INPUT DROP
- 源NAT(SNAT)
更改所有来自192.168.1.0/24的数据包的源IP地址为123.4.5.100# 指定源IP形式 iptables -t nat -A POSTROUTING -s 192.168.1.0/24 -o eth0 -j SNAT --to 123.4.5.100 # 不指定源IP iptables -t nat -A POSTROUTING -s 192.168.1.0/24 -o eth0 -j MASQUERADE
- 目的NAT(DNAT)
更改所有来自192.168.1.0/24的数据包的目的ip地址为123.4.5.100iptables -t nat -A PREROUTING -s 192.168.1.0/24 -i eth1 -j DNAT --to 123.4.5.100
- 单个端口转发
端口转发 tcp模式:将访问本机1122端口数据包转发给192.168.66.2:5566
iptables -t nat -A PREROUTING -p tcp --dport 1122 -j DNAT --to-destination 192.168.66.2:5566
- 端口转发 udp模式:将访问本机2233端口数据包转发给192.168.66.2:4455
iptables -t nat -A PREROUTING -p udp --dport 2233 -j DNAT --to-destination 192.168.66.2:4455
- 设置mss钳制,解决由于mtu问题导致的网页无法打开问题
# 自动MSS,假设PPPOE虚接口是pppoe0 iptables -t mangle -A POSTROUTING -p tcp --tcp-flags SYN,RST SYN -o pppoe0 -j TCPMSS --clamp-mss-to-pmtu ip6tables -t mangle -A POSTROUTING -p tcp --tcp-flags SYN,RST SYN -o pppoe0 -j TCPMSS --clamp-mss-to-pmtu # 手动指定MSS,假设PPPOE虚接口是pppoe0 iptables -t mangle -A POSTROUTING -p tcp --tcp-flags SYN,RST SYN -o pppoe0 -j TCPMSS --set-mss 1452 ip6tables -t mangle -A POSTROUTING -p tcp --tcp-flags SYN,RST SYN -o pppoe0 -j TCPMSS --set-mss 1432
- iptables 放通端口协议
放通icmp协议
iptables -A INPUT -p icmp -j ACCEPT
放通特定tcp端口
iptables -A INPUT -p tcp --dport 80 -j ACCEPT
放通好几个端口,加multiport参数
iptables -A INPUT -p tcp -m multiport --dport 80,443 -j ACCEPT
- 查看nat连接数
cat /proc/net/nf_conntrack | wc -l