记一次CentOS下的跨IP转发端口操作

背景

由于自己在家搭建了一套云服务集群,绑定域名后发现一个问题,小米路由器的DMZ和NAT功能不能同时开启,考虑开启DMZ之后,通过DMZ主机利用端口转发实现集群的外网访问。

 

方案

DMZ主机端口全部默认,由于集群有四个节点,另外三个节点的22端口分别用1122,1222,1322进行代替,这样今后即可通过域名+对应端口实现CRT SSH免密码访问。

在DMZ主机执行命令:

# 开启端口

firewall-cmd --zone=public --add-port=1122/tcp --permanent
firewall-cmd --zone=public --add-port=1222/tcp --permanent
firewall-cmd --zone=public --add-port=1322/tcp --permanent

#转发端口

firewall-cmd --permanent --zone=public --add-forward-port=port=1122:proto=tcp:toaddr=192.168.1.61:toport=22
firewall-cmd --permanent --zone=public --add-forward-port=port=1222:proto=tcp:toaddr=192.168.1.62:toport=22
firewall-cmd --permanent --zone=public --add-forward-port=port=1322:proto=tcp:toaddr=192.168.1.63:toport=22

#立即生效
firewall-cmd --reload 

问题

执行后发现,通过“telnet 域名 转发端口”不通,进入DMZ主机,“telnet 局域网IP 22”没有问题,“telnet 本机 转发端口”不通,通过命令“firewall-cmd --list-all”查询,所有转发设置都没问题,考虑到对应端口都正常,应该是转发受到了屏蔽之类的操作

解决方案

综合百度各个文章,发现该问题受两部分配置影响,一个是CentOS内核默认禁止转发,另一个是防火墙默认禁止转发,需要同时开启两部分配置,端口转发方能生效,命令如下:

# 1、开启内核 IP 地址转发
# 查看net.ipv4.ip_forward值,1为允许转发,0为不允许,如果为0改为1

/etc/sysctl.conf

# 使之立即生效

sysctl -p

# 2、防火墙允许 IP 地址转发
# 执行 firewall-cmd --query-masquerade 查看状态,如果是 no,可执行下面的命令开启转发。
# 开启 IP 地址转发

firewall-cmd --add-masquerade --permanent

# 重载防火墙规则,使之立即生效

firewall-cmd --reload

# 保险起见,重启一下防火墙服务

systemctl restart firewalld

执行后,重新外网通过域名telnet测试成功。

posted @ 2021-07-30 13:56  Loeis.G  阅读(1235)  评论(0编辑  收藏  举报