ICode9

精准搜索请尝试: 精确搜索
首页 > 系统相关> 文章详细

使用flannel插件的情况下,开启Iptables

2021-09-03 19:00:51  阅读:128  来源: 互联网

标签:Iptables 插件 -- udp ACCEPT tcp INPUT flannel


背景

kubernetes: 1.16.3
CNI: flannel
因为Node有公网和内网两个IP,使用防火墙对机器进行安全加固

问题

开启防火墙后,不同节点的Node之间无法通信

# Generated by iptables-save v1.4.21 on Thu Jul  8 10:16:12 2021
*filter
:INPUT DROP [0:0]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [6:438]
-A INPUT -i lo -j ACCEPT
-A INPUT -s 127.0.0.1/32 -d 127.0.0.1/32 -j ACCEPT
-A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
-A INPUT -s 10.244.0.0/16 -m comment --comment "pod Subnet" -j ACCEPT
-A INPUT -s 10.96.0.0/12 -m comment --comment "service Subnet" -j ACCEPT
-A INPUT -s 10.241.0.0/16 -m comment --comment "lan IP" -j ACCEPT
-A INPUT -p tcp -m tcp --sport 80 -j ACCEPT
-A INPUT -p tcp -m tcp --sport 443 -j ACCEPT
-A INPUT -p udp -m udp --sport 123 -j ACCEPT
-A INPUT -p udp -m udp --dport 123 -j ACCEPT
-A INPUT -p tcp -m tcp --sport 53 -j ACCEPT
-A INPUT -p udp -m udp --sport 53 -j ACCEPT
-A INPUT -p icmp -m icmp --icmp-type any -j ACCEPT
-A INPUT -p udp -m udp --dport 161 -j ACCEPT
COMMIT
# Completed on Thu Jul  8 10:16:12 2021

node 节点内网全开

解决思路

  1. 将上述配置写入到/etc/sysconfig/iptables中,并重启防火墙配置
  2. kube-proxy和flannel检查到自身的防火墙被清理后,会自动创建
  3. 此时在A节点上Ping B节点的Pod IP,发现网络不通
  4. 通过抓包发现,对端没有回复任何包
  5. 关闭Iptables服务,并清理自己创建的规则
  6. 此时检查是通的
  7. 开启防火墙,并全开flannel数据传输的UTP 8472端口,发现也是通的
    -A INPUT -p udp --dport 8472 -j ACCEPT
    
  8. 此时可以出结论,故障出现在公网网卡上,检查flannel日志,发现果然监听的是公网IP
    I0903 09:57:22.857993       1 main.go:532] Using interface with name XXX and address XX.XXX.X.X
    I0903 09:57:22.858084       1 main.go:549] Defaulting external address to interface address (XX.XXX.X.X)
    

解决方法

重新部署flannel,并指定使用的网卡

args:
  - '--ip-masq'
  - '--kube-subnet-mgr'
  - '--iface=ens192'

总结

  1. 在双网卡的情况下,flannel默认使用第一张网卡
  2. flannel会使用网卡对应的IP的8472来传输数据

标签:Iptables,插件,--,udp,ACCEPT,tcp,INPUT,flannel
来源: https://www.cnblogs.com/GXLo/p/15224560.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有