温馨提示×

ubuntu iptables怎样做转发

小樊
43
2026-09-16 02:06:43
栏目: 智能运维

在 Ubuntu 上使用 iptables 做转发(端口 / 流量转发),一般分三种常见场景。下面按从基础到常用给你说明。


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

iptables 转发依赖内核转发功能,不开启等于无效。

临时开启

sudo sysctl -w net.ipv4.ip_forward=1

永久开启

sudo vim /etc/sysctl.conf

添加或修改:

net.ipv4.ip_forward=1

生效:

sudo sysctl -p

二、端口转发(最常用:DNAT)

例如:
本机 8080 → 192.168.1.100:80

1️⃣ NAT 表做目标地址转换

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

2️⃣ 允许转发

sudo iptables -A FORWARD -p tcp -d 192.168.1.100 --dport 80 -j ACCEPT

3️⃣ 做 SNAT(否则回包有问题)

sudo iptables -t nat -A POSTROUTING -j MASQUERADE

✅ 适合:

  • 公网 → 内网
  • 端口映射
  • 路由器 / 网关

三、本机访问也转发(本地回环)

如果你在 本机 访问 localhost:8080 也要转发:

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

四、转发到另一个端口(同机)

例如:
访问 80 → 本机 8080

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

五、只允许特定 IP 转发(安全)

sudo iptables -A FORWARD -p tcp -s 10.0.0.0/24 \
  -d 192.168.1.100 --dport 80 -j ACCEPT

六、查看 & 保存规则

查看

sudo iptables -t nat -L -n -v
sudo iptables -L -n -v

保存(Ubuntu 20.04+)

sudo apt install iptables-persistent
sudo netfilter-persistent save

七、常见坑

❌ 忘了开 ip_forward
❌ 没加 MASQUERADE
❌ 云服务器安全组没放行
❌ Docker 会改 iptables(注意顺序)


如果你愿意,可以告诉我:

  • 是 公网 → 内网 还是 内网 → 内网
  • 是否使用 Docker / UFW
  • Ubuntu 版本

我可以直接给你 一条可执行命令。

0 踩