温馨提示×

ubuntu iptables如何端口映射

小樊
44
2026-09-09 22:20:05
栏目: 智能运维

在 Ubuntu 上,使用 iptables 做端口映射(端口转发 / DNAT)通常分为几种场景。下面按常见用法说明。


一、本机端口映射到本机其他端口

例如:把 访问 8080 端口的流量转到本机 80 端口

sudo iptables -t nat -A PREROUTING -p tcp --dport 8080 -j REDIRECT --to-port 80

⚠️ 注意:

  • REDIRECT 只能用于 本机
  • 不需要开启 ip_forward

二、端口映射到内网 / 其他服务器(DNAT)

例如:把本机 公网 80 端口 映射到 192.168.1.10:8080

1️⃣ 开启 IP 转发

echo 1 | sudo tee /proc/sys/net/ipv4/ip_forward

永久生效:

sudo sysctl -w net.ipv4.ip_forward=1

或编辑:

sudo vim /etc/sysctl.conf
net.ipv4.ip_forward=1
sudo sysctl -p

2️⃣ 添加 DNAT 规则

sudo iptables -t nat -A PREROUTING -p tcp --dport 80 \
-j DNAT --to-destination 192.168.1.10:8080

3️⃣ 允许回包(非常重要)

sudo iptables -t nat -A POSTROUTING -j MASQUERADE

或精确一点:

sudo iptables -t nat -A POSTROUTING -d 192.168.1.10 -p tcp --dport 8080 -j MASQUERADE

4️⃣ 放行防火墙

sudo iptables -A FORWARD -p tcp -d 192.168.1.10 --dport 8080 -j ACCEPT

三、只映射某个来源 IP

例如:只让 1.2.3.4 访问 2222 → 192.168.1.20:22

sudo iptables -t nat -A PREROUTING -s 1.2.3.4 -p tcp --dport 2222 \
-j DNAT --to-destination 192.168.1.20:22

四、查看 / 删除规则

查看 NAT 表:

sudo iptables -t nat -L -n -v

删除某条规则(示例):

sudo iptables -t nat -D PREROUTING 1

五、保存规则(Ubuntu)

sudo apt install iptables-persistent
sudo netfilter-persistent save

六、常见坑

✅ 必须开 ip_forward
✅ DNAT 一定要配合 POSTROUTING MASQUERADE
✅ 云服务器注意安全组
✅ Docker 会改 iptables,可能冲突


如果你能说明:

  • 是 本机映射 还是 跨机器
  • Ubuntu 版本
  • 是否有 Docker / UFW

我可以给你一条可直接用的命令。

0 踩