在 Debian 上使用 iptables 做 NAT 转发(端口转发 / 网络地址转换) 通常分几种场景,下面按常见用法说明。
编辑配置:
sudo nano /etc/sysctl.conf
确保有这一行(没有就加上):
net.ipv4.ip_forward=1
立即生效:
sudo sysctl -p
示例:把本机 8080 端口转发到 192.168.1.100:80
iptables -t nat -A PREROUTING -p tcp --dport 8080 -j DNAT --to-destination 192.168.1.100:80
iptables -A FORWARD -p tcp -d 192.168.1.100 --dport 80 -j ACCEPT
如果是对本机访问也生效(本地回环):
iptables -t nat -A OUTPUT -p tcp --dport 8080 -j DNAT --to-destination 192.168.1.100:80
示例:Debian 作为网关,内网 192.168.1.0/24 上网
假设:
eth0eth1iptables -t nat -A POSTROUTING -s 192.168.1.0/24 -o eth0 -j MASQUERADE
或指定公网 IP:
iptables -t nat -A POSTROUTING -s 192.168.1.0/24 -o eth0 -j SNAT --to-source 公网IP
sudo apt install iptables-persistent
sudo netfilter-persistent save
规则会保存到:
/etc/iptables/rules.v4
iptables-save > /etc/iptables/rules.v4
开机恢复:
iptables-restore < /etc/iptables/rules.v4
查看 NAT 规则:
iptables -t nat -L -n -v
查看转发:
iptables -L FORWARD -n -v
Debian 10+ 默认可能是 nftables,建议确认:
iptables -V
如果显示 nf_tables,说明是 nft 后端。
如果你能告诉我:
我可以给你一套直接可用的完整规则。