firewalld 无法限制容器端口流量
一、 异常说明
某生产服务器 10.21.196.96 运行一个redis(容器), 存在高危漏洞, 历史遗留问题, 无法升级redis, 只能通过防火墙去限制redis端口的流量
无论怎么配置firewall, 对redis的6379端口就是不生效
二、 详情
2.1 猜测是因为容器的原因
添加容器相关接口:
firewall-cmd --zone=public --add-interface=docker0 --permanent
2.2 firewalld 添加接口报错
ERROR: '/usr/sbin/iptables-restore -w -n' failed: iptables-restore v1.8.5 (legacy): interface name `vethd6d63cd@if18' must be shorter than IFNAMSIZ (15)
添加接口的时候, 注意接口名称, ip link show
和 ifconfig
输出不一样
添加名称 vethd6d63cd@if18
这样的接口, 导致firewalld奔溃.
编辑配置文件: /etc/firewalld/zones/public.xml
删除<interface />
重启 firewalld 即可
2.3 猜测 ipv6 的原因
同是ipv6, 2375端口就可以被firewalld控制, 6379不可以, 排除该选项!
2.4 关闭docker的iptables选项
编辑文件: /etc/docker/daemon.json
添加配置:
{ |
重启docker后, firewall 可以正常控制端口流量.
三、 原因分析
下载了docker配置 "iptables": false
前后 iptables -nL
的输出
然而并没有什么不同.