在日常配置,常常只有一台主机可以提供公网服务,其他主机只有内网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下面通过自带防火墙实现端口转发的操作方法。