温馨提示×

ubuntu iptables如何转发

小樊
38
2026-10-03 22:53:07
栏目: 智能运维

在 Ubuntu 上使用 iptables 做转发(端口/流量转发),通常分为几种常见场景。下面按最常用情况说明,并给出可直接用的命令。


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

iptables 转发依赖 Linux 内核转发功能。

临时开启

sudo sysctl -w net.ipv4.ip_forward=1

永久开启

编辑:

sudo vim /etc/sysctl.conf

添加或取消注释:

net.ipv4.ip_forward=1

生效:

sudo sysctl -p

二、端口转发(本机端口 → 其他 IP:端口)

例如:
访问本机 8080 → 转发到 192.168.1.100:80

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

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

✅ 适用场景:

  • 路由器
  • 跳板机
  • 内网服务暴露

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

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

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

四、转发所有流量(网关模式)

例如 Ubuntu 做网关:

  • 内网:192.168.1.0/24
  • 外网出口:eth0
sudo iptables -t nat -A POSTROUTING \
  -s 192.168.1.0/24 -o eth0 -j MASQUERADE

五、查看 & 删除规则

查看 NAT 规则:

sudo iptables -t nat -L -n -v

删除某条规则(示例):

sudo iptables -t nat -D PREROUTING 1

清空 NAT:

sudo iptables -t nat -F

六、Ubuntu 持久化 iptables(重要)

Ubuntu 默认重启会丢规则。

方法 1(推荐)

sudo apt install iptables-persistent
sudo netfilter-persistent save

方法 2

sudo iptables-save > /etc/iptables.rules

开机恢复:

iptables-restore < /etc/iptables.rules

七、常见坑

❌ 只写 DNAT 不写 MASQUERADE → 不通
❌ 没开 ip_forward → 不通
❌ 云服务器安全组没放行 → 不通


八、示例总结(最常用)

# 开启转发
sysctl -w net.ipv4.ip_forward=1

# 端口转发
iptables -t nat -A PREROUTING -p tcp --dport 8080 \
  -j DNAT --to-destination 192.168.1.100:80
iptables -t nat -A POSTROUTING -j MASQUERADE

如果你能说明:

  • 是 本机端口转发 还是 跨网段
  • 是否有公网 IP
  • Ubuntu 版本(20.04 / 22.04)

我可以给你更精确的配置方案。

0 踩