温馨提示×

debian iptables如何端口映射

小樊
42
2026-10-10 14:24:16
栏目: 智能运维

在 Debian 上使用 iptables 做端口映射(端口转发 / DNAT),通常是指把本机某个端口的流量转发到另一个地址(或本机另一个端口)。下面按常见场景说明。


一、开启内核 IP 转发(必须)

端口映射依赖内核转发:

# 临时开启
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


三、外部访问 → 内网/其他服务器(DNAT)

例如:把公网服务器 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

四、MASQUERADE(SNAT,通常一起用)

如果转发出去,建议加:

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

六、保存规则(Debian)

apt install iptables-persistent
netfilter-persistent save

或:

iptables-save > /etc/iptables/rules.v4

七、常见坑

  1. Docker 会改 iptables,规则可能被覆盖
  2. ufw / nftables 可能冲突
  3. 本机访问自己映射端口要走 OUTPUT 链
  4. 云服务器需放行安全组端口

如果你能告诉我:

  • 是 本机转发 还是 公网 → 内网
  • Debian 版本(11 / 12)
  • 是否有 Docker

我可以给你精确可用的一条命令。

0 踩