在 Ubuntu 上通过 iptables 设置转发(端口/流量转发),一般分三种常见场景。下面按最常用 → 进阶给你说明,并附带可直接用的命令。
iptables 转发依赖内核转发功能。
sudo sysctl -w net.ipv4.ip_forward=1
sudo vim /etc/sysctl.conf
添加或修改:
net.ipv4.ip_forward=1
生效:
sudo sysctl -p
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
Ubuntu 默认 重启会丢规则
sudo apt install iptables-persistent
sudo netfilter-persistent save
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
如果你能告诉我:
我可以直接帮你写 完整可用配置。