当前位置: 首页 > article >正文

iptables防火墙的通俗理解,和k8s中的iptables策略使用

iptables是什么?

是ip   table   s

ip      表格    多个

就是

多个和ip有关系的表格

什么是ip?

每个网络设备的唯一标识

有这个,能和别的有ip的设备聊天

没这个,得想别的办法

拿四版本来说

ip是32个二进制数       比如:11101010  10101010  01010101 10101010

常用表示方法,四个点分十进制数    比如: 192.168.1.3

什么是点分十进制数?

就是用点隔开的,十进制的,数

192一个十进制数

168第二个十进制数

1第三个十进制数

3第四个十进制数

共四个

每个之间用点"."隔开

什么是表格?

确实,就长excel那样

上下左右都很整体,排列工整

捋一捋

交换机有mac地址表

路由器有路由表、连接状态表

ospf里面有邻居表,链路状态表

mysql里面有一大堆表

linux系统里有arp表,进程表

硬盘上面有MBR分区表

oracle里面有重做日志表Redo log

文件系统里有超级块,inode表,符号连接表

那么

iptables

作为防火墙,

有几个表格

不过分吧

这么看来,要公公整整的做事情

有个表格还是挺有用的

iptables 常说四表五链

raw  mangle  nat  filter

这四个是四表,常用的是nat  filter

nat主要是地址转换

还可以用来负载均衡,流量分发

filter是过滤表

相当于这几个表格里面更核心的那个

说五链之前,说一下

iptables防火墙,是Linux内核管的

外部流量进入一个服务器

是要先进物理网卡

然后进操作系统内核

内核让通过了

才会传递给用户空间

也就说是到达应用层

由于Linux操作系统内核有路由器的功能

所以在这里理解内核的数据过滤

应该可以暂时当它为一个路由器

五链:

prerouting  路由器看数据前,也就是数据刚从网卡到内核这

postrouting  路由器看数据后,准备邮寄的时候,”post“ 邮寄

input         进用户空间的时候

output       出用户空间的时候

forward      转发

常用的是filter表

也就是来访的数据,是要到操作系统的用户空间的

那么这个时候filter表出手

这种数据

我来管

input,数据进用户空间的时候怎么管,什么规则,什么数据能进站,什么数据得等一下

output,数据出站的时候,怎么管,什么数据能出站

forward,管转发,什么数据怎么转发,转发到哪

这个大概就是四表五连的一个基本情况

k8s中的networkPolicy

网络策略

也就是防火墙

k8s底层调用的防火墙是iptables

那么在k8s这个容器管理平台上

怎么调用防火墙呢

k8s的networkPolicy提供了

两个模块

一个是Ingress 进站流量管理模块

一个是Egress  出站流量管理模块

管理的项目有哪些?

ipBlock    网络层怎么管,也就是根据ip地址去管

port          传输层怎么管,TCP还是UDP,端口号多少

namespaceSelector   名称空间这里有两个点,一个是networkPolicy必须指定是在哪个名称空为作用域的,因为每个名称空间是相互隔离的,名称空间下的资源和别的名称空间下的资源是各干各的。大家的关系好像就是,都在一个集群,都在用这些集群的物理资源。从k8s集群外看,这些进程和文件都属于这个k8s集群。但是从k8s集群内部看,不同名称空间的资源是完全独立的,比如网络ip,文件系统,挂载,持久卷,用户和组,进程id,消息队列,信号量,主机名,这些如果不在同一个名称空间下,是看不到别的名称空间的这些资源的。也就是说,名称空间的核心概念就是隔离集群中的这些资源。整个集群给不同的名称空间分配资源,有的资源是要从物理层面分的,比如存储,分了之后,每个名称空间之间互不影响。有的资源是可以重复的,比如A名称空间有个服务帐号叫abc,B名称空间也有个服务帐号叫abc,互不影响。再比如A名称空间有个pod叫httpd,B名称空间也可以有个pod叫httpd。所以,在用kubectl管理k8s集群的时候,如果没有指定名称空间,比如kubectl get pods,看一下有哪些pod,这个是默认看的是default名称空间下的pod,如果要看lucky名称空间下的pod,就需要用kubectl -n lucky get pods来查看。所以名称空间的隔离作用,在k8s中还是很重要的。

