在 CentOS 中使用 iptables 做转发(端口转发 / NAT 转发),通常分为以下几种常见场景。下面以 CentOS 7 为例(CentOS 6 也基本一样,只是服务管理方式不同)。
echo 1 > /proc/sys/net/ipv4/ip_forward
编辑:
vim /etc/sysctl.conf
添加或修改:
net.ipv4.ip_forward = 1
使配置生效:
sysctl -p
iptables -t nat -A PREROUTING -p tcp --dport 80 -j REDIRECT --to-port 8080
适用于:把外网访问 80 端口的请求转到本机 8080
将 本机 2222 端口 转发到 192.168.1.100:22
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 -t nat -A POSTROUTING -j MASQUERADE
CentOS 默认可能 DROP FORWARD:
iptables -A FORWARD -p tcp -d 192.168.1.100 --dport 22 -j ACCEPT
iptables -A FORWARD -m state --state RELATED,ESTABLISHED -j ACCEPT
yum install iptables-services -y
systemctl enable iptables
service iptables save
service iptables save
iptables -t nat -A PREROUTING -p tcp --dport 3306 -j DNAT --to-destination 192.168.1.200:3306
iptables -t nat -A POSTROUTING -j MASQUERADE
iptables -t nat -A PREROUTING -s 1.2.3.4 -p tcp --dport 3389 -j DNAT --to 10.0.0.5:3389
ip_forwardsystemctl stop firewalld
systemctl disable firewalld
如果你能说明:
我可以给你一份精准可用的 iptables 规则。