温馨提示×

ubuntu iptables怎样设置转发

小樊
38
2026-10-01 01:36:01
栏目: 智能运维

在 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.10:80

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

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

说明:

  • PREROUTING:修改目标地址(DNAT)
  • POSTROUTING:做源地址伪装(MASQUERADE,适合动态 IP)

如果是公网 → 内网,通常 必须加 MASQUERADE


三、本机访问自己端口也转发(可选)

默认 PREROUTING 不影响本机流量。

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

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

四、全部流量转发(整机网关)

例如 Ubuntu 做路由器:

sudo iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
sudo iptables -A FORWARD -i eth1 -o eth0 -j ACCEPT
sudo iptables -A FORWARD -i eth0 -o eth1 -m state --state RELATED,ESTABLISHED -j ACCEPT

五、保存 iptables 规则(Ubuntu 重点)

Ubuntu 默认 重启会丢规则

方法 1(推荐)

sudo apt install iptables-persistent
sudo netfilter-persistent save

方法 2(手动)

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

六、常见坑提醒

✅ 确认:

sudo iptables -t nat -L -n -v

✅ 防火墙别挡 FORWARD:

sudo iptables -A FORWARD -j ACCEPT

✅ 云服务器注意:

  • 安全组 / 防火墙
  • 网卡是否允许转发

七、快速示例(复制即用)

将 80 转发到 8080:

sudo sysctl -w net.ipv4.ip_forward=1
sudo iptables -t nat -A PREROUTING -p tcp --dport 80 \
  -j REDIRECT --to-port 8080

如果你能告诉我:

  • 是 端口转发 / 整机网关 / Docker / 云服务器
  • 源 IP、目标 IP、端口

我可以直接帮你写 完整可用配置。

0 踩