在 Ubuntu 上使用 iptables 做端口映射(端口转发),通常分为两种场景:
例如:把 访问 8080 端口的流量转发到本机 80 端口
iptables -t nat -A PREROUTING -p tcp --dport 8080 -j REDIRECT --to-port 80
✅ 适用场景:
例如:把 本机 2222 端口映射到 192.168.1.100:22
echo 1 > /proc/sys/net/ipv4/ip_forward
# 永久生效
echo "net.ipv4.ip_forward=1" >> /etc/sysctl.conf
sysctl -p
iptables -t nat -A PREROUTING -p tcp --dport 2222 \
-j DNAT --to-destination 192.168.1.100:22
iptables -t nat -A POSTROUTING -p tcp -d 192.168.1.100 --dport 22 \
-j MASQUERADE
iptables -A FORWARD -p tcp -d 192.168.1.100 --dport 22 -j ACCEPT
只需把 -p tcp 改成 -p udp 即可。
查看 NAT 规则:
iptables -t nat -L -n --line-number
删除规则(示例):
iptables -t nat -D PREROUTING 1
apt install iptables-persistent
netfilter-persistent save
如果你只是做端口转发,也可以考虑:
socatssh -Lufw(仅基础)如果你愿意,可以告诉我:
✅ Ubuntu 版本
✅ 是 TCP 还是 UDP
✅ 本机转发还是跨机器
我可以给你精确命令。