没有合适的资源?快使用搜索试试~ 我知道了~
资源推荐
资源详情
资源评论














Linux 防火墙软件 IPtables 使用详解
连接跟踪(conntrack)
连接跟踪是许多网络应用的基础。例如,Kubernetes Service、ServiceMesh
sidecar、 软件四层负载均衡器 LVS/IPVS、Docker network、OVS、iptables
主机防火墙等等,都依赖连接跟踪功能。
连接跟踪,顾名思义,就是跟踪(并记录)连接的状态。 例如,图 1.1
是一台 IP 地址为 10.1.1.2 的 Linux 机器,我们能看到这台机器上有三
条 连接:
机器访问外部 HTTP 服务的连接(目的端口 80)

外部访问机器内 FTP 服务的连接(目的端口 21)
机器访问外部 DNS 服务的连接(目的端口 53)
连接跟踪所做的事情就是发现并跟踪这些连接的状态,具体包括:
从数据包中提取元组(tuple)信息,辨别数据流(flow)和对应的连接
(connection)。
为所有连接维护一个状态数据库(conntrack table),例如连接的创建时
间、发送 包数、发送字节数等等。
回收过期的连接(GC)。
为更上层的功能(例如 NAT)提供服务。
需要注意的是,连接跟踪中所说的“连接”,概念和 TCP/IP 协议中“面向
连接”(connection oriented)的“连接”并不完全相同,简单来说:
TCP/IP 协议中,连接是一个四层(Layer 4)的概念。TCP 是有连接的,
或称面向连接的(connection oriented),发送出去的包都要求对端应答
(ACK),并且有重传机制。UDP 是无连接的,发送的包无需对端应答,
也没有重传机制。
conntrack(CT) 中,一个元组(tuple)定义的一条数据流(flow )就表示
一条连接(connection)。后面会看到 UDP 甚至是 ICMP 这种三层协议
在 CT 中也都是有连接记录的,但不是所有协议都会被连接跟踪。
Netfilter

Linux 的连接跟踪是在 Netfilter 中实现的。
Netfilter 是 Linux 内 核 中 一 个 对 数 据 包 进 行 控 制 、 修 改 和 过 滤
(manipulation and filtering)的框架。它在内核协议栈中设置了若干 hook
点,以此对数据包进行拦截、过滤或其他处理。
现在提到连接跟踪(conntrack),可能首先都会想到 Netfilter,Netfilter
只是 Linux 内核中的一种连接跟踪实现。换句话说,只要具备了 hook
能力,能拦截到进出主机的每个包,完全可以在此基础上自己实现一套连
接跟踪。

云原生网络方案 Cilium 在 1.7.4+ 版本就实现了这样一套独立的连接跟
踪和 NAT 机制 (完备功能需要 Kernel 4.19+)。其基本原理是:
基于 BPF hook 实现数据包的拦截功能(等价于 netfilter 里面的 hook
机制)
在 BPF hook 的基础上,实现一套全新的 conntrack 和 NAT 因此,即便
卸 载 掉 Netfilter , 也 不 会 影 响 Cilium 对 Kubernetes ClusterIP 、
NodePort、ExternalIPs 和 LoadBalancer 等功能的支持。由于这套连接跟
踪机制是独立于 Netfilter 的,因此它的 conntrack 和 NAT 信息也没有
存储在内核的(也就是 Netfilter 的)conntrack table 和 NAT table。所以
常规的 conntrack/netstats/ss/lsof 等工具是看不到的,要使用 Cilium 的命
令,例如:
$ cilium bpf nat list
$ cilium bpf ct list global

Iptables
Iptables 是配置 Netfilter 过滤功能的用户空间工具。 netfilter 才是防火
墙真正的安全框架(framework),netfilter 位于内核空间。iptables 其实
是一个命令行工具,位于用户空间,我们用这个工具操作真正的框架。
Iptable 根据规则所定义的方法来处理数据包,如放行(accept)、拒绝
(reject)和丢弃(drop)等。
例如当客户端访问服务器的 web 服务时,客户端发送报文到网卡,而
tcp/ip 协议栈是属于内核的一部分,所以,客户端的信息会通过内核的
TCP 协议传输到用户空间中的 web 服务中,而此时,客户端报文的目标
终点为 web 服务所监听的套接字(IP:Port)上,当 web 服务需要响应客
户端请求时,web 服务发出的响应报文的目标终点则为客户端,这个时
候,web 服务所监听的 IP 与端口反而变成了原点,我们说过,netfilter
才是真正的防火墙,它是内核的一部分,所以,如果我们想要防火墙能够
达到”防火”的目的,则需要在内核中设置关卡,所有进出的报文都要通过
这些关卡,经过检查后,符合放行条件的才能放行,符合阻拦条件的则需
要被阻止。
iptables 包含 4 个表,5 个链。其中表是按照对数据包的操作区分(过滤,
NAT 等)的,链是按照不同的 Hook 点来区分的,表和链实际上是 netfilter
剩余21页未读,继续阅读
资源评论


普通网友
- 粉丝: 37
上传资源 快速赚钱
我的内容管理 展开
我的资源 快来上传第一个资源
我的收益
登录查看自己的收益我的积分 登录查看自己的积分
我的C币 登录后查看C币余额
我的收藏
我的下载
下载帮助


最新资源
- 人民法院互联网诉讼服务平台建设实施方案.doc
- 网络道德失范问题、原因与对策分析.docx
- 移动通信光缆线路工程施工技术标准和要求.doc
- 施工平面图及网络图.doc
- 医院网站策划方案.doc
- 通信管道安全施工技术交底.docx
- 大数据时代大学生健康政治心理的培育.docx
- 2014通信中级工程师(互联网技术)实务试卷.docx
- 2013年4月考试机械CADCAM第一次作业.doc
- 软件体系结构作业完整版.doc
- 采用PLC控制的变频器一拖三恒压供水技术方案.doc
- 校园网网络安全问题及其解决方案.doc
- 软件项目实施服务手册-解决方案-计划解决方案-实用文档.ppt
- 大数据时代公共图书馆微服务的探讨.docx
- 掘进机三维套料系统集成应用.docx
- 大数据在特种设备检验中的应用.docx
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈



安全验证
文档复制为VIP权益,开通VIP直接复制
