<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="zh">
	<id>https://arolstar52-zhtest.hf.space/index.php?action=history&amp;feed=atom&amp;title=Nftables</id>
	<title>Nftables - 版本历史</title>
	<link rel="self" type="application/atom+xml" href="https://arolstar52-zhtest.hf.space/index.php?action=history&amp;feed=atom&amp;title=Nftables"/>
	<link rel="alternate" type="text/html" href="https://arolstar52-zhtest.hf.space/index.php?title=Nftables&amp;action=history"/>
	<updated>2026-07-10T15:26:05Z</updated>
	<subtitle>在这个wiki上该页的修订历史</subtitle>
	<generator>MediaWiki 1.43.9</generator>
	<entry>
		<id>https://arolstar52-zhtest.hf.space/index.php?title=Nftables&amp;diff=4340321&amp;oldid=prev</id>
		<title>imported&gt;Peterxy：​内容扩充</title>
		<link rel="alternate" type="text/html" href="https://arolstar52-zhtest.hf.space/index.php?title=Nftables&amp;diff=4340321&amp;oldid=prev"/>
		<updated>2025-08-28T00:49:50Z</updated>

		<summary type="html">&lt;p&gt;内容扩充&lt;/p&gt;
&lt;p&gt;&lt;b&gt;新页面&lt;/b&gt;&lt;/p&gt;&lt;div&gt;{{NoteTA&lt;br /&gt;
| G1 = it&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{Lowercase title}}&lt;br /&gt;
{{Infobox software&lt;br /&gt;
| title = nftables&lt;br /&gt;
| logo = &amp;lt;!-- [[File: ]] --&amp;gt;&lt;br /&gt;
| screenshot = &amp;lt;!-- [[File: ]] --&amp;gt;&lt;br /&gt;
| caption = &lt;br /&gt;
| collapsible = &lt;br /&gt;
| author = The Netfilter Project&lt;br /&gt;
| developer = The Netfilter Project&lt;br /&gt;
| released = &amp;lt;!-- {{Start date|YYYY|MM|DD}} --&amp;gt;&lt;br /&gt;
| programming language = [[C (programming language)|C]]&lt;br /&gt;
| operating system = [[Linux]]&lt;br /&gt;
| platform = [[Netfilter]]&lt;br /&gt;
| size = &lt;br /&gt;
| language = &lt;br /&gt;
| genre = &lt;br /&gt;
| license = [[GNU General Public License|GPLv2]]&lt;br /&gt;
| website = {{ubl&lt;br /&gt;
 | {{URL|https://netfilter.org/projects/nftables/}}&lt;br /&gt;
 | {{URL|https://wiki.nftables.org/wiki-nftables/index.php/Main_Page}}}}&lt;br /&gt;
| discontinued = &lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;nftables&amp;#039;&amp;#039;&amp;#039;是[[Linux内核]]的一个子系统，提供[[網路封包|网络数据包]]、报文、[[以太网帧格式|以太网帧]]的过滤和分类。该系统从2014年1月19日[[Linux内核]]版本3.13发布之后可用。 &amp;lt;ref name=&amp;quot;nftables313&amp;quot;&amp;gt;{{Cite web|date=2014-01-19|title=nftables, the successor of iptables|url=https://kernelnewbies.org/Linux_3.13#head-f628a9c41d7ec091f7a62db6a49b8da50659ec88|access-date=2016-03-04|website=Linux 3.13|publisher=kernelnewbies.org|archive-date=2024-05-18|archive-url=https://web.archive.org/web/20240518012016/https://kernelnewbies.org/Linux_3.13#head-f628a9c41d7ec091f7a62db6a49b8da50659ec88|dead-url=no}}&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
nftables取代了[[Netfilter]]的旧版用户空间工具[[iptables]]。nftables相对于iptables的优点是代码重复度少并且更容易扩展到新协议。nftables通过[[使用者空間|用户空间]]实用程序nft进行配置，代替之前的传统工具即[[iptables]]、 ip6tables、[[arptables]]和ebtables。&amp;lt;ref&amp;gt;{{Cite web |title=How We Used eBPF to Build Programmable Packet Filtering in Magic Firewall |url=https://blog.cloudflare.com/programmable-packet-filtering-with-magic-firewall}}&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
nftables 利用[[Netfilter]]基础设施的构建块，例如网络堆栈中的现有挂钩、连接跟踪系统、用户空间排队组件和日志记录子系统。&lt;br /&gt;
&lt;br /&gt;
== nft ==&lt;br /&gt;
&lt;br /&gt;
=== 命令行语法 ===&lt;br /&gt;
用于丢弃所有目标IP地址为1.2.3.4的数据包的一条命令：&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
nft add rule ip filter output ip daddr 1.2.3.4 drop&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
请注意，新语法与iptables的语法存在显著差异，在iptables中相同规则的写法如下：&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;console&amp;quot;&amp;gt;&lt;br /&gt;
iptables -A OUTPUT -d 1.2.3.4 -j DROP&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
新语法看似更冗长，但灵活性却大幅提升。nftables整合了字典、映射表和连接表等[https://wiki.nftables.org/wiki-nftables/index.php/Main_Page#Advanced_data_structures_for_performance_packet_classification 高级数据结构]，这些在iptables中并不存在。利用这些特性，可显著减少实现特定数据包过滤设计所需的链表和规则数量。&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;iptables-translate&amp;lt;/code&amp;gt;工具可用于将许多现有的iptables规则转换为等效的nftables规则。&amp;lt;ref&amp;gt;{{Cite web |title=Moving from iptables to nftables - nftables wiki |url=https://wiki.nftables.org/wiki-nftables/index.php/Moving_from_iptables_to_nftables |website=wiki.nftables.org |access-date=2025-08-28}}&amp;lt;/ref&amp;gt;&amp;lt;ref&amp;gt;{{Cite web |title=List of available translations via iptables-translate tool - nftables wiki |url=https://wiki.nftables.org/wiki-nftables/index.php/List_of_available_translations_via_iptables-translate_tool |website=wiki.nftables.org |access-date=2025-08-28}}&amp;lt;/ref&amp;gt;Debian 10（Buster）等[[Linux发行版]]采用nftables作为默认数据包过滤后端，并配合&amp;lt;code&amp;gt;iptables-translate&amp;lt;/code&amp;gt;使用。&amp;lt;ref&amp;gt;{{Cite web |title=nftables - Debian Wiki |url=https://wiki.debian.org/nftables |website=wiki.debian.org |access-date=2025-08-28}}&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==历史==&lt;br /&gt;
该项目首次由Netfilter核心团队的Patrick McHardy在2008年Netfilter研讨会上公开展示。&amp;lt;ref&amp;gt;{{cite web|url=https://workshop.netfilter.org/2008/User-day-program.html |title=User day program – NFWS2008 |publisher=workshop.netfilter.org |date=2008-10-03 |access-date=2014-02-22}}&amp;lt;/ref&amp;gt; 内核和用户空间实现的首个预览版于2009年3月发布。&amp;lt;ref&amp;gt;[https://marc.info/?l=linux-netdev&amp;amp;m=123735060618579 initial release announcement].&amp;lt;/ref&amp;gt; 尽管该工具被誉为“自2001年iptables问世以来Linux防火墙领域最重大的变革”，却很少有媒体获得关注。&amp;lt;ref name=&amp;quot;risky.biz&amp;quot;&amp;gt;{{cite news |last=Gray |first=Patrick |title=NEWS: Linux Gets New Firewall |url=https://risky.biz/news_and_opinion/patrick-gray/2009-03-26/news-linux-gets-new-firewall |publisher=Risky.biz |date=March 26, 2009}}&amp;lt;/ref&amp;gt; 知名黑客[[戈登·里昂]]表示，他“正期待该功能在主流[[Linux内核]]中的正式发布”。&amp;lt;ref name=&amp;quot;risky.biz&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
该项目始终处于alpha阶段，其官方网站于2009年被撤下。2010年3月，项目邮件列表中作者的邮件显示该项目仍在持续开发中，即将迎来beta版本的发布；&amp;lt;ref&amp;gt;{{cite web |url=https://www.spinics.net/lists/netfilter-devel/msg12409.html |title=Linux Netfilter Devel – Re: Current state of nftables |publisher=Spinics.net |access-date=2014-01-20}}&amp;lt;/ref&amp;gt;&amp;lt;ref&amp;gt;{{cite web|url=https://www.spinics.net/lists/netfilter-devel/msg15690.html |title=Linux Netfilter Devel – Re: Current state of nftables |publisher=Spinics.net |access-date=2014-01-20}}&amp;lt;/ref&amp;gt; 但后者从未正式发布。2012年10月，Pablo Neira Ayuso为iptables提出了一层兼容性接口，&amp;lt;ref&amp;gt;{{cite web |url=https://www.spinics.net/lists/netfilter-devel/msg23831.html |title=Linux Netfilter Devel – [RFC&amp;amp;#93; back on nf_tables (plus compatibility layer) |publisher=Spinics.net |access-date=2014-01-20}}&amp;lt;/ref&amp;gt;并宣布该项目可能被纳入主流内核。&lt;br /&gt;
&lt;br /&gt;
2013年10月16日，Pablo Neira Ayuso向Linux内核主线提交了nftables核心功能的pull请求。&amp;lt;ref&amp;gt;{{cite web |url=https://marc.info/?l=netfilter-devel&amp;amp;m=138176887917614&amp;amp;w=2 |title=[PATCH 00/17&amp;amp;#93; netfilter updates: nf_tables pull request |publisher=Marc.info |access-date=2014-01-20}}&amp;lt;/ref&amp;gt; 该功能于2014年1月19日随Linux内核3.13版本的发布合并至内核主线。&amp;lt;ref name=&amp;quot;nftables313&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==概览==&lt;br /&gt;
nftables内核引擎为Linux内核添加了一个简单的虚拟机，能够执行字节码来检查网络数据包并决定如何处理该数据包。该虚拟机实现的操作被刻意设计得基础化，它能够从数据包本身获取数据，查看关联的元数据（例如入站接口），并管理连接跟踪数据。基于这些数据，可使用算术运算符、位运算符和比较运算符进行决策。该虚拟机还支持操作数据集合（通常为IP地址），从而能用单次集合查询替代多次比较操作。&amp;lt;ref name=&amp;quot;lwn-nftables&amp;quot;&amp;gt;{{cite web&lt;br /&gt;
 | url        = https://lwn.net/Articles/564095/&lt;br /&gt;
 | title      = The return of nftables&lt;br /&gt;
 | date       = 2013-08-20&lt;br /&gt;
 | access-date = 2013-10-22&lt;br /&gt;
 | author     = Jonathan Corbet&lt;br /&gt;
 | publisher  = [[LWN.net]]}}&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
上述组织方式与iptables防火墙代码相悖，后者将协议识别功能深度嵌入逻辑层，导致代码不得不为IPv4、IPv6、ARP及以太网桥接四种场景分别复写——因防火墙引擎过于依赖特定协议，无法实现通用化应用。&amp;lt;ref name=&amp;quot;lwn-nftables&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
nftables相较于iptables的主要优势在于：简化Linux内核应用程序二进制接口（ABI）、减少代码重复、改进错误报告机制，以及实现更高效的过滤规则执行、存储与增量变更。传统使用的{{man|3|iptables|||inline}}、{{man|3|ip6tables|||inline}}、{{man|3|arptables|||inline}}和{{man|3|ebtables|||inline}}（分别用于IPv4、IPv6、ARP和以太网桥接）将被nft取代，作为统一实现方案，在内核虚拟机之上提供防火墙配置功能。&lt;br /&gt;
&lt;br /&gt;
nftables还提供了一个改进的用户空间API，允许在单次Netlink事务中原子性地替换一条或多条防火墙规则。这能加速大型规则集环境中的防火墙配置变更，同时有助于避免规则变更执行过程中的竞争条件。nftables还包含兼容性功能以简化从旧版防火墙的迁移，提供可转换iptables格式规则的命令行工具， &amp;lt;ref&amp;gt;{{cite web |last1=Neira Ayuso |first1=Pablo |title=nftables – nft command line tool |url=https://git.netfilter.org/nftables/commit/?id=b65a70131d0d38844be12235270eebaa9d2f5a4d |website=git.netfilter.org |access-date=24 January 2019}}&amp;lt;/ref&amp;gt;以及使用nftables后端的语法兼容iptables命令版本。&amp;lt;ref&amp;gt;{{cite web |last1=Arturo |first1=Ral |title=Netfilter Workshop 2018 Berlin summary |url=https://ral-arturo.org/2018/06/16/nfws2018.html |website=ral-arturo.org |access-date=24 January 2019}}&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==参考文献==&lt;br /&gt;
{{reflist}}&lt;br /&gt;
&lt;br /&gt;
==外部链接==&lt;br /&gt;
{{Portal|自由软件|Linux}}&lt;br /&gt;
* [https://lore.kernel.org/netdev/49C078B6.4020603@trash.net/ First release of nftables （2009-03-18）]&lt;br /&gt;
* [https://lore.kernel.org/netdev/20121025170632.GA4890@1984/ Pablo Neira Ayuso: &amp;amp;#91;RFC&amp;amp;#93; back on nf_tables (plus compatibility layer)]&lt;br /&gt;
* [https://home.regit.org/netfilter-en/nftables-quick-howto/ nftables quick HOWTO]&lt;br /&gt;
* nftables sections in [https://wiki.archlinux.org/index.php/Nftables ArchWiki] and [https://wiki.gentoo.org/wiki/Nftables Gentoo Wiki]&lt;br /&gt;
* {{cite web|title=nftables: a new packet filtering engine|last=Corbet|first=Jonathan|url=https://lwn.net/Articles/324989/|publisher=[[LWN.net]]|date=2009-03-24}}&lt;br /&gt;
* {{cite conference|title=nftables – a successor to iptables, ip6tables, ebtables and arptables|last=McHardy|first=Patrick|url=http://people.netfilter.org/kaber/nfws2008/nftables.odp|format=[[OpenDocument|ODP]]|conference=Netfilter Workshop 2008|conference-url=https://workshop.netfilter.org/|date=2008-09-30|archive-url=https://web.archive.org/web/20090322124123/https://people.netfilter.org/kaber/nfws2008/nftables.odp|archive-date=2009-03-22}}&lt;br /&gt;
* [https://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/commit/?id=5191f4d82daf22b7ee9446f83527d2795e225974 nft_compat extended to support ebtables extensions] (merged in Linux kernel 4.0)&lt;br /&gt;
* [https://www.mankier.com/8/nft Extended and enhanced manual for the nft command line tool]&lt;br /&gt;
&lt;br /&gt;
{{Firewall software}}&lt;br /&gt;
&lt;br /&gt;
[[Category:Linux内核功能]]&lt;br /&gt;
[[Category:Linux安全软件]]&lt;br /&gt;
[[Category:防火墙软件]]&lt;/div&gt;</summary>
		<author><name>imported&gt;Peterxy</name></author>
	</entry>
</feed>