<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:content="http://purl.org/rss/1.0/modules/content/">
  <channel>
    <title>Iptables on NOSAE</title>
    <link>https://nosae.top/tags/iptables/</link>
    <description>Recent content in Iptables on NOSAE</description>
    <image>
      <title>NOSAE</title>
      <url>https://nosae.top/images/papermod-cover.png</url>
      <link>https://nosae.top/images/papermod-cover.png</link>
    </image>
    <generator>Hugo -- 0.147.2</generator>
    <language>zh</language>
    <copyright>NOSAE</copyright>
    <lastBuildDate>Wed, 18 Feb 2026 18:20:14 +0800</lastBuildDate>
    <atom:link href="https://nosae.top/tags/iptables/index.xml" rel="self" type="application/rss+xml" />
    <item>
      <title>iptables入门</title>
      <link>https://nosae.top/posts/iptables%E5%85%A5%E9%97%A8/</link>
      <pubDate>Wed, 18 Feb 2026 18:20:14 +0800</pubDate>
      <guid>https://nosae.top/posts/iptables%E5%85%A5%E9%97%A8/</guid>
      <description>&lt;h2 id=&#34;基础概念&#34;&gt;基础概念&lt;/h2&gt;
&lt;p&gt;iptables 是 Linux 系统中一个防火墙管理工具，真正实现防火墙功能的是位于内核的 netfilter，我们配置了 iptables 规则后 Netfilter 通过这些规则来进行防火墙过滤等操作。防火墙工作在 OSI 中的第 4 层。它控制网络数据包的进出、转发和修改。&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;https://cdn.jsdelivr.net/gh/NOS-AE/assets@main/img/1479220-20180926145432701-774427524.png&#34; data-fancybox=&#34;gallery&#34; data-caption=&#34;img&#34;&gt;
  &lt;img alt=&#34;img&#34; loading=&#34;lazy&#34; src=&#34;https://cdn.jsdelivr.net/gh/NOS-AE/assets@main/img/1479220-20180926145432701-774427524.png&#34;&gt;
&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;从图中可以看到，内核在 IP 协议栈的关键位置注册了若干 &lt;strong&gt;hook 点&lt;/strong&gt;，每个 hook 都可以挂载规则链。数据包流经路径时，会依次经过这些 hook。&lt;/p&gt;
&lt;p&gt;要理解 iptables，最重要的是掌握其 &lt;strong&gt;“四表五链”&lt;/strong&gt; 的架构。&lt;/p&gt;
&lt;h3 id=&#34;五链&#34;&gt;五链&lt;/h3&gt;
&lt;p&gt;链是在某个 hook 点执行的一组规则，链决定了在数据包传输的哪个阶段触发规则。&lt;/p&gt;
&lt;p&gt;Linux 内核在 IP 协议栈关键位置定义了五个 hook，对应五个“内置链”：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;PREROUTING&lt;/strong&gt;：数据包刚到达网卡，还未进行路由决策。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;INPUT&lt;/strong&gt;：数据包目的地是本机。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;FORWARD&lt;/strong&gt;：数据包只是路过本机，转发到其他地方。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;OUTPUT&lt;/strong&gt;：本机产生的数据包向外发送。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;POSTROUTING&lt;/strong&gt;：数据包即将离开网卡。&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;四表&#34;&gt;四表&lt;/h3&gt;
&lt;p&gt;表决定了对数据包进行什么类型的操作。主要的表有四个：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;Filter&lt;/strong&gt;：负责放行或拦截，这是最常用的表。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;NAT&lt;/strong&gt;：负责地址转换。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Mangle&lt;/strong&gt;：负责修改数据包，如修改 TTL、打标记。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Raw&lt;/strong&gt;：负责配置豁免，用于跳过连接跟踪。&lt;/li&gt;
&lt;/ol&gt;
&lt;h3 id=&#34;链与表的关系&#34;&gt;链与表的关系&lt;/h3&gt;
&lt;p&gt;并不是每一个“表”都存在于每一个“链”中。它们的关系就像是一张矩阵图，每个交叉点代表一个具体的处理时机。&lt;/p&gt;
&lt;table&gt;
  &lt;thead&gt;
      &lt;tr&gt;
          &lt;th&gt;链 (Chains) \ 表 (Tables)&lt;/th&gt;
          &lt;th&gt;Raw&lt;/th&gt;
          &lt;th&gt;Mangle&lt;/th&gt;
          &lt;th&gt;Filter&lt;/th&gt;
          &lt;th&gt;NAT&lt;/th&gt;
      &lt;/tr&gt;
  &lt;/thead&gt;
  &lt;tbody&gt;
      &lt;tr&gt;
          &lt;td&gt;PREROUTING&lt;/td&gt;
          &lt;td&gt;✅&lt;/td&gt;
          &lt;td&gt;✅&lt;/td&gt;
          &lt;td&gt;&lt;/td&gt;
          &lt;td&gt;✅&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;INPUT&lt;/td&gt;
          &lt;td&gt;&lt;/td&gt;
          &lt;td&gt;✅&lt;/td&gt;
          &lt;td&gt;✅&lt;/td&gt;
          &lt;td&gt;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;FORWARD&lt;/td&gt;
          &lt;td&gt;&lt;/td&gt;
          &lt;td&gt;✅&lt;/td&gt;
          &lt;td&gt;✅&lt;/td&gt;
          &lt;td&gt;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;OUTPUT&lt;/td&gt;
          &lt;td&gt;✅&lt;/td&gt;
          &lt;td&gt;✅&lt;/td&gt;
          &lt;td&gt;✅&lt;/td&gt;
          &lt;td&gt;✅&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;POSTROUTING&lt;/td&gt;
          &lt;td&gt;&lt;/td&gt;
          &lt;td&gt;✅&lt;/td&gt;
          &lt;td&gt;&lt;/td&gt;
          &lt;td&gt;✅&lt;/td&gt;
      &lt;/tr&gt;
  &lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;当一个数据包经过你的机器时，它会按以下顺序穿越这些表和链：&lt;/p&gt;</description>
    </item>
  </channel>
</rss>
