从cilium角度理解L3、L4、L7层网络策略的区别
你对L3、L4、L7层网络策略也就是防火墙策略的区别清楚吗?直到我学习cilium时,通过cilium的官方网站给出的使用说明,我终于理解了L3、L4、L7层网络策略的差别。现记录如下:
L3网络策略
L3的网络测试是基于IP/CIDR或者DNS域名的,对于cilium所在的云计算领域还可以基于容器的label,service,entity.其中IP/CIDR就是基于IP或者IP段;DNS就是指基于域名;entity可以是“host、remote-node、cluster、init、world、all”等。下面是一个三层策略示例:
apiVersion: "cilium.io/v2"
kind: CiliumNetworkPolicy
metadata:
name: "cidr-rule"
spec:
endpointSelector:
matchLabels:
app: myService
egress:
- toCIDR:
- 20.1.1.1/32
- toCIDRSet:
- cidr: 10.0.0.0/8
except:
- 10.96.0.0/12
L4网络策略
四层策略可以和三层策略配置使用也可以单独使用,它指定了协议并指定端口,如下所示:
apiVersion: "cilium.io/v2"
kind: CiliumNetworkPolicy
metadata:
name: "l4-rule"
spec:
endpointSelector:
matchLabels:
app: myService
egress:
- toPorts:
- ports:
- port: "80"
protocol: TCP
L7网络策略
7层策略规则嵌入到第4层示例规则中,并且可以在ingress和egress方向指定。L7Rules结构是一个base type,包含协议特定字段的枚举值。如下是cilium中的一个L7策略,它针对的是http协议中的get方法并且路径是public的报文:
kind: CiliumNetworkPolicy
metadata:
name: "rule1"
spec:
description: "Allow HTTP GET /public from env=prod to app=service"
endpointSelector:
matchLabels:
app: service
ingress:
- fromEndpoints:
- matchLabels:
env: prod
toPorts:
- ports:
- port: "80"
protocol: TCP
rules:
http:
- method: "GET"
path: "/public"
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· AI与.NET技术实操系列:基于图像分类模型对图像进行分类
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 25岁的心里话
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 按钮权限的设计及实现