Firewalld防火墙开启masquerade后lookback服务访问问题
问题描述
按照CentOS7 下搭建简易的L2TP/IPSec 服务搭建好L2TP/IPSec服务后,发现一个问题。
该入口机器上还跑着一些测试服务,有些测试服务是绑定的本机的loopback接口的,只对本机提供服务的。
本机上有一些另外的java服务,使用localhost
地址访问这些服务时,发现请求会被解析为使用机器的外网地址来访问这些内网服务,导致java服务出错。
没法一眼看出问题,因此只能通过逐步停到服务的方式,来查看到底是当时搭建L2TP/IPSec的过程中,哪个设置导致了这个问题。
问题调查
依次停掉ipsec,xl2tpd服务,问题依然存在。
移除firewalld的masquerade设置后,java访问的问题就好了。
问题解决
感觉是localhost的loopback接口被配置了masquerade导致的问题,便想着有没有什么办法可以将loopback排除在masquerade配置以外,网上一通搜索,找到了一些类似问题,但似乎没有正确的解决办法。
- How do I masquerade only a specific subnet with firewalld?
- centos 7配置firewall防火墙的地址伪装和端口转发实例
- linux系统firewall教程,CentOS 7下firewall防火墙使用入门基础
最终自己想的解决办法如下:
- 停止全局的masquerade配置
- 将服务器上涉及到需要转发服务的IP端添加masquerade配置
最后试验下来,可以解决问题,最终修改命令