<?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=Iptables</id>
	<title>Iptables - 版本历史</title>
	<link rel="self" type="application/atom+xml" href="https://arolstar52-zhtest.hf.space/index.php?action=history&amp;feed=atom&amp;title=Iptables"/>
	<link rel="alternate" type="text/html" href="https://arolstar52-zhtest.hf.space/index.php?title=Iptables&amp;action=history"/>
	<updated>2026-07-17T14:22:59Z</updated>
	<subtitle>在这个wiki上该页的修订历史</subtitle>
	<generator>MediaWiki 1.43.9</generator>
	<entry>
		<id>https://arolstar52-zhtest.hf.space/index.php?title=Iptables&amp;diff=474396&amp;oldid=prev</id>
		<title>imported&gt;AromaTake：​/* 其它防火牆的解決方案 */ 調整內部連結</title>
		<link rel="alternate" type="text/html" href="https://arolstar52-zhtest.hf.space/index.php?title=Iptables&amp;diff=474396&amp;oldid=prev"/>
		<updated>2026-03-31T14:09:56Z</updated>

		<summary type="html">&lt;p&gt;&lt;span class=&quot;autocomment&quot;&gt;其它防火牆的解決方案：​&lt;/span&gt; 調整內部連結&lt;/p&gt;
&lt;p&gt;&lt;b&gt;新页面&lt;/b&gt;&lt;/p&gt;&lt;div&gt;{{lowercase}}&lt;br /&gt;
{{noteTA&lt;br /&gt;
|G1=IT&lt;br /&gt;
|G2=FL&lt;br /&gt;
}}&lt;br /&gt;
{{Infobox_Software&lt;br /&gt;
 |name = iptables&lt;br /&gt;
 |logo =&lt;br /&gt;
 |screenshot = File:Iptablesfb.png&lt;br /&gt;
 |caption =&lt;br /&gt;
 |author = [[羅斯迪·魯塞爾]]（Rusty Russell）&lt;br /&gt;
 |developer = Netfilter核心團隊&lt;br /&gt;
 |released = 1998年&lt;br /&gt;
 |latest_release_version = 1.8.11&amp;lt;ref&amp;gt;{{Cite web |title=&amp;#039;[ANNOUNCE] iptables 1.8.11 release&amp;#039; - MARC |url=https://marc.info/?l=netfilter&amp;amp;m=173107775609538 |website=marc.info |access-date=2024-12-29 |archive-date=2025-01-25 |archive-url=https://web.archive.org/web/20250125044927/https://marc.info/?l=netfilter&amp;amp;m=173107775609538 |dead-url=no }}&amp;lt;/ref&amp;gt;&lt;br /&gt;
 |latest_release_date ={{release date and age|2024|11|08}}&lt;br /&gt;
 |programming language = [[C语言|C]]&lt;br /&gt;
 |operating_system = [[Linux]]&lt;br /&gt;
 |genre = 封包過濾&lt;br /&gt;
 |license = [[GNU通用公共许可证]]&lt;br /&gt;
 |website = {{URL|https://www.netfilter.org/}}&lt;br /&gt;
 |repo   = https://git.netfilter.org/iptables/&lt;br /&gt;
}}&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;iptables&amp;#039;&amp;#039;&amp;#039;是運行在[[使用者空間]]的應用軟體，通過控制[[Linux內核]][[netfilter]]模組，來管理網路封包的处理和转发。在大部分[[Linux发行版]]中，可以通过 [https://linux.die.net/man/8/iptables 手册页] {{Wayback|url=https://linux.die.net/man/8/iptables |date=20210125014539 }} 或 &amp;lt;code&amp;gt;man iptables&amp;lt;/code&amp;gt; 获取用户手册。通常iptables需要[[可載入核心模組|内核模块]]支持才能运行，此处相应的内核模块通常是Xtables。因此，iptables操作需要[[超级用户]]权限，其可执行文件通常位于 &amp;lt;code&amp;gt;/sbin/iptables&amp;lt;/code&amp;gt; 或 &amp;lt;code&amp;gt;/usr/sbin/iptables&amp;lt;/code&amp;gt; 。同时，需要说明的是，以上命令通常只用于处理 [[IPv4]] 数据包；而对于 [[IPv6]] 数据包，则使用类似的 &amp;#039;&amp;#039;&amp;#039;ip6tables&amp;#039;&amp;#039;&amp;#039; 命令。&amp;lt;ref&amp;gt;{{Cite web |url=https://www.linux.com/learn/intro-to-linux/2017/8/iptables-rules-ipv6 |title=How to Write iptables Rules for IPv6&lt;br /&gt;
|date=2017-08-03&lt;br /&gt;
|accessdate=2022-01-22&lt;br /&gt;
|author=Carla Schroder&lt;br /&gt;
|website=www.linux.com&lt;br /&gt;
|archive-date=2019-06-12 |archive-url=https://web.archive.org/web/20190612163038/https://www.linux.com/learn/intro-to-linux/2017/8/iptables-rules-ipv6 |dead-url=no }}&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
目前，iptables 支持内核2.4以上版本，旧版内核环境下则使用[[ipchains]]（于2.2版内核）或 [[ipwadm]]（于2.0版内核）完成类似的功能。2014年1月19日起發行的Linux内核3.13版则使用[[nftables]]取而代之，但仍然提供 iptables 命令做为兼容接口。&amp;lt;ref&amp;gt;{{Cite web |url=https://netfilter.org/projects/nftables/ |title=The netfilter.org &amp;quot;nftables&amp;quot; project &lt;br /&gt;
|website=netfilter.org&lt;br /&gt;
|accessdate=2022-01-22&lt;br /&gt;
|archive-date=2020-11-12 |archive-url=https://web.archive.org/web/20201112011519/https://netfilter.org/projects/nftables/ |dead-url=no }}&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== 概要 ==&lt;br /&gt;
[[File:Netfilter-packet-flow.svg|thumb|500px|网络数据包通过Netfilter时的工作流向]]&lt;br /&gt;
iptables、ip6tables等都使用Xtables框架。存在「表（tables）」、「链（chain）」和「规则（rules）」三个层面。&lt;br /&gt;
&lt;br /&gt;
每个「表」指的是不同类型的数据包处理流程，如&amp;lt;code&amp;gt;filter表&amp;lt;/code&amp;gt;表示进行数据包过滤，而&amp;lt;code&amp;gt;nat表&amp;lt;/code&amp;gt;针对连接进行地址转换操作。每个表中又可以存在多个「链」，系统按照预订的规则将数据包通过某个内建链，例如将从本机发出的数据通过&amp;lt;code&amp;gt;OUTPUT链&amp;lt;/code&amp;gt;。在「链」中可以存在若干「规则」，这些规则会被逐一进行匹配，如果匹配，可以执行相应的动作，如修改数据包，或者跳转。跳转可以直接接受该数据包或拒绝该数据包，也可以跳转到其他链继续进行匹配，或者从当前链返回调用者链。当链中所有规则都执行完仍然没有跳转时，将根据该链的默认策略（「policy」）执行对应动作；如果也没有默认动作，则是返回调用者链。&amp;lt;ref&amp;gt;{{Cite web |url=https://lesca.me/archives/iptables-tutorial-structures-configuratios-examples.html |title=iptables详细教程：基础、架构、清空规则、追加规则、应用实例&lt;br /&gt;
|date=2012-03-23&lt;br /&gt;
|accessdate=2022-01-22&lt;br /&gt;
|website=lesca.me&lt;br /&gt;
|archive-date=2020-11-27 |archive-url=https://web.archive.org/web/20201127163251/https://lesca.me/archives/iptables-tutorial-structures-configuratios-examples.html |dead-url=no }}&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== filter表 ===&lt;br /&gt;
&lt;br /&gt;
filter表是默认的表，如果不指明表则使用此表。其通常用于过滤数据包。其中的内建链包括：&lt;br /&gt;
* INPUT，输入链。发往本机的数据包通过此链。&lt;br /&gt;
* OUTPUT，输出链。从本机发出的数据包通过此链。&lt;br /&gt;
* FORWARD，转发链。本机转发的数据包通过此链。&lt;br /&gt;
&lt;br /&gt;
=== nat表 ===&lt;br /&gt;
&lt;br /&gt;
nat表如其名，用于[[网络地址转换|地址转换]]操作。其中的内建链包括：&lt;br /&gt;
* PREROUTING，路由前链，在处理路由规则前通过此链，通常用于目的地址转换（DNAT）。&lt;br /&gt;
* POSTROUTING，路由后链，完成路由规则后通过此链，通常用于源地址转换（SNAT）。&lt;br /&gt;
* OUTPUT，输出链，类似PREROUTING，但是处理本机发出的数据包。&lt;br /&gt;
&lt;br /&gt;
=== mangle表 ===&lt;br /&gt;
&lt;br /&gt;
mangle表用于处理数据包。其和nat表的主要区别在于，nat表侧重连接而mangle表侧重每一个数据包。&amp;lt;ref&amp;gt;{{Cite web |url=https://www.netfilter.org/documentation/HOWTO/NAT-HOWTO-6.html |title=Linux 2.4 NAT HOWTO: Saying How To Mangle The Packets&lt;br /&gt;
|website=netfilter.org&lt;br /&gt;
|accessdate=2022-01-22 |archive-date=2021-01-10 |archive-url=https://web.archive.org/web/20210110181428/https://netfilter.org/documentation/HOWTO/NAT-HOWTO-6.html |dead-url=no }}&amp;lt;/ref&amp;gt;其中内建链列表如下。&lt;br /&gt;
* PREROUTING&lt;br /&gt;
* OUTPUT&lt;br /&gt;
* FORWARD&lt;br /&gt;
* INPUT&lt;br /&gt;
* POSTROUTING&lt;br /&gt;
&lt;br /&gt;
=== raw表 ===&lt;br /&gt;
&lt;br /&gt;
raw表用于处理异常，有如下两个内建链：&lt;br /&gt;
* PREROUTING&lt;br /&gt;
* OUTPUT&lt;br /&gt;
&lt;br /&gt;
== 命令示例 ==&lt;br /&gt;
&lt;br /&gt;
=== 防火墙示例 ===&lt;br /&gt;
&lt;br /&gt;
一个典型的工作站的防火墙配置实例。超级用户（root）可以用&amp;lt;code&amp;gt;iptables -L&amp;lt;/code&amp;gt;指令顯示防火牆上的配置。完整的配置可以添加&amp;lt;code&amp;gt;-v&amp;lt;/code&amp;gt;或&amp;lt;code&amp;gt;-vv&amp;lt;/code&amp;gt;参数来显示更详细信息，或者使用&amp;lt;code&amp;gt;iptables-save -c&amp;lt;/code&amp;gt;导出生成当前表的命令。由于没有指明「表」，因此默认使用&amp;lt;code&amp;gt;filter表&amp;lt;/code&amp;gt;。&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
 # iptables -L&lt;br /&gt;
 Chain INPUT(policy DROP)&lt;br /&gt;
 target     prot opt source               destination&lt;br /&gt;
 ACCEPT     all—localhost.localdomain  localhost.localdomain&lt;br /&gt;
 ACCEPT     all—anywhere             anywhere            state RELATED,ESTABLISHED&lt;br /&gt;
 REJECT     all—anywhere             anywhere&lt;br /&gt;
 &lt;br /&gt;
 Chain FORWARD(policy DROP)&lt;br /&gt;
 target     prot opt source               destination&lt;br /&gt;
 &lt;br /&gt;
 Chain OUTPUT(policy ACCEPT)&lt;br /&gt;
 target     prot opt source               destination&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
以上配置允许本机连接所有外部的系统，拒绝（REJECT）或丢弃（DROP）任何发往本机的数据包，但是有以下例外（和&amp;lt;code&amp;gt;INPUT链&amp;lt;/code&amp;gt;逐一对应）：&lt;br /&gt;
* 来自[[Localhost|本地环回地址]]的连接。&lt;br /&gt;
* 已建立的连接（ESTABLISHED），如本机发起到远端的连接后远端的回应。&lt;br /&gt;
* 关联的连接（RELATED），如[[文件传输协议|FTP协议]]使用的额外端口。&amp;lt;ref&amp;gt;{{Cite web |url=https://major.io/2007/07/01/active-ftp-connections-through-iptables/ |title=Active FTP connections through iptables&lt;br /&gt;
|date=2007-07-01&lt;br /&gt;
|website=major.io&lt;br /&gt;
|author=Major Hayden&lt;br /&gt;
|accessdate=2022-01-22&lt;br /&gt;
|archive-date=2018-12-11 |archive-url=https://web.archive.org/web/20181211163517/https://major.io/2007/07/01/active-ftp-connections-through-iptables/ |dead-url=no }}&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
此时，来自外部的[[ping]]将没有回应：&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
 $  ping -c 1 10.0.0.1 &lt;br /&gt;
 PING 10.0.0.1 (10.0.0.1) 56(84) bytes of data. &lt;br /&gt;
 --- 10.0.0.1 ping statistics --- &lt;br /&gt;
 1 packets transmitted, 0 received, 100% packet loss, time 0ms&amp;lt;/pre&amp;gt;&lt;br /&gt;
外部尝试连接本机的[[HTTP]]端口（即[[传输控制协议|TCP]] 80端口）将被拒绝连接：&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
 $ telnet 10.0.0.1 80 &lt;br /&gt;
 Trying 10.0.0.1... &lt;br /&gt;
 telnet: connect to address 10.0.0.1: Connection refused&amp;lt;/pre&amp;gt;&lt;br /&gt;
但本机访问外部（OUTPUT）均正常，因为其链为空且默认策略为接受（ACCEPT）；且本机不转发（FORWARD）数据包，因为其默认策略为丢弃（DROP）。需要额外注意的是，这里仅展示了IPv4的情况，若同时使用IPv6则需要另行配置ip6tables。&lt;br /&gt;
&lt;br /&gt;
=== 端口重定向示例 ===&lt;br /&gt;
&lt;br /&gt;
iptables的重要功能之一是用于端口和/或地址的转换。如下示例展示了將預設[[HTTP]]埠的封包由TCP 80轉向8080埠。這樣，HTTP的[[守护进程]]（daemon）可以允許由一般用户權限啟動，而不需要對一般使用者無法將埠號綁在1024埠以下的限制的問題多加考慮。&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt; iptables -t nat -A PREROUTING -p tcp --dport 80 -j REDIRECT --to-port 8080 &amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
如果有多个端口的数据需要转发到一个端口，则可调取“multiport”（多端口）模块，如下规则会将ens0接口上UDP端口66到77、88到99的数据包转向UDP端口443。&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
iptables -t nat -A PREROUTING -i ens0 -p udp -m multiport --dports 66:77,88:99 -j REDIRECT --to-ports 443&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
注意：如果你在你的電腦上面運行了這個指令，它只會對連到你的機器上的外部的IP發生效果。從本地端發起的連線不會遵循nat表上PREROUTING鏈的設置。如果你想讓本地端也遵循規則，你可以另外鍵入下面的指令：&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt; iptables -t nat -A OUTPUT -o lo -p tcp --dport 80 -j REDIRECT --to-port 8080 &amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
這條規則會將lo介面上的封包輸出由80埠轉向到8080埠上面。&lt;br /&gt;
&lt;br /&gt;
=== [[网络地址转换]]示例 ===&lt;br /&gt;
&lt;br /&gt;
典型设置如办公室用小型局域网，由一台Linux主机作为[[路由器]]共享地址接入[[Internet]]。&lt;br /&gt;
&lt;br /&gt;
假设局域网接口为eth0，地址使用192.168.0.0/24；而Internet接口为eth1，使用的地址为198.51.100.3。&lt;br /&gt;
&lt;br /&gt;
在局域网用户访问Internet时，源地址需要被转换为198.51.100.3，则使用规则：&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt; iptables -t nat -I POSTROUTING -s 192.168.0.0/24 -o eth1 -j SNAT --to 198.51.100.3 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
若需要在局域网192.168.0.2上开启HTTP服务，则可以设置相应的DNAT服务，将访问外部TCP 80端口的数据包重定向：&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt; iptables -t nat -I PREROUTING -p tcp -d 198.51.100.3 --dport 80 -j DNAT --to 192.168.0.2 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
需要注意的是，转发操作需要在&amp;lt;code&amp;gt;filter表&amp;lt;/code&amp;gt;中&amp;lt;code&amp;gt;FORWARD链&amp;lt;/code&amp;gt;中允许，并且打开系统的转发功能。&amp;lt;ref&amp;gt;{{Cite web |url=https://access.redhat.com/documentation/en-US/Red_Hat_Enterprise_Linux/4/html/Security_Guide/s1-firewall-ipt-fwd.html |title=7.4. FORWARD and NAT Rules Red Hat Enterprise Linux 4 &lt;br /&gt;
|website=access.redhat.com&lt;br /&gt;
|accessdate=2022-01-22 |archive-date=2019-07-19 |archive-url=https://web.archive.org/web/20190719132608/https://access.redhat.com/documentation/en-US/Red_Hat_Enterprise_Linux/4/html/Security_Guide/s1-firewall-ipt-fwd.html |dead-url=no }}&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== 其他控制界面 ==&lt;br /&gt;
&lt;br /&gt;
=== 前端控制介面及命令 ===&lt;br /&gt;
&lt;br /&gt;
有很多第三方软件可以帮助设定iptables规则。前端介面像是[[Ncurses]]或圖型介面可以讓使用者用點選的方式產生許多簡單的規則。命令稿通常是參照[[Unix shell]]產生出來的（不過當然也有可能會使用其它種類型的命令稿），它們有的會用一些預先定義好的規則或簡單的範本來调用iptables或&amp;lt;code&amp;gt; iptables-restore &amp;lt;/code&amp;gt;执行。一些Linux發行版公司會在它們的發行版裡面包含这些方式，當然像這樣的方式能產生的變化就相當有限，不過也因為產生規則的方式很簡單，所以甚至可以利用php網頁撰寫的方式來產生這些規則。&lt;br /&gt;
&lt;br /&gt;
此类前端装置如生成器（generator）或脚本（script）往往会被其模板限制，模板仅仅能使用用户定义规则并替换指定的部分，如只能替换端口或IP地址，同时，生成的规则往往难以达到最佳状态，需要进行进一步优化，如此会增加开发和运维的成本。如果用户想要了解iptables并且优化自己的规则，则需要自己创建规则。&lt;br /&gt;
&lt;br /&gt;
=== 前端的設定 ===&lt;br /&gt;
&lt;br /&gt;
*[https://web.archive.org/web/20081210035025/http://www.fwbuilder.org/ Firewall Builder] —圖形前端配合規則/字集產生器、及自動規則集（automated ruleset）載入。&lt;br /&gt;
*[[Shorewall]]，以本文為基礎的規則產生器。&lt;br /&gt;
&lt;br /&gt;
=== 其它的工具 ===&lt;br /&gt;
*Fwsnort - iptables侵入測試以字串比對法及是諾特規則（Snort Rule）來進行[http://www.cipherdyne.org/fwsnort/ FWSnort] {{Wayback|url=http://www.cipherdyne.org/fwsnort/ |date=20210120141335 }}，Translates a Snort IDS ruleset into an IPTables ruleset.&lt;br /&gt;
&lt;br /&gt;
=== Iptables/Netfilter圖表 ===&lt;br /&gt;
為了較好地了解一個封包穿越内核層的X表（Xtables）之表/鏈（table/chain），你可以參考下列圖表的使用：&lt;br /&gt;
* Netfilter封包流；勾/表（hook/table）秩列[http://jengelh.medozas.de/images/nf-packet-flow.png] {{Wayback|url=http://jengelh.medozas.de/images/nf-packet-flow.png |date=20120211143959 }}&lt;br /&gt;
&lt;br /&gt;
== 參照 ==&lt;br /&gt;
{{Portal|Free software|Free Software Portal Logo.svg}}&lt;br /&gt;
&lt;br /&gt;
*[[ipchains]]為iptables的前一代&lt;br /&gt;
*[[Netlink]]為Netfilter使用之API&lt;br /&gt;
*[[NuFW]]延伸到Netfilter之認證防火墻&lt;br /&gt;
*[[nftables]]为iptables的后继者&lt;br /&gt;
*[[firewalld]]&lt;br /&gt;
=== 其它防火牆的解決方案 ===&lt;br /&gt;
*[[PF防火墙]]&lt;br /&gt;
*[[ipfirewall]]&lt;br /&gt;
*[[ipfilter]]&lt;br /&gt;
&lt;br /&gt;
== 外部連結 ==&lt;br /&gt;
&lt;br /&gt;
* [http://www.netfilter.org/ The netfilter/iptables project Web page]{{Wayback|url=http://www.netfilter.org/ |date=20120706074806 }} {{en}}&lt;br /&gt;
* [http://freshmeat.net/projects/iptables/ Freshmeat project page for the iptables package] {{Wayback|url=http://freshmeat.net/projects/iptables/ |date=20111028220035 }} {{en}}&lt;br /&gt;
* [http://www.netfilter.org/documentation/index.html The netfilter/iptables documentation page] {{Wayback|url=http://www.netfilter.org/documentation/index.html |date=20210201075807 }} (outdated) {{en}}&lt;br /&gt;
&lt;br /&gt;
==参考文献==&lt;br /&gt;
{{reflist}}&lt;br /&gt;
&lt;br /&gt;
{{Authority control}}&lt;br /&gt;
&lt;br /&gt;
[[Category:Linux内核功能]]&lt;br /&gt;
[[Category:防火墙软件]]&lt;br /&gt;
[[Category:Linux安全软件]] &lt;br /&gt;
[[Category:自由安全软件]]&lt;br /&gt;
[[Category:命令行软件]]&lt;/div&gt;</summary>
		<author><name>imported&gt;AromaTake</name></author>
	</entry>
</feed>