在 Debian 下使用 iptables 做 NAT(通常是网关/软路由场景),一般步骤如下。
编辑配置文件:
sudo nano /etc/sysctl.conf
取消或添加这一行:
net.ipv4.ip_forward=1
立即生效:
sudo sysctl -p
适用于:内网 → 外网(动态 IP,如拨号、DHCP)
假设:
eth1eth0iptables -t nat -A POSTROUTING -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
如果你有固定公网 IP(如 1.2.3.4):
iptables -t nat -A POSTROUTING -o eth0 -j SNAT --to-source 1.2.3.4
例如:把外网 80 端口映射到内网 192.168.1.10:80
iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 80 -j DNAT --to-destination 192.168.1.10:80
并允许转发:
iptables -A FORWARD -p tcp -d 192.168.1.10 --dport 80 -j ACCEPT
安装工具:
apt install iptables-persistent
保存规则:
netfilter-persistent save
规则位置:
/etc/iptables/rules.v4
查看当前后端:
update-alternatives --list iptables
如果是 iptables-nft,规则仍可用 netfilter-persistent 保存。
不能上网
ip_forward 是否开启NAT 不生效
iptables -t nat -L -n -v
防火墙挡住
iptables -P FORWARD DROP # 不建议初学者用
如果你说明:
我可以给你精确可用的 iptables 规则。