在 Debian 上使用 iptables 做端口映射(端口转发 / DNAT),通常是指把本机某个端口的流量转发到另一个地址(或本机另一个端口)。下面按常见场景说明。
端口映射依赖内核转发:
# 临时开启
sysctl -w net.ipv4.ip_forward=1
# 永久开启
echo "net.ipv4.ip_forward=1" >> /etc/sysctl.conf
sysctl -p
例如:把 8080 转发到 80
iptables -t nat -A PREROUTING -p tcp --dport 8080 -j REDIRECT --to-port 80
✅ 仅对进入本机的流量生效
❌ 不适用于本机自己访问 localhost:8080
例如:把公网服务器 1.2.3.4:2222 映射到内网 192.168.1.10:22
iptables -t nat -A PREROUTING -p tcp --dport 2222 \
-j DNAT --to-destination 192.168.1.10:22
iptables -A FORWARD -p tcp -d 192.168.1.10 --dport 22 -j ACCEPT
如果是本机 OUTBOUND(本机访问自己映射的端口):
iptables -t nat -A OUTPUT -p tcp --dport 2222 \
-j DNAT --to-destination 192.168.1.10:22
如果转发出去,建议加:
iptables -t nat -A POSTROUTING -j MASQUERADE
或指定网卡:
iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
查看 NAT 规则:
iptables -t nat -L -n --line-numbers
删除规则(示例):
iptables -t nat -D PREROUTING 1
apt install iptables-persistent
netfilter-persistent save
或:
iptables-save > /etc/iptables/rules.v4
OUTPUT 链如果你能告诉我:
我可以给你精确可用的一条命令。