如果你没有生活在上个世纪,并且是云计算或相关领域的一名搬砖者,那你应该听说最近 CentOS 8 官方正式版已经发布了,CentOS 完全遵守 Red Hat 的再发行政策,并且致力与上游产品在功能上完全兼容。CentOS 8 主要改动和 RedHat Enterprise Linux 8 是一致的,基于 Fedora 28 和内核版本 4.18,其中网络方面的主要改动是用 nftables 框架替代 iptables 框架作为默认的网络包过滤工具。如果你还没有听说过 nftables,现在是时候学习一下了。
nftables 是一个 netfilter 项目,旨在替换现有的 {ip,ip6,arp,eb}tables 框架,为 {ip,ip6}tables 提供一个新的包过滤框架、一个新的用户空间实用程序(nft)和一个兼容层。它使用现有的钩子、链接跟踪系统、用户空间排队组件和 netfilter 日志子系统。
nftables 主要由三个组件组成:内核实现、libnl netlink 通信和 nftables 用户空间。 其中内核提供了一个 netlink 配置接口以及运行时规则集评估,libnl 包含了与内核通信的基本函数,用户空间可以通过 nft 和用户进行交互。
本文主要介绍用户空间命令行工具 nft 的用法。
nftables VS iptables
nftables 和 iptables 一样,由表(table)、链(chain)和规则(rule)组成,其中表包含链,链包含规则,规则是真正的 action。与 iptables 相比,nftables 主要有以下几个变化:
iptables规则的布局是基于连续的大块内存的,即数组式布局;而nftables的规则采用链式布局。其实就是数组和链表的区别,好像 Kubernetes 用户对此应该很兴奋?iptables大部分工作在内核态完成,如果要添加新功能,只能重新编译内核;而nftables的大部分工作是在用户态完成的,添加新功能很 easy,不需要改内核。iptables有内置的链,即使你只需要一条链,其他的链也会跟着注册;而nftables不存在内置的链,你可以按需注册。由于iptables内置了一个数据包计数器,所以即使这些内置的链是空的,也会带来性能损耗。简化了
IPv4/IPv6双栈管理
Read full article from CentOS 8 都发布了,你还不会用 nftables?
No comments:
Post a Comment