在 Debian 上使用 iptables 做 NAT 转发(端口转发 / 地址转换),通常分为几种常见场景。下面按最常用场景逐步说明。
NAT 依赖内核转发功能。
sysctl -w net.ipv4.ip_forward=1
编辑 /etc/sysctl.conf:
net.ipv4.ip_forward=1
生效:
sysctl -p
例如:
公网 IP: 1.2.3.4
将 TCP 8080 转发到内网 192.168.1.10:80
iptables -t nat -A PREROUTING -p tcp --dport 8080 -j DNAT --to-destination 192.168.1.10:80
iptables -A FORWARD -p tcp -d 192.168.1.10 --dport 80 -j ACCEPT
iptables -t nat -A POSTROUTING -p tcp -d 192.168.1.10 --dport 80 -j MASQUERADE
适用于:
假设:
eth0192.168.1.0/24iptables -t nat -A POSTROUTING -s 192.168.1.0/24 -o eth0 -j MASQUERADE
允许转发:
iptables -A FORWARD -i eth1 -o eth0 -j ACCEPT
iptables -A FORWARD -i eth0 -o eth1 -m state --state RELATED,ESTABLISHED -j ACCEPT
iptables -t nat -A POSTROUTING -s 192.168.1.0/24 -o eth0 -j SNAT --to-source 1.2.3.4
iptables -t nat -L -n -v
iptables -t nat -D PREROUTING 1
apt install iptables-persistent
netfilter-persistent save
规则保存在:
/etc/iptables/rules.v4
ip_forwardnftables,语法不同如果你能告诉我:
我可以给你精准的 iptables 规则。