namespaceSelector的第二个点是,在防火墙这边,是过滤名称空间是什么样的。往往分为两种,一种是和这个策略所在的名称空间的同一个名称空间来访问的数据,第二种是和这个策略所在的名称空间的不同的名称空间来访的数据。

刚才不是说,名称空间是相互隔离的吗

是啊

但是,有方式能让一个名称空间下的pod所运行的服务向外暴露

一般是nodeport和ingress两种方式

nodeport是端口转发

ingress常用的相当于nginx反向代理

这两个服务是把pod内的比如web进程向公网暴露

也就是集群外的主机都可以访问这个pod的服务

那么另一个名称空间的pod比如跑的就是web请求,那么也应当可以访问这个web服务

再怎么隔离,把别的名称空间的pod当成公网上的请求就行了,就没有必要隔离了。

当然,这个的条件是通过service将pod对外发布服务。

所以,namespaceSelector就是筛选,是跟网络策略在一个名称空间的,还是别的名称空间的,访问请求。如果是自己名称空间的,允许还是拒绝。如果是别的名称空间的,要说是哪个,怎么分辨?k8s一般喜欢用label也就是标签,来区分资源,对名称空间也一样。

带什么标签的名称空间,怎么弄

语法就是

- namespaceSelector:

      matchLabels:

             key: value

这里的key: value键值对,就是名称空间的标签。

在k8s里面,标签不是key,也不是value,而就是"key=vlaue" 这一对,就是标签。

还有一个筛选项目

就是

podSelector

跟名称空间一样,也是拿标签来区分

什么标签的pod,让出还是让进,还是怎么着

语法是

spec:

     podSelector:

           matchExpressions:

                 - key:   xxxx

                    value:  xxxxx

                    operator:  In   ( In   NotIn    Exists   DoesNotExist ) 这几选一个

进站策略:

ingress

- from:

出站策略:

egress:

- to

图片来源:某站,技术蛋老师


http://www.kler.cn/a/293932.html

相关文章:

  • 小面馆叫号取餐流程 佳易王面馆米线店点餐叫号管理系统操作教程
  • 蓝牙BLE开发——iOS 每次写入数据超过200字节报错?
  • Nginx配置自带的stub状态实现活动监控指标
  • 【go从零单排】Random Numbers、Number Parsing
  • vue项目npm run serve出现【- Network: unavailable】(从排查到放弃)
  • GitHub Org
  • 数据结构基础之《(3)—二分法》
  • mysql高级sql
  • RAG与LLM原理及实践(14)---RAG Python 前端构建技术Flask
  • 『功能项目』Unity连接读取本地数据库【28】
  • Xcode打包出现错误Command PhaseScriptExecution failed with a nonzero exit code
  • 前端***
  • 使用Python读取Excel数据的详细指南
  • mhtml图片提取 百度图片下载
  • 使用html+css+layui实现动态表格组件
  • MySQL报错:[Err] 1075 - Incorrect table definitionmysql
  • 提高开发效率的实用工具库VueUse
  • 【2024数模国赛赛题思路公开】国赛D题思路丨附可运行代码丨无偿自提
  • 数据仓库: 6- 数据仓库分层
  • AI模块在人工智能中扮演着什么样的角色
  • 【机器学习】朴素贝叶斯方法的概率图表示以及贝叶斯统计中的共轭先验方法
  • idea中配置Translation插件完成翻译功能
  • 视觉语言模型(VLMs)知多少?
  • C#基础(6)值类型和引用类型
  • 7.统一网关-Gateway
  • 前端跨域问题详解与解决方案指南