<?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>Iproute2 on 张有志的博客</title>
    <link>https://bianle.me/tags/iproute2/</link>
    <description>Recent content in Iproute2 on 张有志的博客</description>
    <generator>Hugo</generator>
    <language>en-us</language>
    <lastBuildDate>Wed, 08 Apr 2026 08:30:00 +0800</lastBuildDate>
    <atom:link href="https://bianle.me/tags/iproute2/index.xml" rel="self" type="application/rss+xml" />
    <item>
      <title>ss 命令入门：套接字统计与常用排查案例</title>
      <link>https://bianle.me/posts/465/</link>
      <pubDate>Wed, 08 Apr 2026 08:30:00 +0800</pubDate>
      <guid>https://bianle.me/posts/465/</guid>
      <description>&lt;p&gt;&lt;code&gt;ss&lt;/code&gt;（socket statistics）是 Linux 上查看套接字状态的常用工具，属于 &lt;strong&gt;iproute2&lt;/strong&gt; 套件（与 &lt;code&gt;ip&lt;/code&gt; 命令同源）。&lt;br&gt;
在多数发行版里，它已经是替代 &lt;code&gt;netstat&lt;/code&gt; 的推荐方式：&lt;strong&gt;直接从内核取信息，列表大时通常更快&lt;/strong&gt;，参数表达也更贴近现代 TCP 状态机。&lt;/p&gt;
&lt;p&gt;日常排障里，&lt;code&gt;ss&lt;/code&gt; 最常用来回答三件事：&lt;strong&gt;谁在监听、连向哪里、当前连接处于什么状态&lt;/strong&gt;。&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&#34;一ss-能做什么&#34;&gt;一、ss 能做什么&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;列出 TCP/UDP/UNIX 等套接字的监听与已建立连接&lt;/li&gt;
&lt;li&gt;按端口、地址、状态过滤输出&lt;/li&gt;
&lt;li&gt;结合 &lt;code&gt;-p&lt;/code&gt; 查看关联进程（需足够权限）&lt;/li&gt;
&lt;li&gt;配合脚本做轻量监控或巡检&lt;/li&gt;
&lt;/ul&gt;
&lt;hr&gt;
&lt;h2 id=&#34;二常见参数速查&#34;&gt;二、常见参数速查&lt;/h2&gt;
&lt;table&gt;
  &lt;thead&gt;
      &lt;tr&gt;
          &lt;th&gt;选项&lt;/th&gt;
          &lt;th&gt;含义&lt;/th&gt;
      &lt;/tr&gt;
  &lt;/thead&gt;
  &lt;tbody&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;code&gt;-t&lt;/code&gt;&lt;/td&gt;
          &lt;td&gt;仅 TCP&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;code&gt;-u&lt;/code&gt;&lt;/td&gt;
          &lt;td&gt;仅 UDP&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;code&gt;-l&lt;/code&gt;&lt;/td&gt;
          &lt;td&gt;仅监听（listening）&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;code&gt;-a&lt;/code&gt;&lt;/td&gt;
          &lt;td&gt;所有状态（含 ESTAB、TIME-WAIT 等）&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;code&gt;-n&lt;/code&gt;&lt;/td&gt;
          &lt;td&gt;数字形式显示地址与端口（不做 DNS 反解）&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;code&gt;-p&lt;/code&gt;&lt;/td&gt;
          &lt;td&gt;显示进程信息（PID/程序名）&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;code&gt;-4&lt;/code&gt; / &lt;code&gt;-6&lt;/code&gt;&lt;/td&gt;
          &lt;td&gt;仅 IPv4 / 仅 IPv6&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;code&gt;-s&lt;/code&gt;&lt;/td&gt;
          &lt;td&gt;打印套接字统计摘要&lt;/td&gt;
      &lt;/tr&gt;
  &lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;状态过滤可用 &lt;code&gt;state&lt;/code&gt; 关键字，例如：&lt;code&gt;ss state established&lt;/code&gt;。&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&#34;三常用案例&#34;&gt;三、常用案例&lt;/h2&gt;
