今天有个安全方面的需求,演示环境禁止将3306等高危端口暴露到外网。
于是同事开启了防火墙,仅将应用端口暴露。结果导致演示环境无法使用。
由于公司的应用是基于docker部署的。结果他问我为什么同一台机器,应用无法访问mysql。
docker对于宿主机来说,其实是一个独立的环境,有自己独立的网卡,可以将其看做外部机器。所以防火墙会拦截docker容器的请求。
解决方案:
- 将应用部署到其他机器上,其他机器在内网部署。
- 不使用docker,采用宿主机直接部署应用
- 将docker网卡添加到trusted域
1被否,公司没有那么多台服务器
2工程量大,而且以后无法使用k8s进行调度
firewall-cmd --permanent --zone=trusted --change-interface=docker0
firewall-cmd --reload
自此自己的系统可以正常访问了。
问题解决了一半,过段时间,有人反应其他系统无法使用。
登录nacos查看下服务
第一张图是我们系统的,第二张图是别人系统的,2者ip网段不同,于是怀疑是有2个网卡
ifconfig
2者网段不同,于是将他们的网卡也加进去
firewall-cmd --permanent --zone=trusted --change-interface=br-1f2dcac8086b
firewall-cmd --reload
自此问题解决