在日常配置,常常只有一台主机可以提供公网服务,其他主机只有内网IP,无法直接对外提供服务,这时候就可以用到Linux中自带防火墙的转发能力,将对应的端口转发到内网IP主机提供服务。


在CentOS6系列中,使用了iptables这一工具来实现端口代理的

操作系统:CentOS 6.9 64bit

工具:Iptables

1、端口代理服务准备

删除所有NAT规则:

iptables -t nat -F POSTROUTING
iptables -t nat -F PREROUTING

删除某条NAT规则:

iptables -t nat -D PREROUTING 11
iptables -t nat -D POSTROUTING 11

######本机端口代理WEB服务81重定向至8080端口

iptables -t nat -A PREROUTING -p tcp --dport 81 -j REDIRECT --to-port 8080

1.需要开启iptables的forward转发功能

echo 1 > /proc/sys/net/ipv4/ip_forward
net.ipv4.ip_forward = 1

sysctl -p生效

2、配置防火墙规则

###使用接口机192.168.6.12(公网112.35.28.221)的21端口代理192.168.6.13的VSFTP服务

相同端口

iptables -t nat -A PREROUTING -d 192.168.6.12 -p tcp --dport 21 -j DNAT --to-dest 192.168.6.13:21
iptables -t nat -A POSTROUTING -d 192.168.6.13 -p tcp --dport 21 -j SNAT --to-source 192.168.6.12

###使用接口机192.168.6.12的921端口代理192.168.6.13的VSFTP(21)服务。不同端口

iptables -t nat -A PREROUTING -d 192.168.6.12 -p tcp --dport 921 -j DNAT --to-dest 192.168.6.13:21
iptables -t nat -A POSTROUTING -d 192.168.6.13 -p tcp --dport 21 -j SNAT --to-source 192.168.6.12

###使用接口机192.168.6.12的913端口代理192.168.6.13的SSH(22)服务

iptables -t nat -A PREROUTING -d 192.168.6.12 -p tcp --dport 913 -j DNAT --to-dest 192.168.6.13:22
iptables -t nat -A POSTROUTING -d 192.168.6.13 -p tcp --dport 22 -j SNAT --to-source 192.168.6.12

3、保存防火墙规则

配置完成后,需要执行service iptables save保存防火墙规则

并重启service iptables restart测试是否可行


在CentOS7上面则可以利用firewalld实现这一功能

1、查看所有防火墙规则,即可看到转发规则

[root@meetingtest1 ~]# firewall-cmd --list-all
public (default, active)
interfaces: eth0
sources:
services: dhcpv6-client ssh
ports:
masquerade: no
forward-ports: port=369:proto=tcp:toport=3690:toaddr=
icmp-blocks:
rich rules:

2、如果只查看转发规则

[root@meetingtest1 ~]# firewall-cmd --list-forward-ports
port=369:proto=tcp:toport=3690:toaddr=

3、打开端口转发

firewall-cmd --zone=external --add-masquerade

4、配置端口转发

firewall-cmd --permanent --add-forward-port=port=369:proto=tcp:toport=3690

以上就是常见的两种CentOS下面通过自带防火墙实现端口转发的操作方法。