温馨提示×

ubuntu iptables怎样端口映射

小樊
43
2026-09-19 02:22:11
栏目: 智能运维

在 Ubuntu 上使用 iptables 做端口映射(端口转发),通常分为两种场景:


一、本机端口映射(本地转发)

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

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

✅ 适用场景:

  • 本机服务监听 80,但想用 8080 访问
  • Docker、Web 服务等

二、端口映射到其他机器(DNAT 转发)

例如:把 本机 2222 端口映射到 192.168.1.100:22

1️⃣ 开启内核 IP 转发

echo 1 > /proc/sys/net/ipv4/ip_forward
# 永久生效
echo "net.ipv4.ip_forward=1" >> /etc/sysctl.conf
sysctl -p

2️⃣ 添加 NAT 规则

iptables -t nat -A PREROUTING -p tcp --dport 2222 \
  -j DNAT --to-destination 192.168.1.100:22

iptables -t nat -A POSTROUTING -p tcp -d 192.168.1.100 --dport 22 \
  -j MASQUERADE

3️⃣ 允许转发(如默认 DROP)

iptables -A FORWARD -p tcp -d 192.168.1.100 --dport 22 -j ACCEPT

三、UDP 端口映射

只需把 -p tcp 改成 -p udp 即可。


四、查看 / 删除规则

查看 NAT 规则:

iptables -t nat -L -n --line-number

删除规则(示例):

iptables -t nat -D PREROUTING 1

五、持久化 iptables(Ubuntu)

Ubuntu 18.04+

apt install iptables-persistent
netfilter-persistent save

六、更简单的替代方案(推荐)

如果你只是做端口转发,也可以考虑:

  • socat
  • ssh -L
  • ufw(仅基础)

如果你愿意,可以告诉我: ✅ Ubuntu 版本
✅ 是 TCP 还是 UDP
✅ 本机转发还是跨机器

我可以给你精确命令。

0 踩