&lt;h3 id=&#34;1一眼看完本机监听端口最常用&#34;&gt;1）一眼看完本机监听端口（最常用）&lt;/h3&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;ss -tlnp
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;&lt;code&gt;-t&lt;/code&gt; TCP，&lt;code&gt;-l&lt;/code&gt; 监听，&lt;code&gt;-n&lt;/code&gt; 避免反查主机名拖慢输出，&lt;code&gt;-p&lt;/code&gt; 显示进程（无 root 时可能看不到其他用户的进程）。&lt;/p&gt;</description>
      <content:encoded><![CDATA[<p><code>ss</code>（socket statistics）是 Linux 上查看套接字状态的常用工具，属于 <strong>iproute2</strong> 套件（与 <code>ip</code> 命令同源）。<br>
在多数发行版里，它已经是替代 <code>netstat</code> 的推荐方式：<strong>直接从内核取信息，列表大时通常更快</strong>，参数表达也更贴近现代 TCP 状态机。</p>
<p>日常排障里，<code>ss</code> 最常用来回答三件事：<strong>谁在监听、连向哪里、当前连接处于什么状态</strong>。</p>
<hr>
<h2 id="一ss-能做什么">一、ss 能做什么</h2>
<ul>
<li>列出 TCP/UDP/UNIX 等套接字的监听与已建立连接</li>
<li>按端口、地址、状态过滤输出</li>
<li>结合 <code>-p</code> 查看关联进程（需足够权限）</li>
<li>配合脚本做轻量监控或巡检</li>
</ul>
<hr>
<h2 id="二常见参数速查">二、常见参数速查</h2>
<table>
  <thead>
      <tr>
          <th>选项</th>
          <th>含义</th>
      </tr>
  </thead>
  <tbody>
      <tr>
          <td><code>-t</code></td>
          <td>仅 TCP</td>
      </tr>
      <tr>
          <td><code>-u</code></td>
          <td>仅 UDP</td>
      </tr>
      <tr>
          <td><code>-l</code></td>
          <td>仅监听（listening）</td>
      </tr>
      <tr>
          <td><code>-a</code></td>
          <td>所有状态（含 ESTAB、TIME-WAIT 等）</td>
      </tr>
      <tr>
          <td><code>-n</code></td>
          <td>数字形式显示地址与端口（不做 DNS 反解）</td>
      </tr>
      <tr>
          <td><code>-p</code></td>
          <td>显示进程信息（PID/程序名）</td>
      </tr>
      <tr>
          <td><code>-4</code> / <code>-6</code></td>
          <td>仅 IPv4 / 仅 IPv6</td>
      </tr>
      <tr>
          <td><code>-s</code></td>
          <td>打印套接字统计摘要</td>
      </tr>
  </tbody>
</table>
<p>状态过滤可用 <code>state</code> 关键字，例如：<code>ss state established</code>。</p>
<hr>
<h2 id="三常用案例">三、常用案例</h2>
<h3 id="1一眼看完本机监听端口最常用">1）一眼看完本机监听端口（最常用）</h3>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-bash" data-lang="bash"><span style="display:flex;"><span>ss -tlnp
</span></span></code></pre></div><p><code>-t</code> TCP，<code>-l</code> 监听，<code>-n</code> 避免反查主机名拖慢输出，<code>-p</code> 显示进程（无 root 时可能看不到其他用户的进程）。</p>
<p>典型输出片段含义：</p>
<ul>
<li><code>Local Address:Port</code>：本机绑定地址与端口（<code>*</code> 或 <code>0.0.0.0</code> 表示监听所有接口）</li>
<li><code>Peer Address:Port</code>：监听套接字下多为 <code>*:*</code> 或 <code>0.0.0.0:*</code></li>
</ul>
<h3 id="2同时看-tcp-与-udp-监听">2）同时看 TCP 与 UDP 监听</h3>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-bash" data-lang="bash"><span style="display:flex;"><span>ss -tulnp
</span></span></code></pre></div><p>适合快速确认 <strong>Web、DNS、代理</strong> 等常见服务是否在预期端口上监听。</p>
<h3 id="3查某个端口是否被占用例如-8080">3）查某个端口是否被占用（例如 8080）</h3>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-bash" data-lang="bash"><span style="display:flex;"><span>ss -tlnp <span style="color:#e6db74">&#39;sport = :8080&#39;</span>
</span></span></code></pre></div><p>也可配合 <code>grep</code>：</p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-bash" data-lang="bash"><span style="display:flex;"><span>ss -tlnp | grep <span style="color:#e6db74">&#39;:8080&#39;</span>
</span></span></code></pre></div><p>前者由 <code>ss</code> 自己过滤，套接字极多时更省事。</p>
<h3 id="4查看当前已建立的-tcp-连接">4）查看当前已建立的 TCP 连接</h3>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-bash" data-lang="bash"><span style="display:flex;"><span>ss -tn state established
</span></span></code></pre></div><p>排查 <strong>连接数暴涨、异常外连</strong> 时，可先跑这条看量级与对端地址。</p>
<h3 id="5按对端-ip-过滤例如只看连到-19216811-的-tcp">5）按对端 IP 过滤（例如只看连到 192.168.1.1 的 TCP）</h3>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-bash" data-lang="bash"><span style="display:flex;"><span>ss -tn dst 192.168.1.1
</span></span></code></pre></div><h3 id="6查看-unix-域套接字本机进程间通信">6）查看 UNIX 域套接字（本机进程间通信）</h3>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-bash" data-lang="bash"><span style="display:flex;"><span>ss -xlp
</span></span></code></pre></div><p><code>-x</code> UNIX socket，<code>-l</code> 监听，<code>-p</code> 进程。排查 <strong>数据库本地 socket、容器/应用 IPC</strong> 时有用。</p>
<h3 id="7套接字总体统计快速健康检查">7）套接字总体统计（快速健康检查）</h3>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-bash" data-lang="bash"><span style="display:flex;"><span>ss -s
</span></span></code></pre></div><p>输出里会看到 TCP/UDP 等各协议的 <strong>总数、各状态计数</strong>，适合写进简单巡检脚本。</p>
<hr>
<h2 id="四与-netstat-的对应关系便于迁移">四、与 netstat 的对应关系（便于迁移）</h2>
<p>习惯 <code>netstat</code> 的同学可以大致对照：</p>
<ul>
<li><code>netstat -tlnp</code> → <code>ss -tlnp</code></li>
<li><code>netstat -an</code> → <code>ss -tan</code>（或 <code>ss -uan</code> 等按协议拆开）</li>
</ul>
<p><code>ss</code> 的过滤语法更丰富（如 <code>sport</code>、<code>dport</code>、<code>dst</code>），复杂场景下往往一条命令就够。</p>
<hr>
<h2 id="五权限与注意事项">五、权限与注意事项</h2>
<ul>
<li><strong><code>-p</code> 显示其他用户的进程</strong> 通常需要 root（或 <code>CAP_NET_ADMIN</code> 等能力，视内核与配置而定）。</li>
<li>生产环境批量执行时，建议默认加 <strong><code>-n</code></strong>，避免 DNS 反解导致卡顿或泄露查询行为。</li>
<li>若系统提示没有 <code>ss</code>，请安装 <strong>iproute2</strong>（包名在 Debian/Ubuntu 多为 <code>iproute2</code>，在 RHEL 系多为 <code>iproute</code>）。</li>
</ul>
<hr>
<h2 id="六小结">六、小结</h2>
<p><code>ss</code> 是现代 Linux 上查看套接字的首选工具：<strong>速度快、过滤灵活、与 <code>ip</code> 工具链一致</strong>。<br>
记住 <strong><code>ss -tlnp</code> / <code>ss -tulnp</code> / <code>ss -tn state established</code> / <code>ss -s</code></strong> 四条，多数日常排障已经足够；需要精细条件时再查 <code>man ss</code> 里的 filter 语法即可。</p>
]]></content:encoded>
    </item>
  </channel>
</rss>
