在 CentOS 上用 iptables 做端口/流量转发(DNAT),通常分为几种常见场景。下面给你最实用、最常见的做法。
sysctl -w net.ipv4.ip_forward=1
vi /etc/sysctl.conf
添加或修改:
net.ipv4.ip_forward = 1
生效:
sysctl -p
iptables -t nat -A PREROUTING -p tcp --dport 8080 -j REDIRECT --to-port 80
适合:
iptables -t nat -A PREROUTING -p tcp --dport 1122 \
-j DNAT --to-destination 192.168.1.100:22
iptables -A FORWARD -p tcp -d 192.168.1.100 --dport 22 -j ACCEPT
如果是 CentOS 7 默认 firewalld:
systemctl stop firewalld
systemctl disable firewalld
如果目标机器和客户端不在同一网段:
iptables -t nat -A POSTROUTING -d 192.168.1.100 -p tcp --dport 22 \
-j SNAT --to-source 本机内网IP
或用 MASQUERADE(动态 IP 推荐):
iptables -t nat -A POSTROUTING -j MASQUERADE
service iptables save
yum install iptables-services -y
systemctl enable iptables
iptables-save > /etc/sysconfig/iptables
iptables -t nat -A PREROUTING -p tcp --dport 80 \
-j DNAT --to 192.168.1.10:80
iptables -t nat -A POSTROUTING -j MASQUERADE
iptables -t nat -A PREROUTING -p tcp --dport 2222 \
-j DNAT --to 10.0.0.5:22
iptables -t nat -L -n -v
iptables -L FORWARD -n -v
如果你能告诉我:
我可以直接给你一套可用命令。