CentOS7下防火墙网络问题的诊断经历

问题描述

在安装kubernetes过程中,一直打开防火墙配置,并配置coredns,但在node节点遇到解释超时问题,怀疑是防火墙的问题。

诊断过程

关闭防火墙进行测试

systemctrl stop firewalld

关闭防火墙后,coredns解释正常,因此确定是防火墙的问题。
查看iptables的包拒绝情况,发现FORWARD链最后有REJECT了一些包。

# iptables -nvL --line | head -25
Chain INPUT (policy ACCEPT 0 packets, 0 bytes)
num   pkts bytes target     prot opt in     out     source               destination         
1     135K   16M KUBE-FIREWALL  all  --  *      *       0.0.0.0/0            0.0.0.0/0           
2     138K   17M ACCEPT     all  --  *      *       0.0.0.0/0            0.0.0.0/0            ctstate RELATED,ESTABLISHED
3        0     0 ACCEPT     all  --  lo     *       0.0.0.0/0            0.0.0.0/0           
4     1048 62566 INPUT_direct  all  --  *      *       0.0.0.0/0            0.0.0.0/0           
5     1048 62566 INPUT_ZONES_SOURCE  all  --  *      *       0.0.0.0/0            0.0.0.0/0           
6     1048 62566 INPUT_ZONES  all  --  *      *       0.0.0.0/0            0.0.0.0/0           
7      146  5840 DROP       all  --  *      *       0.0.0.0/0            0.0.0.0/0            ctstate INVALID
8       40  3754 REJECT     all  --  *      *       0.0.0.0/0            0.0.0.0/0            reject-with icmp-host-prohibited

Chain FORWARD (policy ACCEPT 0 packets, 0 bytes)
num   pkts bytes target     prot opt in     out     source               destination         
1     4003 1060K KUBE-FORWARD  all  --  *      *       0.0.0.0/0            0.0.0.0/0            /* kubernetes forwarding rules */
2     1795  961K ACCEPT     all  --  *      *       0.0.0.0/0            0.0.0.0/0            ctstate RELATED,ESTABLISHED
3        0     0 ACCEPT     all  --  lo     *       0.0.0.0/0            0.0.0.0/0           
4     2208 99435 FORWARD_direct  all  --  *      *       0.0.0.0/0            0.0.0.0/0           
5     2208 99435 FORWARD_IN_ZONES_SOURCE  all  --  *      *       0.0.0.0/0            0.0.0.0/0           
6     2208 99435 FORWARD_IN_ZONES  all  --  *      *       0.0.0.0/0            0.0.0.0/0           
7     2208 99435 FORWARD_OUT_ZONES_SOURCE  all  --  *      *       0.0.0.0/0            0.0.0.0/0           
8     2208 99435 FORWARD_OUT_ZONES  all  --  *      *       0.0.0.0/0            0.0.0.0/0           
9        0     0 DROP       all  --  *      *       0.0.0.0/0            0.0.0.0/0            ctstate INVALID
10    2208 99435 REJECT     all  --  *      *       0.0.0.0/0            0.0.0.0/0            reject-with icmp-host-prohibited
...

开启iptables日志定位ash

# iptables -I FORWARD 10 -j LOG --log-prefix "FORWARD"
# tail -f /var/log/messages
Jul 23 11:45:07 node2 kernel: FORWARDIN=flannel.1 OUT=docker0 MAC=7a:97:e0:cf:94:b9:5e:40:16:d4:91:8c:08:00 SRC=172.30.59.0 DST=172.30.32.2 LEN=60 TOS=0x10 PREC=0x00 TTL=63 ID=32595 DF PROTO=TCP SPT=48864 DPT=53 WINDOW=28200 RES=0x00 SYN URGP=0 
Jul 23 11:45:08 node2 kernel: FORWARDIN=docker0 OUT=ens33 PHYSIN=vethb838c46 MAC=02:42:56:97:34:61:02:42:ac:1e:20:02:08:00 SRC=172.30.32.2 DST=192.168.5.2 LEN=45 TOS=0x00 PREC=0x00 TTL=63 ID=43751 DF PROTO=UDP SPT=37873 DPT=53 LEN=25 
Jul 23 11:45:08 node2 kernel: FORWARDIN=docker0 OUT=ens33 PHYSIN=vethb838c46 MAC=02:42:56:97:34:61:02:42:ac:1e:20:02:08:00 SRC=172.30.32.2 DST=192.168.5.2 LEN=45 TOS=0x00 PREC=0x00 TTL=63 ID=43767 DF PROTO=UDP SPT=56901 DPT=53 LEN=25 

可以看出,源地址为SRC=172.30.32.2发出访问目标端口DPT=53(DNS)的包被拦截了。

解决问题

修改防火墙规则,再进行测试后DNS成功。然后修改docker的服务配置,在重新启动时加载规则。

# firewall-cmd --direct --add-rule ipv4 filter FORWARD 0 -s 172.30.0.0/16 -j ACCEPT
# vim /usr/lib/systemd/system/docker.service
[Service]
ExecStartPost=/usr/bin/firewall-cmd --direct --add-rule ipv4 filter FORWARD 0 -s 172.30.0.0/16 -j ACCEPT
...

最后,清除上面添加的日志跟踪:

# iptables -nvL --line #找出FORWARD链的LOG所在的行数
# iptables -D FORWARD 10
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值