在 Ubuntu 上设置 iptables 转发(NAT/端口转发),通常用于把一台机器的流量转发到另一台机器(如做网关、跳板、端口映射等)。下面按常见场景给你一个完整、可操作的说明。
iptables 转发依赖内核参数,必须先开启。
sudo sysctl -w net.ipv4.ip_forward=1
sudo nano /etc/sysctl.conf
添加或修改:
net.ipv4.ip_forward=1
生效:
sudo sysctl -p
验证:
cat /proc/sys/net/ipv4/ip_forward
输出应为 1
192.168.1.1010.0.0.580sudo iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
eth0是 出口网卡
sudo iptables -t nat -A POSTROUTING -o eth0 -j SNAT --to-source 公网IP
sudo iptables -t nat -A PREROUTING -p tcp --dport 8080 \
-j DNAT --to-destination 10.0.0.5:80
含义:
访问本机
8080→ 转发到10.0.0.5:80
sudo iptables -A FORWARD -p tcp -d 10.0.0.5 --dport 80 -j ACCEPT
sudo iptables -A FORWARD -m state --state ESTABLISHED,RELATED -j ACCEPT
sudo iptables -t nat -A PREROUTING -p tcp --dport 80 \
-j DNAT --to-destination 192.168.1.20:8080
sudo iptables -t nat -A POSTROUTING -j MASQUERADE
sudo iptables -A FORWARD -p tcp -d 192.168.1.20 --dport 8080 -j ACCEPT
sudo iptables -t nat -L -n -v
sudo iptables -L FORWARD -n -v
sudo apt update
sudo apt install iptables-persistent
保存规则:
sudo netfilter-persistent save
规则保存在:
/etc/iptables/rules.v4
✅ 确保:
DROP 掉 FORWARDufw 干扰(Ubuntu 默认用 ufw)sudo ufw disable
sudo iptables -t nat -A PREROUTING -s 1.2.3.4 -p tcp --dport 3306 \
-j DNAT --to-destination 10.0.0.5:3306
查看是否被转发:
sudo tcpdump -i eth0 port 80
查看连接状态:
ss -ant
如果你愿意,可以告诉我:
我可以给你 完全贴合你环境的 iptables 规则。