<?xml version="1.0" encoding="utf-8"?>
<feed xmlns="http://www.w3.org/2005/Atom">
  <author>
    <name>By Kebyn</name>
  </author>
  <generator uri="https://hexo.io/">Hexo</generator>
  <id>https://kebyn.cc/</id>
  <link href="https://kebyn.cc/" rel="alternate"/>
  <link href="https://kebyn.cc/atom.xml" rel="self"/>
  <rights>All rights reserved 2026, By Kebyn</rights>
  <subtitle>碎碎念</subtitle>
  <title>觅回首</title>
  <updated>2026-11-15T11:03:55.000Z</updated>
  <entry>
    <author>
      <name>By Kebyn</name>
    </author>
    <category term="Network" scheme="https://kebyn.cc/categories/Network/"/>
    <category term="unbound" scheme="https://kebyn.cc/tags/unbound/"/>
    <category term="bind9" scheme="https://kebyn.cc/tags/bind9/"/>
    <category term="dns" scheme="https://kebyn.cc/tags/dns/"/>
    <category term="dot" scheme="https://kebyn.cc/tags/dot/"/>
    <category term="doh" scheme="https://kebyn.cc/tags/doh/"/>
    <category term="rhel" scheme="https://kebyn.cc/tags/rhel/"/>
    <category term="acme-sh" scheme="https://kebyn.cc/tags/acme-sh/"/>
    <content>
      <![CDATA[<p>Unbound 和 BIND9 都能做递归解析，也都支持 DNSSEC 验证。真正影响部署的是默认行为、配置方式、加密 DNS 能力和发行版打包差异。本文把递归配置、IPv6&#x2F;DoT&#x2F;DoH、<code>http-notls-downstream</code>、RHEL 8&#x2F;9&#x2F;10 的 DoH 支持，以及 acme.sh 证书自动化放在一起，方便按场景选型。</p><span id="more"></span><h2 id="结论与能力速览"><a href="#结论与能力速览" class="headerlink" title="结论与能力速览"></a>结论与能力速览</h2><ul><li><strong>Unbound</strong> 是专用递归解析器，安装后默认开启递归，但默认只允许本机使用。</li><li><strong>BIND9</strong> 的 <code>named</code> 同时承担权威和递归两种角色，需要显式开启 <code>recursion</code>、指定 <code>allow-recursion</code>，并提供根提示或转发上游。</li><li>让递归真正可用，需要同时满足三件事：开启递归、提供根提示或转发器、用 ACL 限定允许使用递归的客户端。</li><li>DoT 两个方向都支持：Unbound 可以作为 DoT 服务端，也可以作为 DoT 上游客户端。</li><li>DoH 只支持服务端。Unbound 没有 DoH 上游客户端功能。</li><li>RHEL 9&#x2F;10 的官方 <code>unbound</code> 包带 DoH；RHEL 8 的包没有带 nghttp2，需要重编 SRPM、容器或前置代理。</li></ul><h2 id="递归解析的工作过程"><a href="#递归解析的工作过程" class="headerlink" title="递归解析的工作过程"></a>递归解析的工作过程</h2><ol><li>客户端发送 RD&#x3D;1（Recursion Desired）的查询。</li><li>解析器先查缓存，命中则直接返回。</li><li>未命中时，从根提示（<code>.</code> 的 NS 记录）开始，逐级向根、顶级域、权威服务器发送迭代查询，跟随 referral 和 glue 记录。</li><li>得到答案后按 TTL 缓存并返回，响应中 <code>RA=1</code> 表示服务器支持递归。</li><li>配置了转发器时，查询交给上游递归服务器完成迭代；<code>forward-first</code> 允许上游失败后回退到本地迭代，<code>forward-only</code> 则只走转发。</li></ol><p>DNSSEC 验证也在这条链上完成（RRSIG&#x2F;DS 信任链），所以递归解析器通常同时是验证器。</p><h2 id="Unbound-递归配置"><a href="#Unbound-递归配置" class="headerlink" title="Unbound 递归配置"></a>Unbound 递归配置</h2><p>Unbound 的权威服务能力限于 <code>local-zone</code> &#x2F; <code>local-data</code> 提供的本地记录，主要角色是递归解析器。</p><p><code>/etc/unbound/unbound.conf</code>：</p><figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br><span class="line">18</span><br><span class="line">19</span><br><span class="line">20</span><br><span class="line">21</span><br><span class="line">22</span><br><span class="line">23</span><br><span class="line">24</span><br><span class="line">25</span><br><span class="line">26</span><br><span class="line">27</span><br><span class="line">28</span><br><span class="line">29</span><br><span class="line">30</span><br><span class="line">31</span><br><span class="line">32</span><br><span class="line">33</span><br><span class="line">34</span><br><span class="line">35</span><br></pre></td><td class="code"><pre><span class="line">server:</span><br><span class="line">    interface: 0.0.0.0</span><br><span class="line">    interface: ::0</span><br><span class="line">    port: 53</span><br><span class="line">    do-ip4: yes</span><br><span class="line">    do-ip6: yes</span><br><span class="line">    do-udp: yes</span><br><span class="line">    do-tcp: yes</span><br><span class="line"></span><br><span class="line">    # 谁可以使用递归；默认仅 localhost</span><br><span class="line">    access-control: 127.0.0.0/8 allow</span><br><span class="line">    access-control: ::1 allow</span><br><span class="line">    access-control: 192.168.0.0/16 allow</span><br><span class="line">    access-control: 10.0.0.0/8 allow</span><br><span class="line"></span><br><span class="line">    # 完整迭代所需的根提示，也可使用内置根提示</span><br><span class="line">    root-hints: &quot;/var/lib/unbound/root.hints&quot;</span><br><span class="line"></span><br><span class="line">    # DNSSEC 信任锚，支持 RFC 5011 自动滚动</span><br><span class="line">    auto-trust-anchor-file: &quot;/var/lib/unbound/root.key&quot;</span><br><span class="line"></span><br><span class="line">    qname-minimisation: yes</span><br><span class="line">    harden-dnssec-stripped: yes</span><br><span class="line">    harden-referral-path: yes</span><br><span class="line">    prefetch: yes</span><br><span class="line"></span><br><span class="line">    num-threads: 4</span><br><span class="line">    msg-cache-size: 64m</span><br><span class="line">    rrset-cache-size: 128m</span><br><span class="line">    cache-min-ttl: 60</span><br><span class="line">    cache-max-ttl: 86400</span><br><span class="line"></span><br><span class="line">    hide-identity: yes</span><br><span class="line">    hide-version: yes</span><br><span class="line">    deny-any: yes</span><br></pre></td></tr></table></figure><p>改为转发模式，由上游负责迭代：</p><figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br></pre></td><td class="code"><pre><span class="line">forward-zone:</span><br><span class="line">    name: &quot;.&quot;</span><br><span class="line">    forward-addr: 8.8.8.8</span><br><span class="line">    forward-addr: 1.1.1.1</span><br><span class="line">    # forward-first: yes   # 上游不可用时回退到本地迭代</span><br></pre></td></tr></table></figure><p>验证：</p><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br></pre></td><td class="code"><pre><span class="line">unbound-checkconf</span><br><span class="line">unbound-control status</span><br><span class="line">dig @127.0.0.1 example.com A</span><br><span class="line">dig @127.0.0.1 example.com A +norecurse</span><br></pre></td></tr></table></figure><p>要点：</p><ul><li><code>access-control</code> 默认允许 <code>127.0.0.0/8</code> 和 <code>::1</code>，其他来源被拒绝；服务局域网必须显式添加 <code>allow</code>。</li><li>RD&#x3D;0 的非递归查询默认会被拒绝；需要 cache snooping 时使用 <code>access-control: &lt;网段&gt; allow_snoop</code>。</li><li>把 53 端口暴露到公网会成为开放解析器和放大攻击跳板，需要防火墙限制并考虑启用 <code>ratelimit</code>。</li><li><code>root.key</code> 由 <code>unbound-anchor</code> 初始化，需要保证 unbound 用户对该文件有写权限以完成自动滚动。</li><li>与 systemd-resolved 的 <code>127.0.0.53</code> stub 冲突时，修改监听地址或关闭 stub listener。</li></ul><h2 id="BIND9-递归配置"><a href="#BIND9-递归配置" class="headerlink" title="BIND9 递归配置"></a>BIND9 递归配置</h2><p>BIND9 用一份配置即可同时提供权威 zone 和递归解析：</p><figure class="highlight c"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br><span class="line">18</span><br><span class="line">19</span><br><span class="line">20</span><br><span class="line">21</span><br><span class="line">22</span><br><span class="line">23</span><br><span class="line">24</span><br><span class="line">25</span><br><span class="line">26</span><br><span class="line">27</span><br><span class="line">28</span><br></pre></td><td class="code"><pre><span class="line">acl trusted &#123;</span><br><span class="line">    <span class="number">127.0</span><span class="number">.0</span><span class="number">.0</span>/<span class="number">8</span>;</span><br><span class="line">    ::<span class="number">1</span>;</span><br><span class="line">    <span class="number">192.168</span><span class="number">.0</span><span class="number">.0</span>/<span class="number">16</span>;</span><br><span class="line">    <span class="number">10.0</span><span class="number">.0</span><span class="number">.0</span>/<span class="number">8</span>;</span><br><span class="line">&#125;;</span><br><span class="line"></span><br><span class="line">options &#123;</span><br><span class="line">    directory <span class="string">&quot;/var/cache/bind&quot;</span>;</span><br><span class="line"></span><br><span class="line">    recursion yes;</span><br><span class="line">    allow-recursion &#123; trusted; &#125;;      # 递归 ACL，建议显式设置</span><br><span class="line">    allow-query &#123; trusted; &#125;;          # 谁可以查询本机</span><br><span class="line">    allow-query-cache &#123; trusted; &#125;;    # 谁可以使用缓存</span><br><span class="line"></span><br><span class="line">    listen-on &#123; any; &#125;;</span><br><span class="line">    listen-on-v6 &#123; any; &#125;;</span><br><span class="line"></span><br><span class="line">    # 本地迭代模式：保留根提示 zone，不配置 forwarders</span><br><span class="line">    # 转发模式：启用 forwarders，并按需加 forward only</span><br><span class="line">    <span class="comment">// forwarders &#123; 8.8.8.8; 1.1.1.1; &#125;;</span></span><br><span class="line">    <span class="comment">// forward only;</span></span><br><span class="line"></span><br><span class="line">    dnssec-validation <span class="keyword">auto</span>;</span><br><span class="line">    minimal-responses yes;</span><br><span class="line">    qname-minimization strict;</span><br><span class="line">    max-cache-size <span class="number">256</span>m;</span><br><span class="line">&#125;;</span><br></pre></td></tr></table></figure><p>根提示 zone 在本地迭代时必须存在，发行版默认配置通常已包含：</p><figure class="highlight c"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br></pre></td><td class="code"><pre><span class="line">zone <span class="string">&quot;.&quot;</span> &#123;</span><br><span class="line">    type hint;</span><br><span class="line">    file <span class="string">&quot;/usr/share/dns/root.hints&quot;</span>;   # RHEL 系常见路径为 /var/named/named.ca</span><br><span class="line">&#125;;</span><br></pre></td></tr></table></figure><p>验证：</p><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br></pre></td><td class="code"><pre><span class="line">named-checkconf -z</span><br><span class="line">rndc status</span><br><span class="line">dig @127.0.0.1 example.com A</span><br><span class="line">dig @127.0.0.1 example.com A +norecurse</span><br><span class="line">rndc recursing        <span class="comment"># 查看当前正在进行的递归查询</span></span><br><span class="line">rndc flush            <span class="comment"># 清空缓存</span></span><br></pre></td></tr></table></figure><p>权威与递归分离的 view 写法：</p><figure class="highlight c"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br></pre></td><td class="code"><pre><span class="line">view <span class="string">&quot;internal&quot;</span> &#123;</span><br><span class="line">    match-clients &#123; trusted; &#125;;</span><br><span class="line">    recursion yes;</span><br><span class="line">    allow-recursion &#123; trusted; &#125;;</span><br><span class="line">    zone <span class="string">&quot;.&quot;</span> &#123; type hint; file <span class="string">&quot;/usr/share/dns/root.hints&quot;</span>; &#125;;</span><br><span class="line">    <span class="comment">// 内网 zone ...</span></span><br><span class="line">&#125;;</span><br><span class="line"></span><br><span class="line">view <span class="string">&quot;external&quot;</span> &#123;</span><br><span class="line">    match-clients &#123; any; &#125;;</span><br><span class="line">    recursion no;</span><br><span class="line">    allow-query &#123; any; &#125;;</span><br><span class="line">    <span class="comment">// 对外权威 zone ...</span></span><br><span class="line">&#125;;</span><br></pre></td></tr></table></figure><p>要点：</p><ul><li><code>allow-recursion</code> 未显式设置时会从 <code>allow-query-cache</code> &#x2F; <code>allow-query</code> 推导，不同版本和发行版默认值存在差异。只放宽 <code>allow-query</code> 可能意外放开递归，生产环境应把三条 ACL 都写清楚。</li><li><code>forwarders</code> 的默认语义是 <code>forward first</code>，即上游失败后回退到本地迭代；<code>forward only</code> 则强制只走转发。</li><li>权威与递归放在同一进程会增加攻击面，也容易混用缓存。常见做法是拆成独立实例或独立机器，或用 view 按来源分流。</li><li><code>dnssec-validation auto</code> 依赖根信任锚和准确时钟，时间偏差会导致验证失败。</li><li>公网实例需限制 <code>allow-recursion</code>、收紧 <code>allow-transfer</code>，并考虑启用 <code>rate-limit</code> 响应速率限制。</li></ul><h2 id="Unbound-与-BIND9-对比"><a href="#Unbound-与-BIND9-对比" class="headerlink" title="Unbound 与 BIND9 对比"></a>Unbound 与 BIND9 对比</h2><table><thead><tr><th>维度</th><th>Unbound</th><th>BIND9</th></tr></thead><tbody><tr><td>定位</td><td>专用递归解析器</td><td>权威与递归一体</td></tr><tr><td>默认递归</td><td>开启，默认仅本机可用</td><td>由配置决定，需关注 ACL</td></tr><tr><td>迭代起点</td><td>内置根提示或 <code>root-hints</code></td><td>内置或 <code>zone &quot;.&quot; type hint</code></td></tr><tr><td>转发</td><td><code>forward-zone</code>，可选 <code>forward-first</code></td><td><code>forwarders</code> + <code>forward first/only</code></td></tr><tr><td>DNSSEC</td><td><code>auto-trust-anchor-file</code></td><td><code>dnssec-validation auto</code></td></tr><tr><td>缓存调优</td><td><code>msg-cache-size</code>、<code>rrset-cache-size</code>、<code>prefetch</code></td><td><code>max-cache-size</code>、<code>prefetch</code></td></tr><tr><td>运维工具</td><td><code>unbound-checkconf</code>、<code>unbound-control</code></td><td><code>named-checkconf</code>、<code>rndc</code></td></tr><tr><td>典型场景</td><td>纯递归解析器、DNSSEC 验证器</td><td>已有权威 DNS、需要一体化或 view 分流</td></tr></tbody></table><h2 id="IPv6、DoT、DoH-支持矩阵"><a href="#IPv6、DoT、DoH-支持矩阵" class="headerlink" title="IPv6、DoT、DoH 支持矩阵"></a>IPv6、DoT、DoH 支持矩阵</h2><table><thead><tr><th>能力</th><th>Unbound 支持状态</th><th>关键配置</th></tr></thead><tbody><tr><td>IPv6 监听与上游传输</td><td>全版本支持</td><td><code>do-ip6</code>、<code>interface: ::0</code>、<code>access-control: ::1 allow</code></td></tr><tr><td>DoT 服务端（下游）</td><td>2011 年起支持</td><td><code>tls-service-key</code>、<code>tls-service-pem</code>、<code>tls-port</code></td></tr><tr><td>DoT 上游（转发到上游）</td><td>1.9.0 起支持</td><td><code>forward-tls-upstream</code>、<code>tls-cert-bundle</code></td></tr><tr><td>DoH 服务端（下游）</td><td>1.12.0 起支持</td><td><code>https-port</code>、<code>http-endpoint</code>，需 <code>libnghttp2</code></td></tr><tr><td>DoH 上游（客户端）</td><td>不支持</td><td>无对应配置项</td></tr><tr><td>DoQ 服务端</td><td>较新版本可选</td><td><code>quic-port</code>，需 ngtcp2&#x2F;quictls</td></tr></tbody></table><p>Unbound 的加密传输能力分成两个方向：下游是客户端连 Unbound，上游是 Unbound 连别的解析器。DoT 两个方向都支持，DoH 只支持下游。</p><h3 id="IPv6"><a href="#IPv6" class="headerlink" title="IPv6"></a>IPv6</h3><figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br></pre></td><td class="code"><pre><span class="line">server:</span><br><span class="line">    do-ip4: yes</span><br><span class="line">    do-ip6: yes              # 默认 yes</span><br><span class="line">    interface: 0.0.0.0</span><br><span class="line">    interface: ::0           # 监听所有 IPv6 地址</span><br><span class="line">    # interface: ::1         # 只监听回环</span><br><span class="line"></span><br><span class="line">    access-control: 127.0.0.0/8 allow</span><br><span class="line">    access-control: ::1 allow</span><br><span class="line">    access-control: 192.168.0.0/16 allow</span><br><span class="line">    access-control: 2001:db8:1::/64 allow</span><br><span class="line"></span><br><span class="line">    prefer-ip6: yes          # 默认 no，由 RTT 选择；yes 优先走 IPv6 上游</span><br><span class="line">    # outgoing-interface: 2001:db8:1::/64</span><br></pre></td></tr></table></figure><p>要点：</p><ul><li><code>do-ip6: no</code> 会同时关闭 IPv6 监听和 IPv6 上游传输，但 AAAA 记录仍会正常返回；主机没有 IPv6 连通性时关闭它可以避免上游超时。</li><li>默认隐式放行的是 <code>127.0.0.0/8</code>，IPv6 客户端（包括 <code>::1</code>）需要在 <code>access-control</code> 中显式允许。</li><li>自定义 <code>root-hints</code> 文件需要包含根服务器的 AAAA 记录；内置根提示已经包含。</li><li>双栈监听时，防火墙需要同时放行 v4&#x2F;v6 的 53、853、443（DoQ 为 UDP 853）。</li></ul><h2 id="DoT-服务端与上游客户端"><a href="#DoT-服务端与上游客户端" class="headerlink" title="DoT 服务端与上游客户端"></a>DoT 服务端与上游客户端</h2><h3 id="作为-DoT-服务端"><a href="#作为-DoT-服务端" class="headerlink" title="作为 DoT 服务端"></a>作为 DoT 服务端</h3><figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br></pre></td><td class="code"><pre><span class="line">server:</span><br><span class="line">    interface: 0.0.0.0@853</span><br><span class="line">    interface: ::0@853</span><br><span class="line"></span><br><span class="line">    tls-service-key: &quot;/etc/unbound/tls/unbound_server.key&quot;</span><br><span class="line">    tls-service-pem: &quot;/etc/unbound/tls/unbound_server.pem&quot;</span><br><span class="line">    tls-port: 853</span><br><span class="line"></span><br><span class="line">    tls-protocols: &quot;TLSv1.2 TLSv1.3&quot;</span><br><span class="line">    tls-ciphers: &quot;HIGH:!aNULL&quot;</span><br><span class="line">    tls-ciphersuites: &quot;TLS_AES_256_GCM_SHA384:TLS_CHACHA20_POLY1305_SHA256&quot;</span><br><span class="line">    tls-session-ticket-keys: &quot;/etc/unbound/tls/ticket.key&quot;</span><br></pre></td></tr></table></figure><ul><li><code>tls-service-key</code> 和 <code>tls-service-pem</code> 同时启用 DoT 与 DoH 服务；具体哪个接口提供哪种服务由端口决定。</li><li>绑定到 <code>tls-port</code> 的接口只提供 DoT，普通 DNS TCP 不会在该端口响应。</li><li>额外端口用 <code>tls-additional-port: 8853</code> 声明。</li><li>私钥需要 unbound 用户可读，或者在降权&#x2F;chroot 前可读；证书更新后可 <code>unbound-control reload</code>，权限受限时需要重启。</li><li><code>access-control</code> 同样作用于 DoT 客户端。</li><li>旧配置里的 <code>ssl-service-key</code>、<code>ssl-service-pem</code>、<code>ssl-port</code> 是同一组选项的别名。</li></ul><h3 id="作为-DoT-客户端"><a href="#作为-DoT-客户端" class="headerlink" title="作为 DoT 客户端"></a>作为 DoT 客户端</h3><p>DoT 上游只适用于 <code>forward-zone</code> 和 <code>stub-zone</code>。纯迭代解析无法使用 DoT，因为根和顶级域服务器不提供 DoT。</p><figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br></pre></td><td class="code"><pre><span class="line">server:</span><br><span class="line">    tls-cert-bundle: &quot;/etc/ssl/certs/ca-certificates.crt&quot;</span><br><span class="line">    # 或者 tls-system-cert: yes</span><br><span class="line"></span><br><span class="line">forward-zone:</span><br><span class="line">    name: &quot;.&quot;</span><br><span class="line">    forward-tls-upstream: yes</span><br><span class="line">    forward-addr: 1.1.1.1@853#cloudflare-dns.com</span><br><span class="line">    forward-addr: 1.0.0.1@853#cloudflare-dns.com</span><br><span class="line">    forward-addr: 2606:4700:4700::1111@853#cloudflare-dns.com</span><br></pre></td></tr></table></figure><ul><li><code>IP@端口#认证名</code> 是固定语法；<code>#</code> 后面的名字用于 SNI 和证书校验，建议始终填写。</li><li>没有 <code>tls-cert-bundle</code> 或 <code>tls-system-cert: yes</code> 时，证书无法验证，连接会失败。</li><li><code>forward-first: yes</code> 会在 DoT 上游不可用时回退到普通迭代，这等于允许降级；默认 <code>no</code>。</li><li><code>stub-zone</code> 用 <code>stub-tls-upstream: yes</code>；全局 <code>tls-upstream: yes</code> 对全部 forward&#x2F;stub 生效。</li></ul><h2 id="DoH-服务端"><a href="#DoH-服务端" class="headerlink" title="DoH 服务端"></a>DoH 服务端</h2><p>DoH 支持自 1.12.0 起，编译时需要 <code>libnghttp2</code>：</p><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br></pre></td><td class="code"><pre><span class="line">./configure --with-libnghttp2</span><br><span class="line">unbound -V | grep -i nghttp2</span><br></pre></td></tr></table></figure><p>配置：</p><figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br></pre></td><td class="code"><pre><span class="line">server:</span><br><span class="line">    interface: 0.0.0.0@443</span><br><span class="line">    interface: ::0@443</span><br><span class="line"></span><br><span class="line">    tls-service-key: &quot;/etc/unbound/tls/unbound_server.key&quot;</span><br><span class="line">    tls-service-pem: &quot;/etc/unbound/tls/unbound_server.pem&quot;</span><br><span class="line"></span><br><span class="line">    https-port: 443</span><br><span class="line">    http-endpoint: &quot;/dns-query&quot;</span><br><span class="line">    http-max-streams: 100</span><br><span class="line">    http-query-buffer-size: 4m</span><br><span class="line">    http-response-buffer-size: 4m</span><br><span class="line">    http-nodelay: yes</span><br></pre></td></tr></table></figure><ul><li>DoH 只走 HTTP&#x2F;2 + TLS，通过 ALPN 协商 <code>h2</code>；媒体类型为 <code>application/dns-message</code>，支持 GET（<code>?dns=</code> base64url）和 POST。</li><li>默认端口 443，默认路径 <code>/dns-query</code>；访问其他路径返回 404。</li><li>请求体上限受 <code>msg-buffer-size</code> 限制，超限返回 413&#x2F;414。</li><li><code>http-notls-downstream: yes</code> 可以关闭下游 TLS，用于放在 TLS 终止反向代理之后；此时 <code>access-control</code> 看到的是代理地址。</li><li>443 和 853 属于特权端口，非 root 运行需要 <code>CAP_NET_BIND_SERVICE</code>。</li></ul><p>Unbound 不提供 DoH 客户端功能，<code>forward-zone</code> 没有 HTTPS 选项。需要 DoH 上游时，常见做法是在本机运行 <code>dnscrypt-proxy</code>、<code>cloudflared</code> 等 DoH 客户端，让 Unbound 转发到它们的本地端口；或者直接使用 DoT 上游。</p><h2 id="http-notls-downstream-与反向代理"><a href="#http-notls-downstream-与反向代理" class="headerlink" title="http-notls-downstream 与反向代理"></a><code>http-notls-downstream</code> 与反向代理</h2><p><code>http-notls-downstream: yes</code> 让 Unbound 的 DoH 监听端口改用明文 HTTP&#x2F;2（h2c），不再使用 TLS。它面向的部署形态是：反向代理或负载均衡器负责 TLS 终止，Unbound 作为本机或内网后端，只处理 HTTP&#x2F;2 上的 DNS 消息。</p><figure class="highlight text"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">客户端 --HTTPS/HTTP3--&gt; Caddy / Envoy / HAProxy --h2c 明文--&gt; Unbound:8053/dns-query</span><br></pre></td></tr></table></figure><p>该选项自 Unbound 1.13.0 起提供（DoH 服务端本身自 1.12.0 起提供）。</p><table><thead><tr><th>项目</th><th>默认（no）</th><th><code>yes</code></th></tr></thead><tbody><tr><td>DoH 监听协议</td><td>HTTPS（TLS + HTTP&#x2F;2）</td><td>HTTP&#x2F;2 cleartext（h2c）</td></tr><tr><td>是否需要证书</td><td>需要 <code>tls-service-key</code> &#x2F; <code>tls-service-pem</code></td><td>该监听不需要证书</td></tr><tr><td>ALPN</td><td>协商 <code>h2</code></td><td>不使用 ALPN</td></tr><tr><td>HTTP 版本</td><td>HTTP&#x2F;2</td><td>HTTP&#x2F;2（prior knowledge）</td></tr><tr><td>端口标记</td><td><code>https-port</code></td><td>仍由 <code>https-port</code> 标记</td></tr><tr><td>DoT 监听</td><td>不受影响</td><td>不受影响</td></tr></tbody></table><p>配置示例：</p><figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br></pre></td><td class="code"><pre><span class="line">server:</span><br><span class="line">    interface: 127.0.0.1@8053</span><br><span class="line">    https-port: 8053</span><br><span class="line">    http-notls-downstream: yes</span><br><span class="line"></span><br><span class="line">    http-endpoint: &quot;/dns-query&quot;</span><br><span class="line">    http-max-streams: 100</span><br><span class="line">    http-query-buffer-size: 4m</span><br><span class="line">    http-response-buffer-size: 4m</span><br><span class="line">    http-nodelay: yes</span><br><span class="line"></span><br><span class="line">    access-control: 127.0.0.1 allow</span><br></pre></td></tr></table></figure><ul><li>接口端口必须与 <code>https-port</code> 一致，Unbound 才会把它识别为 DoH 服务端口。</li><li>使用 8053 这类非特权端口可以避免授予 <code>CAP_NET_BIND_SERVICE</code>。</li><li>绑定 <code>127.0.0.1</code> 或独立内网地址，避免明文 DoH 暴露到不可信网络。</li><li>不配置 <code>tls-service-key</code> 也能启动；配置之后该 DoH 端口仍然走明文，TLS 只用于 DoT。</li><li><code>http-notls-downstream</code> 是全局开关，一个 Unbound 实例里的所有 DoH 监听都会变成明文。需要在同一实例同时提供 HTTPS DoH 和 h2c DoH 时，只能拆成两个实例，或者由前置代理统一终止 TLS。</li></ul><p>反向代理必须支持 HTTP&#x2F;2 cleartext 到后端：</p><ul><li><strong>Caddy</strong>：<code>transport http { versions h2c }</code></li><li><strong>Envoy</strong>：cluster 上设置 <code>http2_protocol_options: {}</code></li><li><strong>HAProxy</strong>：后端 server 行使用 <code>proto h2</code></li><li><strong>开源版 nginx</strong>：<code>proxy_pass</code> 只能向 upstream 发送 HTTP&#x2F;1.x，Unbound 会拒绝。用 <code>stream</code> 模块做四层透传可以连通，但这样就失去了在 nginx 上终止 TLS 的意义。</li></ul><p>Caddy 示例：</p><figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br></pre></td><td class="code"><pre><span class="line">dns.example.com &#123;</span><br><span class="line">    reverse_proxy 127.0.0.1:8053 &#123;</span><br><span class="line">        transport http &#123;</span><br><span class="line">            versions h2c</span><br><span class="line">        &#125;</span><br><span class="line">    &#125;</span><br><span class="line">&#125;</span><br></pre></td></tr></table></figure><p>这种架构的常见收益：</p><ul><li>证书申请、续期、OCSP 和密码套件策略集中在代理层。</li><li>代理可以对客户端提供 HTTP&#x2F;3（DoH3），Unbound 后端仍使用 h2c。</li><li>代理层统一做访问日志、WAF、限速和多实例负载均衡。</li><li>Unbound 侧减少 TLS 握手开销。</li></ul><p>安全与运维注意点：</p><ul><li>代理到 Unbound 这一段是明文，只应走回环地址、Unix 域套接字所在主机或受控内网，并用防火墙限制来源。</li><li>Unbound 看到的客户端地址是代理地址。<code>access-control</code>、按 IP 的 <code>ratelimit</code>、<code>wait-limit</code> 都按代理 IP 计算，无法区分真实客户端。</li><li>Unbound 的 DoH 监听不支持 PROXYv2，也不会解析 <code>X-Forwarded-For</code>，所以无法通过这两种方式恢复真实客户端 IP。</li><li>该模式没有客户端证书认证，也没有传输层加密，不要直接暴露到公网。</li><li>代理的健康检查应发送合法的 DoH 请求；对 <code>/dns-query</code> 的空 GET 会得到 400。</li></ul><h2 id="RHEL-8-9-10-的-DoT-DoH-打包差异"><a href="#RHEL-8-9-10-的-DoT-DoH-打包差异" class="headerlink" title="RHEL 8&#x2F;9&#x2F;10 的 DoT&#x2F;DoH 打包差异"></a>RHEL 8&#x2F;9&#x2F;10 的 DoT&#x2F;DoH 打包差异</h2><p>RHEL 8、9、10 的官方 <code>unbound</code> RPM 都自带 DoT 服务端支持（基于 OpenSSL）。DoH 的差别来自打包时的编译开关：</p><ul><li><strong>RHEL 9 &#x2F; RHEL 10</strong>：官方包已带 <code>--with-libnghttp2</code>，DoH 开箱可用，不需要自己编译。</li><li><strong>RHEL 8</strong>：即使后期版本已升到 1.16.2（上游支持 DoH），RPM 仍未带 nghttp2，DoH 不可用，需要自行重编 SRPM 或使用前置 DoH 代理。</li><li><strong>DoT 上游转发</strong>：需要 Unbound ≥ 1.9.0，RHEL 8.7+、RHEL 9、RHEL 10 支持；RHEL 8.0–8.6 的 1.7.3 不支持。</li></ul><p>CentOS Stream、Rocky Linux、AlmaLinux、Oracle Linux 重新构建同一份 RHEL SRPM，因此特性矩阵与对应 RHEL 版本一致。</p><table><thead><tr><th>发行版 &#x2F; 次版本</th><th>自带 unbound</th><th>DoT 服务端</th><th>DoT 上游</th><th>DoH 服务端</th><th>官方包是否需编译</th></tr></thead><tbody><tr><td>RHEL 7（EOL）</td><td>1.6.x</td><td>支持（<code>ssl-*</code>）</td><td>不支持</td><td>不支持</td><td>DoH 需</td></tr><tr><td>RHEL 8.0–8.6</td><td>1.7.3</td><td>支持（<code>ssl-*</code>）</td><td>不支持</td><td>不支持</td><td>DoH、DoT 上游需</td></tr><tr><td>RHEL 8.7–8.10</td><td>1.16.2</td><td>支持（<code>tls-*</code>）</td><td>支持</td><td>不支持（未带 nghttp2）</td><td>DoH 需重编</td></tr><tr><td>RHEL 9.0</td><td>1.13.1</td><td>支持</td><td>支持</td><td>支持</td><td>不需要</td></tr><tr><td>RHEL 9.1–9.7</td><td>1.16.2</td><td>支持</td><td>支持</td><td>支持</td><td>不需要</td></tr><tr><td>RHEL 9.8</td><td>1.24.2</td><td>支持</td><td>支持</td><td>支持</td><td>不需要</td></tr><tr><td>RHEL 10.0–10.1</td><td>1.20.0</td><td>支持</td><td>支持</td><td>支持</td><td>不需要</td></tr><tr><td>RHEL 10.2</td><td>1.24.2</td><td>支持</td><td>支持</td><td>支持</td><td>不需要</td></tr></tbody></table><p>RHEL 9.8 和 RHEL 10.2 的 1.24.2 包还额外带 DoQ 支持（<code>quic-port</code>）；RHEL 10.0 的 1.20.0 包未带 DoQ。次版本矩阵以发布时 Red Hat 包信息为准。</p><h3 id="同一个-1-16-2，RHEL-8-和-RHEL-9-不同"><a href="#同一个-1-16-2，RHEL-8-和-RHEL-9-不同" class="headerlink" title="同一个 1.16.2，RHEL 8 和 RHEL 9 不同"></a>同一个 1.16.2，RHEL 8 和 RHEL 9 不同</h3><p>RHEL 8.7 起把 unbound 升到了 1.16.2，上游版本完全支持 DoH。但 RHEL 8 的 spec 文件：</p><ul><li>没有 <code>%bcond_without doh</code> 开关；</li><li>没有 <code>BuildRequires: libnghttp2-devel</code>；</li><li><code>%configure</code> 参数中没有 <code>--with-libnghttp2</code>。</li></ul><p>所以 RHEL 8 的二进制里能解析 <code>http-notls-downstream</code> 之类的配置项，但 HTTP&#x2F;2 和 DoH 代码没有被编译进去，启动 DoH 监听时只会得到“not compiled with nghttp2”的警告。</p><p>RHEL 9 和 RHEL 10 的 spec 则包含：</p><figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br></pre></td><td class="code"><pre><span class="line">%bcond_without doh</span><br><span class="line">...</span><br><span class="line">%if %&#123;with doh&#125;</span><br><span class="line">BuildRequires: libnghttp2-devel</span><br><span class="line">%endif</span><br><span class="line">...</span><br><span class="line">%if %&#123;with doh&#125;</span><br><span class="line">            --with-libnghttp2 \</span><br><span class="line">%endif</span><br></pre></td></tr></table></figure><p><code>%bcond_without doh</code> 的默认含义是开启，因此官方构建默认带 DoH。</p><h3 id="在机器上确认"><a href="#在机器上确认" class="headerlink" title="在机器上确认"></a>在机器上确认</h3><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br></pre></td><td class="code"><pre><span class="line">rpm -q unbound</span><br><span class="line">unbound -V</span><br></pre></td></tr></table></figure><p>看 <code>Configure line</code> 是否包含 <code>--with-libnghttp2</code>：</p><figure class="highlight text"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br></pre></td><td class="code"><pre><span class="line"># RHEL 9/10 典型输出</span><br><span class="line">Configure line: --with-libevent --with-pthreads --with-ssl ... --with-libnghttp2 ...</span><br><span class="line"></span><br><span class="line"># RHEL 8 的输出不含 --with-libnghttp2</span><br></pre></td></tr></table></figure><p>补充检查：</p><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br></pre></td><td class="code"><pre><span class="line">rpm -q --requires unbound | grep -i nghttp2</span><br><span class="line">ldd /usr/sbin/unbound | grep -i nghttp2</span><br></pre></td></tr></table></figure><p>RHEL 9&#x2F;10 通常能看到 <code>libnghttp2.so.14</code> 依赖。<code>unbound -V</code> 的 configure 行是最直接的判断依据。</p><h3 id="RHEL-8-想用-DoH-的三条路"><a href="#RHEL-8-想用-DoH-的三条路" class="headerlink" title="RHEL 8 想用 DoH 的三条路"></a>RHEL 8 想用 DoH 的三条路</h3><p><strong>方案一：重编 SRPM，保留系统包管理。</strong></p><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br></pre></td><td class="code"><pre><span class="line">dnf install rpm-build dnf-plugins-core</span><br><span class="line">dnf download --<span class="built_in">source</span> unbound</span><br><span class="line">rpm -ivh unbound-*.src.rpm</span><br></pre></td></tr></table></figure><p>编辑 <code>~/rpmbuild/SPECS/unbound.spec</code>，加入：</p><figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">BuildRequires: libnghttp2-devel</span><br></pre></td></tr></table></figure><p>并在 <code>%configure</code> 参数中加入：</p><figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">--with-libnghttp2</span><br></pre></td></tr></table></figure><p>构建并安装：</p><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br></pre></td><td class="code"><pre><span class="line">rpmbuild -ba ~/rpmbuild/SPECS/unbound.spec</span><br><span class="line">dnf install ~/rpmbuild/RPMS/x86_64/unbound-*.rpm</span><br></pre></td></tr></table></figure><p>RHEL 8 的 spec 没有 <code>%bcond_with doh</code>，因此需要手动加依赖和 configure 参数，不能只靠 <code>--with doh</code> 宏。</p><p><strong>方案二：容器运行新版 Unbound。</strong> 用 Podman 运行来自 RHEL 9&#x2F;10 或 Fedora 的新版 unbound，把 53&#x2F;853&#x2F;443 映射到宿主机。适合不想改动系统包的场景，但要注意容器网络、SELinux 端口标签和 systemd 集成。</p><p><strong>方案三：前置 DoH 代理。</strong> 在 Unbound 前面放一个支持 DoH 服务端的组件（例如 dnsdist），由它终止 TLS 和 HTTP&#x2F;2，再以普通 DNS 转发到本机 Unbound 的 53 端口。这样 RHEL 8 的 Unbound 继续做递归解析，DoH 能力由前端提供。</p><h3 id="容易混淆的点"><a href="#容易混淆的点" class="headerlink" title="容易混淆的点"></a>容易混淆的点</h3><ul><li>RHEL 8 的 1.16.2 有 DoT 上游，只是没有 DoH。DoT 和 DoH 是两个独立特性，DoT 只依赖 OpenSSL。</li><li>DoH 上游在 Unbound 中始终不支持，RHEL 9&#x2F;10 也一样。需要加密转发时使用 DoT 上游；需要 DoH 上游时只能在本机放 DoH 客户端代理。</li><li>安装 <code>nghttp2</code> 命令行包不会给 Unbound 增加 DoH。决定因素是 unbound 二进制是否带 <code>--with-libnghttp2</code> 编译。</li><li>RHEL 8 的 1.7.3 使用 <code>ssl-service-key</code> &#x2F; <code>ssl-port</code>；新文档里的 <code>tls-service-key</code> &#x2F; <code>tls-port</code> 在该版本中不存在。</li><li>RHEL 9.0 的 1.13.1 已经支持 DoH 和 <code>http-notls-downstream</code>，不必等到 1.16.2。</li></ul><h2 id="用-acme-sh-管理-Unbound-证书"><a href="#用-acme-sh-管理-Unbound-证书" class="headerlink" title="用 acme.sh 管理 Unbound 证书"></a>用 acme.sh 管理 Unbound 证书</h2><p>acme.sh 负责三件事：签发证书、自动续期、在续期后触发部署动作。Unbound 只负责读取两个文件：</p><ul><li><code>tls-service-key</code>：私钥 PEM。</li><li><code>tls-service-pem</code>：证书 PEM，使用包含中间证书的 fullchain。</li></ul><p>把 acme.sh 的 <code>--install-cert</code> 指向这两个路径，并用 <code>--reloadcmd</code> 在每次签发&#x2F;续期后修正权限并 reload Unbound，就完成了集成。</p><figure class="highlight text"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br></pre></td><td class="code"><pre><span class="line">acme.sh --issue --&gt; 证书目录 --&gt; --install-cert --&gt; /etc/unbound/tls/</span><br><span class="line">                                                      |</span><br><span class="line">                                                      +-- reloadcmd --&gt; systemctl reload unbound</span><br></pre></td></tr></table></figure><h3 id="选择验证方式"><a href="#选择验证方式" class="headerlink" title="选择验证方式"></a>选择验证方式</h3><table><thead><tr><th>方式</th><th>要求</th><th>适用场景</th></tr></thead><tbody><tr><td>HTTP-01</td><td>公网 80 端口可达</td><td>80 端口空闲，或已有 Web 服务器</td></tr><tr><td>DNS-01</td><td>能通过 API 修改 DNS</td><td>推荐；支持泛域名，不需要开放入站端口</td></tr><tr><td>TLS-ALPN-01</td><td>公网 443 端口可达</td><td>443 被 Unbound DoH 占用时不可用</td></tr></tbody></table><p>DoT&#x2F;DoH 服务器通常只开放 853&#x2F;443，推荐 DNS-01。如果 80 端口空闲，<code>--standalone</code> 也可以。</p><h3 id="签发证书"><a href="#签发证书" class="headerlink" title="签发证书"></a>签发证书</h3><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br></pre></td><td class="code"><pre><span class="line">curl https://get.acme.sh | sh -s email=admin@example.com</span><br><span class="line"><span class="built_in">source</span> ~/.bashrc</span><br><span class="line">acme.sh --set-default-ca --server letsencrypt</span><br></pre></td></tr></table></figure><p>DNS-01（以 Cloudflare 为例）：</p><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br></pre></td><td class="code"><pre><span class="line"><span class="built_in">export</span> CF_Token=<span class="string">&quot;你的 API Token&quot;</span></span><br><span class="line"><span class="built_in">export</span> CF_Account_ID=<span class="string">&quot;你的 Account ID&quot;</span></span><br><span class="line"></span><br><span class="line">acme.sh --issue --dns dns_cf -d dns.example.com --keylength ec-256</span><br></pre></td></tr></table></figure><p>HTTP-01：</p><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br></pre></td><td class="code"><pre><span class="line"><span class="comment"># 80 端口空闲</span></span><br><span class="line">acme.sh --issue -d dns.example.com --standalone --keylength ec-256</span><br><span class="line"></span><br><span class="line"><span class="comment"># 已有 Web 服务器</span></span><br><span class="line">acme.sh --issue -d dns.example.com --webroot /var/www/html --keylength ec-256</span><br></pre></td></tr></table></figure><p>注意：</p><ul><li>泛域名必须用 DNS-01，例如 <code>-d example.com -d &#39;*.example.com&#39;</code>。</li><li>测试阶段加 <code>--staging</code>，避免触发 Let’s Encrypt 速率限制。</li><li>使用 <code>--keylength ec-256</code> 时，后续 <code>--install-cert</code> 必须加 <code>--ecc</code>。</li><li>证书域名必须是客户端实际使用的名字，DoT 客户端通过 SNI&#x2F;主机名校验证书。</li></ul><h3 id="部署到-Unbound"><a href="#部署到-Unbound" class="headerlink" title="部署到 Unbound"></a>部署到 Unbound</h3><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br></pre></td><td class="code"><pre><span class="line">acme.sh --install-cert -d dns.example.com --ecc \</span><br><span class="line">  --key-file       /etc/unbound/tls/unbound.key \</span><br><span class="line">  --fullchain-file /etc/unbound/tls/unbound.pem \</span><br><span class="line">  --reloadcmd      <span class="string">&quot;/usr/local/sbin/unbound-cert-reload&quot;</span></span><br></pre></td></tr></table></figure><p><code>--install-cert</code> 会在首次安装和每次续期后执行 <code>--reloadcmd</code>。</p><p><code>/usr/local/sbin/unbound-cert-reload</code>：</p><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br></pre></td><td class="code"><pre><span class="line"><span class="meta">#!/bin/bash</span></span><br><span class="line"><span class="built_in">set</span> -euo pipefail</span><br><span class="line"></span><br><span class="line">install -d -m 0750 -o root -g unbound /etc/unbound/tls</span><br><span class="line"><span class="built_in">chown</span> root:unbound /etc/unbound/tls/unbound.key /etc/unbound/tls/unbound.pem</span><br><span class="line"><span class="built_in">chmod</span> 640 /etc/unbound/tls/unbound.key</span><br><span class="line"><span class="built_in">chmod</span> 644 /etc/unbound/tls/unbound.pem</span><br><span class="line"></span><br><span class="line">/usr/sbin/unbound-checkconf</span><br><span class="line">systemctl reload unbound</span><br></pre></td></tr></table></figure><p>关键点：</p><ul><li>私钥权限设为 <code>root:unbound 0640</code>。Unbound 启动时以 root 读取私钥，但 SIGHUP reload 时以 unbound 用户重新读取；私钥如果保持 <code>0600 root</code>，reload 会读不到，只能重启。</li><li><code>unbound-checkconf</code> 失败时脚本退出，不执行 reload，正在运行的 Unbound 继续使用内存中的旧证书。</li><li>目录权限保持 <code>0750 root:unbound</code>，不要让 unbound 用户可写。</li><li>如果使用 chroot，证书路径必须位于 chroot 内，并符合 Unbound 的路径调整规则。</li></ul><h3 id="Unbound-配置"><a href="#Unbound-配置" class="headerlink" title="Unbound 配置"></a>Unbound 配置</h3><p>DoT + DoH 共用同一份证书：</p><figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br></pre></td><td class="code"><pre><span class="line">server:</span><br><span class="line">    interface: 0.0.0.0@853</span><br><span class="line">    interface: ::0@853</span><br><span class="line">    interface: 0.0.0.0@443</span><br><span class="line">    interface: ::0@443</span><br><span class="line"></span><br><span class="line">    tls-service-key: &quot;/etc/unbound/tls/unbound.key&quot;</span><br><span class="line">    tls-service-pem: &quot;/etc/unbound/tls/unbound.pem&quot;</span><br><span class="line"></span><br><span class="line">    tls-port: 853</span><br><span class="line">    https-port: 443</span><br><span class="line">    http-endpoint: &quot;/dns-query&quot;</span><br><span class="line"></span><br><span class="line">    access-control: 192.168.0.0/16 allow</span><br><span class="line">    access-control: 2001:db8:1::/64 allow</span><br></pre></td></tr></table></figure><p>RHEL 8.0–8.6 的 Unbound 1.7.3 使用旧选项名：</p><figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br></pre></td><td class="code"><pre><span class="line">server:</span><br><span class="line">    interface: 0.0.0.0@853</span><br><span class="line">    ssl-service-key: &quot;/etc/unbound/tls/unbound.key&quot;</span><br><span class="line">    ssl-service-pem: &quot;/etc/unbound/tls/unbound.pem&quot;</span><br><span class="line">    ssl-port: 853</span><br></pre></td></tr></table></figure><h3 id="自动续期"><a href="#自动续期" class="headerlink" title="自动续期"></a>自动续期</h3><p>acme.sh 安装时会写入 cron 任务，每天检查一次：</p><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br></pre></td><td class="code"><pre><span class="line">acme.sh --list          <span class="comment"># 查看证书和下次续期时间</span></span><br><span class="line">acme.sh --cron          <span class="comment"># 手动触发检查</span></span><br></pre></td></tr></table></figure><p><code>--reloadcmd</code> 会保存在证书配置里，续期成功后自动执行。可以手动模拟一次续期：</p><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">acme.sh --renew -d dns.example.com --ecc --force</span><br></pre></td></tr></table></figure><p>或者直接测试 reload 脚本：</p><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br></pre></td><td class="code"><pre><span class="line">/usr/local/sbin/unbound-cert-reload</span><br><span class="line">systemctl status unbound</span><br><span class="line">journalctl -u unbound -n 50 --no-pager</span><br></pre></td></tr></table></figure><h3 id="结合反向代理"><a href="#结合反向代理" class="headerlink" title="结合反向代理"></a>结合反向代理</h3><p>如果 DoH 由 Caddy、nginx、Envoy 终止 TLS，Unbound 使用 <code>http-notls-downstream: yes</code> 提供 h2c 后端，那么证书只需要部署在代理上：</p><ul><li><strong>Caddy</strong>：内置 ACME，不需要 acme.sh；证书和续期由 Caddy 管理。</li><li><strong>nginx</strong>：用 acme.sh 签发后 <code>--install-cert --reloadcmd &quot;systemctl reload nginx&quot;</code>，Unbound 不配置证书。</li><li><strong>acme.sh + Unbound 直连</strong>：适用于 Unbound 自己监听 853&#x2F;443 的场景。</li></ul><p>这种拆分的好处是证书轮换只影响代理，Unbound 的 reload 与证书生命周期解耦。</p><h2 id="验证与排障"><a href="#验证与排障" class="headerlink" title="验证与排障"></a>验证与排障</h2><h3 id="检查服务与端口"><a href="#检查服务与端口" class="headerlink" title="检查服务与端口"></a>检查服务与端口</h3><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br></pre></td><td class="code"><pre><span class="line">unbound-checkconf</span><br><span class="line">unbound -V | grep -Ei <span class="string">&#x27;nghttp2|openssl&#x27;</span></span><br><span class="line">ss -lntup | grep unbound</span><br></pre></td></tr></table></figure><h3 id="IPv6-1"><a href="#IPv6-1" class="headerlink" title="IPv6"></a>IPv6</h3><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">dig @::1 example.com A</span><br></pre></td></tr></table></figure><h3 id="DoT"><a href="#DoT" class="headerlink" title="DoT"></a>DoT</h3><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br></pre></td><td class="code"><pre><span class="line">dig @127.0.0.1 -p 853 +tls example.com</span><br><span class="line">dig @127.0.0.1 -p 853 +tls +tls-hostname=dns.example.com \</span><br><span class="line">    +tls-ca=/etc/ssl/certs/ca-certificates.crt example.com</span><br><span class="line">kdig @127.0.0.1 +tls example.com</span><br></pre></td></tr></table></figure><h3 id="DoH"><a href="#DoH" class="headerlink" title="DoH"></a>DoH</h3><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br></pre></td><td class="code"><pre><span class="line"><span class="comment"># GET，base64url 查询为 example.com A</span></span><br><span class="line">curl --http2 -k -sS \</span><br><span class="line">  <span class="string">&#x27;https://127.0.0.1/dns-query?dns=AAABAAABAAAAAAAAB2V4YW1wbGUDY29tAAABAAE&#x27;</span> \</span><br><span class="line">  -o /tmp/answer.bin</span><br><span class="line"></span><br><span class="line"><span class="comment"># POST，query.bin 为 DNS wire format 查询</span></span><br><span class="line">curl --http2 -k -sS -H <span class="string">&#x27;content-type: application/dns-message&#x27;</span> \</span><br><span class="line">  --data-binary @query.bin https://127.0.0.1/dns-query -o /tmp/answer.bin</span><br><span class="line"></span><br><span class="line">unbound-control stats_noreset | grep -E <span class="string">&#x27;num.query.(tls|https)&#x27;</span></span><br></pre></td></tr></table></figure><p>直连 h2c 时必须显式使用 prior knowledge：</p><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br></pre></td><td class="code"><pre><span class="line">curl -v --http2-prior-knowledge \</span><br><span class="line">  -H <span class="string">&#x27;content-type: application/dns-message&#x27;</span> \</span><br><span class="line">  --data-binary @query.bin \</span><br><span class="line">  http://127.0.0.1:8053/dns-query -o /tmp/answer.bin</span><br></pre></td></tr></table></figure><h3 id="检查证书"><a href="#检查证书" class="headerlink" title="检查证书"></a>检查证书</h3><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br></pre></td><td class="code"><pre><span class="line">openssl s_client -connect dns.example.com:853 \</span><br><span class="line">  -servername dns.example.com -showcerts &lt;/dev/null 2&gt;/dev/null \</span><br><span class="line">  | openssl x509 -noout -subject -issuer -dates</span><br><span class="line"></span><br><span class="line">openssl s_client -connect dns.example.com:443 \</span><br><span class="line">  -servername dns.example.com -alpn h2 &lt;/dev/null 2&gt;/dev/null \</span><br><span class="line">  | openssl x509 -noout -subject -issuer -dates</span><br></pre></td></tr></table></figure><h3 id="常见问题"><a href="#常见问题" class="headerlink" title="常见问题"></a>常见问题</h3><table><thead><tr><th>现象</th><th>原因与处理</th></tr></thead><tbody><tr><td>续期成功但 Unbound 仍返回旧证书</td><td><code>--reloadcmd</code> 未配置或 reload 失败；检查 <code>journalctl -u unbound</code></td></tr><tr><td>reload 后证书加载失败</td><td>私钥权限为 <code>0600 root</code>；改为 <code>root:unbound 0640</code></td></tr><tr><td>客户端报证书链不完整</td><td>使用了 <code>cert.pem</code>；改用 <code>fullchain.cer</code> &#x2F; <code>--fullchain-file</code></td></tr><tr><td><code>--install-cert</code> 找不到证书</td><td>ECC 证书缺少 <code>--ecc</code> 参数</td></tr><tr><td>HTTP-01 验证失败</td><td>80 端口不可达或被防火墙拦截；改用 DNS-01</td></tr><tr><td>泛域名签发失败</td><td>HTTP-01 不支持泛域名；使用 DNS-01</td></tr><tr><td>443 被占用导致 <code>--alpn</code> 失败</td><td>Unbound DoH 已监听 443；改用 DNS-01 或 HTTP-01</td></tr><tr><td>SELinux 拒绝读取私钥</td><td><code>ausearch -m avc -ts recent</code>，用 <code>restorecon</code> 或 <code>semanage fcontext</code> 修正标签</td></tr><tr><td>证书时间异常</td><td>检查 chrony&#x2F;NTP，避免“not yet valid”或过期</td></tr><tr><td>用 <code>https://127.0.0.1:8053</code> 握手失败</td><td>该监听是明文 HTTP，应使用 <code>http://</code></td></tr><tr><td><code>curl --http2 http://...</code> 失败或返回空</td><td>客户端尝试 HTTP&#x2F;1.1 Upgrade，应改用 <code>--http2-prior-knowledge</code></td></tr><tr><td>反向代理返回 502</td><td>代理向上游发送 HTTP&#x2F;1.1，需启用 h2c 后端传输</td></tr><tr><td>启动日志提示没有 TLS key</td><td><code>http-notls-downstream</code> 未生效或写成了 <code>no</code></td></tr><tr><td>端口无响应</td><td>接口 <code>@port</code> 与 <code>https-port</code> 不一致，或 <code>access-control</code> 未放行代理地址</td></tr><tr><td>所有请求来源都是 127.0.0.1</td><td>代理在中间，Unbound 只能看到代理地址</td></tr><tr><td>配置了证书但 DoH 仍是明文</td><td><code>http-notls-downstream: yes</code> 是全局的，该实例所有 DoH 端口都走 h2c</td></tr></tbody></table><h3 id="排查顺序"><a href="#排查顺序" class="headerlink" title="排查顺序"></a>排查顺序</h3><ol><li>用 <code>unbound-checkconf</code> 或 <code>named-checkconf</code> 检查语法。</li><li>用 <code>ss -lntup</code> 确认监听地址和端口。</li><li>用 <code>dig +norecurse</code> 区分缓存&#x2F;权威回答与真正递归。</li><li>检查 ACL、防火墙和 SELinux。</li><li>检查上游 53&#x2F;853&#x2F;443 是否可达，根提示文件是否过期。</li><li>检查证书链、SNI、系统时间。</li></ol><p><code>dig +trace</code> 由 dig 自身完成迭代，绕开本机递归器，无法用来验证服务器的递归配置。</p><h2 id="参考与时效"><a href="#参考与时效" class="headerlink" title="参考与时效"></a>参考与时效</h2><ul><li>本文整理自 2026-11-14 的 Grok 技术会话，配置示例以 Unbound 和 BIND9 官方文档的选项语义为准。</li><li>RHEL 次版本、unbound RPM 版本和 DoH 编译开关会随发行版更新变化，部署前用 <code>rpm -q unbound</code>、<code>unbound -V</code> 和 <code>rpm -q --requires unbound</code> 在目标机器上确认。</li><li>证书命令以 acme.sh 当前版本为准，生产环境先用 <code>--staging</code> 验证流程。</li><li>示例中的域名、IP 和邮箱均为文档占位符，请替换为实际环境值。</li></ul>]]>
    </content>
    <id>https://kebyn.cc/2026/11/15/unbound-bind-dot-doh/</id>
    <link href="https://kebyn.cc/2026/11/15/unbound-bind-dot-doh/"/>
    <published>2026-11-15T02:10:00.000Z</published>
    <summary>对比 Unbound 与 BIND9 的递归解析配置，整理 IPv6、DoT、DoH、http-notls-downstream、RHEL 打包差异与 acme.sh 证书自动化。</summary>
    <title>Unbound 与 BIND9：递归解析、DoT/DoH 与 RHEL 打包差异</title>
    <updated>2026-11-15T11:03:55.000Z</updated>
  </entry>
  <entry>
    <author>
      <name>By Kebyn</name>
    </author>
    <category term="Hardware" scheme="https://kebyn.cc/categories/Hardware/"/>
    <category term="dell" scheme="https://kebyn.cc/tags/dell/"/>
    <category term="monitor" scheme="https://kebyn.cc/tags/monitor/"/>
    <category term="u2718q" scheme="https://kebyn.cc/tags/u2718q/"/>
    <category term="u2720q" scheme="https://kebyn.cc/tags/u2720q/"/>
    <category term="u2723qe" scheme="https://kebyn.cc/tags/u2723qe/"/>
    <category term="u2725qe" scheme="https://kebyn.cc/tags/u2725qe/"/>
    <category term="4k" scheme="https://kebyn.cc/tags/4k/"/>
    <content>
      <![CDATA[<p>戴尔的 27 英寸 4K UltraSharp 产品线跨度很长。二手市场上 U2718Q 和 U2720Q 的价格接近，新型号又有 U2723QE、U2725QE。本文把规格差异、命名规则和选购建议放在一起，方便快速判断。</p><span id="more"></span><h2 id="先给结论"><a href="#先给结论" class="headerlink" title="先给结论"></a>先给结论</h2><p><strong>U2720Q &#x2F; U2720QM 是 U2718Q 的换代型号。</strong> 两者的核心规格处于同一档次：27 英寸、3840×2160、IPS、60Hz。实际差距集中在色域、HDR 效果和接口：</p><ul><li>U2720Q 多了 95% DCI-P3 广色域和 USB-C 90W 一线连。</li><li>U2718Q 只有 sRGB 和传统 DP&#x2F;HDMI。</li></ul><p>接笔记本，尤其是 MacBook，优先选 U2720Q&#x2F;M；只接台式机、纯办公、预算优先，U2718Q 也够用。</p><h2 id="U2718Q-与-U2720Q-U2720QM-参数对比"><a href="#U2718Q-与-U2720Q-U2720QM-参数对比" class="headerlink" title="U2718Q 与 U2720Q&#x2F;U2720QM 参数对比"></a>U2718Q 与 U2720Q&#x2F;U2720QM 参数对比</h2><table><thead><tr><th>项目</th><th>U2718Q</th><th>U2720Q &#x2F; U2720QM</th></tr></thead><tbody><tr><td>年代</td><td>2018 款</td><td>2020 款</td></tr><tr><td>面板</td><td>27 英寸 IPS，3840×2160，60Hz</td><td>同左</td></tr><tr><td>亮度 &#x2F; 对比度</td><td>350 nit &#x2F; 1300:1</td><td>350 nit（HDR 峰值 400）&#x2F; 1300:1</td></tr><tr><td>色域</td><td>99.9% sRGB，无广色域</td><td>99% sRGB + 95% DCI-P3</td></tr><tr><td>色深</td><td>10-bit（8bit+FRC）</td><td>10-bit（8bit+FRC）</td></tr><tr><td>HDR</td><td>能接收 HDR10 信号，亮度和色域不足，属于象征性 HDR</td><td>DisplayHDR 400，仍是入门级 HDR</td></tr><tr><td>视频接口</td><td>DP 1.2、mini DP 1.2、HDMI 2.0</td><td>DP 1.4、HDMI 2.0、USB-C（DP Alt Mode）</td></tr><tr><td>USB-C</td><td>无</td><td>有，支持 4K60 + 90W 反向充电 + 数据传输</td></tr><tr><td>USB 扩展</td><td>4× USB 3.0</td><td>USB-A 扩展口 + USB 上行</td></tr><tr><td>音频</td><td>3.5mm 输出，无内置音箱</td><td>3.5mm 输出，无内置音箱</td></tr><tr><td>支架</td><td>升降、俯仰、旋转、竖屏</td><td>同左</td></tr><tr><td>背光调光</td><td>有评测指出为 PWM 调光，对频闪敏感需注意</td><td>不闪屏</td></tr><tr><td>保修</td><td>3 年 UltraSharp 标准保修</td><td>3 年</td></tr></tbody></table><h3 id="怎么选"><a href="#怎么选" class="headerlink" title="怎么选"></a>怎么选</h3><ul><li><strong>笔记本一线连、Mac、经常外接硬盘</strong>：选 U2720Q&#x2F;U2720QM。USB-C 90W 是这代最实用的升级。</li><li><strong>只接台式机，写代码、办公、看文档</strong>：U2718Q 的 4K 文字清晰度与 U2720Q 同档，二手更便宜。</li><li><strong>在意修图、视频调色</strong>：选 U2720Q。95% DCI-P3 比 U2718Q 的 sRGB 实用得多。</li><li><strong>想要真正的 HDR 或高刷游戏</strong>：两台都不合适。它们是 60Hz、无分区背光的办公向显示器。</li><li>两台都已退市，基本只能买二手。U2718Q 更老，注意面板老化、坏点和背光；U2720Q 重点检查 USB-C 口和 PD 供电是否正常。</li></ul><p><strong>关于 U2720QM：</strong> 它是 U2720Q 的区域&#x2F;渠道版本，国内电商常见这个写法。核心面板和接口规格与 U2720Q 一致，后缀 <code>M</code> 属于销售版本标识。下单前仍建议核对商品页的接口清单和随机线材。</p><h3 id="二手检查点"><a href="#二手检查点" class="headerlink" title="二手检查点"></a>二手检查点</h3><ol><li>用纯色图检查坏点、亮点和色斑，重点看四角和边缘。</li><li>低亮度下观察背光均匀度和漏光，关灯看黑色画面更明显。</li><li>检查支架升降、俯仰、旋转是否顺滑，接口是否松动。</li><li>U2720Q 插笔记本测试 USB-C：4K60、90W 供电、USB 扩展是否同时正常。</li><li>确认随机线材齐全。USB-C 线材质量会影响 4K60 和 PD 供电。</li><li>查询 Service Tag 的保修状态，确认是否还在保修期内。</li></ol><h2 id="戴尔显示器命名规则"><a href="#戴尔显示器命名规则" class="headerlink" title="戴尔显示器命名规则"></a>戴尔显示器命名规则</h2><p>基本结构：</p><figure class="highlight text"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br></pre></td><td class="code"><pre><span class="line">U 27 20 Q</span><br><span class="line">│  │  │  └─ 后缀：分辨率/功能</span><br><span class="line">│  │  └──── 型号年份：2020 年</span><br><span class="line">│  └─────── 屏幕尺寸：27 英寸</span><br><span class="line">└────────── 系列：UltraSharp</span><br></pre></td></tr></table></figure><h3 id="系列字母"><a href="#系列字母" class="headerlink" title="系列字母"></a>系列字母</h3><table><thead><tr><th>字母</th><th>系列</th><th>定位</th></tr></thead><tbody><tr><td>E</td><td>Essential</td><td>入门办公</td></tr><tr><td>P</td><td>Professional</td><td>商用、支架可调、接口实用</td></tr><tr><td>S</td><td>S-series</td><td>家用&#x2F;消费</td></tr><tr><td>U</td><td>UltraSharp</td><td>高端，色彩和出厂校色较好</td></tr><tr><td>UP</td><td>UltraSharp Premier</td><td>旗舰，广色域&#x2F;高 HDR</td></tr><tr><td>C</td><td>视频会议&#x2F;商用一体</td><td>带摄像头、麦克风</td></tr><tr><td>AW</td><td>Alienware</td><td>电竞</td></tr></tbody></table><h3 id="常见后缀"><a href="#常见后缀" class="headerlink" title="常见后缀"></a>常见后缀</h3><table><thead><tr><th>后缀</th><th>含义</th><th>例子</th></tr></thead><tbody><tr><td>H</td><td>1920×1080</td><td>P2419H</td></tr><tr><td>D</td><td>2560×1440</td><td>P2418D、U2719D</td></tr><tr><td>Q</td><td>3840×2160 4K</td><td>U2720Q、U3219Q</td></tr><tr><td>W</td><td>超宽屏</td><td>U3419W、U4919DW</td></tr><tr><td>E</td><td>带 RJ45 网口&#x2F;USB-C 扩展坞</td><td>U2723QE、P2422HE</td></tr><tr><td>QE &#x2F; DE</td><td>4K&#x2F;QHD + 网口扩展</td><td>U2723QE、P2723DE</td></tr><tr><td>S</td><td>内置音箱</td><td>S2721QS</td></tr><tr><td>G &#x2F; F</td><td>游戏&#x2F;FreeSync</td><td>S2719DGF</td></tr><tr><td>T</td><td>触摸</td><td>—</td></tr><tr><td>M</td><td>区域&#x2F;渠道版本</td><td>U2720QM</td></tr></tbody></table><h3 id="读型号时注意三点"><a href="#读型号时注意三点" class="headerlink" title="读型号时注意三点"></a>读型号时注意三点</h3><ol><li>中间两位是型号年份&#x2F;世代，不是购买年份。U2415 是 2015 款，U2720Q 是 2020 款。</li><li>戴尔没有公开一份严格的字母对照表，同一字母在不同年代或系列可能含义不同。上表覆盖大多数常见型号，具体以规格书为准。</li><li>型号后面的 <code>S</code>、<code>M</code> 等尾缀常与销售区域、渠道、是否带音箱有关，不代表性能等级。</li></ol><h2 id="27-英寸-4K-UltraSharp-的迭代路线"><a href="#27-英寸-4K-UltraSharp-的迭代路线" class="headerlink" title="27 英寸 4K UltraSharp 的迭代路线"></a>27 英寸 4K UltraSharp 的迭代路线</h2><p>你问的两款属于同一条产品线，后续迭代顺序是：</p><p><strong>U2718Q（2018）→ U2720Q &#x2F; U2720QM（2020）→ U2723QE（2022）→ U2725QE（2025）</strong></p><table><thead><tr><th>型号</th><th>面板 &#x2F; 刷新率</th><th>对比度 &#x2F; 亮度</th><th>色域 &#x2F; HDR</th><th>接口与供电</th><th>这一代的主要升级</th></tr></thead><tbody><tr><td><strong>U2718Q</strong>（2018）</td><td>IPS，60Hz</td><td>1300:1 &#x2F; 350 nit</td><td>99.9% sRGB；仅支持 HDR10 信号</td><td>DP 1.2、mDP 1.2、HDMI 2.0；无 USB-C</td><td>4K + 全功能支架</td></tr><tr><td><strong>U2720Q &#x2F; U2720QM</strong>（2020）</td><td>IPS，60Hz</td><td>1300:1 &#x2F; 350 nit（HDR 峰值 400）</td><td>95% DCI-P3；DisplayHDR 400</td><td>DP 1.4、HDMI 2.0、USB-C 90W</td><td>广色域 + 一线连</td></tr><tr><td><strong>U2723QE</strong>（2022）</td><td>IPS Black，60Hz</td><td>2000:1 &#x2F; 400 nit</td><td>98% DCI-P3；DisplayHDR 400（4 分区）</td><td>DP 1.4 进&#x2F;出、HDMI 2.0、USB-C 90W、RJ45、KVM、5×USB-A 10Gbps</td><td>IPS Black 高对比 + 完整扩展坞</td></tr><tr><td><strong>U2725QE</strong>（2025）</td><td>增强 IPS Black，120Hz</td><td>3000:1 &#x2F; 450 nit（峰值 600）</td><td>99% DCI-P3；DisplayHDR 600</td><td>Thunderbolt 4（最高 140W EPR）、HDMI 2.1、DP 1.4 进&#x2F;出、RJ45 2.5GbE、KVM、8 个 USB 口</td><td>120Hz + TB4 + HDR600</td></tr></tbody></table><h3 id="每一代实际带来了什么"><a href="#每一代实际带来了什么" class="headerlink" title="每一代实际带来了什么"></a>每一代实际带来了什么</h3><ul><li><strong>U2718Q → U2720Q</strong>：最重要的两项是 95% DCI-P3 广色域和 USB-C 90W。面板仍是普通 IPS、60Hz、1300:1，画质档次没有跳变。</li><li><strong>U2720Q → U2723QE</strong>：换用 IPS Black，对比度从 1300:1 提到 2000:1，黑色明显更沉；同时加入 RJ45 网口、DP 输出（可菊花链）、KVM 和 10Gbps USB 口，显示器本身变成扩展坞。</li><li><strong>U2723QE → U2725QE</strong>：刷新率从 60Hz 提到 120Hz，对比度再到 3000:1，HDR 从 400 提到 600，接口升级到 Thunderbolt 4，USB-C 供电最高 140W（笔记本不支持 EPR 时降到 90W），HDMI 升到 2.1，可跑 4K120。</li><li>这几代都保持 27 英寸、3840×2160、163 PPI、178° 视角和全功能支架，文字清晰度没有代差。</li></ul><h3 id="现在怎么选"><a href="#现在怎么选" class="headerlink" title="现在怎么选"></a>现在怎么选</h3><ul><li><strong>预算优先、只求 4K 办公</strong>：二手 U2720Q&#x2F;U2720QM 仍然是甜点，USB-C 90W 和 95% DCI-P3 够用。</li><li><strong>新机、长期使用、接多设备</strong>：U2723QE 性价比较高。60Hz 对办公和修图足够，扩展能力比 U2720Q 强很多。</li><li><strong>想要 120Hz 的顺滑感、Thunderbolt 4、HDR600</strong>：U2725QE 一步到位。</li><li><strong>需要 32 英寸</strong>：对应型号是 U3223QE 和 U3225QE，规格逻辑相同。</li></ul><p>价格会随地区和促销变化，本文不把具体美元价格作为购买依据，下单前以戴尔官网和当地渠道为准。</p><h2 id="容易混淆的型号"><a href="#容易混淆的型号" class="headerlink" title="容易混淆的型号"></a>容易混淆的型号</h2><table><thead><tr><th>型号</th><th>实际规格</th></tr></thead><tbody><tr><td>U2724D &#x2F; U2724DE</td><td>27 英寸 2560×1440、120Hz IPS Black，不是 4K</td></tr><tr><td>U2722D &#x2F; U2722DE</td><td>27 英寸 2560×1440、60Hz，U2720Q 的同代 QHD 版本</td></tr><tr><td>UP2720Q</td><td>27 英寸 4K 专业线，内置校色仪，属于 UltraSharp Premier，不是 U2720Q 的换代</td></tr><tr><td>U2720QM</td><td>U2720Q 的区域&#x2F;渠道版本，核心规格相同</td></tr><tr><td>U3223QE &#x2F; U3225QE</td><td>上述两代的 32 英寸版本</td></tr></tbody></table><p>另外，型号里的年份数字是世代编号，与实际上市时间可能差一年：U2718Q 在 2017 年发布，U2723QE 在 2022 年初发布。看代际时以发布年份为准，数字只作参考。</p><h2 id="其他戴尔产品线怎么读"><a href="#其他戴尔产品线怎么读" class="headerlink" title="其他戴尔产品线怎么读"></a>其他戴尔产品线怎么读</h2><table><thead><tr><th>产品线</th><th>读法</th><th>例子</th></tr></thead><tbody><tr><td>XPS</td><td>定位 + 尺寸 + 代际数字</td><td>XPS 13、XPS 15 9520</td></tr><tr><td>Latitude</td><td>3000&#x2F;5000&#x2F;7000&#x2F;9000 系列 + 尺寸 + 代际；末位 0 通常 Intel、5 通常 AMD</td><td>Latitude 5420、5425</td></tr><tr><td>Inspiron</td><td>3000&#x2F;5000&#x2F;7000 系列 + 尺寸 + 代际</td><td>Inspiron 15 3520</td></tr><tr><td>Vostro</td><td>3000&#x2F;5000 系列，商用入门</td><td>Vostro 15 3530</td></tr><tr><td>Precision</td><td>3000&#x2F;5000&#x2F;7000&#x2F;9000 移动工作站</td><td>Precision 5570</td></tr><tr><td>OptiPlex</td><td>3000&#x2F;5000&#x2F;7000 定位 + 代际&#x2F;形态（MT&#x2F;SFF&#x2F;MFF）</td><td>OptiPlex 7010 SFF</td></tr><tr><td>PowerEdge</td><td>R&#x2F;T&#x2F;M（机架&#x2F;塔式&#x2F;模块化）+ 系列 + 代际</td><td>PowerEdge R760、T150</td></tr><tr><td>Alienware</td><td>AW + 尺寸 + 年份 + 面板&#x2F;功能后缀</td><td>AW3225QF</td></tr></tbody></table><p>戴尔从 2025 年起把消费和商用笔记本统一成 <strong>Dell &#x2F; Dell Pro &#x2F; Dell Pro Max</strong> 三条线，再用 Base &#x2F; Plus &#x2F; Premium 分级，例如 Dell Pro 14 Plus。旧系列名（XPS、Inspiron、Latitude、Precision）会在一段时间内继续出现在库存机上。</p><p><strong>Service Tag</strong> 是机身上 7 位唯一编号，用于查保修和配置，和型号是两回事。</p><h2 id="参考与时效"><a href="#参考与时效" class="headerlink" title="参考与时效"></a>参考与时效</h2><ul><li>本文整理自 2026-11-14 的 Grok 技术会话，参数和价格信息以戴尔官方规格页、产品页和当时可查的评测为准。</li><li>显示器型号、面板批次和区域版本可能变化，购买前建议核对商品页的接口、色域、HDR 认证和随机线材。</li><li>二手设备存在个体差异，参数表只能作为筛选依据，最终以实物检测为准。</li></ul>]]>
    </content>
    <id>https://kebyn.cc/2026/11/15/dell-ultrasharp-4k/</id>
    <link href="https://kebyn.cc/2026/11/15/dell-ultrasharp-4k/"/>
    <published>2026-11-15T02:00:00.000Z</published>
    <summary>从 U2718Q 到 U2725QE，梳理戴尔 27 英寸 4K UltraSharp 的规格差异、命名规则与二手选购建议。</summary>
    <title>Dell 27 英寸 4K 显示器怎么选：U2718Q、U2720Q 与后续迭代</title>
    <updated>2026-11-15T11:03:55.000Z</updated>
  </entry>
  <entry>
    <author>
      <name>By Kebyn</name>
    </author>
    <category term="AI" scheme="https://kebyn.cc/categories/AI/"/>
    <category term="docker" scheme="https://kebyn.cc/tags/docker/"/>
    <category term="huggingface" scheme="https://kebyn.cc/tags/huggingface/"/>
    <category term="model" scheme="https://kebyn.cc/tags/model/"/>
    <category term="download" scheme="https://kebyn.cc/tags/download/"/>
    <category term="vllm" scheme="https://kebyn.cc/tags/vllm/"/>
    <content>
      <![CDATA[<p>使用 <code>huggingface-cli</code>、镜像站和 Docker 下载模型。</p><span id="more"></span><h1 id="huggingface-cli"><a href="#huggingface-cli" class="headerlink" title="huggingface-cli"></a>huggingface-cli</h1><figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br><span class="line">18</span><br><span class="line">19</span><br><span class="line">20</span><br><span class="line">21</span><br></pre></td><td class="code"><pre><span class="line"></span><br><span class="line"># 使用 docker 环境</span><br><span class="line">$ docker run --name huggingface --rm -it -v /data/:/data/ -v /root:/root python bash</span><br><span class="line"></span><br><span class="line"># 使用代理下载</span><br><span class="line"># export http_proxy=http://proxy.example.com:8080 https_proxy=http://proxy.example.com:8080</span><br><span class="line"></span><br><span class="line"># 使用 modelscope 替换 huggingface-cli 命令</span><br><span class="line"># modelscope download --local-dir /data/DeepSeek-V3/v1/ deepseek-ai/DeepSeek-V3</span><br><span class="line"></span><br><span class="line"># 使用 hf-mirror.com 镜像下载</span><br><span class="line">export HF_ENDPOINT=https://hf-mirror.com</span><br><span class="line"># export HF_ENDPOINT=https://aifasthub.com</span><br><span class="line"># 启用 rust 模块进行快速下载，会停用多线程下载，经过测试，速度会稍有提升</span><br><span class="line">export HF_HUB_ENABLE_HF_TRANSFER=1</span><br><span class="line"></span><br><span class="line"># 下载 model</span><br><span class="line">huggingface-cli download --local-dir /data/DeepSeek-V3/v1/ deepseek-ai/DeepSeek-V3</span><br><span class="line"></span><br><span class="line"># 下载指定目录</span><br><span class="line">huggingface-cli download unsloth/DeepSeek-V3-GGUF --include &quot;DeepSeek-V3-Q4_K_M*&quot;</span><br></pre></td></tr></table></figure><h1 id="modelexpress"><a href="#modelexpress" class="headerlink" title="modelexpress"></a>modelexpress</h1><blockquote><p><a href="https://github.com/ai-dynamo/modelexpress">https://github.com/ai-dynamo/modelexpress</a></p></blockquote><figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br><span class="line">18</span><br><span class="line">19</span><br><span class="line">20</span><br><span class="line">21</span><br><span class="line">22</span><br><span class="line">23</span><br><span class="line">24</span><br><span class="line">25</span><br><span class="line">26</span><br><span class="line">27</span><br><span class="line">28</span><br><span class="line">29</span><br><span class="line">30</span><br><span class="line">31</span><br><span class="line">32</span><br><span class="line">33</span><br><span class="line">34</span><br><span class="line">35</span><br><span class="line">36</span><br><span class="line">37</span><br><span class="line">38</span><br><span class="line">39</span><br><span class="line">40</span><br><span class="line">41</span><br><span class="line">42</span><br><span class="line">43</span><br><span class="line">44</span><br><span class="line">45</span><br><span class="line">46</span><br><span class="line">47</span><br><span class="line">48</span><br><span class="line">49</span><br><span class="line">50</span><br><span class="line">51</span><br><span class="line">52</span><br><span class="line">53</span><br><span class="line">54</span><br><span class="line">55</span><br><span class="line">56</span><br><span class="line">57</span><br><span class="line">58</span><br><span class="line">59</span><br><span class="line">60</span><br><span class="line">61</span><br><span class="line">62</span><br><span class="line">63</span><br><span class="line">64</span><br><span class="line">65</span><br><span class="line">66</span><br><span class="line">67</span><br><span class="line">68</span><br><span class="line">69</span><br></pre></td><td class="code"><pre><span class="line"># ./modelexpress-server -h</span><br><span class="line">High-performance gRPC server for model serving and management</span><br><span class="line"></span><br><span class="line">Usage: modelexpress-server [OPTIONS]</span><br><span class="line"></span><br><span class="line">Options:</span><br><span class="line">  -c, --config &lt;FILE&gt;</span><br><span class="line">          Configuration file path</span><br><span class="line">  -p, --port &lt;PORT&gt;</span><br><span class="line">          Server port [env: MODEL_EXPRESS_SERVER_PORT=8000]</span><br><span class="line">      --host &lt;HOST&gt;</span><br><span class="line">          Server host address [env: MODEL_EXPRESS_SERVER_HOST=]</span><br><span class="line">  -l, --log-level &lt;LOG_LEVEL&gt;</span><br><span class="line">          Log level [env: MODEL_EXPRESS_LOG_LEVEL=info] [possible values: trace, debug, info, warn, error]</span><br><span class="line">      --log-format &lt;LOG_FORMAT&gt;</span><br><span class="line">          Log format [env: MODEL_EXPRESS_LOG_FORMAT=] [possible values: json, pretty, compact]</span><br><span class="line">  -d, --database-path &lt;DATABASE_PATH&gt;</span><br><span class="line">          Database file path [env: MODEL_EXPRESS_DATABASE_PATH=/app/models.db]</span><br><span class="line">      --cache-directory &lt;CACHE_DIRECTORY&gt;</span><br><span class="line">          Cache directory path [env: MODEL_EXPRESS_CACHE_DIRECTORY=/app/cache]</span><br><span class="line">      --cache-eviction-enabled &lt;CACHE_EVICTION_ENABLED&gt;</span><br><span class="line">          Enable cache eviction [env: MODEL_EXPRESS_CACHE_EVICTION_ENABLED=] [possible values: true, false]</span><br><span class="line">      --validate-config</span><br><span class="line">          Validate configuration and exit</span><br><span class="line">  -h, --help</span><br><span class="line">          Print help</span><br><span class="line">  -V, --version</span><br><span class="line">          Print version</span><br><span class="line"></span><br><span class="line"># ./model-express-cli --endpoint http://localhost:8000 -h</span><br><span class="line">A CLI tool for interacting with ModelExpress server</span><br><span class="line"></span><br><span class="line">Usage: model-express-cli [OPTIONS] &lt;COMMAND&gt;</span><br><span class="line"></span><br><span class="line">Commands:</span><br><span class="line">  health  Check server health and status</span><br><span class="line">  model   Model management operations (download, list, clear, validate, etc.)</span><br><span class="line">  api     Send general API requests</span><br><span class="line">  help    Print this message or the help of the given subcommand(s)</span><br><span class="line"></span><br><span class="line">Options:</span><br><span class="line">  -e, --endpoint &lt;ENDPOINT&gt;  Server endpoint (can also be set via MODEL_EXPRESS_ENDPOINT env var) [env: MODEL_EXPRESS_ENDPOINT=] [default: http://localhost:8001]</span><br><span class="line">  -t, --timeout &lt;TIMEOUT&gt;    Request timeout in seconds [default: 30]</span><br><span class="line">  -f, --format &lt;FORMAT&gt;      Output format [default: human] [possible values: human, json, json-pretty]</span><br><span class="line">  -v...                      Verbose mode (-v for info, -vv for debug, -vvv for trace)</span><br><span class="line">  -q, --quiet                Quiet mode (suppress all output except errors)</span><br><span class="line">      --cache-path &lt;PATH&gt;    Cache path override</span><br><span class="line">  -h, --help                 Print help (see more with &#x27;--help&#x27;)</span><br><span class="line">  -V, --version              Print version</span><br><span class="line"></span><br><span class="line"></span><br><span class="line"># ./model-express-cli --endpoint http://localhost:8000 help model</span><br><span class="line">Model management operations (download, list, clear, validate, etc.)</span><br><span class="line"></span><br><span class="line">Usage: model-express-cli model &lt;COMMAND&gt;</span><br><span class="line"></span><br><span class="line">Commands:</span><br><span class="line">  download   Download a model with various strategies (automatically cached)</span><br><span class="line">  init       Initialize model storage configuration</span><br><span class="line">  list       List downloaded models</span><br><span class="line">  status     Show model storage status and usage</span><br><span class="line">  clear      Clear specific model from storage</span><br><span class="line">  clear-all  Clear all models from storage</span><br><span class="line">  validate   Validate model integrity</span><br><span class="line">  stats      Show model storage statistics</span><br><span class="line">  help       Print this message or the help of the given subcommand(s)</span><br><span class="line"></span><br><span class="line">Options:</span><br><span class="line">  -h, --help  Print help</span><br></pre></td></tr></table></figure>]]>
    </content>
    <id>https://kebyn.cc/2025/11/11/huggingface_model_download/</id>
    <link href="https://kebyn.cc/2025/11/11/huggingface_model_download/"/>
    <published>2025-11-11T01:31:23.000Z</published>
    <summary>
      <![CDATA[<p>使用 <code>huggingface-cli</code>、镜像站和 Docker 下载模型。</p>]]>
    </summary>
    <title>HuggingFace 模型下载</title>
    <updated>2026-11-15T11:03:55.000Z</updated>
  </entry>
  <entry>
    <author>
      <name>By Kebyn</name>
    </author>
    <category term="Benchmark" scheme="https://kebyn.cc/categories/Benchmark/"/>
    <category term="script" scheme="https://kebyn.cc/tags/script/"/>
    <category term="yabs" scheme="https://kebyn.cc/tags/yabs/"/>
    <content>
      <![CDATA[<h1 id="TYO"><a href="#TYO" class="headerlink" title="TYO"></a>TYO</h1><h2 id="Geekbench-6"><a href="#Geekbench-6" class="headerlink" title="Geekbench 6"></a>Geekbench 6</h2><span id="more"></span><figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br><span class="line">18</span><br><span class="line">19</span><br><span class="line">20</span><br><span class="line">21</span><br><span class="line">22</span><br><span class="line">23</span><br><span class="line">24</span><br><span class="line">25</span><br><span class="line">26</span><br><span class="line">27</span><br><span class="line">28</span><br><span class="line">29</span><br><span class="line">30</span><br><span class="line">31</span><br><span class="line">32</span><br><span class="line">33</span><br><span class="line">34</span><br><span class="line">35</span><br><span class="line">36</span><br><span class="line">37</span><br><span class="line">38</span><br><span class="line">39</span><br><span class="line">40</span><br><span class="line">41</span><br><span class="line">42</span><br><span class="line">43</span><br><span class="line">44</span><br><span class="line">45</span><br><span class="line">46</span><br><span class="line">47</span><br><span class="line">48</span><br><span class="line">49</span><br><span class="line">50</span><br><span class="line">51</span><br><span class="line">52</span><br><span class="line">53</span><br><span class="line">54</span><br></pre></td><td class="code"><pre><span class="line"># ## ## ## ## ## ## ## ## ## ## ## ## ## ## ## ## ## #</span><br><span class="line">#              Yet-Another-Bench-Script              #</span><br><span class="line">#                     v2025-04-20                    #</span><br><span class="line"># https://github.com/masonr/yet-another-bench-script #</span><br><span class="line"># ## ## ## ## ## ## ## ## ## ## ## ## ## ## ## ## ## #</span><br><span class="line"></span><br><span class="line">Fri Nov  7 15:42:12 UTC 2025</span><br><span class="line"></span><br><span class="line">Basic System Information:</span><br><span class="line">---------------------------------</span><br><span class="line">Uptime     : 76 days, 5 hours, 47 minutes</span><br><span class="line">Processor  : AMD EPYC 7443P 24-Core Processor</span><br><span class="line">CPU cores  : 1 @ 2844.654 MHz</span><br><span class="line">AES-NI     : ✔ Enabled</span><br><span class="line">VM-x/AMD-V : ❌ Disabled</span><br><span class="line">RAM        : 1.7 GiB</span><br><span class="line">Swap       : 1024.0 MiB</span><br><span class="line">Disk       : 58.9 GiB</span><br><span class="line">Distro     : Debian GNU/Linux 13 (trixie)</span><br><span class="line">Kernel     : 6.12.48+deb13-amd64</span><br><span class="line">VM Type    :</span><br><span class="line">IPv4/IPv6  : ✔ Online / ✔ Online</span><br><span class="line"></span><br><span class="line">IPv6 Network Information:</span><br><span class="line">---------------------------------</span><br><span class="line">ISP        : DMIT Cloud Services</span><br><span class="line">ASN        : AS906 DMIT Cloud Services</span><br><span class="line">Host       : DMIT Inc</span><br><span class="line">Location   : Tokyo, Tokyo (13)</span><br><span class="line">Country    : Japan</span><br><span class="line"></span><br><span class="line">fio Disk Speed Tests (Mixed R/W 50/50) (Partition /dev/vda1):</span><br><span class="line">---------------------------------</span><br><span class="line">Block Size | 4k            (IOPS) | 64k           (IOPS)</span><br><span class="line">  ------   | ---            ----  | ----           ----</span><br><span class="line">Read       | 37.49 MB/s    (9.3k) | 621.22 MB/s   (9.7k)</span><br><span class="line">Write      | 37.58 MB/s    (9.3k) | 624.48 MB/s   (9.7k)</span><br><span class="line">Total      | 75.07 MB/s   (18.7k) | 1.24 GB/s    (19.4k)</span><br><span class="line">           |                      |</span><br><span class="line">Block Size | 512k          (IOPS) | 1m            (IOPS)</span><br><span class="line">  ------   | ---            ----  | ----           ----</span><br><span class="line">Read       | 1.42 GB/s     (2.7k) | 1.61 GB/s     (1.5k)</span><br><span class="line">Write      | 1.50 GB/s     (2.9k) | 1.72 GB/s     (1.6k)</span><br><span class="line">Total      | 2.93 GB/s     (5.7k) | 3.34 GB/s     (3.2k)</span><br><span class="line"></span><br><span class="line">Geekbench 6 Benchmark Test:</span><br><span class="line">---------------------------------</span><br><span class="line">Test            | Value</span><br><span class="line">                |</span><br><span class="line">Single Core     | 1163</span><br><span class="line">Multi Core      | 1146</span><br><span class="line">Full Test       | https://browser.geekbench.com/v6/cpu/14906422</span><br><span class="line"></span><br><span class="line">YABS completed in 11 min 39 sec</span><br></pre></td></tr></table></figure><h1 id="Mailbu"><a href="#Mailbu" class="headerlink" title="Mailbu"></a>Mailbu</h1><h2 id="Geekbench-6-1"><a href="#Geekbench-6-1" class="headerlink" title="Geekbench 6"></a>Geekbench 6</h2><figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br><span class="line">18</span><br><span class="line">19</span><br><span class="line">20</span><br><span class="line">21</span><br><span class="line">22</span><br><span class="line">23</span><br><span class="line">24</span><br><span class="line">25</span><br><span class="line">26</span><br><span class="line">27</span><br><span class="line">28</span><br><span class="line">29</span><br><span class="line">30</span><br><span class="line">31</span><br><span class="line">32</span><br><span class="line">33</span><br><span class="line">34</span><br><span class="line">35</span><br><span class="line">36</span><br><span class="line">37</span><br><span class="line">38</span><br><span class="line">39</span><br><span class="line">40</span><br><span class="line">41</span><br><span class="line">42</span><br><span class="line">43</span><br><span class="line">44</span><br><span class="line">45</span><br><span class="line">46</span><br><span class="line">47</span><br><span class="line">48</span><br><span class="line">49</span><br><span class="line">50</span><br><span class="line">51</span><br><span class="line">52</span><br><span class="line">53</span><br><span class="line">54</span><br></pre></td><td class="code"><pre><span class="line"># ## ## ## ## ## ## ## ## ## ## ## ## ## ## ## ## ## #</span><br><span class="line">#              Yet-Another-Bench-Script              #</span><br><span class="line">#                     v2025-04-20                    #</span><br><span class="line"># https://github.com/masonr/yet-another-bench-script #</span><br><span class="line"># ## ## ## ## ## ## ## ## ## ## ## ## ## ## ## ## ## #</span><br><span class="line"></span><br><span class="line">Sat Nov  8 02:33:31 UTC 2025</span><br><span class="line"></span><br><span class="line">Basic System Information:</span><br><span class="line">---------------------------------</span><br><span class="line">Uptime     : 184 days, 21 hours, 44 minutes</span><br><span class="line">Processor  : AMD EPYC 9654 96-Core Processor</span><br><span class="line">CPU cores  : 1 @ 2396.400 MHz</span><br><span class="line">AES-NI     : ✔ Enabled</span><br><span class="line">VM-x/AMD-V : ❌ Disabled</span><br><span class="line">RAM        : 766.1 MiB</span><br><span class="line">Swap       : 1024.0 MiB</span><br><span class="line">Disk       : 19.6 GiB</span><br><span class="line">Distro     : Debian GNU/Linux 13 (trixie)</span><br><span class="line">Kernel     : 6.12.48+deb13-amd64</span><br><span class="line">VM Type    :</span><br><span class="line">IPv4/IPv6  : ✔ Online / ✔ Online</span><br><span class="line"></span><br><span class="line">IPv6 Network Information:</span><br><span class="line">---------------------------------</span><br><span class="line">ISP        : DMIT Cloud Services</span><br><span class="line">ASN        : AS906 DMIT Cloud Services</span><br><span class="line">Host       : DMIT Cloud Services</span><br><span class="line">Location   : Los Angeles, California (CA)</span><br><span class="line">Country    : United States</span><br><span class="line"></span><br><span class="line">fio Disk Speed Tests (Mixed R/W 50/50) (Partition /dev/vda1):</span><br><span class="line">---------------------------------</span><br><span class="line">Block Size | 4k            (IOPS) | 64k           (IOPS)</span><br><span class="line">  ------   | ---            ----  | ----           ----</span><br><span class="line">Read       | 62.55 MB/s   (15.6k) | 1.06 GB/s    (16.6k)</span><br><span class="line">Write      | 62.66 MB/s   (15.6k) | 1.07 GB/s    (16.7k)</span><br><span class="line">Total      | 125.22 MB/s  (31.3k) | 2.13 GB/s    (33.3k)</span><br><span class="line">           |                      |</span><br><span class="line">Block Size | 512k          (IOPS) | 1m            (IOPS)</span><br><span class="line">  ------   | ---            ----  | ----           ----</span><br><span class="line">Read       | 1.02 GB/s     (1.9k) | 915.04 MB/s    (893)</span><br><span class="line">Write      | 1.07 GB/s     (2.1k) | 975.98 MB/s    (953)</span><br><span class="line">Total      | 2.10 GB/s     (4.1k) | 1.89 GB/s     (1.8k)</span><br><span class="line"></span><br><span class="line">Geekbench 6 Benchmark Test:</span><br><span class="line">---------------------------------</span><br><span class="line">Test            | Value</span><br><span class="line">                |</span><br><span class="line">Single Core     | 1124</span><br><span class="line">Multi Core      | 490</span><br><span class="line">Full Test       | https://browser.geekbench.com/v6/cpu/14915568</span><br><span class="line"></span><br><span class="line">YABS completed in 27 min 42 sec</span><br></pre></td></tr></table></figure><h1 id="WEE"><a href="#WEE" class="headerlink" title="WEE"></a>WEE</h1><h2 id="Geekbench-6-2"><a href="#Geekbench-6-2" class="headerlink" title="Geekbench 6"></a>Geekbench 6</h2><figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br><span class="line">18</span><br><span class="line">19</span><br><span class="line">20</span><br><span class="line">21</span><br><span class="line">22</span><br><span class="line">23</span><br><span class="line">24</span><br><span class="line">25</span><br><span class="line">26</span><br><span class="line">27</span><br><span class="line">28</span><br><span class="line">29</span><br><span class="line">30</span><br><span class="line">31</span><br><span class="line">32</span><br><span class="line">33</span><br><span class="line">34</span><br><span class="line">35</span><br><span class="line">36</span><br><span class="line">37</span><br><span class="line">38</span><br><span class="line">39</span><br><span class="line">40</span><br><span class="line">41</span><br><span class="line">42</span><br><span class="line">43</span><br><span class="line">44</span><br><span class="line">45</span><br><span class="line">46</span><br><span class="line">47</span><br><span class="line">48</span><br><span class="line">49</span><br><span class="line">50</span><br><span class="line">51</span><br><span class="line">52</span><br><span class="line">53</span><br><span class="line">54</span><br></pre></td><td class="code"><pre><span class="line"># ## ## ## ## ## ## ## ## ## ## ## ## ## ## ## ## ## #</span><br><span class="line">#              Yet-Another-Bench-Script              #</span><br><span class="line">#                     v2025-04-20                    #</span><br><span class="line"># https://github.com/masonr/yet-another-bench-script #</span><br><span class="line"># ## ## ## ## ## ## ## ## ## ## ## ## ## ## ## ## ## #</span><br><span class="line"></span><br><span class="line">Sat Nov  8 03:23:30 UTC 2025</span><br><span class="line"></span><br><span class="line">Basic System Information:</span><br><span class="line">---------------------------------</span><br><span class="line">Uptime     : 184 days, 22 hours, 36 minutes</span><br><span class="line">Processor  : AMD EPYC 9654 96-Core Processor</span><br><span class="line">CPU cores  : 1 @ 2396.400 MHz</span><br><span class="line">AES-NI     : ✔ Enabled</span><br><span class="line">VM-x/AMD-V : ❌ Disabled</span><br><span class="line">RAM        : 766.1 MiB</span><br><span class="line">Swap       : 1024.0 MiB</span><br><span class="line">Disk       : 19.6 GiB</span><br><span class="line">Distro     : Debian GNU/Linux 13 (trixie)</span><br><span class="line">Kernel     : 6.12.48+deb13-amd64</span><br><span class="line">VM Type    :</span><br><span class="line">IPv4/IPv6  : ✔ Online / ✔ Online</span><br><span class="line"></span><br><span class="line">IPv6 Network Information:</span><br><span class="line">---------------------------------</span><br><span class="line">ISP        : DMIT Cloud Services</span><br><span class="line">ASN        : AS906 DMIT Cloud Services</span><br><span class="line">Host       : DMIT Cloud Services</span><br><span class="line">Location   : Los Angeles, California (CA)</span><br><span class="line">Country    : United States</span><br><span class="line"></span><br><span class="line">fio Disk Speed Tests (Mixed R/W 50/50) (Partition /dev/vda1):</span><br><span class="line">---------------------------------</span><br><span class="line">Block Size | 4k            (IOPS) | 64k           (IOPS)</span><br><span class="line">  ------   | ---            ----  | ----           ----</span><br><span class="line">Read       | 62.55 MB/s   (15.6k) | 1.07 GB/s    (16.7k)</span><br><span class="line">Write      | 62.66 MB/s   (15.6k) | 1.07 GB/s    (16.8k)</span><br><span class="line">Total      | 125.21 MB/s  (31.3k) | 2.14 GB/s    (33.5k)</span><br><span class="line">           |                      |</span><br><span class="line">Block Size | 512k          (IOPS) | 1m            (IOPS)</span><br><span class="line">  ------   | ---            ----  | ----           ----</span><br><span class="line">Read       | 1.02 GB/s     (1.9k) | 1.00 GB/s      (984)</span><br><span class="line">Write      | 1.07 GB/s     (2.1k) | 1.07 GB/s     (1.0k)</span><br><span class="line">Total      | 2.09 GB/s     (4.0k) | 2.08 GB/s     (2.0k)</span><br><span class="line"></span><br><span class="line">Geekbench 6 Benchmark Test:</span><br><span class="line">---------------------------------</span><br><span class="line">Test            | Value</span><br><span class="line">                |</span><br><span class="line">Single Core     | 946</span><br><span class="line">Multi Core      | 409</span><br><span class="line">Full Test       | https://browser.geekbench.com/v6/cpu/14916247</span><br><span class="line"></span><br><span class="line">YABS completed in 37 min 52 sec</span><br></pre></td></tr></table></figure><h1 id="Linveo-Ohio"><a href="#Linveo-Ohio" class="headerlink" title="Linveo Ohio"></a>Linveo Ohio</h1><h2 id="Geekbench-5"><a href="#Geekbench-5" class="headerlink" title="Geekbench 5"></a>Geekbench 5</h2><figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br><span class="line">18</span><br><span class="line">19</span><br><span class="line">20</span><br><span class="line">21</span><br><span class="line">22</span><br><span class="line">23</span><br><span class="line">24</span><br><span class="line">25</span><br><span class="line">26</span><br><span class="line">27</span><br><span class="line">28</span><br><span class="line">29</span><br><span class="line">30</span><br><span class="line">31</span><br><span class="line">32</span><br><span class="line">33</span><br><span class="line">34</span><br><span class="line">35</span><br><span class="line">36</span><br><span class="line">37</span><br><span class="line">38</span><br><span class="line">39</span><br><span class="line">40</span><br><span class="line">41</span><br><span class="line">42</span><br><span class="line">43</span><br><span class="line">44</span><br><span class="line">45</span><br><span class="line">46</span><br><span class="line">47</span><br><span class="line">48</span><br><span class="line">49</span><br><span class="line">50</span><br><span class="line">51</span><br><span class="line">52</span><br><span class="line">53</span><br><span class="line">54</span><br></pre></td><td class="code"><pre><span class="line"># ## ## ## ## ## ## ## ## ## ## ## ## ## ## ## ## ## #</span><br><span class="line">#              Yet-Another-Bench-Script              #</span><br><span class="line">#                     v2025-04-20                    #</span><br><span class="line"># https://github.com/masonr/yet-another-bench-script #</span><br><span class="line"># ## ## ## ## ## ## ## ## ## ## ## ## ## ## ## ## ## #</span><br><span class="line"></span><br><span class="line">Sat Nov  8 07:10:07 UTC 2025</span><br><span class="line"></span><br><span class="line">Basic System Information:</span><br><span class="line">---------------------------------</span><br><span class="line">Uptime     : 21 days, 5 hours, 19 minutes</span><br><span class="line">Processor  : AMD Ryzen 9 9950X 16-Core Processor</span><br><span class="line">CPU cores  : 1 @ 4291.916 MHz</span><br><span class="line">AES-NI     : ✔ Enabled</span><br><span class="line">VM-x/AMD-V : ✔ Enabled</span><br><span class="line">RAM        : 929.1 MiB</span><br><span class="line">Swap       : 1024.0 MiB</span><br><span class="line">Disk       : 24.4 GiB</span><br><span class="line">Distro     : Debian GNU/Linux 13 (trixie)</span><br><span class="line">Kernel     : 6.12.48+deb13-amd64</span><br><span class="line">VM Type    :</span><br><span class="line">IPv4/IPv6  : ✔ Online / ✔ Online</span><br><span class="line"></span><br><span class="line">IPv6 Network Information:</span><br><span class="line">---------------------------------</span><br><span class="line">ISP        : LINVEO, LLC</span><br><span class="line">ASN        : AS62564 LINVEO, LLC</span><br><span class="line">Host       : LINVEO, LLC</span><br><span class="line">Location   : Grove City, Ohio (OH)</span><br><span class="line">Country    : United States</span><br><span class="line"></span><br><span class="line">fio Disk Speed Tests (Mixed R/W 50/50) (Partition /dev/vda3):</span><br><span class="line">---------------------------------</span><br><span class="line">Block Size | 4k            (IOPS) | 64k           (IOPS)</span><br><span class="line">  ------   | ---            ----  | ----           ----</span><br><span class="line">Read       | 252.09 MB/s  (63.0k) | 461.12 MB/s   (7.2k)</span><br><span class="line">Write      | 252.75 MB/s  (63.1k) | 463.54 MB/s   (7.2k)</span><br><span class="line">Total      | 504.85 MB/s (126.2k) | 924.66 MB/s  (14.4k)</span><br><span class="line">           |                      |</span><br><span class="line">Block Size | 512k          (IOPS) | 1m            (IOPS)</span><br><span class="line">  ------   | ---            ----  | ----           ----</span><br><span class="line">Read       | 1.06 GB/s     (2.0k) | 1.08 GB/s     (1.0k)</span><br><span class="line">Write      | 1.12 GB/s     (2.1k) | 1.15 GB/s     (1.1k)</span><br><span class="line">Total      | 2.18 GB/s     (4.2k) | 2.23 GB/s     (2.1k)</span><br><span class="line"></span><br><span class="line">Geekbench 5 Benchmark Test:</span><br><span class="line">---------------------------------</span><br><span class="line">Test            | Value</span><br><span class="line">                |</span><br><span class="line">Single Core     | 1842</span><br><span class="line">Multi Core      | 1665</span><br><span class="line">Full Test       | https://browser.geekbench.com/v5/cpu/23891732</span><br><span class="line"></span><br><span class="line">YABS completed in 2 min 16 sec</span><br></pre></td></tr></table></figure><h1 id="Digitalfyre-Singapore"><a href="#Digitalfyre-Singapore" class="headerlink" title="Digitalfyre Singapore"></a>Digitalfyre Singapore</h1><h2 id="Geekbench-6-3"><a href="#Geekbench-6-3" class="headerlink" title="Geekbench 6"></a>Geekbench 6</h2><figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br><span class="line">18</span><br><span class="line">19</span><br><span class="line">20</span><br><span class="line">21</span><br><span class="line">22</span><br><span class="line">23</span><br><span class="line">24</span><br><span class="line">25</span><br><span class="line">26</span><br><span class="line">27</span><br><span class="line">28</span><br><span class="line">29</span><br><span class="line">30</span><br><span class="line">31</span><br><span class="line">32</span><br><span class="line">33</span><br><span class="line">34</span><br><span class="line">35</span><br><span class="line">36</span><br><span class="line">37</span><br><span class="line">38</span><br><span class="line">39</span><br><span class="line">40</span><br><span class="line">41</span><br><span class="line">42</span><br><span class="line">43</span><br><span class="line">44</span><br><span class="line">45</span><br><span class="line">46</span><br><span class="line">47</span><br><span class="line">48</span><br><span class="line">49</span><br><span class="line">50</span><br><span class="line">51</span><br><span class="line">52</span><br><span class="line">53</span><br><span class="line">54</span><br></pre></td><td class="code"><pre><span class="line"># ## ## ## ## ## ## ## ## ## ## ## ## ## ## ## ## ## #</span><br><span class="line">#              Yet-Another-Bench-Script              #</span><br><span class="line">#                     v2025-04-20                    #</span><br><span class="line"># https://github.com/masonr/yet-another-bench-script #</span><br><span class="line"># ## ## ## ## ## ## ## ## ## ## ## ## ## ## ## ## ## #</span><br><span class="line"></span><br><span class="line">Sat Nov  8 00:56:33 UTC 2025</span><br><span class="line"></span><br><span class="line">Basic System Information:</span><br><span class="line">---------------------------------</span><br><span class="line">Uptime     : 30 days, 18 hours, 13 minutes</span><br><span class="line">Processor  : AMD Ryzen 9 9950X 16-Core Processor</span><br><span class="line">CPU cores  : 4 @ 4291.948 MHz</span><br><span class="line">AES-NI     : ✔ Enabled</span><br><span class="line">VM-x/AMD-V : ✔ Enabled</span><br><span class="line">RAM        : 3.8 GiB</span><br><span class="line">Swap       : 1024.0 MiB</span><br><span class="line">Disk       : 29.4 GiB</span><br><span class="line">Distro     : Debian GNU/Linux 13 (trixie)</span><br><span class="line">Kernel     : 6.12.48+deb13-amd64</span><br><span class="line">VM Type    :</span><br><span class="line">IPv4/IPv6  : ✔ Online / ✔ Online</span><br><span class="line"></span><br><span class="line">IPv6 Network Information:</span><br><span class="line">---------------------------------</span><br><span class="line">ISP        : DigitalFyre Internet Solutions, LLC.</span><br><span class="line">ASN        : AS64245 DigitalFyre Internet Solutions, LLC.</span><br><span class="line">Host       : DF Apac SGP</span><br><span class="line">Location   : Singapore, North West (03)</span><br><span class="line">Country    : Singapore</span><br><span class="line"></span><br><span class="line">fio Disk Speed Tests (Mixed R/W 50/50) (Partition /dev/sda3):</span><br><span class="line">---------------------------------</span><br><span class="line">Block Size | 4k            (IOPS) | 64k           (IOPS)</span><br><span class="line">  ------   | ---            ----  | ----           ----</span><br><span class="line">Read       | 114.47 MB/s  (28.6k) | 132.99 MB/s   (2.0k)</span><br><span class="line">Write      | 114.78 MB/s  (28.6k) | 133.69 MB/s   (2.0k)</span><br><span class="line">Total      | 229.25 MB/s  (57.3k) | 266.69 MB/s   (4.1k)</span><br><span class="line">           |                      |</span><br><span class="line">Block Size | 512k          (IOPS) | 1m            (IOPS)</span><br><span class="line">  ------   | ---            ----  | ----           ----</span><br><span class="line">Read       | 120.92 MB/s    (236) | 132.77 MB/s    (129)</span><br><span class="line">Write      | 127.34 MB/s    (248) | 141.61 MB/s    (138)</span><br><span class="line">Total      | 248.27 MB/s    (484) | 274.38 MB/s    (267)</span><br><span class="line"></span><br><span class="line">Geekbench 6 Benchmark Test:</span><br><span class="line">---------------------------------</span><br><span class="line">Test            | Value</span><br><span class="line">                |</span><br><span class="line">Single Core     | 2737</span><br><span class="line">Multi Core      | 8172</span><br><span class="line">Full Test       | https://browser.geekbench.com/v6/cpu/14914175</span><br><span class="line"></span><br><span class="line">YABS completed in 6 min 27 sec</span><br></pre></td></tr></table></figure><h2 id="Geekbench-5-1"><a href="#Geekbench-5-1" class="headerlink" title="Geekbench 5"></a>Geekbench 5</h2><figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br><span class="line">18</span><br><span class="line">19</span><br><span class="line">20</span><br><span class="line">21</span><br><span class="line">22</span><br><span class="line">23</span><br><span class="line">24</span><br><span class="line">25</span><br><span class="line">26</span><br><span class="line">27</span><br><span class="line">28</span><br><span class="line">29</span><br><span class="line">30</span><br><span class="line">31</span><br><span class="line">32</span><br><span class="line">33</span><br><span class="line">34</span><br><span class="line">35</span><br><span class="line">36</span><br><span class="line">37</span><br><span class="line">38</span><br><span class="line">39</span><br><span class="line">40</span><br><span class="line">41</span><br><span class="line">42</span><br><span class="line">43</span><br><span class="line">44</span><br><span class="line">45</span><br><span class="line">46</span><br><span class="line">47</span><br><span class="line">48</span><br><span class="line">49</span><br><span class="line">50</span><br><span class="line">51</span><br><span class="line">52</span><br><span class="line">53</span><br><span class="line">54</span><br></pre></td><td class="code"><pre><span class="line"># ## ## ## ## ## ## ## ## ## ## ## ## ## ## ## ## ## #</span><br><span class="line">#              Yet-Another-Bench-Script              #</span><br><span class="line">#                     v2025-04-20                    #</span><br><span class="line"># https://github.com/masonr/yet-another-bench-script #</span><br><span class="line"># ## ## ## ## ## ## ## ## ## ## ## ## ## ## ## ## ## #</span><br><span class="line"></span><br><span class="line">Sat Nov  8 07:01:41 UTC 2025</span><br><span class="line"></span><br><span class="line">Basic System Information:</span><br><span class="line">---------------------------------</span><br><span class="line">Uptime     : 31 days, 19 hours, 0 minutes</span><br><span class="line">Processor  : AMD Ryzen 9 9950X 16-Core Processor</span><br><span class="line">CPU cores  : 4 @ 4291.948 MHz</span><br><span class="line">AES-NI     : ✔ Enabled</span><br><span class="line">VM-x/AMD-V : ✔ Enabled</span><br><span class="line">RAM        : 3.8 GiB</span><br><span class="line">Swap       : 1024.0 MiB</span><br><span class="line">Disk       : 29.4 GiB</span><br><span class="line">Distro     : Debian GNU/Linux 13 (trixie)</span><br><span class="line">Kernel     : 6.12.48+deb13-amd64</span><br><span class="line">VM Type    :</span><br><span class="line">IPv4/IPv6  : ✔ Online / ✔ Online</span><br><span class="line"></span><br><span class="line">IPv6 Network Information:</span><br><span class="line">---------------------------------</span><br><span class="line">ISP        : DigitalFyre Internet Solutions, LLC.</span><br><span class="line">ASN        : AS64245 DigitalFyre Internet Solutions, LLC.</span><br><span class="line">Host       : DF Apac SGP</span><br><span class="line">Location   : Singapore, North West (03)</span><br><span class="line">Country    : Singapore</span><br><span class="line"></span><br><span class="line">fio Disk Speed Tests (Mixed R/W 50/50) (Partition /dev/sda3):</span><br><span class="line">---------------------------------</span><br><span class="line">Block Size | 4k            (IOPS) | 64k           (IOPS)</span><br><span class="line">  ------   | ---            ----  | ----           ----</span><br><span class="line">Read       | 116.09 MB/s  (29.0k) | 121.38 MB/s   (1.8k)</span><br><span class="line">Write      | 116.39 MB/s  (29.0k) | 122.02 MB/s   (1.9k)</span><br><span class="line">Total      | 232.48 MB/s  (58.1k) | 243.40 MB/s   (3.8k)</span><br><span class="line">           |                      |</span><br><span class="line">Block Size | 512k          (IOPS) | 1m            (IOPS)</span><br><span class="line">  ------   | ---            ----  | ----           ----</span><br><span class="line">Read       | 131.46 MB/s    (256) | 128.77 MB/s    (125)</span><br><span class="line">Write      | 138.45 MB/s    (270) | 137.35 MB/s    (134)</span><br><span class="line">Total      | 269.92 MB/s    (526) | 266.13 MB/s    (259)</span><br><span class="line"></span><br><span class="line">Geekbench 5 Benchmark Test:</span><br><span class="line">---------------------------------</span><br><span class="line">Test            | Value</span><br><span class="line">                |</span><br><span class="line">Single Core     | 2129</span><br><span class="line">Multi Core      | 6544</span><br><span class="line">Full Test       | https://browser.geekbench.com/v5/cpu/23891725</span><br><span class="line"></span><br><span class="line">YABS completed in 3 min 9 sec</span><br></pre></td></tr></table></figure><h1 id="Digitalfyre-LAX"><a href="#Digitalfyre-LAX" class="headerlink" title="Digitalfyre LAX"></a>Digitalfyre LAX</h1><h2 id="Geekbench-6-4"><a href="#Geekbench-6-4" class="headerlink" title="Geekbench 6"></a>Geekbench 6</h2><figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br><span class="line">18</span><br><span class="line">19</span><br><span class="line">20</span><br><span class="line">21</span><br><span class="line">22</span><br><span class="line">23</span><br><span class="line">24</span><br><span class="line">25</span><br><span class="line">26</span><br><span class="line">27</span><br><span class="line">28</span><br><span class="line">29</span><br><span class="line">30</span><br><span class="line">31</span><br><span class="line">32</span><br><span class="line">33</span><br><span class="line">34</span><br><span class="line">35</span><br><span class="line">36</span><br><span class="line">37</span><br><span class="line">38</span><br><span class="line">39</span><br><span class="line">40</span><br><span class="line">41</span><br><span class="line">42</span><br><span class="line">43</span><br><span class="line">44</span><br><span class="line">45</span><br><span class="line">46</span><br><span class="line">47</span><br><span class="line">48</span><br><span class="line">49</span><br><span class="line">50</span><br><span class="line">51</span><br><span class="line">52</span><br><span class="line">53</span><br><span class="line">54</span><br></pre></td><td class="code"><pre><span class="line"># ## ## ## ## ## ## ## ## ## ## ## ## ## ## ## ## ## #</span><br><span class="line">#              Yet-Another-Bench-Script              #</span><br><span class="line">#                     v2025-04-20                    #</span><br><span class="line"># https://github.com/masonr/yet-another-bench-script #</span><br><span class="line"># ## ## ## ## ## ## ## ## ## ## ## ## ## ## ## ## ## #</span><br><span class="line"></span><br><span class="line">Sat Nov  8 00:56:01 UTC 2025</span><br><span class="line"></span><br><span class="line">Basic System Information:</span><br><span class="line">---------------------------------</span><br><span class="line">Uptime     : 34 days, 7 hours, 52 minutes</span><br><span class="line">Processor  : AMD Ryzen 9 9950X 16-Core Processor</span><br><span class="line">CPU cores  : 2 @ 4291.916 MHz</span><br><span class="line">AES-NI     : ✔ Enabled</span><br><span class="line">VM-x/AMD-V : ✔ Enabled</span><br><span class="line">RAM        : 1.9 GiB</span><br><span class="line">Swap       : 1024.0 MiB</span><br><span class="line">Disk       : 14.6 GiB</span><br><span class="line">Distro     : Debian GNU/Linux 13 (trixie)</span><br><span class="line">Kernel     : 6.12.48+deb13-amd64</span><br><span class="line">VM Type    :</span><br><span class="line">IPv4/IPv6  : ✔ Online / ✔ Online</span><br><span class="line"></span><br><span class="line">IPv6 Network Information:</span><br><span class="line">---------------------------------</span><br><span class="line">ISP        : DigitalFyre Internet Solutions, LLC.</span><br><span class="line">ASN        : AS64245 DigitalFyre Internet Solutions, LLC.</span><br><span class="line">Host       : DigitalFyre Internet Solutions, LLC.</span><br><span class="line">Location   : Los Angeles, California (CA)</span><br><span class="line">Country    : United States</span><br><span class="line"></span><br><span class="line">fio Disk Speed Tests (Mixed R/W 50/50) (Partition /dev/sda3):</span><br><span class="line">---------------------------------</span><br><span class="line">Block Size | 4k            (IOPS) | 64k           (IOPS)</span><br><span class="line">  ------   | ---            ----  | ----           ----</span><br><span class="line">Read       | 478.49 MB/s (119.6k) | 457.79 MB/s   (7.1k)</span><br><span class="line">Write      | 479.76 MB/s (119.9k) | 460.20 MB/s   (7.1k)</span><br><span class="line">Total      | 958.25 MB/s (239.5k) | 917.99 MB/s  (14.3k)</span><br><span class="line">           |                      |</span><br><span class="line">Block Size | 512k          (IOPS) | 1m            (IOPS)</span><br><span class="line">  ------   | ---            ----  | ----           ----</span><br><span class="line">Read       | 873.02 MB/s   (1.7k) | 1.18 GB/s     (1.1k)</span><br><span class="line">Write      | 919.41 MB/s   (1.7k) | 1.26 GB/s     (1.2k)</span><br><span class="line">Total      | 1.79 GB/s     (3.5k) | 2.44 GB/s     (2.3k)</span><br><span class="line"></span><br><span class="line">Geekbench 6 Benchmark Test:</span><br><span class="line">---------------------------------</span><br><span class="line">Test            | Value</span><br><span class="line">                |</span><br><span class="line">Single Core     | 3169</span><br><span class="line">Multi Core      | 5388</span><br><span class="line">Full Test       | https://browser.geekbench.com/v6/cpu/14914152</span><br><span class="line"></span><br><span class="line">YABS completed in 5 min 23 sec</span><br></pre></td></tr></table></figure><h1 id="Onidel-New-York"><a href="#Onidel-New-York" class="headerlink" title="Onidel New York"></a>Onidel New York</h1><h2 id="Geekbench-6-5"><a href="#Geekbench-6-5" class="headerlink" title="Geekbench 6"></a>Geekbench 6</h2><figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br><span class="line">18</span><br><span class="line">19</span><br><span class="line">20</span><br><span class="line">21</span><br><span class="line">22</span><br><span class="line">23</span><br><span class="line">24</span><br><span class="line">25</span><br><span class="line">26</span><br><span class="line">27</span><br><span class="line">28</span><br><span class="line">29</span><br><span class="line">30</span><br><span class="line">31</span><br><span class="line">32</span><br><span class="line">33</span><br><span class="line">34</span><br><span class="line">35</span><br><span class="line">36</span><br><span class="line">37</span><br><span class="line">38</span><br><span class="line">39</span><br><span class="line">40</span><br><span class="line">41</span><br><span class="line">42</span><br><span class="line">43</span><br><span class="line">44</span><br><span class="line">45</span><br><span class="line">46</span><br><span class="line">47</span><br><span class="line">48</span><br><span class="line">49</span><br><span class="line">50</span><br><span class="line">51</span><br><span class="line">52</span><br><span class="line">53</span><br><span class="line">54</span><br></pre></td><td class="code"><pre><span class="line"># ## ## ## ## ## ## ## ## ## ## ## ## ## ## ## ## ## #</span><br><span class="line">#              Yet-Another-Bench-Script              #</span><br><span class="line">#                     v2025-04-20                    #</span><br><span class="line"># https://github.com/masonr/yet-another-bench-script #</span><br><span class="line"># ## ## ## ## ## ## ## ## ## ## ## ## ## ## ## ## ## #</span><br><span class="line"></span><br><span class="line">Mon Nov  3 03:30:43 UTC 2025</span><br><span class="line"></span><br><span class="line">Basic System Information:</span><br><span class="line">---------------------------------</span><br><span class="line">Uptime     : 0 days, 0 hours, 10 minutes</span><br><span class="line">Processor  : AMD EPYC 7713 64-Core Processor</span><br><span class="line">CPU cores  : 8 @ 2000.004 MHz</span><br><span class="line">AES-NI     : ✔ Enabled</span><br><span class="line">VM-x/AMD-V : ✔ Enabled</span><br><span class="line">RAM        : 7.8 GiB</span><br><span class="line">Swap       : 0.0 KiB</span><br><span class="line">Disk       : 78.5 GiB</span><br><span class="line">Distro     : Debian GNU/Linux 13 (trixie)</span><br><span class="line">Kernel     : 6.12.48+deb13-amd64</span><br><span class="line">VM Type    :</span><br><span class="line">IPv4/IPv6  : ✔ Online / ✔ Online</span><br><span class="line"></span><br><span class="line">IPv6 Network Information:</span><br><span class="line">---------------------------------</span><br><span class="line">ISP        : NoPKT LLC</span><br><span class="line">ASN        : Unknown</span><br><span class="line">Host       : Onidel Pty Ltd</span><br><span class="line">Location   : Secaucus, New Jersey (NJ)</span><br><span class="line">Country    : United States</span><br><span class="line"></span><br><span class="line">fio Disk Speed Tests (Mixed R/W 50/50) (Partition /dev/vda1):</span><br><span class="line">---------------------------------</span><br><span class="line">Block Size | 4k            (IOPS) | 64k           (IOPS)</span><br><span class="line">  ------   | ---            ----  | ----           ----</span><br><span class="line">Read       | 368.01 MB/s  (92.0k) | 4.98 GB/s    (77.8k)</span><br><span class="line">Write      | 368.98 MB/s  (92.2k) | 5.00 GB/s    (78.2k)</span><br><span class="line">Total      | 737.00 MB/s (184.2k) | 9.98 GB/s   (156.0k)</span><br><span class="line">           |                      |</span><br><span class="line">Block Size | 512k          (IOPS) | 1m            (IOPS)</span><br><span class="line">  ------   | ---            ----  | ----           ----</span><br><span class="line">Read       | 17.61 GB/s   (34.3k) | 21.36 GB/s   (20.8k)</span><br><span class="line">Write      | 18.54 GB/s   (36.2k) | 22.78 GB/s   (22.2k)</span><br><span class="line">Total      | 36.15 GB/s   (70.6k) | 44.15 GB/s   (43.1k)</span><br><span class="line"></span><br><span class="line">Geekbench 6 Benchmark Test:</span><br><span class="line">---------------------------------</span><br><span class="line">Test            | Value</span><br><span class="line">                |</span><br><span class="line">Single Core     | 1669</span><br><span class="line">Multi Core      | 8390</span><br><span class="line">Full Test       | https://browser.geekbench.com/v6/cpu/14815610</span><br><span class="line"></span><br><span class="line">YABS completed in 5 min 47 sec</span><br></pre></td></tr></table></figure><h1 id="Onidel-Singapore"><a href="#Onidel-Singapore" class="headerlink" title="Onidel Singapore"></a>Onidel Singapore</h1><h2 id="Geekbench-6-6"><a href="#Geekbench-6-6" class="headerlink" title="Geekbench 6"></a>Geekbench 6</h2><figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br><span class="line">18</span><br><span class="line">19</span><br><span class="line">20</span><br><span class="line">21</span><br><span class="line">22</span><br><span class="line">23</span><br><span class="line">24</span><br><span class="line">25</span><br><span class="line">26</span><br><span class="line">27</span><br><span class="line">28</span><br><span class="line">29</span><br><span class="line">30</span><br><span class="line">31</span><br><span class="line">32</span><br><span class="line">33</span><br><span class="line">34</span><br><span class="line">35</span><br><span class="line">36</span><br><span class="line">37</span><br><span class="line">38</span><br><span class="line">39</span><br><span class="line">40</span><br><span class="line">41</span><br><span class="line">42</span><br><span class="line">43</span><br><span class="line">44</span><br><span class="line">45</span><br><span class="line">46</span><br><span class="line">47</span><br><span class="line">48</span><br><span class="line">49</span><br><span class="line">50</span><br><span class="line">51</span><br><span class="line">52</span><br><span class="line">53</span><br><span class="line">54</span><br></pre></td><td class="code"><pre><span class="line"># ## ## ## ## ## ## ## ## ## ## ## ## ## ## ## ## ## #</span><br><span class="line">#              Yet-Another-Bench-Script              #</span><br><span class="line">#                     v2025-04-20                    #</span><br><span class="line"># https://github.com/masonr/yet-another-bench-script #</span><br><span class="line"># ## ## ## ## ## ## ## ## ## ## ## ## ## ## ## ## ## #</span><br><span class="line"></span><br><span class="line">Fri Nov  7 05:20:58 UTC 2025</span><br><span class="line"></span><br><span class="line">Basic System Information:</span><br><span class="line">---------------------------------</span><br><span class="line">Uptime     : 3 days, 14 hours, 46 minutes</span><br><span class="line">Processor  : AMD EPYC 9375F 32-Core Processor</span><br><span class="line">CPU cores  : 6 @ 3800.000 MHz</span><br><span class="line">AES-NI     : ✔ Enabled</span><br><span class="line">VM-x/AMD-V : ✔ Enabled</span><br><span class="line">RAM        : 15.6 GiB</span><br><span class="line">Swap       : 0.0 KiB</span><br><span class="line">Disk       : 58.9 GiB</span><br><span class="line">Distro     : Debian GNU/Linux 13 (trixie)</span><br><span class="line">Kernel     : 6.12.48+deb13-amd64</span><br><span class="line">VM Type    :</span><br><span class="line">IPv4/IPv6  : ✔ Online / ✔ Online</span><br><span class="line"></span><br><span class="line">IPv6 Network Information:</span><br><span class="line">---------------------------------</span><br><span class="line">ISP        : Onidel Pty Ltd</span><br><span class="line">ASN        : AS152900 Onidel Pty Ltd</span><br><span class="line">Host       : Onidel Pty Ltd</span><br><span class="line">Location   : Singapore, North West (03)</span><br><span class="line">Country    : Singapore</span><br><span class="line"></span><br><span class="line">fio Disk Speed Tests (Mixed R/W 50/50) (Partition /dev/vda1):</span><br><span class="line">---------------------------------</span><br><span class="line">Block Size | 4k            (IOPS) | 64k           (IOPS)</span><br><span class="line">  ------   | ---            ----  | ----           ----</span><br><span class="line">Read       | 530.49 MB/s (132.6k) | 7.26 GB/s   (113.4k)</span><br><span class="line">Write      | 531.89 MB/s (132.9k) | 7.30 GB/s   (114.0k)</span><br><span class="line">Total      | 1.06 GB/s   (265.5k) | 14.56 GB/s  (227.5k)</span><br><span class="line">           |                      |</span><br><span class="line">Block Size | 512k          (IOPS) | 1m            (IOPS)</span><br><span class="line">  ------   | ---            ----  | ----           ----</span><br><span class="line">Read       | 32.94 GB/s   (64.3k) | 31.71 GB/s   (30.9k)</span><br><span class="line">Write      | 34.70 GB/s   (67.7k) | 33.82 GB/s   (33.0k)</span><br><span class="line">Total      | 67.65 GB/s  (132.1k) | 65.53 GB/s   (63.9k)</span><br><span class="line"></span><br><span class="line">Geekbench 6 Benchmark Test:</span><br><span class="line">---------------------------------</span><br><span class="line">Test            | Value</span><br><span class="line">                |</span><br><span class="line">Single Core     | 2822</span><br><span class="line">Multi Core      | 11823</span><br><span class="line">Full Test       | https://browser.geekbench.com/v6/cpu/14897391</span><br><span class="line"></span><br><span class="line">YABS completed in 4 min 56 sec</span><br></pre></td></tr></table></figure><h2 id="Geekbench-5-2"><a href="#Geekbench-5-2" class="headerlink" title="Geekbench 5"></a>Geekbench 5</h2><figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br><span class="line">18</span><br><span class="line">19</span><br><span class="line">20</span><br><span class="line">21</span><br><span class="line">22</span><br><span class="line">23</span><br><span class="line">24</span><br><span class="line">25</span><br><span class="line">26</span><br><span class="line">27</span><br><span class="line">28</span><br><span class="line">29</span><br><span class="line">30</span><br><span class="line">31</span><br><span class="line">32</span><br><span class="line">33</span><br><span class="line">34</span><br><span class="line">35</span><br><span class="line">36</span><br><span class="line">37</span><br><span class="line">38</span><br><span class="line">39</span><br><span class="line">40</span><br><span class="line">41</span><br><span class="line">42</span><br><span class="line">43</span><br><span class="line">44</span><br><span class="line">45</span><br><span class="line">46</span><br><span class="line">47</span><br><span class="line">48</span><br><span class="line">49</span><br><span class="line">50</span><br><span class="line">51</span><br><span class="line">52</span><br><span class="line">53</span><br><span class="line">54</span><br></pre></td><td class="code"><pre><span class="line"># ## ## ## ## ## ## ## ## ## ## ## ## ## ## ## ## ## #</span><br><span class="line">#              Yet-Another-Bench-Script              #</span><br><span class="line">#                     v2025-04-20                    #</span><br><span class="line"># https://github.com/masonr/yet-another-bench-script #</span><br><span class="line"># ## ## ## ## ## ## ## ## ## ## ## ## ## ## ## ## ## #</span><br><span class="line"></span><br><span class="line">Sat Nov  8 07:10:16 UTC 2025</span><br><span class="line"></span><br><span class="line">Basic System Information:</span><br><span class="line">---------------------------------</span><br><span class="line">Uptime     : 4 days, 16 hours, 35 minutes</span><br><span class="line">Processor  : AMD EPYC 9375F 32-Core Processor</span><br><span class="line">CPU cores  : 6 @ 3800.000 MHz</span><br><span class="line">AES-NI     : ✔ Enabled</span><br><span class="line">VM-x/AMD-V : ✔ Enabled</span><br><span class="line">RAM        : 15.6 GiB</span><br><span class="line">Swap       : 0.0 KiB</span><br><span class="line">Disk       : 58.9 GiB</span><br><span class="line">Distro     : Debian GNU/Linux 13 (trixie)</span><br><span class="line">Kernel     : 6.12.48+deb13-amd64</span><br><span class="line">VM Type    :</span><br><span class="line">IPv4/IPv6  : ✔ Online / ✔ Online</span><br><span class="line"></span><br><span class="line">IPv6 Network Information:</span><br><span class="line">---------------------------------</span><br><span class="line">ISP        : Onidel Pty Ltd</span><br><span class="line">ASN        : AS152900 Onidel Pty Ltd</span><br><span class="line">Host       : Onidel Pty Ltd</span><br><span class="line">Location   : Singapore, North West (03)</span><br><span class="line">Country    : Singapore</span><br><span class="line"></span><br><span class="line">fio Disk Speed Tests (Mixed R/W 50/50) (Partition /dev/vda1):</span><br><span class="line">---------------------------------</span><br><span class="line">Block Size | 4k            (IOPS) | 64k           (IOPS)</span><br><span class="line">  ------   | ---            ----  | ----           ----</span><br><span class="line">Read       | 542.16 MB/s (135.5k) | 7.74 GB/s   (121.0k)</span><br><span class="line">Write      | 543.59 MB/s (135.8k) | 7.78 GB/s   (121.6k)</span><br><span class="line">Total      | 1.08 GB/s   (271.4k) | 15.53 GB/s  (242.7k)</span><br><span class="line">           |                      |</span><br><span class="line">Block Size | 512k          (IOPS) | 1m            (IOPS)</span><br><span class="line">  ------   | ---            ----  | ----           ----</span><br><span class="line">Read       | 37.14 GB/s   (72.5k) | 32.73 GB/s   (31.9k)</span><br><span class="line">Write      | 39.11 GB/s   (76.4k) | 34.91 GB/s   (34.0k)</span><br><span class="line">Total      | 76.26 GB/s  (148.9k) | 67.65 GB/s   (66.0k)</span><br><span class="line"></span><br><span class="line">Geekbench 5 Benchmark Test:</span><br><span class="line">---------------------------------</span><br><span class="line">Test            | Value</span><br><span class="line">                |</span><br><span class="line">Single Core     | 2109</span><br><span class="line">Multi Core      | 11133</span><br><span class="line">Full Test       | https://browser.geekbench.com/v5/cpu/23891730</span><br><span class="line"></span><br><span class="line">YABS completed in 1 min 55 sec</span><br></pre></td></tr></table></figure><h1 id="Other"><a href="#Other" class="headerlink" title="Other"></a>Other</h1><figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br><span class="line">18</span><br><span class="line">19</span><br><span class="line">20</span><br><span class="line">21</span><br><span class="line">22</span><br><span class="line">23</span><br><span class="line">24</span><br><span class="line">25</span><br><span class="line">26</span><br><span class="line">27</span><br><span class="line">28</span><br><span class="line">29</span><br><span class="line">30</span><br><span class="line">31</span><br><span class="line">32</span><br></pre></td><td class="code"><pre><span class="line"># ## ## ## ## ## ## ## ## ## ## ## ## ## ## ## ## ## #</span><br><span class="line">#              Yet-Another-Bench-Script              #</span><br><span class="line">#                     v2025-04-20                    #</span><br><span class="line"># https://github.com/masonr/yet-another-bench-script #</span><br><span class="line"># ## ## ## ## ## ## ## ## ## ## ## ## ## ## ## ## ## #</span><br><span class="line"></span><br><span class="line">Tue Nov 11 09:16:34 CST 2025</span><br><span class="line"></span><br><span class="line">Basic System Information:</span><br><span class="line">---------------------------------</span><br><span class="line">Uptime     : 2 days, 14 hours, 32 minutes</span><br><span class="line">Processor  : AMD EPYC 9K84 96-Core Processor</span><br><span class="line">CPU cores  : 360 @ 2600.038 MHz</span><br><span class="line">AES-NI     : ✔ Enabled</span><br><span class="line">VM-x/AMD-V : ❌ Disabled</span><br><span class="line">RAM        : 2.0 TiB</span><br><span class="line">Swap       : 0.0 KiB</span><br><span class="line">Disk       : 14.3 TiB</span><br><span class="line">Distro     : Debian GNU/Linux 13 (trixie)</span><br><span class="line">Kernel     : 6.12.48+deb13-amd64</span><br><span class="line">VM Type    :</span><br><span class="line">IPv4/IPv6  : ✔ Online / ❌ Offline</span><br><span class="line"></span><br><span class="line">IPv4 Network Information:</span><br><span class="line">---------------------------------</span><br><span class="line">ISP        : Shenzhen Tencent Computer Systems Company Limited</span><br><span class="line">ASN        : AS45090 Shenzhen Tencent Computer Systems Company Limited</span><br><span class="line">Host       : Tencent Cloud Computing (Beijing) Co., Ltd</span><br><span class="line">Location   : Nanjing, Jiangsu (JS)</span><br><span class="line">Country    : China</span><br><span class="line"></span><br><span class="line">YABS completed in 6 sec</span><br></pre></td></tr></table></figure><figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br><span class="line">18</span><br><span class="line">19</span><br><span class="line">20</span><br><span class="line">21</span><br><span class="line">22</span><br><span class="line">23</span><br><span class="line">24</span><br><span class="line">25</span><br><span class="line">26</span><br><span class="line">27</span><br><span class="line">28</span><br><span class="line">29</span><br><span class="line">30</span><br><span class="line">31</span><br><span class="line">32</span><br><span class="line">33</span><br><span class="line">34</span><br><span class="line">35</span><br><span class="line">36</span><br><span class="line">37</span><br><span class="line">38</span><br><span class="line">39</span><br><span class="line">40</span><br><span class="line">41</span><br><span class="line">42</span><br><span class="line">43</span><br><span class="line">44</span><br><span class="line">45</span><br><span class="line">46</span><br><span class="line">47</span><br><span class="line">48</span><br><span class="line">49</span><br><span class="line">50</span><br><span class="line">51</span><br><span class="line">52</span><br><span class="line">53</span><br><span class="line">54</span><br><span class="line">55</span><br><span class="line">56</span><br><span class="line">57</span><br><span class="line">58</span><br><span class="line">59</span><br><span class="line">60</span><br><span class="line">61</span><br><span class="line">62</span><br><span class="line">63</span><br><span class="line">64</span><br><span class="line">65</span><br><span class="line">66</span><br><span class="line">67</span><br><span class="line">68</span><br><span class="line">69</span><br><span class="line">70</span><br><span class="line">71</span><br><span class="line">72</span><br><span class="line">73</span><br><span class="line">74</span><br><span class="line">75</span><br><span class="line">76</span><br><span class="line">77</span><br><span class="line">78</span><br><span class="line">79</span><br><span class="line">80</span><br><span class="line">81</span><br><span class="line">82</span><br><span class="line">83</span><br><span class="line">84</span><br></pre></td><td class="code"><pre><span class="line"># ## ## ## ## ## ## ## ## ## ## ## ## ## ## ## ## ## #</span><br><span class="line">#              Yet-Another-Bench-Script              #</span><br><span class="line">#                     v2025-04-20                    #</span><br><span class="line"># https://github.com/masonr/yet-another-bench-script #</span><br><span class="line"># ## ## ## ## ## ## ## ## ## ## ## ## ## ## ## ## ## #</span><br><span class="line"></span><br><span class="line">Tue Nov 11 11:07:41 CST 2025</span><br><span class="line"></span><br><span class="line">Basic System Information:</span><br><span class="line">---------------------------------</span><br><span class="line">Uptime     : 4 days, 21 hours, 43 minutes</span><br><span class="line">Processor  : INTEL(R) XEON(R) PLATINUM 8558</span><br><span class="line">CPU cores  : 192 @ 2100.000 MHz</span><br><span class="line">AES-NI     : ✔ Enabled</span><br><span class="line">VM-x/AMD-V : ✔ Enabled</span><br><span class="line">RAM        : 1007.0 GiB</span><br><span class="line">Swap       : 8.0 GiB</span><br><span class="line">Disk       : 1.7 TiB</span><br><span class="line">Distro     : Debian GNU/Linux 13 (trixie)</span><br><span class="line">Kernel     : 6.12.48+deb13-amd64</span><br><span class="line">VM Type    :</span><br><span class="line">IPv4/IPv6  : ✔ Online / ❌  Offline</span><br><span class="line"></span><br><span class="line">fio Disk Speed Tests (Mixed R/W 50/50) (Partition /dev/mapper/rl_t--shaxl--5090--01-root):</span><br><span class="line">---------------------------------</span><br><span class="line">Block Size | 4k            (IOPS) | 64k           (IOPS)</span><br><span class="line">  ------   | ---            ----  | ----           ---- </span><br><span class="line">Read       | 178.79 MB/s  (44.6k) | 260.90 MB/s   (4.0k)</span><br><span class="line">Write      | 179.26 MB/s  (44.8k) | 262.27 MB/s   (4.0k)</span><br><span class="line">Total      | 358.05 MB/s  (89.5k) | 523.17 MB/s   (8.1k)</span><br><span class="line">           |                      |                     </span><br><span class="line">Block Size | 512k          (IOPS) | 1m            (IOPS)</span><br><span class="line">  ------   | ---            ----  | ----           ---- </span><br><span class="line">Read       | 261.10 MB/s    (509) | 260.03 MB/s    (253)</span><br><span class="line">Write      | 274.97 MB/s    (537) | 277.35 MB/s    (270)</span><br><span class="line">Total      | 536.08 MB/s   (1.0k) | 537.38 MB/s    (523)</span><br><span class="line"></span><br><span class="line"></span><br><span class="line"># ## ## ## ## ## ## ## ## ## ## ## ## ## ## ## ## ## #</span><br><span class="line">#              Yet-Another-Bench-Script              #</span><br><span class="line">#                     v2025-04-20                    #</span><br><span class="line"># https://github.com/masonr/yet-another-bench-script #</span><br><span class="line"># ## ## ## ## ## ## ## ## ## ## ## ## ## ## ## ## ## #</span><br><span class="line"></span><br><span class="line">Tue Nov 11 09:09:48 CST 2025</span><br><span class="line"></span><br><span class="line">Basic System Information:</span><br><span class="line">---------------------------------</span><br><span class="line">Uptime     : 4 days, 19 hours, 45 minutes</span><br><span class="line">Processor  : INTEL(R) XEON(R) PLATINUM 8558</span><br><span class="line">CPU cores  : 192 @ 2100.000 MHz</span><br><span class="line">AES-NI     : ✔ Enabled</span><br><span class="line">VM-x/AMD-V : ✔ Enabled</span><br><span class="line">RAM        : 1007.0 GiB</span><br><span class="line">Swap       : 8.0 GiB</span><br><span class="line">Disk       : 1.7 TiB</span><br><span class="line">Distro     : Debian GNU/Linux 13 (trixie)</span><br><span class="line">Kernel     : 6.12.48+deb13-amd64</span><br><span class="line">VM Type    :</span><br><span class="line">IPv4/IPv6  : ✔ Online / ❌ Offline</span><br><span class="line"></span><br><span class="line">fio Disk Speed Tests (Mixed R/W 50/50) (Partition /dev/mapper/rl_t--shaxl--5090--01-root):</span><br><span class="line">---------------------------------</span><br><span class="line">Block Size | 4k            (IOPS) | 64k           (IOPS)</span><br><span class="line">  ------   | ---            ----  | ----           ---- </span><br><span class="line">Read       | 178.33 MB/s  (44.5k) | 260.83 MB/s   (4.0k)</span><br><span class="line">Write      | 178.80 MB/s  (44.7k) | 262.20 MB/s   (4.0k)</span><br><span class="line">Total      | 357.14 MB/s  (89.2k) | 523.04 MB/s   (8.1k)</span><br><span class="line">           |                      |                     </span><br><span class="line">Block Size | 512k          (IOPS) | 1m            (IOPS)</span><br><span class="line">  ------   | ---            ----  | ----           ---- </span><br><span class="line">Read       | 261.00 MB/s    (509) | 260.10 MB/s    (254)</span><br><span class="line">Write      | 274.87 MB/s    (536) | 277.42 MB/s    (270)</span><br><span class="line">Total      | 535.87 MB/s   (1.0k) | 537.52 MB/s    (524)</span><br><span class="line"></span><br><span class="line">Geekbench 5 Benchmark Test:</span><br><span class="line">---------------------------------</span><br><span class="line">Test            | Value                         </span><br><span class="line">                |                               </span><br><span class="line">Single Core     | 1617                          </span><br><span class="line">Multi Core      | 76916                         </span><br><span class="line">Full Test       | https://browser.geekbench.com/v5/cpu/23896836</span><br><span class="line"></span><br><span class="line">YABS completed in 4 min 49 sec</span><br></pre></td></tr></table></figure><figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br><span class="line">18</span><br><span class="line">19</span><br><span class="line">20</span><br><span class="line">21</span><br><span class="line">22</span><br><span class="line">23</span><br><span class="line">24</span><br><span class="line">25</span><br><span class="line">26</span><br><span class="line">27</span><br><span class="line">28</span><br><span class="line">29</span><br><span class="line">30</span><br><span class="line">31</span><br><span class="line">32</span><br><span class="line">33</span><br><span class="line">34</span><br><span class="line">35</span><br><span class="line">36</span><br><span class="line">37</span><br><span class="line">38</span><br><span class="line">39</span><br><span class="line">40</span><br><span class="line">41</span><br><span class="line">42</span><br><span class="line">43</span><br><span class="line">44</span><br><span class="line">45</span><br><span class="line">46</span><br><span class="line">47</span><br><span class="line">48</span><br><span class="line">49</span><br><span class="line">50</span><br><span class="line">51</span><br><span class="line">52</span><br><span class="line">53</span><br><span class="line">54</span><br><span class="line">55</span><br><span class="line">56</span><br><span class="line">57</span><br><span class="line">58</span><br><span class="line">59</span><br><span class="line">60</span><br><span class="line">61</span><br><span class="line">62</span><br><span class="line">63</span><br><span class="line">64</span><br><span class="line">65</span><br><span class="line">66</span><br><span class="line">67</span><br><span class="line">68</span><br><span class="line">69</span><br><span class="line">70</span><br><span class="line">71</span><br><span class="line">72</span><br><span class="line">73</span><br><span class="line">74</span><br><span class="line">75</span><br><span class="line">76</span><br><span class="line">77</span><br><span class="line">78</span><br><span class="line">79</span><br><span class="line">80</span><br><span class="line">81</span><br><span class="line">82</span><br><span class="line">83</span><br><span class="line">84</span><br><span class="line">85</span><br><span class="line">86</span><br><span class="line">87</span><br><span class="line">88</span><br><span class="line">89</span><br><span class="line">90</span><br><span class="line">91</span><br><span class="line">92</span><br><span class="line">93</span><br><span class="line">94</span><br><span class="line">95</span><br><span class="line">96</span><br><span class="line">97</span><br><span class="line">98</span><br><span class="line">99</span><br><span class="line">100</span><br><span class="line">101</span><br></pre></td><td class="code"><pre><span class="line"># ## ## ## ## ## ## ## ## ## ## ## ## ## ## ## ## ## #</span><br><span class="line">#              Yet-Another-Bench-Script              #</span><br><span class="line">#                     v2025-04-20                    #</span><br><span class="line"># https://github.com/masonr/yet-another-bench-script #</span><br><span class="line"># ## ## ## ## ## ## ## ## ## ## ## ## ## ## ## ## ## #</span><br><span class="line"></span><br><span class="line">Tue Nov 11 10:20:20 CST 2025</span><br><span class="line"></span><br><span class="line">Basic System Information:</span><br><span class="line">---------------------------------</span><br><span class="line">Uptime     : 5 days, 4 hours, 0 minutes</span><br><span class="line">Processor  : AMD EPYC 7R32</span><br><span class="line">CPU cores  : 16 @ 2800.000 MHz</span><br><span class="line">AES-NI     : ✔ Enabled</span><br><span class="line">VM-x/AMD-V : ❌ Disabled</span><br><span class="line">RAM        : 61.5 GiB</span><br><span class="line">Swap       : 0.0 KiB</span><br><span class="line">Disk       : 548.9 GiB</span><br><span class="line">Distro     : Debian GNU/Linux 13 (trixie)</span><br><span class="line">Kernel     : 6.12.48+deb13-amd64</span><br><span class="line">VM Type    :</span><br><span class="line">IPv4/IPv6  : ✔ Online / ❌ Offline</span><br><span class="line"></span><br><span class="line">IPv4 Network Information:</span><br><span class="line">---------------------------------</span><br><span class="line">ISP        : Beijing Guanghuan Xinwang Digital</span><br><span class="line">ASN        : AS55960 Beijing Guanghuan Xinwang Digital</span><br><span class="line">Host       : AWS EC2 (cn-north-1)</span><br><span class="line">Location   : Beijing, Beijing (BJ)</span><br><span class="line">Country    : China</span><br><span class="line"></span><br><span class="line">fio Disk Speed Tests (Mixed R/W 50/50) (Partition /dev/nvme0n1p1):</span><br><span class="line">---------------------------------</span><br><span class="line">Block Size | 4k            (IOPS) | 64k           (IOPS)</span><br><span class="line">  ------   | ---            ----  | ----           ---- </span><br><span class="line">Read       | 6.20 MB/s     (1.5k) | 67.62 MB/s    (1.0k)</span><br><span class="line">Write      | 6.19 MB/s     (1.5k) | 67.95 MB/s    (1.0k)</span><br><span class="line">Total      | 12.39 MB/s    (3.0k) | 135.58 MB/s   (2.1k)</span><br><span class="line">           |                      |                     </span><br><span class="line">Block Size | 512k          (IOPS) | 1m            (IOPS)</span><br><span class="line">  ------   | ---            ----  | ----           ---- </span><br><span class="line">Read       | 64.84 MB/s     (126) | 63.97 MB/s      (62)</span><br><span class="line">Write      | 67.94 MB/s     (132) | 68.66 MB/s      (67)</span><br><span class="line">Total      | 132.78 MB/s    (258) | 132.64 MB/s    (129)</span><br><span class="line"></span><br><span class="line">Geekbench 6 Benchmark Test:</span><br><span class="line">---------------------------------</span><br><span class="line">Test            | Value                         </span><br><span class="line">                |                               </span><br><span class="line">Single Core     | 1401                          </span><br><span class="line">Multi Core      | 8440                          </span><br><span class="line">Full Test       | https://browser.geekbench.com/v6/cpu/14970175</span><br><span class="line"></span><br><span class="line">YABS completed in 8 min 36 sec</span><br><span class="line"></span><br><span class="line"># ## ## ## ## ## ## ## ## ## ## ## ## ## ## ## ## ## #</span><br><span class="line">#              Yet-Another-Bench-Script              #</span><br><span class="line">#                     v2025-04-20                    #</span><br><span class="line"># https://github.com/masonr/yet-another-bench-script #</span><br><span class="line"># ## ## ## ## ## ## ## ## ## ## ## ## ## ## ## ## ## #</span><br><span class="line"></span><br><span class="line">Tue Nov 11 09:55:29 CST 2025</span><br><span class="line"></span><br><span class="line">Basic System Information:</span><br><span class="line">---------------------------------</span><br><span class="line">Uptime     : 4 days, 23 hours, 39 minutes</span><br><span class="line">Processor  : AMD EPYC 7R32</span><br><span class="line">CPU cores  : 16 @ 2800.000 MHz</span><br><span class="line">AES-NI     : ✔ Enabled</span><br><span class="line">VM-x/AMD-V : ❌ Disabled</span><br><span class="line">RAM        : 61.5 GiB</span><br><span class="line">Swap       : 0.0 KiB</span><br><span class="line">Disk       : 548.9 GiB</span><br><span class="line">Distro     : Debian GNU/Linux 13 (trixie)</span><br><span class="line">Kernel     : 6.12.48+deb13-amd64</span><br><span class="line">VM Type    :</span><br><span class="line">IPv4/IPv6  : ✔ Online / ❌ Offline</span><br><span class="line"></span><br><span class="line">fio Disk Speed Tests (Mixed R/W 50/50) (Partition /dev/nvme0n1p1):</span><br><span class="line">---------------------------------</span><br><span class="line">Block Size | 4k            (IOPS) | 64k           (IOPS)</span><br><span class="line">  ------   | ---            ----  | ----           ---- </span><br><span class="line">Read       | 6.19 MB/s     (1.5k) | 67.58 MB/s    (1.0k)</span><br><span class="line">Write      | 6.19 MB/s     (1.5k) | 67.99 MB/s    (1.0k)</span><br><span class="line">Total      | 12.38 MB/s    (3.0k) | 135.58 MB/s   (2.1k)</span><br><span class="line">           |                      |                     </span><br><span class="line">Block Size | 512k          (IOPS) | 1m            (IOPS)</span><br><span class="line">  ------   | ---            ----  | ----           ---- </span><br><span class="line">Read       | 64.84 MB/s     (126) | 64.04 MB/s      (62)</span><br><span class="line">Write      | 68.08 MB/s     (132) | 68.73 MB/s      (67)</span><br><span class="line">Total      | 132.92 MB/s    (258) | 132.78 MB/s    (129)</span><br><span class="line"></span><br><span class="line">Geekbench 5 Benchmark Test:</span><br><span class="line">---------------------------------</span><br><span class="line">Test            | Value                         </span><br><span class="line">                |                               </span><br><span class="line">Single Core     | 1061                          </span><br><span class="line">Multi Core      | 8645                          </span><br><span class="line">Full Test       | https://browser.geekbench.com/v5/cpu/23896913</span><br><span class="line"></span><br><span class="line">YABS completed in 9 min 29 sec</span><br></pre></td></tr></table></figure>]]>
    </content>
    <id>https://kebyn.cc/2025/11/10/yabs/</id>
    <link href="https://kebyn.cc/2025/11/10/yabs/"/>
    <published>2025-11-10T17:31:23.000Z</published>
    <summary>
      <![CDATA[<h1 id="TYO"><a href="#TYO" class="headerlink" title="TYO"></a>TYO</h1><h2 id="Geekbench-6"><a href="#Geekbench-6" class="headerlink" title="Geekbench 6"></a>Geekbench 6</h2>]]>
    </summary>
    <title>YABS</title>
    <updated>2026-11-15T11:03:55.000Z</updated>
  </entry>
  <entry>
    <author>
      <name>By Kebyn</name>
    </author>
    <category term="AI" scheme="https://kebyn.cc/categories/AI/"/>
    <category term="vLLM" scheme="https://kebyn.cc/tags/vllm/"/>
    <category term="features" scheme="https://kebyn.cc/tags/features/"/>
    <category term="sleep_mode" scheme="https://kebyn.cc/tags/sleep-mode/"/>
    <content>
      <![CDATA[<blockquote><p><a href="https://docs.vllm.ai/en/latest/features/sleep_mode/">https://docs.vllm.ai/en/latest/features/sleep_mode/</a></p></blockquote><p>可以在不停止vLLM服务的情况下，通过接口睡眠、唤醒来切换不同的模型</p><span id="more"></span><h3 id="需要手动指定–gpu-memory-utilization，否则多vLLM显存会冲突"><a href="#需要手动指定–gpu-memory-utilization，否则多vLLM显存会冲突" class="headerlink" title="需要手动指定–gpu-memory-utilization，否则多vLLM显存会冲突"></a>需要手动指定–gpu-memory-utilization，否则多vLLM显存会冲突</h3><figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br></pre></td><td class="code"><pre><span class="line">docker run --rm -it \</span><br><span class="line">  --name Qwen3-4B \</span><br><span class="line">  --runtime=nvidia \</span><br><span class="line">  --entrypoint=&#x27;&#x27; \</span><br><span class="line">  -e VLLM_NO_USAGE_STATS=1 \</span><br><span class="line">  -e VLLM_USE_V1=1 \</span><br><span class="line">  -e VLLM_SERVER_DEV_MODE=1 \</span><br><span class="line">  --cap-add=sys_nice --ipc=host --network host \</span><br><span class="line">  -v /data/cache:/data/cache \</span><br><span class="line">  docker.io/vllm/vllm-openai:v0.11.0 \</span><br><span class="line">  vllm serve Qwen/Qwen3-4B --disable-log-requests --no-enable-prefix-caching --port=8000 --tensor-parallel-size=1 --max-model-len=2048 --gpu-memory-utilization=0.5 --enable-sleep-mode</span><br></pre></td></tr></table></figure>]]>
    </content>
    <id>https://kebyn.cc/2025/11/10/vllm_sleep_mode/</id>
    <link href="https://kebyn.cc/2025/11/10/vllm_sleep_mode/"/>
    <published>2025-11-10T07:45:14.000Z</published>
    <summary>
      <![CDATA[<blockquote>
<p><a href="https://docs.vllm.ai/en/latest/features/sleep_mode/">https://docs.vllm.ai/en/latest/features/sleep_mode/</a></p>
</blockquote>
<p>可以在不停止vLLM服务的情况下，通过接口睡眠、唤醒来切换不同的模型</p>]]>
    </summary>
    <title>vLLM Sleep Mode</title>
    <updated>2026-11-15T11:03:55.000Z</updated>
  </entry>
  <entry>
    <author>
      <name>By Kebyn</name>
    </author>
    <category term="Security" scheme="https://kebyn.cc/categories/Security/"/>
    <category term="linux" scheme="https://kebyn.cc/tags/linux/"/>
    <category term="access control" scheme="https://kebyn.cc/tags/access-control/"/>
    <category term="posix capabilities" scheme="https://kebyn.cc/tags/posix-capabilities/"/>
    <content>
      <![CDATA[<h1 id="Linux-访问控制机制：利用-POSIX-功能提升权限"><a href="#Linux-访问控制机制：利用-POSIX-功能提升权限" class="headerlink" title="Linux 访问控制机制：利用 POSIX 功能提升权限"></a>Linux 访问控制机制：利用 POSIX 功能提升权限</h1><blockquote><p>参考来源 <a href="https://dfir.ch/posts/linux_capabilities/">https://dfir.ch/posts/linux_capabilities/</a></p></blockquote><h2 id="前情提要"><a href="#前情提要" class="headerlink" title="前情提要"></a>前情提要</h2><p>在 Linux 系统中，传统上有两种主要的权限提升机制：SUID（设置用户 ID）和 SGID（设置组 ID）。这些机制允许用户在执行特定二进制文件时临时获得文件所有者或组的权限，通常是 root 用户。然而，这种方法存在安全风险，因为它授予了过多的权限，可能导致系统被滥用。<br>为了解决这些问题，Linux 引入了 POSIX 能力（Capabilities）机制。该机制允许将 root 用户的权限划分为更小、更具体的单元，这些单元可以单独分配给进程。这种方法提高了系统的安全性，因为它允许仅授予进程所需的最低权限，从而减少了潜在的攻击面。</p><p>Capabilities是 Linux 中的一种细粒度访问控制机制，允许比传统超级用户 ( root) 模型更精细的权限。权能将通常与 root 用户关联的权限划分为不同的单元，这些单元可以针对不同的进程单独启用或禁用。这使得权限管理更加安全可控。</p><span id="more"></span><p>例如，某个进程可能需要绑定到特权端口的权限，但不需要任何其他提升的权限。通过使用能力，系统管理员可以更好地控制进程的权限，从而减少潜在的安全风险。<br>要了解我们的 Linux 主机知道多少功能，我们可以查询目录cap_last_cap内的文件&#x2F;proc：</p><figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br></pre></td><td class="code"><pre><span class="line"># cat /proc/sys/kernel/cap_last_cap</span><br><span class="line">40</span><br></pre></td></tr></table></figure><p>该capsh –print命令显示 shell 或调用该命令的进程的当前功能及相关设置。在我们的 Linux 主机上执行此命令时，我们可以看到完整的功能列表。</p><figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br></pre></td><td class="code"><pre><span class="line"># capsh --print</span><br><span class="line">Current: =ep</span><br><span class="line">Bounding set =cap_chown,cap_dac_override,cap_dac_read_search,cap_fowner,cap_fsetid,cap_kill,cap_setgid,cap_setuid,cap_setpcap,cap_linux_immutable,cap_net_bind_service,cap_net_broadcast,cap_net_admin,cap_net_raw,cap_ipc_lock,cap_ipc_owner,cap_sys_module,cap_sys_rawio,cap_sys_chroot,cap_sys_ptrace,cap_sys_pacct,cap_sys_admin,cap_sys_boot,cap_sys_nice,cap_sys_resource,cap_sys_time,cap_sys_tty_config,cap_mknod,cap_lease,cap_audit_write,cap_audit_control,cap_setfcap,cap_mac_override,cap_mac_admin,cap_syslog,cap_wake_alarm,cap_block_suspend,cap_audit_read,cap_perfmon,cap_bpf,cap_checkpoint_restore</span><br></pre></td></tr></table></figure><p>每种能力都对应一个特定的特权操作。</p><h2 id="Python-后门"><a href="#Python-后门" class="headerlink" title="Python 后门"></a>Python 后门</h2><p>该命令setcap用于设置可执行文件的文件权限。该cap_setuid权限允许进程对用户 ID (UID) 进行任意操作，包括将 UID 设置为原本受限制的值（例如UID 0root 用户）。该命令setcap接受一组参数，其中</p><figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br></pre></td><td class="code"><pre><span class="line">e：有效表示该功能已激活</span><br><span class="line">p：允许表示可以使用/允许该功能。</span><br></pre></td></tr></table></figure><p>综上所述，我们将向cap_setuidPython 二进制文件添加以下功能：</p><figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line"># setcap cap_setuid+ep /usr/bin/python3.12</span><br></pre></td></tr></table></figure><p>您可以在这里找到支持的功能列表：</p><figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line"># cat /usr/include/linux/capability.h</span><br></pre></td></tr></table></figure><p>测试<br>为了测试目的，我们创建了一个新用户（malmoeb）并切换到该用户的上下文（useradd &amp;&amp; su）：</p><figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br></pre></td><td class="code"><pre><span class="line"># useradd -m malmoeb</span><br><span class="line"># su malmoeb</span><br><span class="line">$ id</span><br><span class="line">uid=1000(malmoeb) gid=1000(malmoeb) groups=1000(malmoeb)</span><br></pre></td></tr></table></figure><p>使用以下命令行，我们将使用 Python 调用的 bash shell 的 UID 设置为 0 ( UID 0 &#x3D;&#x3D; root)，从而有效地生成一个 root shell：</p><figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br></pre></td><td class="code"><pre><span class="line"></span><br><span class="line">$ /usr/bin/python3 -c &#x27;import os;os.setuid(0);os.system(&quot;/bin/bash&quot;)&#x27;</span><br><span class="line"># id</span><br><span class="line">uid=0(root) gid=1000(malmoeb) groups=1000(malmoeb)</span><br></pre></td></tr></table></figure><p>这种技术令人兴奋的地方在于，我们并没有在二进制文件上设置 suid 位，也没有修改 Python 二进制文件。通过设置权限，我们作为攻击者可以构建一个强大的后门。</p><h2 id="应用"><a href="#应用" class="headerlink" title="应用"></a>应用</h2><p>传统上，系统管理员和安全专业人员专注于查找SUID（设置用户 ID）和SGID（设置组 ID）文件，因为这些文件可用于在特定条件下提升权限。然而，随着 POSIX 功能的引入，查找设置了功能的文件现在也同样重要，如上所示。</p><p>使用以下命令可以枚举所有设置了功能的二进制文件<code>getcap -r</code></p><figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br></pre></td><td class="code"><pre><span class="line"># getcap -r / 2&gt;/dev/null</span><br><span class="line">/usr/lib/x86_64-linux-gnu/gstreamer1.0/gstreamer-1.0/gst-ptp-helper cap_net_bind_service,cap_net_admin,cap_sys_nice=ep</span><br><span class="line">/usr/bin/mtr-packet cap_net_raw=ep</span><br><span class="line">/usr/bin/ping cap_net_raw=ep</span><br><span class="line">/usr/bin/python3.12 cap_setuid=ep</span><br></pre></td></tr></table></figure><p>在 &#x2F;proc 目录内：</p><figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line"># cat /proc/1143966/status | grep Cap</span><br></pre></td></tr></table></figure><p>在哪里：</p><figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br></pre></td><td class="code"><pre><span class="line">CapInh= 继承的能力</span><br><span class="line">CapPrm= 允许的能力</span><br><span class="line">CapEff= 有效能力</span><br><span class="line">CapBnd= 边界集</span><br><span class="line">CapAmb= 环境功能设置</span><br></pre></td></tr></table></figure><p>利用命令capsh，我们解码功能如下：</p><figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br></pre></td><td class="code"><pre><span class="line"># capsh --decode=0000000000000080</span><br><span class="line">0x0000000000000080=cap_setuid</span><br></pre></td></tr></table></figure><p>或者使用命令getpcaps，将 PID 作为参数传递：</p><figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br></pre></td><td class="code"><pre><span class="line"># getpcaps 1143966</span><br><span class="line">Capabilities for `1143966&#x27;: = cap_setuid+ep</span><br></pre></td></tr></table></figure><p>使用以下命令从二进制文件中移除功能setcap -r</p><figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line"># setcap -r /usr/bin/python3.12</span><br></pre></td></tr></table></figure>]]>
    </content>
    <id>https://kebyn.cc/2025/10/22/linux_access_control_mechanisms/</id>
    <link href="https://kebyn.cc/2025/10/22/linux_access_control_mechanisms/"/>
    <published>2025-10-22T18:58:49.000Z</published>
    <summary>
      <![CDATA[<h1 id="Linux-访问控制机制：利用-POSIX-功能提升权限"><a href="#Linux-访问控制机制：利用-POSIX-功能提升权限" class="headerlink" title="Linux 访问控制机制：利用 POSIX 功能提升权限"></a>Linux 访问控制机制：利用 POSIX 功能提升权限</h1><blockquote>
<p>参考来源 <a href="https://dfir.ch/posts/linux_capabilities/">https://dfir.ch/posts/linux_capabilities/</a></p>
</blockquote>
<h2 id="前情提要"><a href="#前情提要" class="headerlink" title="前情提要"></a>前情提要</h2><p>在 Linux 系统中，传统上有两种主要的权限提升机制：SUID（设置用户 ID）和 SGID（设置组 ID）。这些机制允许用户在执行特定二进制文件时临时获得文件所有者或组的权限，通常是 root 用户。然而，这种方法存在安全风险，因为它授予了过多的权限，可能导致系统被滥用。<br>为了解决这些问题，Linux 引入了 POSIX 能力（Capabilities）机制。该机制允许将 root 用户的权限划分为更小、更具体的单元，这些单元可以单独分配给进程。这种方法提高了系统的安全性，因为它允许仅授予进程所需的最低权限，从而减少了潜在的攻击面。</p>
<p>Capabilities是 Linux 中的一种细粒度访问控制机制，允许比传统超级用户 ( root) 模型更精细的权限。权能将通常与 root 用户关联的权限划分为不同的单元，这些单元可以针对不同的进程单独启用或禁用。这使得权限管理更加安全可控。</p>]]>
    </summary>
    <title>Linux访问控制机制</title>
    <updated>2026-11-15T11:03:55.000Z</updated>
  </entry>
  <entry>
    <author>
      <name>By Kebyn</name>
    </author>
    <category term="Linux" scheme="https://kebyn.cc/categories/Linux/"/>
    <category term="estimate" scheme="https://kebyn.cc/tags/estimate/"/>
    <category term="server" scheme="https://kebyn.cc/tags/server/"/>
    <category term="resource" scheme="https://kebyn.cc/tags/resource/"/>
    <content>
      <![CDATA[<h1 id="科学估算服务器资源需求"><a href="#科学估算服务器资源需求" class="headerlink" title="科学估算服务器资源需求"></a>科学估算服务器资源需求</h1><blockquote><p>参考来源 <a href="https://mp.weixin.qq.com/s/zklAxdcU6j78QaYwM7CLYA">https://mp.weixin.qq.com/s/zklAxdcU6j78QaYwM7CLYA</a></p></blockquote><span id="more"></span><h1 id="CPU-资源估算公式和方法"><a href="#CPU-资源估算公式和方法" class="headerlink" title="CPU 资源估算公式和方法"></a>CPU 资源估算公式和方法</h1><p>CPU 的估算相对来说比较复杂，因为不同类型的应用对 CPU 的需求差别很大。我总结了一套比较实用的计算方法。</p><h2 id="基础-CPU-需求计算公式"><a href="#基础-CPU-需求计算公式" class="headerlink" title="基础 CPU 需求计算公式"></a>基础 CPU 需求计算公式</h2><figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">CPU 核心数 = (并发用户数 × 单用户 CPU 消耗 × 安全系数) / CPU 利用率目标</span><br></pre></td></tr></table></figure><p>这里面几个关键参数：</p><ul><li>并发用户数：同时在线并产生请求的用户数</li><li>单用户 CPU 消耗：每个用户请求平均消耗的 CPU 时间</li><li>安全系数：通常取 1.5-2.0</li><li>CPU 利用率目标：建议控制在 70%以下</li></ul><blockquote><p>不同应用类型的 CPU 需求参考表</p></blockquote><table><thead><tr><th>应用类型</th><th>单用户 CPU 消耗(ms)</th><th>推荐配置(1000 并发)</th><th>备注</th></tr></thead><tbody><tr><td>静态网站</td><td>5-10</td><td>2-4 核</td><td>主要是文件读取</td></tr><tr><td>简单 Web 应用</td><td>20-50</td><td>4-8 核</td><td>基础 CRUD 操作</td></tr><tr><td>复杂业务系统</td><td>100-200</td><td>8-16 核</td><td>复杂查询和计算</td></tr><tr><td>实时计算</td><td>200-500</td><td>16-32 核</td><td>大量数据处理</td></tr><tr><td>图像&#x2F;视频处理</td><td>500-1000</td><td>32 核以上</td><td>CPU 密集型任务</td></tr></tbody></table><blockquote><p>实际计算示例</p></blockquote><p>假设我们有一个电商网站：</p><ul><li>预期并发用户：2000 人</li><li>应用类型：复杂业务系统</li><li>单用户 CPU 消耗：150ms</li><li>安全系数：1.8</li><li>CPU 利用率目标：70%<br>计算过程：</li></ul><figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">CPU 核心数 = (2000 × 0.15 × 1.8) / 0.7 = 771 / 0.7 ≈ 11 核</span><br></pre></td></tr></table></figure><p>所以建议配置 12-16 核 CPU。</p><h1 id="内存需求精确计算"><a href="#内存需求精确计算" class="headerlink" title="内存需求精确计算"></a>内存需求精确计算</h1><p>内存的估算相对简单一些，但也有一套科学的计算方法。</p><blockquote><p>内存需求计算公式</p></blockquote><figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">总内存需求 = 系统基础内存 + 应用内存 + 连接内存 + 缓存内存 + 预留内存</span><br></pre></td></tr></table></figure><blockquote><p>各组件内存需求详细表格</p></blockquote><table><thead><tr><th>组件类型</th><th>基础占用</th><th>计算公式</th><th>说明</th></tr></thead><tbody><tr><td>操作系统</td><td>1-2GB</td><td>固定值</td><td>Linux 系统基础占用</td></tr><tr><td>Java 应用</td><td>512MB-2GB</td><td>堆内存 + 非堆内存</td><td>JVM 参数配置</td></tr><tr><td>Node.js 应用</td><td>100-500MB</td><td>根据框架和库</td><td>相对轻量</td></tr><tr><td>Python 应用</td><td>50-200MB</td><td>根据框架和库</td><td>Django&#x2F;Flask 差异较大</td></tr><tr><td>Go 应用</td><td>10-100MB</td><td>编译型语言</td><td>内存占用很小</td></tr><tr><td>MySQL</td><td>128MB 起</td><td>InnoDB 缓冲池大小</td><td>建议总内存的 70%</td></tr><tr><td>Redis</td><td>根据数据量</td><td>数据大小 × 1.2</td><td>包含持久化开销</td></tr><tr><td>Nginx</td><td>2-10MB</td><td>连接数 × 2KB</td><td>反向代理占用</td></tr></tbody></table><blockquote><p>连接内存计算公式</p></blockquote><figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">连接内存 = 最大连接数 × 单连接内存占用</span><br></pre></td></tr></table></figure><p>不同服务的单连接内存占用：</p><ul><li>HTTP 连接：2-8KB</li><li>数据库连接：1-4MB</li><li>WebSocket 连接：4-16KB</li></ul><blockquote><p>实际内存计算案例</p></blockquote><p>还是以电商网站为例：</p><ul><li>并发用户：2000 人</li><li>技术栈：Java + MySQL + Redis</li><li>数据量：用户数据 50 万条，商品数据 10 万条</li></ul><table><thead><tr><th>组件</th><th>计算过程</th><th>内存需求</th></tr></thead><tbody><tr><td>操作系统</td><td>固定</td><td>2GB</td></tr><tr><td>Java 应用</td><td>堆内存 4GB + 非堆 1GB</td><td>5GB</td></tr><tr><td>HTTP 连接</td><td>2000 × 8KB</td><td>16MB</td></tr><tr><td>MySQL</td><td>数据量约 2GB，缓冲池设置</td><td>8GB</td></tr><tr><td>Redis</td><td>热点数据 500MB × 1.2</td><td>600MB</td></tr><tr><td>预留空间</td><td>总量的 20%</td><td>3GB</td></tr><tr><td>总计</td><td></td><td>约 19GB</td></tr></tbody></table><p>建议配置 24GB 或 32GB 内存。</p><h1 id="存储空间规划计算"><a href="#存储空间规划计算" class="headerlink" title="存储空间规划计算"></a>存储空间规划计算</h1><p>存储的估算看起来简单，实际上坑也不少。我整理了一套比较完整的计算方法。</p><blockquote><p>存储需求计算公式</p></blockquote><figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">总存储需求 = 业务数据 + 日志文件 + 备份空间 + 系统文件 + 增长预留</span><br></pre></td></tr></table></figure><blockquote><p>不同数据类型的存储需求表</p></blockquote><table><thead><tr><th>数据类型</th><th>单条记录大小</th><th>增长系数</th><th>备注</th></tr></thead><tbody><tr><td>用户基础信息</td><td>1-2KB</td><td>1.5</td><td>包含索引开销</td></tr><tr><td>订单记录</td><td>2-5KB</td><td>2.0</td><td>关联数据较多</td></tr><tr><td>商品信息</td><td>5-20KB</td><td>1.8</td><td>包含图片路径等</td></tr><tr><td>日志记录</td><td>200-500B</td><td>1.2</td><td>压缩后存储</td></tr><tr><td>图片文件</td><td>100KB-2MB</td><td>1.0</td><td>原始大小</td></tr><tr><td>视频文件</td><td>10MB-1GB</td><td>1.0</td><td>原始大小</td></tr></tbody></table><blockquote><p>日志文件存储计算</p></blockquote><figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">日志存储需求 = 日请求量 × 单条日志大小 × 保留天数</span><br></pre></td></tr></table></figure><table><thead><tr><th>日志类型</th><th>单条大小</th><th>保留期</th><th>压缩比</th></tr></thead><tbody><tr><td>访问日志</td><td>300-500B</td><td>30 天</td><td>0.3</td></tr><tr><td>应用日志</td><td>200-800B</td><td>7 天</td><td>0.4</td></tr><tr><td>错误日志</td><td>500-2KB</td><td>90 天</td><td>0.5</td></tr><tr><td>数据库日志</td><td>100-300B</td><td>7 天</td><td>0.3</td></tr></tbody></table><blockquote><p>存储计算实例</p></blockquote><p>电商网站存储需求计算：</p><table><thead><tr><th>数据类型</th><th>数量</th><th>单条大小</th><th>小计</th><th>增长系数</th><th>最终需求</th></tr></thead><tbody><tr><td>用户数据</td><td>50 万</td><td>1.5KB</td><td>750MB</td><td>1.5</td><td>1.1GB</td></tr><tr><td>商品数据</td><td>10 万</td><td>15KB</td><td>1.5GB</td><td>1.8</td><td>2.7GB</td></tr><tr><td>订单数据</td><td>100 万</td><td>3KB</td><td>3GB</td><td>2.0</td><td>6GB</td></tr><tr><td>访问日志</td><td>100 万&#x2F;天</td><td>400B</td><td>400MB&#x2F;天</td><td>30 天</td><td>12GB</td></tr><tr><td>应用日志</td><td>50 万&#x2F;天</td><td>600B</td><td>300MB&#x2F;天</td><td>7 天</td><td>2.1GB</td></tr><tr><td>图片文件</td><td>20 万张</td><td>500KB</td><td>100GB</td><td>1.0</td><td>100GB</td></tr><tr><td>备份空间</td><td>业务数据 ×3</td><td></td><td></td><td></td><td>33GB</td></tr><tr><td>系统文件</td><td>固定</td><td></td><td>20GB</td><td></td><td>20GB</td></tr><tr><td>总计</td><td></td><td></td><td></td><td></td><td>约 177GB</td></tr></tbody></table><p>建议配置 250GB SSD + 500GB HDD 的组合。</p><h1 id="网络带宽需求计算"><a href="#网络带宽需求计算" class="headerlink" title="网络带宽需求计算"></a>网络带宽需求计算</h1><p>网络带宽经常被忽视，但其实很重要。看公式！</p><blockquote><p>带宽需求计算公式</p></blockquote><figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">所需带宽(Mbps) = 并发用户数 × 平均页面大小(MB) × 8 × 安全系数 / 页面加载时间(秒)</span><br></pre></td></tr></table></figure><blockquote><p>不同业务场景的带宽需求表</p></blockquote><table><thead><tr><th>业务类型</th><th>平均页面大小</th><th>目标加载时间</th><th>安全系数</th><th>单用户带宽需求</th></tr></thead><tbody><tr><td>企业官网</td><td>2-5MB</td><td>3 秒</td><td>1.5</td><td>20-42Kbps</td></tr><tr><td>电商平台</td><td>3-8MB</td><td>2 秒</td><td>2.0</td><td>48-128Kbps</td></tr><tr><td>视频网站</td><td>10-50MB</td><td>5 秒</td><td>1.8</td><td>29-144Kbps</td></tr><tr><td>直播平台</td><td>持续流量</td><td>实时</td><td>2.5</td><td>2-8Mbps</td></tr><tr><td>游戏平台</td><td>小数据包</td><td>&lt;100ms</td><td>3.0</td><td>100-500Kbps</td></tr></tbody></table><blockquote><p>带宽计算实例</p></blockquote><p>电商网站带宽需求：</p><ul><li>并发用户：2000 人</li><li>平均页面大小：5MB</li><li>目标加载时间：2 秒</li><li>安全系数：2.0</li></ul><p>计算过程：</p><figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">所需带宽 = 2000 × 5 × 8 × 2.0 / 2 = 40,000 Mbps = 40 Gbps</span><br></pre></td></tr></table></figure><p>这个结果明显偏高，说明需要优化：</p><ol><li>使用 CDN 减少源站压力</li><li>图片压缩和懒加载</li><li>静态资源缓存</li></ol><p>优化后实际需求可能只需要 200-500Mbps。</p><h1 id="数据库资源专项计算"><a href="#数据库资源专项计算" class="headerlink" title="数据库资源专项计算"></a>数据库资源专项计算</h1><p>数据库的资源需求和应用服务器不太一样，需要单独考虑。</p><blockquote><p>数据库 CPU 计算公式</p></blockquote><figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">数据库 CPU 需求 = (QPS × 平均查询时间 × CPU 使用率) / 1000</span><br></pre></td></tr></table></figure><blockquote><p>不同数据库的资源需求对比表</p><table><thead><tr><th>数据库类型</th><th>CPU 效率</th><th>内存需求</th><th>存储 IO</th><th>适用场景</th></tr></thead><tbody><tr><td>MySQL</td><td>中等</td><td>中等</td><td>高</td><td>通用 OLTP</td></tr><tr><td>PostgreSQL</td><td>高</td><td>中等</td><td>中等</td><td>复杂查询</td></tr><tr><td>MongoDB</td><td>中等</td><td>高</td><td>中等</td><td>文档存储</td></tr><tr><td>Redis</td><td>高</td><td>高</td><td>低</td><td>缓存&#x2F;会话</td></tr><tr><td>Elasticsearch</td><td>低</td><td>高</td><td>高</td><td>全文搜索</td></tr></tbody></table></blockquote><blockquote><p>数据库内存分配建议表</p></blockquote><table><thead><tr><th>组件</th><th>MySQL</th><th>PostgreSQL</th><th>MongoDB</th></tr></thead><tbody><tr><td>缓冲池</td><td>70-80%</td><td>25%</td><td>50%</td></tr><tr><td>连接缓存</td><td>5-10%</td><td>10%</td><td>10%</td></tr><tr><td>查询缓存</td><td>5-10%</td><td>25%</td><td>20%</td></tr><tr><td>系统预留</td><td>10-20%</td><td>40%</td><td>20%</td></tr></tbody></table><blockquote><p>数据库性能基准测试表</p></blockquote><table><thead><tr><th>配置</th><th>MySQL QPS</th><th>PostgreSQL QPS</th><th>MongoDB QPS</th><th>Redis QPS</th></tr></thead><tbody><tr><td>2 核 4GB</td><td>1,000-2,000</td><td>800-1,500</td><td>2,000-4,000</td><td>50,000-80,000</td></tr><tr><td>4 核 8GB</td><td>3,000-5,000</td><td>2,500-4,000</td><td>6,000-10,000</td><td>100,000-150,000</td></tr><tr><td>8 核 16GB</td><td>8,000-12,000</td><td>6,000-10,000</td><td>15,000-25,000</td><td>200,000-300,000</td></tr><tr><td>16 核 32GB</td><td>15,000-25,000</td><td>12,000-20,000</td><td>30,000-50,000</td><td>400,000-600,000</td></tr></tbody></table><p>注：QPS 数据基于标准 OLTP 场景，实际性能会因查询复杂度而变化</p><h1 id="容器化环境资源计算"><a href="#容器化环境资源计算" class="headerlink" title="容器化环境资源计算"></a>容器化环境资源计算</h1><p>现在容器化部署越来越流行，资源计算方式也有所不同。</p><blockquote><p>容器资源计算公式</p></blockquote><figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">容器总资源 = Σ(单容器资源 × 副本数 × 资源超分比)</span><br></pre></td></tr></table></figure><blockquote><p>Kubernetes 资源配置参考表</p><table><thead><tr><th>服务类型</th><th>CPU Request</th><th>CPU Limit</th><th>Memory Request</th><th>Memory Limit</th><th>副本数建议</th></tr></thead><tbody><tr><td>Web 前端</td><td>100m</td><td>500m</td><td>128Mi</td><td>512Mi</td><td>3-5</td></tr><tr><td>API 服务</td><td>200m</td><td>1000m</td><td>256Mi</td><td>1Gi</td><td>3-10</td></tr><tr><td>数据库</td><td>1000m</td><td>2000m</td><td>2Gi</td><td>4Gi</td><td>1-3</td></tr><tr><td>缓存服务</td><td>100m</td><td>500m</td><td>512Mi</td><td>2Gi</td><td>2-3</td></tr><tr><td>消息队列</td><td>200m</td><td>800m</td><td>512Mi</td><td>2Gi</td><td>2-3</td></tr></tbody></table></blockquote><blockquote><p>容器资源超分配比例表</p></blockquote><table><thead><tr><th>资源类型</th><th>开发环境</th><th>测试环境</th><th>生产环境</th><th>说明</th></tr></thead><tbody><tr><td>CPU</td><td>4:1</td><td>2:1</td><td>1.5:1</td><td>超分比例</td></tr><tr><td>内存</td><td>2:1</td><td>1.5:1</td><td>1.2:1</td><td>相对保守</td></tr><tr><td>存储</td><td>3:1</td><td>2:1</td><td>1:1</td><td>生产不超分</td></tr></tbody></table><blockquote><p>ROI 计算公式</p></blockquote><figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">投资回报率 = (收益增长 - 成本增长) / 成本增长 × 100%</span><br></pre></td></tr></table></figure><p>比如通过性能优化，响应时间从 3 秒降到 1 秒，转化率提升 20%，月收入增加 10 万，而优化成本只有 2 万，那么 ROI 就是 400%。</p><h1 id="监控指标和告警阈值设置"><a href="#监控指标和告警阈值设置" class="headerlink" title="监控指标和告警阈值设置"></a>监控指标和告警阈值设置</h1><p>监控系统一定要做好，这是运维的眼睛。我总结了一套完整的监控指标体系。</p><blockquote><p>核心监控指标阈值表</p></blockquote><table><thead><tr><th>指标类型</th><th>正常范围</th><th>警告阈值</th><th>严重阈值</th><th>监控频率</th></tr></thead><tbody><tr><td>CPU 使用率</td><td>&lt;60%</td><td>70%</td><td>85%</td><td>1 分钟</td></tr><tr><td>内存使用率</td><td>&lt;70%</td><td>80%</td><td>90%</td><td>1 分钟</td></tr><tr><td>磁盘使用率</td><td>&lt;70%</td><td>80%</td><td>90%</td><td>5 分钟</td></tr><tr><td>磁盘 IO 等待</td><td>&lt;10%</td><td>20%</td><td>40%</td><td>1 分钟</td></tr><tr><td>网络带宽</td><td>&lt;60%</td><td>70%</td><td>85%</td><td>1 分钟</td></tr><tr><td>响应时间</td><td>&lt;500ms</td><td>1s</td><td>3s</td><td>实时</td></tr><tr><td>错误率</td><td>&lt;0.1%</td><td>1%</td><td>5%</td><td>实时</td></tr><tr><td>连接数</td><td>&lt;1000</td><td>根据配置</td><td>根据配置</td><td>1 分钟</td></tr></tbody></table><blockquote><p>应用层监控指标表</p></blockquote><table><thead><tr><th>指标</th><th>Java 应用</th><th>Node.js 应用</th><th>Python 应用</th><th>Go 应用</th></tr></thead><tbody><tr><td>堆内存使用</td><td>&lt;80%</td><td>N&#x2F;A</td><td>&lt;80%</td><td>&lt;80%</td></tr><tr><td>GC 频率</td><td>&lt;10 次&#x2F;分钟</td><td>N&#x2F;A</td><td>&lt;5 次&#x2F;分钟</td><td>&lt;1 次&#x2F;分钟</td></tr><tr><td>线程数</td><td>&lt;500</td><td>N&#x2F;A</td><td>&lt;200</td><td>&lt;1000</td></tr><tr><td>连接池</td><td>&lt;80%</td><td>&lt;80%</td><td>&lt;80%</td><td>&lt;80%</td></tr></tbody></table><h1 id="性能测试和容量规划"><a href="#性能测试和容量规划" class="headerlink" title="性能测试和容量规划"></a>性能测试和容量规划</h1><p>光有理论计算还不够，性能测试是验证估算准确性的重要手段。</p><blockquote><p>性能测试场景设计表</p><table><thead><tr><th>测试类型</th><th>并发用户数</th><th>持续时间</th><th>目标指标</th><th>测试目的</th></tr></thead><tbody><tr><td>基准测试</td><td>10-50</td><td>10 分钟</td><td>QPS</td><td>建立基线</td></tr><tr><td>负载测试</td><td>预期并发</td><td>30 分钟</td><td>响应时间</td><td>验证正常负载</td></tr><tr><td>压力测试</td><td>1.5× 预期</td><td>15 分钟</td><td>系统不崩溃</td><td>找到性能瓶颈</td></tr><tr><td>峰值测试</td><td>3× 预期</td><td>5 分钟</td><td>快速恢复</td><td>验证突发处理</td></tr><tr><td>稳定性测试</td><td>0.8× 预期</td><td>24 小时</td><td>无内存泄漏</td><td>长期稳定性</td></tr></tbody></table></blockquote><blockquote><p>性能测试工具对比表</p><table><thead><tr><th>工具</th><th>适用场景</th><th>并发能力</th><th>学习成本</th><th>报告质量</th></tr></thead><tbody><tr><td>JMeter</td><td>通用 Web 测试</td><td>中等</td><td>中等</td><td>好</td></tr><tr><td>wrk</td><td>简单 HTTP 测试</td><td>高</td><td>低</td><td>一般</td></tr><tr><td>LoadRunner</td><td>企业级测试</td><td>很高</td><td>高</td><td>很好</td></tr><tr><td>Artillery</td><td>Node.js 友好</td><td>中等</td><td>低</td><td>好</td></tr><tr><td>Gatling</td><td>高性能测试</td><td>很高</td><td>中等</td><td>很好</td></tr></tbody></table></blockquote><h1 id="实际案例：电商平台完整资源规划"><a href="#实际案例：电商平台完整资源规划" class="headerlink" title="实际案例：电商平台完整资源规划"></a>实际案例：电商平台完整资源规划</h1><p>让我用一个完整的案例来演示整个资源估算过程。</p><blockquote><p>业务需求分析<br>某电商平台预期指标：</p></blockquote><ul><li>注册用户：100 万</li><li>日活用户：10 万</li><li>峰值并发：5000 人</li><li>商品数量：50 万</li><li>日订单量：1 万单</li><li>图片文件：100 万张</li></ul><blockquote><p>详细资源计算过程</p></blockquote><ol><li>Web 服务器资源计算</li></ol><p>CPU 需求：</p><figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br></pre></td><td class="code"><pre><span class="line">并发用户：5000 人</span><br><span class="line">单用户 CPU 消耗：100ms（复杂业务）</span><br><span class="line">安全系数：1.8</span><br><span class="line">CPU 利用率目标：70%</span><br><span class="line"></span><br><span class="line">CPU 核心数 = (5000 × 0.1 × 1.8) / 0.7 = 1286 核</span><br></pre></td></tr></table></figure><p>考虑到单机限制，建议配置：8 台 × 16 核 &#x3D; 128 核</p><p>内存需求：</p><table><thead><tr><th>组件</th><th>计算</th><th>需求</th></tr></thead><tbody><tr><td>系统基础</td><td>8 台 × 2GB</td><td>16GB</td></tr><tr><td>Java 应用</td><td>8 台 × 8GB</td><td>64GB</td></tr><tr><td>连接内存</td><td>5000 × 8KB</td><td>40MB</td></tr><tr><td>预留</td><td>20%</td><td>16GB</td></tr><tr><td>总计</td><td></td><td>96GB</td></tr></tbody></table><ol start="2"><li>数据库服务器资源计算</li></ol><p>预估 QPS：</p><ul><li>查询 QPS：2000</li><li>写入 QPS：500</li><li>总 QPS：2500</li></ul><p>根据性能基准表，需要 8 核 16GB 配置，考虑到安全系数，建议 16 核 32GB。</p><ol start="3"><li>缓存服务器资源计算</li></ol><p>Redis 内存需求：</p><ul><li>用户会话：10 万 × 2KB &#x3D; 200MB</li><li>商品缓存：5 万 × 10KB &#x3D; 500MB</li><li>查询缓存：预估 1GB</li><li>总计：1.7GB × 1.5 &#x3D; 2.6GB</li></ul><p>建议配置 4 核 8GB。</p><ol start="4"><li>存储需求计算</li></ol><table><thead><tr><th>数据类型</th><th>计算过程</th><th>存储需求</th></tr></thead><tbody><tr><td>用户数据</td><td>100 万 × 2KB × 1.5</td><td>3GB</td></tr><tr><td>商品数据</td><td>50 万 × 20KB × 1.8</td><td>18GB</td></tr><tr><td>订单数据</td><td>365 万 × 5KB × 2.0</td><td>36GB</td></tr><tr><td>图片文件</td><td>100 万 × 800KB</td><td>800GB</td></tr><tr><td>日志文件</td><td>365 万 × 1KB × 2.0</td><td>50GB</td></tr><tr><td>备份空间</td><td>业务数据 × 3</td><td>171GB</td></tr><tr><td>总计</td><td></td><td>1078GB</td></tr></tbody></table><ol start="5"><li>带宽需求计算</li></ol><p>使用 CDN 优化后：</p><ul><li>动态内容：5000 用户 × 100KB × 8 &#x2F; 2 秒 &#x3D; 2Gbps</li><li>考虑安全系数：2Gbps × 1.5 &#x3D; 3Gbps</li><li>实际配置：500Mbps（CDN 分担大部分流量）</li></ul><blockquote><p>最终配置方案</p></blockquote><table><thead><tr><th>服务器类型</th><th>配置</th><th>数量</th><th>月成本</th></tr></thead><tbody><tr><td>Web 服务器</td><td>16 核 32GB</td><td>8 台</td><td>10.8 万</td></tr><tr><td>数据库服务器</td><td>16 核 32GB</td><td>2 台</td><td>3.2 万</td></tr><tr><td>缓存服务器</td><td>4 核 8GB</td><td>2 台</td><td>0.8 万</td></tr><tr><td>负载均衡</td><td>标准配置</td><td>2 台</td><td>0.4 万</td></tr><tr><td>CDN 服务</td><td>500GB 流量</td><td>-</td><td>0.5 万</td></tr><tr><td>总计</td><td></td><td></td><td>15.7 万&#x2F;月</td></tr></tbody></table><h1 id="动态扩容策略"><a href="#动态扩容策略" class="headerlink" title="动态扩容策略"></a>动态扩容策略</h1><p>静态配置往往无法应对业务的快速变化，动态扩容策略很重要。</p><blockquote><p>自动扩容触发条件表</p></blockquote><table><thead><tr><th>指标</th><th>扩容阈值</th><th>缩容阈值</th><th>冷却时间</th><th>扩容步长</th></tr></thead><tbody><tr><td>CPU 使用率</td><td>&gt; 70%</td><td>&lt; 30%</td><td>5 分钟</td><td>+1 台</td></tr><tr><td>内存使用率</td><td>&gt; 80%</td><td>&lt; 40%</td><td>5 分钟</td><td>+1 台</td></tr><tr><td>响应时间</td><td>&gt; 1s</td><td>&lt; 300ms</td><td>3 分钟</td><td>+2 台</td></tr><tr><td>队列长度</td><td>&gt; 100</td><td>&lt; 10</td><td>2 分钟</td><td>+1 台</td></tr><tr><td>错误率</td><td>&gt; 1%</td><td>&lt; 0.1%</td><td>10 分钟</td><td>+2 台</td></tr></tbody></table><blockquote><p>扩容成本效益分析</p><table><thead><tr><th>扩容方式</th><th>响应时间</th><th>成本增加</th><th>适用场景</th></tr></thead><tbody><tr><td>垂直扩容</td><td>5-10 分钟</td><td>50-100%</td><td>短期突发</td></tr><tr><td>水平扩容</td><td>2-5 分钟</td><td>20-50%</td><td>持续增长</td></tr><tr><td>预热扩容</td><td>即时</td><td>10-30%</td><td>可预期峰值</td></tr></tbody></table></blockquote><h1 id="写在最后"><a href="#写在最后" class="headerlink" title="写在最后"></a>写在最后</h1><p>服务器资源估算确实是个技术活，需要综合考虑业务需求、技术架构、成本预算等多个因素。通过这些公式和表格，我们可以更科学地进行资源规划：</p><h2 id="核心要点回顾："><a href="#核心要点回顾：" class="headerlink" title="核心要点回顾："></a>核心要点回顾：</h2><ol><li>CPU 估算：基于并发用户数和单用户消耗计算</li><li>内存估算：分组件计算，预留 20%安全空间</li><li>存储估算：考虑数据增长和备份需求</li><li>带宽估算：结合 CDN 优化，避免过度配置</li><li>成本控制：对比不同方案，选择最优性价比</li></ol><h2 id="实用建议："><a href="#实用建议：" class="headerlink" title="实用建议："></a>实用建议：</h2><p>• 基于实际业务需求估算，不要拍脑袋决定<br>• 预留适当的扩容空间，但不要过度设计<br>• 重视监控和性能测试，数据说话<br>• 根据实际运行情况及时调整优化<br>• 考虑动态扩容，应对业务变化</p><p>最重要的是，要有持续优化的意识。系统上线只是开始，后续的监控、调优、扩容才是重头戏。技术在发展，业务在变化，资源配置也要跟着调整。</p><p>没有完美的架构，只有合适的架构。资源估算也是一样，关键是要找到性能、成本、可靠性之间的平衡点。</p>]]>
    </content>
    <id>https://kebyn.cc/2025/09/15/scientific_estimation_of_server_resource_requirements/</id>
    <link href="https://kebyn.cc/2025/09/15/scientific_estimation_of_server_resource_requirements/"/>
    <published>2025-09-15T22:38:49.000Z</published>
    <summary>
      <![CDATA[<h1 id="科学估算服务器资源需求"><a href="#科学估算服务器资源需求" class="headerlink" title="科学估算服务器资源需求"></a>科学估算服务器资源需求</h1><blockquote>
<p>参考来源 <a href="https://mp.weixin.qq.com/s/zklAxdcU6j78QaYwM7CLYA">https://mp.weixin.qq.com/s/zklAxdcU6j78QaYwM7CLYA</a></p>
</blockquote>]]>
    </summary>
    <title>科学估算服务器资源需求</title>
    <updated>2026-11-15T11:03:55.000Z</updated>
  </entry>
  <entry>
    <author>
      <name>By Kebyn</name>
    </author>
    <category term="Container" scheme="https://kebyn.cc/categories/Container/"/>
    <category term="docker" scheme="https://kebyn.cc/tags/docker/"/>
    <category term="docker-registry" scheme="https://kebyn.cc/tags/docker-registry/"/>
    <category term="docker-mirror" scheme="https://kebyn.cc/tags/docker-mirror/"/>
    <content>
      <![CDATA[<h1 id="Harbor-Docker-镜像加速器"><a href="#Harbor-Docker-镜像加速器" class="headerlink" title="Harbor Docker 镜像加速器"></a>Harbor Docker 镜像加速器</h1><blockquote><p><a href="https://github.com/goharbor/harbor/blob/main/contrib/Configure_mirror.md">https://github.com/goharbor/harbor/blob/main/contrib/Configure_mirror.md</a></p></blockquote><span id="more"></span><figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br><span class="line">18</span><br><span class="line">19</span><br><span class="line">20</span><br><span class="line">21</span><br><span class="line">22</span><br><span class="line">23</span><br><span class="line">24</span><br><span class="line">25</span><br><span class="line">26</span><br><span class="line">27</span><br><span class="line">28</span><br><span class="line">29</span><br></pre></td><td class="code"><pre><span class="line">storage:</span><br><span class="line">  filesystem:</span><br><span class="line">    rootdirectory: /var/lib/registry</span><br><span class="line">    # rootdirectory: /var/lib/registry-ghcr</span><br><span class="line"></span><br><span class="line">proxy:</span><br><span class="line">  remoteurl: https://registry-1.docker.io</span><br><span class="line">  # remoteurl: https://ghcr.io</span><br><span class="line">  username: $USERNAME</span><br><span class="line"></span><br><span class="line">http:</span><br><span class="line">  addr: 192.168.128.1:5000</span><br><span class="line">  # addr: 192.168.128.1:5001</span><br><span class="line"></span><br><span class="line">storage_service:</span><br><span class="line">  s3:</span><br><span class="line">    accesskey: xxxxxxx</span><br><span class="line">    secretkey: xxxxxxx</span><br><span class="line">    bucket: some-docker-registry</span><br><span class="line">    regionendpoint: https://s3.xxx.com</span><br><span class="line">    region: default</span><br><span class="line">    v4auth: false</span><br><span class="line">    chunksize: 5242880  #分段上传（由 WriteStream 执行）到 S3 的默认分段大小。</span><br><span class="line">    multipartcopychunksize: 33554432</span><br><span class="line">    multipartcopymaxconcurrency: 100</span><br><span class="line">    multipartcopythresholdsize: 33554432 #这个值需要调大，最大5G</span><br><span class="line">    rootdirectory: /</span><br><span class="line"> redirect:</span><br><span class="line">    disabled: true</span><br></pre></td></tr></table></figure><h1 id="Docker-registry"><a href="#Docker-registry" class="headerlink" title="Docker registry"></a>Docker registry</h1><figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br><span class="line">18</span><br><span class="line">19</span><br><span class="line">20</span><br><span class="line">21</span><br><span class="line">22</span><br><span class="line">23</span><br><span class="line">24</span><br><span class="line">25</span><br><span class="line">26</span><br><span class="line">27</span><br><span class="line">28</span><br><span class="line">29</span><br><span class="line">30</span><br><span class="line">31</span><br><span class="line">32</span><br><span class="line">33</span><br><span class="line">34</span><br><span class="line">35</span><br><span class="line">36</span><br><span class="line">37</span><br><span class="line">38</span><br><span class="line">39</span><br><span class="line">40</span><br><span class="line">41</span><br><span class="line">42</span><br><span class="line">43</span><br><span class="line">44</span><br><span class="line">45</span><br><span class="line">46</span><br><span class="line">47</span><br><span class="line">48</span><br></pre></td><td class="code"><pre><span class="line">version: 0.1</span><br><span class="line">log:</span><br><span class="line">  fields:</span><br><span class="line">    service: registry</span><br><span class="line"># storage:</span><br><span class="line">#   cache:</span><br><span class="line">#     blobdescriptor: inmemory</span><br><span class="line">#   filesystem:</span><br><span class="line">#     rootdirectory: /var/lib/registry</span><br><span class="line">storage:</span><br><span class="line">  s3:</span><br><span class="line">    accesskey: XXXXXXXXXXXXXXXXXXXXXXX</span><br><span class="line">    secretkey: YYYYYYYYYYYYYYYYYYYYYYYYY</span><br><span class="line">    region: us-west-1</span><br><span class="line">    bucket: my-docker-registry</span><br><span class="line">    secure: true</span><br><span class="line">    v4auth: true</span><br><span class="line">    chunksize: 5242880</span><br><span class="line">  cache:</span><br><span class="line">    blobdescriptor: inmemory</span><br><span class="line">  maintenance:</span><br><span class="line">    uploadpurging:</span><br><span class="line">      enabled: true</span><br><span class="line">      age: 168h</span><br><span class="line">      interval: 24h</span><br><span class="line">      dryrun: false</span><br><span class="line">    </span><br><span class="line">http:</span><br><span class="line">  addr: 0.0.0.0:5000</span><br><span class="line">  headers:</span><br><span class="line">    X-Content-Type-Options: [nosniff]</span><br><span class="line">health:</span><br><span class="line">  storagedriver:</span><br><span class="line">    enabled: true</span><br><span class="line">    interval: 10s</span><br><span class="line">    threshold: 3</span><br><span class="line">proxy:</span><br><span class="line">  remoteurl: https://registry-1.docker.io</span><br><span class="line">delete:</span><br><span class="line">  enabled: true</span><br><span class="line">maintenance:</span><br><span class="line">  uploadpurging:</span><br><span class="line">    enabled: true</span><br><span class="line">    age: 24h</span><br><span class="line">    interval: 1h</span><br><span class="line">    dryrun: false</span><br><span class="line">  readonly:</span><br><span class="line">    enabled: false</span><br></pre></td></tr></table></figure>]]>
    </content>
    <id>https://kebyn.cc/2024/08/20/docker_mirror/</id>
    <link href="https://kebyn.cc/2024/08/20/docker_mirror/"/>
    <published>2024-08-20T17:44:23.000Z</published>
    <summary>
      <![CDATA[<h1 id="Harbor-Docker-镜像加速器"><a href="#Harbor-Docker-镜像加速器" class="headerlink" title="Harbor Docker 镜像加速器"></a>Harbor Docker 镜像加速器</h1><blockquote>
<p><a href="https://github.com/goharbor/harbor/blob/main/contrib/Configure_mirror.md">https://github.com/goharbor/harbor/blob/main/contrib/Configure_mirror.md</a></p>
</blockquote>]]>
    </summary>
    <title>Docker Mirror</title>
    <updated>2026-11-15T11:03:55.000Z</updated>
  </entry>
  <entry>
    <author>
      <name>By Kebyn</name>
    </author>
    <category term="Network" scheme="https://kebyn.cc/categories/Network/"/>
    <category term="ngrok" scheme="https://kebyn.cc/tags/ngrok/"/>
    <category term="tunnel" scheme="https://kebyn.cc/tags/tunnel/"/>
    <content>
      <![CDATA[<p>ngrok 服务端部署与证书配置备忘。</p><span id="more"></span><ul><li><a href="https://github.com/inconshreveable/ngrok/releases">ngrok下载</a></li><li>生成网站证书</li></ul><figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br></pre></td><td class="code"><pre><span class="line">openssl genrsa -out rootCA.key 4096</span><br><span class="line">openssl req -x509 -new -nodes -key rootCA.key -subj &quot;/CN=kebyn.cc&quot; -days 36500 -out rootCA.pem</span><br><span class="line">openssl genrsa -out device.key 4096</span><br><span class="line">openssl req -new -key device.key -subj &quot;/CN=kebyn.cc&quot; -out device.csr</span><br><span class="line">openssl x509 -req -in device.csr -CA rootCA.pem -CAkey rootCA.key -CAcreateserial -out device.crt -days 36500</span><br></pre></td></tr></table></figure><ul><li>替换 ngrok 默认证书</li></ul><figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br></pre></td><td class="code"><pre><span class="line">cp rootCA.pem ../assets/client/tls/ngrokroot.crt</span><br><span class="line">cp device.crt ../assets/server/tls/snakeoil.crt</span><br><span class="line">cp device.key ../assets/server/tls/snakeoil.key</span><br></pre></td></tr></table></figure><ul><li>非 root 用户</li></ul><figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">sudo GOOS=darwin GOARCH=386 make release-all &amp;&amp; sudo GOOS=darwin GOARCH=amd64 make release-all &amp;&amp;sudo GOOS=linux GOARCH=386 make release-all &amp;&amp; sudo GOOS=linux GOARCH=amd64 make release-all &amp;&amp;sudo GOOS=linux GOARCH=arm make release-all &amp;&amp; sudo GOOS=linux GOARCH=arm64 make release-all &amp;&amp;sudo GOOS=windows GOARCH=386 make release-all &amp;&amp; sudo GOOS=windows GOARCH=amd64 make release-all</span><br></pre></td></tr></table></figure><ul><li>root 用户</li></ul><figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">GOOS=darwin GOARCH=386 make release-all &amp;&amp; GOOS=darwin GOARCH=amd64 make release-all &amp;&amp; GOOS=linux GOARCH=386 make release-all &amp;&amp; GOOS=linux GOARCH=amd64 make release-all &amp;&amp; GOOS=linux GOARCH=arm make release-all &amp;&amp; GOOS=linux GOARCH=arm64 make release-all &amp;&amp; GOOS=windows GOARCH=386 make release-all &amp;&amp; GOOS=windows GOARCH=amd64 make release-all</span><br></pre></td></tr></table></figure>]]>
    </content>
    <id>https://kebyn.cc/2017/12/10/ngrok_generate/</id>
    <link href="https://kebyn.cc/2017/12/10/ngrok_generate/"/>
    <published>2017-12-10T05:43:52.000Z</published>
    <summary>
      <![CDATA[<p>ngrok 服务端部署与证书配置备忘。</p>]]>
    </summary>
    <title>ngrok server 简单部署</title>
    <updated>2026-11-15T11:03:55.000Z</updated>
  </entry>
  <entry>
    <author>
      <name>By Kebyn</name>
    </author>
    <category term="Linux" scheme="https://kebyn.cc/categories/Linux/"/>
    <category term="crash" scheme="https://kebyn.cc/tags/crash/"/>
    <category term="SysRq" scheme="https://kebyn.cc/tags/sysrq/"/>
    <content>
      <![CDATA[<ul><li>在一般 Linux 當機的狀況下，若要重新啟動系統，可以按住 Alt + SysRq 兩個鍵，然後依序按下以下幾個指令鍵：</li></ul><figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">r e i s u b</span><br></pre></td></tr></table></figure><span id="more"></span><ul><li>系统宕机时救助<ul><li><a href="https://en.wikipedia.org/wiki/Magic_SysRq_key#Commands">Magic_SysRq_key</a></li><li><a href="https://blog.gtwang.org/linux/safe-reboot-of-linux-using-magic-sysrq-key/">safe-reboot-of-linux-using-magic-sysrq-key</a></li></ul></li><li>内存故障</li></ul><figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br><span class="line">18</span><br><span class="line">19</span><br><span class="line">20</span><br><span class="line">21</span><br><span class="line">22</span><br></pre></td><td class="code"><pre><span class="line">root@server-60:~# grep &quot;[0-9]&quot; /sys/devices/system/edac/mc/mc*/csrow*/ch*_ce_count</span><br><span class="line">/sys/devices/system/edac/mc/mc0/csrow0/ch0_ce_count:0</span><br><span class="line">/sys/devices/system/edac/mc/mc0/csrow0/ch1_ce_count:1</span><br><span class="line">/sys/devices/system/edac/mc/mc0/csrow0/ch2_ce_count:71768</span><br><span class="line">/sys/devices/system/edac/mc/mc0/csrow1/ch0_ce_count:0</span><br><span class="line">/sys/devices/system/edac/mc/mc1/csrow0/ch0_ce_count:0</span><br><span class="line">/sys/devices/system/edac/mc/mc1/csrow0/ch1_ce_count:0</span><br><span class="line">/sys/devices/system/edac/mc/mc1/csrow0/ch2_ce_count:0</span><br><span class="line">/sys/devices/system/edac/mc/mc1/csrow1/ch0_ce_count:12520</span><br><span class="line">root@server-60:~# dmidecode -t memory |grep &#x27;Locator: DIMM&#x27;</span><br><span class="line">Locator: DIMM02</span><br><span class="line">Locator: DIMM03</span><br><span class="line">Locator: DIMM05</span><br><span class="line">Locator: DIMM06</span><br><span class="line">Locator: DIMM07</span><br><span class="line">Locator: DIMM08</span><br><span class="line">Locator: DIMM10</span><br><span class="line">Locator: DIMM11</span><br><span class="line">Locator: DIMM13</span><br><span class="line">Locator: DIMM14</span><br><span class="line">Locator: DIMM15</span><br><span class="line">Locator: DIMM16</span><br></pre></td></tr></table></figure><ul><li>大部分鍵盤的 SysRq 鍵跟 PrtSc（print screen）鍵是同一個，而 SysRq 鍵的使用方式為：Alt + SysRq + 指令鍵，不同的指令鍵有不同的作用，下表是幾個比較常用的指令鍵。</li></ul><p>指令鍵說明<br>r將鍵盤解除 raw 模式（unraw）。<br>e送出 SIGTERM 訊號至系統上所有的行程，讓所有正在執行中的程式正常關閉。<br>i送出 SIGKILL 訊號至系統上所有的行程，強制所有正在執行中的程式立即關閉。<br>s同步（sync）所有掛載磁碟的寫入，讓資料實際寫入實體磁碟。<br>u以唯讀（read-only）方式重新掛載所有磁碟。<br>b立即重新啟動系統（此動作並不會將資料同步寫入至硬碟，也不會讓硬碟卸載）。<br>n重設所有高優先順序（real-time）行程的 nice 設定值。<br>f呼叫 oom_kill 中止使用大量記憶體的行程。<br>o將電腦直接關機。<br>k中止目前 virtual console 下的所有程式（Secure Access Key，SAK）。</p>]]>
    </content>
    <id>https://kebyn.cc/2017/09/29/system_downtime/</id>
    <link href="https://kebyn.cc/2017/09/29/system_downtime/"/>
    <published>2017-09-29T09:37:43.000Z</published>
    <summary>
      <![CDATA[<ul>
<li>在一般 Linux 當機的狀況下，若要重新啟動系統，可以按住 Alt + SysRq 兩個鍵，然後依序按下以下幾個指令鍵：</li>
</ul>
<figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">r e i s u b</span><br></pre></td></tr></table></figure>]]>
    </summary>
    <title>Linux 宕机急救</title>
    <updated>2026-11-15T11:03:55.000Z</updated>
  </entry>
  <entry>
    <author>
      <name>By Kebyn</name>
    </author>
    <category term="Linux" scheme="https://kebyn.cc/categories/Linux/"/>
    <category term="com" scheme="https://kebyn.cc/tags/com/"/>
    <category term="minicom" scheme="https://kebyn.cc/tags/minicom/"/>
    <category term="common" scheme="https://kebyn.cc/tags/common/"/>
    <content>
      <![CDATA[<h3 id="Linux下调试串口服务器的命令"><a href="#Linux下调试串口服务器的命令" class="headerlink" title="Linux下调试串口服务器的命令"></a>Linux下调试串口服务器的命令</h3><span id="more"></span><figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br></pre></td><td class="code"><pre><span class="line">minicom -D /dev/ttyUSB0 -H -w -o</span><br><span class="line"></span><br><span class="line">  - -D 指定串口设备</span><br><span class="line"></span><br><span class="line">  - -H 使用16进制输出</span><br><span class="line"></span><br><span class="line">  - -w 滚屏输出</span><br><span class="line"></span><br><span class="line">  - -o 不对设备进行初始化</span><br><span class="line"></span><br><span class="line">  - -c on/off 输出开启颜色</span><br></pre></td></tr></table></figure><h3 id="Windows-下调试串口服务器的软件"><a href="#Windows-下调试串口服务器的软件" class="headerlink" title="Windows 下调试串口服务器的软件"></a>Windows 下调试串口服务器的软件</h3><ul><li><a href="https://github.com/movsb/common">common</a></li></ul>]]>
    </content>
    <id>https://kebyn.cc/2017/08/09/com/</id>
    <link href="https://kebyn.cc/2017/08/09/com/"/>
    <published>2017-08-09T05:23:57.000Z</published>
    <summary>
      <![CDATA[<h3 id="Linux下调试串口服务器的命令"><a href="#Linux下调试串口服务器的命令" class="headerlink" title="Linux下调试串口服务器的命令"></a>Linux下调试串口服务器的命令</h3>]]>
    </summary>
    <title>串口调试</title>
    <updated>2026-11-15T11:03:55.000Z</updated>
  </entry>
  <entry>
    <author>
      <name>By Kebyn</name>
    </author>
    <category term="Web" scheme="https://kebyn.cc/categories/Web/"/>
    <category term="git" scheme="https://kebyn.cc/tags/git/"/>
    <category term="git key" scheme="https://kebyn.cc/tags/git-key/"/>
    <content>
      <![CDATA[<ol><li>Unpack it.</li></ol><figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br></pre></td><td class="code"><pre><span class="line">tar –xvzf Ocsinventory-Agent-2.0.x.tar.gz</span><br><span class="line">cd Ocsinventory-Agent-2.0.x</span><br></pre></td></tr></table></figure><span id="more"></span><ol start="2"><li>Check perl configuration with the script Makefile.PL. Its looks at the configuration of Perl, machine, libraries … and it generates the Makefile. During this step, we will create a temporary environment variable to install agent non-interactively.</li></ol><figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">env PERL_AUTOINSTALL=1 perl Makefile.PL</span><br></pre></td></tr></table></figure><p>Exemple :<br>        Please install Crypt::SSLeay if you want to use SSL.<br>        Please install nmap or ipdiscover if you want to use the network discover feature.<br>        Please install Proc::Daemon and Proc::PID::File if you want to use the daemon monde.<br>3. Compilation</p><figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br></pre></td><td class="code"><pre><span class="line">make</span><br><span class="line">make install</span><br></pre></td></tr></table></figure><p><a href="http://wiki.ocsinventory-ng.org/index.php?title=Documentation:UnixAgent">引用</a></p>]]>
    </content>
    <id>https://kebyn.cc/2017/07/20/ocsinventory-ng_install/</id>
    <link href="https://kebyn.cc/2017/07/20/ocsinventory-ng_install/"/>
    <published>2017-07-20T06:35:43.000Z</published>
    <summary>
      <![CDATA[<ol>
<li>Unpack it.</li>
</ol>
<figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br></pre></td><td class="code"><pre><span class="line">tar –xvzf Ocsinventory-Agent-2.0.x.tar.gz</span><br><span class="line">cd Ocsinventory-Agent-2.0.x</span><br></pre></td></tr></table></figure>]]>
    </summary>
    <title>ocs_ng 安装</title>
    <updated>2026-11-15T11:03:55.000Z</updated>
  </entry>
  <entry>
    <author>
      <name>By Kebyn</name>
    </author>
    <category term="Programming" scheme="https://kebyn.cc/categories/Programming/"/>
    <category term="git" scheme="https://kebyn.cc/tags/git/"/>
    <category term="git key" scheme="https://kebyn.cc/tags/git-key/"/>
    <content>
      <![CDATA[<figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br></pre></td><td class="code"><pre><span class="line">$ ssh-add ~/.ssh/id_rsa.pub</span><br><span class="line">Could not open a connection to your authentication agent.</span><br></pre></td></tr></table></figure><span id="more"></span><p>You might need to start ssh-agent before you run the ssh-add command:</p><figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br></pre></td><td class="code"><pre><span class="line">eval `ssh-agent -s`</span><br><span class="line">ssh-add ~/.ssh/id_rsa</span><br></pre></td></tr></table></figure><figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br></pre></td><td class="code"><pre><span class="line">ssh -T git@github.com</span><br><span class="line">ssh -Tv git@github.com</span><br></pre></td></tr></table></figure><blockquote><p><a href="https://help.github.com/articles/testing-your-ssh-connection/">github-testing-your-ssh-connection</a></p></blockquote>]]>
    </content>
    <id>https://kebyn.cc/2017/07/13/git_error/</id>
    <link href="https://kebyn.cc/2017/07/13/git_error/"/>
    <published>2017-07-13T08:14:43.000Z</published>
    <summary>
      <![CDATA[<figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br></pre></td><td class="code"><pre><span class="line">$ ssh-add ~/.ssh/id_rsa.pub</span><br><span class="line">Could not open a connection to your authentication agent.</span><br></pre></td></tr></table></figure>]]>
    </summary>
    <title>git 添加 key</title>
    <updated>2026-11-15T11:03:55.000Z</updated>
  </entry>
  <entry>
    <author>
      <name>By Kebyn</name>
    </author>
    <category term="Security" scheme="https://kebyn.cc/categories/Security/"/>
    <category term="openssl" scheme="https://kebyn.cc/tags/openssl/"/>
    <category term="cert" scheme="https://kebyn.cc/tags/cert/"/>
    <content>
      <![CDATA[<figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br></pre></td><td class="code"><pre><span class="line">openssl genrsa -des3 -out server.key 2048</span><br><span class="line">openssl rsa -in server.key -out server.key</span><br><span class="line">openssl req -sha256 -new -key server.key -out server.csr -subj &#x27;/CN=localhost&#x27;</span><br><span class="line">openssl x509 -req -sha256 -days 36500 -in server.csr -signkey server.key -out server.crt</span><br></pre></td></tr></table></figure><blockquote><p><a href="https://stackoverflow.com/questions/10175812/how-to-create-a-self-signed-certificate-with-openssl">https://stackoverflow.com/questions/10175812/how-to-create-a-self-signed-certificate-with-openssl</a></p></blockquote><span id="more"></span><figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br><span class="line">18</span><br><span class="line">19</span><br><span class="line">20</span><br><span class="line">21</span><br></pre></td><td class="code"><pre><span class="line">$ cat cert.pem</span><br><span class="line">-----BEGIN CERTIFICATE-----</span><br><span class="line">MIIDUzCCAjugAwIBAgIUc9s+2e+ABxNDunYGckzbCz+q4xMwDQYJKoZIhvcNAQEL</span><br><span class="line">BQAwOTEUMBIGA1UEAwwLZXhhbXBsZS5jb20xFDASBgNVBAoMC0V4YW1wbGUgT3Jn</span><br><span class="line">MQswCQYDVQQGEwJVUzAeFw0yNjExMTUwODA1MzNaFw0zNjExMTIwODA1MzNaMDkx</span><br><span class="line">FDASBgNVBAMMC2V4YW1wbGUuY29tMRQwEgYDVQQKDAtFeGFtcGxlIE9yZzELMAkG</span><br><span class="line">A1UEBhMCVVMwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQC0GV/qb354</span><br><span class="line">zxZ8VFua2Tyb/Ox8lZNJSsG0XX2c3YELydHtEJyfHd72o/w/palCr2Rq2VxSX7dI</span><br><span class="line">XlkuuWlfILgUVjfw/MIujmMIenlP4CUMQwDrMhnEE7U36r0xfXdHUdPTd47PR8cc</span><br><span class="line">s+aXYHBlXPRc2EVVVBHY7SNAjZ0m2b8jZ9Vj9tYNBcAvHChi2iP5OsulPWQVxT4a</span><br><span class="line">jgJURfMrYrw6K16ktYumASHKUs4t0XQzCfzadaHM0HW91GjdbzZ9axc9Ta2uizvv</span><br><span class="line">RDc9iQ8bI29FRQN9Vtzmd0AV/HXioYdP78MwL6PPKFarAhpXNPpfxsB+sfUToyOR</span><br><span class="line">QIJ6/IqDfOsDAgMBAAGjUzBRMB0GA1UdDgQWBBR1YsIR8Wcaz3RRugV7NW50b4zb</span><br><span class="line">iDAfBgNVHSMEGDAWgBR1YsIR8Wcaz3RRugV7NW50b4zbiDAPBgNVHRMBAf8EBTAD</span><br><span class="line">AQH/MA0GCSqGSIb3DQEBCwUAA4IBAQA4hzddmPOKy2dfrlFLgwdxYgGBmWGpWPkR</span><br><span class="line">cSKvzx7flQt8ujMVStXw9GeBu0ajETR1kV791kUtgq043ixKDxcy9lvgm6pB9KmG</span><br><span class="line">XzBwrlYl+XLUdvNe4reomVgej7455ozIyAsKf90Pfvhj1ZPyaP6EsU6Ce+tJm0ZQ</span><br><span class="line">W4PJjJhsfVQzAUEhG89XdE1dovO2bT78FP21WHb9exwoZ2iAU1WbpxFIozx272Eh</span><br><span class="line">cMa98IUND1sVjrbkqNC3FqdvkL7Fgy0ciV94/Jc103Rkc8YL1Z4VM5u92mIMm65r</span><br><span class="line">+MjkPW0Ng+8b1iGUYdE/fxR3KjGk2bRwvKZL2KuZiaL+4LBJozOU</span><br><span class="line">-----END CERTIFICATE-----</span><br></pre></td></tr></table></figure><figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br></pre></td><td class="code"><pre><span class="line">$ git config --local http.sslCAInfo /path/cert.pem</span><br><span class="line">$ git config --local --unset http.sslCAInfo</span><br></pre></td></tr></table></figure><figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br></pre></td><td class="code"><pre><span class="line">$ git config --local http.sslVerify false #NO NEED TO USE THIS</span><br><span class="line">$ git config --local --unset http.sslverify</span><br></pre></td></tr></table></figure><ul><li>Copy CA cert to &#x2F;usr&#x2F;local&#x2F;share&#x2F;ca-certificates.</li></ul><figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br></pre></td><td class="code"><pre><span class="line">sudo update-ca-certificates</span><br><span class="line">sudo service docker restart</span><br></pre></td></tr></table></figure>]]>
    </content>
    <id>https://kebyn.cc/2017/07/13/openssl_generate_certificate/</id>
    <link href="https://kebyn.cc/2017/07/13/openssl_generate_certificate/"/>
    <published>2017-07-13T08:14:43.000Z</published>
    <summary>
      <![CDATA[<figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br></pre></td><td class="code"><pre><span class="line">openssl genrsa -des3 -out server.key 2048</span><br><span class="line">openssl rsa -in server.key -out server.key</span><br><span class="line">openssl req -sha256 -new -key server.key -out server.csr -subj &#x27;/CN=localhost&#x27;</span><br><span class="line">openssl x509 -req -sha256 -days 36500 -in server.csr -signkey server.key -out server.crt</span><br></pre></td></tr></table></figure>
<blockquote>
<p><a href="https://stackoverflow.com/questions/10175812/how-to-create-a-self-signed-certificate-with-openssl">https://stackoverflow.com/questions/10175812/how-to-create-a-self-signed-certificate-with-openssl</a></p>
</blockquote>]]>
    </summary>
    <title>openssl生成cert</title>
    <updated>2026-11-15T11:03:55.000Z</updated>
  </entry>
  <entry>
    <author>
      <name>By Kebyn</name>
    </author>
    <category term="Network" scheme="https://kebyn.cc/categories/Network/"/>
    <category term="openvpn" scheme="https://kebyn.cc/tags/openvpn/"/>
    <content>
      <![CDATA[<ol><li>opevpn 服务器开启</li></ol><figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br><span class="line">18</span><br><span class="line">19</span><br><span class="line">20</span><br><span class="line">21</span><br><span class="line">22</span><br><span class="line">23</span><br><span class="line">24</span><br><span class="line">25</span><br><span class="line">26</span><br><span class="line">27</span><br><span class="line">28</span><br><span class="line">29</span><br><span class="line">30</span><br><span class="line">31</span><br><span class="line">32</span><br><span class="line">33</span><br><span class="line">34</span><br><span class="line">35</span><br><span class="line">36</span><br><span class="line">37</span><br><span class="line">38</span><br></pre></td><td class="code"><pre><span class="line">port 1194</span><br><span class="line">proto udp</span><br><span class="line">dev tun</span><br><span class="line">ca ca.crt</span><br><span class="line">cert xxx.crt</span><br><span class="line">dh dh2048.pem</span><br><span class="line">server 10.8.0.0 255.255.255.0  //openvpnIP段</span><br><span class="line">ifconfig-pool-persist ipp.txt  //分配的地址记录在ipp.txt</span><br><span class="line">client-config-dir ccd  //个人单独配置文件</span><br><span class="line"></span><br><span class="line">client-to-client  //客户端可以互相连接</span><br><span class="line">keepalive 10 120</span><br><span class="line">comp-lzo</span><br><span class="line"></span><br><span class="line">user nobody</span><br><span class="line">group nogroup</span><br><span class="line">persist-key</span><br><span class="line">persist-tun</span><br><span class="line">status /tmp/openvpn-status.log</span><br><span class="line">log         /tmp/openvpn.log</span><br><span class="line">verb 4</span><br><span class="line"></span><br><span class="line">mode server  //运行模式</span><br><span class="line">tls-server  //tls加密</span><br><span class="line">topology subnet  //使用服务端子网</span><br><span class="line">push &quot;topology subnet&quot;  //通知客户端使用子网</span><br><span class="line"></span><br><span class="line">auth-user-pass-verify /etc/openvpn/checkpsw.js via-env  //密码认证</span><br><span class="line">client-cert-not-required  //不认证证书</span><br><span class="line">username-as-common-name  //使用用户名区别不同用户</span><br><span class="line">script-security 3</span><br><span class="line"></span><br><span class="line">route 192.168.2.0 255.255.255.0 10.8.0.2  //使用这个子网</span><br><span class="line">push &quot;route 192.168.2.0 255.255.255.0 10.8.0.2&quot;  //通知客户端使用子网</span><br><span class="line">route 10.8.0.0 255.255.255.0 10.8.0.1  //使用这个子网</span><br><span class="line">push &quot;route 10.8.0.0 255.255.255.0&quot;  //通知客户端使用子网</span><br><span class="line">route 192.168.3.0 255.255.255.0 10.8.0.2  //使用这个子网</span><br><span class="line">push &quot;route 192.168.3.0 255.255.255.0 10.8.0.2&quot;  //通知客户端使用子网</span><br></pre></td></tr></table></figure><span id="more"></span><ol start="2"><li>连接到openvpn服务器</li></ol><ul><li>开启路由转发</li></ul><figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br></pre></td><td class="code"><pre><span class="line">echo 1 &gt; /proc/sys/net/ipv4/ip_forward</span><br><span class="line">sudo iptables -A FORWARD -i eth0 -j ACCEPT</span><br><span class="line">sudo iptables -A FORWARD -i eth1 -j ACCEPT</span><br></pre></td></tr></table></figure><ol start="3"><li>配置路由<ul><li>可以在路由器上配置全局路由</li><li>下面是需要连接 openvpn 的单独配置<ul><li>Windows 需要cmd 管理员窗口执行:<br>  <code>route add  10.8.0.0 mask 255.255.255.0 10.0.0.1</code></li><li>Linux 需要sudo 权限执行:<br>  <code>ip route add 10.8.0.0/24 via 10.0.0.1</code></li></ul></li></ul></li></ol><blockquote><p>可以在各个网络出入口使用 tcpdump 抓包判断网络情况</p></blockquote>]]>
    </content>
    <id>https://kebyn.cc/2017/07/09/openvpn/</id>
    <link href="https://kebyn.cc/2017/07/09/openvpn/"/>
    <published>2017-07-09T05:23:57.000Z</published>
    <summary>
      <![CDATA[<ol>
<li>opevpn 服务器开启</li>
</ol>
<figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br><span class="line">18</span><br><span class="line">19</span><br><span class="line">20</span><br><span class="line">21</span><br><span class="line">22</span><br><span class="line">23</span><br><span class="line">24</span><br><span class="line">25</span><br><span class="line">26</span><br><span class="line">27</span><br><span class="line">28</span><br><span class="line">29</span><br><span class="line">30</span><br><span class="line">31</span><br><span class="line">32</span><br><span class="line">33</span><br><span class="line">34</span><br><span class="line">35</span><br><span class="line">36</span><br><span class="line">37</span><br><span class="line">38</span><br></pre></td><td class="code"><pre><span class="line">port 1194</span><br><span class="line">proto udp</span><br><span class="line">dev tun</span><br><span class="line">ca ca.crt</span><br><span class="line">cert xxx.crt</span><br><span class="line">dh dh2048.pem</span><br><span class="line">server 10.8.0.0 255.255.255.0  //openvpnIP段</span><br><span class="line">ifconfig-pool-persist ipp.txt  //分配的地址记录在ipp.txt</span><br><span class="line">client-config-dir ccd  //个人单独配置文件</span><br><span class="line"></span><br><span class="line">client-to-client  //客户端可以互相连接</span><br><span class="line">keepalive 10 120</span><br><span class="line">comp-lzo</span><br><span class="line"></span><br><span class="line">user nobody</span><br><span class="line">group nogroup</span><br><span class="line">persist-key</span><br><span class="line">persist-tun</span><br><span class="line">status /tmp/openvpn-status.log</span><br><span class="line">log         /tmp/openvpn.log</span><br><span class="line">verb 4</span><br><span class="line"></span><br><span class="line">mode server  //运行模式</span><br><span class="line">tls-server  //tls加密</span><br><span class="line">topology subnet  //使用服务端子网</span><br><span class="line">push &quot;topology subnet&quot;  //通知客户端使用子网</span><br><span class="line"></span><br><span class="line">auth-user-pass-verify /etc/openvpn/checkpsw.js via-env  //密码认证</span><br><span class="line">client-cert-not-required  //不认证证书</span><br><span class="line">username-as-common-name  //使用用户名区别不同用户</span><br><span class="line">script-security 3</span><br><span class="line"></span><br><span class="line">route 192.168.2.0 255.255.255.0 10.8.0.2  //使用这个子网</span><br><span class="line">push &quot;route 192.168.2.0 255.255.255.0 10.8.0.2&quot;  //通知客户端使用子网</span><br><span class="line">route 10.8.0.0 255.255.255.0 10.8.0.1  //使用这个子网</span><br><span class="line">push &quot;route 10.8.0.0 255.255.255.0&quot;  //通知客户端使用子网</span><br><span class="line">route 192.168.3.0 255.255.255.0 10.8.0.2  //使用这个子网</span><br><span class="line">push &quot;route 192.168.3.0 255.255.255.0 10.8.0.2&quot;  //通知客户端使用子网</span><br></pre></td></tr></table></figure>]]>
    </summary>
    <title>openvpn  设置备忘</title>
    <updated>2026-11-15T11:03:55.000Z</updated>
  </entry>
  <entry>
    <author>
      <name>By Kebyn</name>
    </author>
    <category term="Web" scheme="https://kebyn.cc/categories/Web/"/>
    <category term="redmine" scheme="https://kebyn.cc/tags/redmine/"/>
    <category term="403" scheme="https://kebyn.cc/tags/403/"/>
    <category term="issus" scheme="https://kebyn.cc/tags/issues/"/>
    <content>
      <![CDATA[<ol><li>##<strong>403</strong></li></ol><p><strong>There are no projects with trackers for which you can create an issue!</strong></p><ol><li>Issue statuses问题状态<br> - 设置问题状态</li><li>Trackers跟踪标签<br> - 设置跟踪标签,跟踪标签中需要设置问题状态</li><li>Roles and permissions角色和权限<br> - 设置跟踪标签的权限，给予new issue权限</li></ol><span id="more"></span><ol start="2"><li><h2 id="Mariadb"><a href="#Mariadb" class="headerlink" title="Mariadb"></a>Mariadb</h2></li><li>cmake选项<br>- <a href="https://dev.mysql.com/doc/refman/5.7/en/source-configuration-options.html">https://dev.mysql.com/doc/refman/5.7/en/source-configuration-options.html</a></li><li>下载<br>- <a href="https://downloads.mariadb.org/">https://downloads.mariadb.org/</a></li><li>初始化<br>- [<a href="https://dev.mysql.com/doc/refman/5.7/en/installing-source-distribution.html]">https://dev.mysql.com/doc/refman/5.7/en/installing-source-distribution.html]</a>(<a href="https://dev-/">https://dev-</a> .mysql.com&#x2F;doc&#x2F;refman&#x2F;5.7&#x2F;en&#x2F;installing-source-distribution.html)</li><li>授权</li></ol>  <figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br><span class="line">18</span><br><span class="line">19</span><br><span class="line">20</span><br><span class="line">21</span><br></pre></td><td class="code"><pre><span class="line">Your MariaDB connection id is 10</span><br><span class="line">Server version: 10.2.6-MariaDB Source distribution</span><br><span class="line"></span><br><span class="line">Copyright (c) 2000, 2017, Oracle, MariaDB Corporation Ab and others.</span><br><span class="line"></span><br><span class="line">Type &#x27;help;&#x27; or &#x27;\h&#x27; for help. Type &#x27;\c&#x27; to clear the current input statement.</span><br><span class="line"></span><br><span class="line">MariaDB [(none)]&gt; CREATE DATABASE redmine CHARACTER SET utf8;</span><br><span class="line">Query OK, 1 row affected (0.00 sec)</span><br><span class="line"></span><br><span class="line">MariaDB [(none)]&gt; CREATE USER &#x27;redmine&#x27;@&#x27;localhost&#x27; IDENTIFIED BY &#x27;redmine&#x27;;</span><br><span class="line">Query OK, 0 rows affected (0.00 sec)</span><br><span class="line"></span><br><span class="line">MariaDB [(none)]&gt; GRANT ALL PRIVILEGES ON redmine.* TO &#x27;redmine&#x27;@&#x27;localhost&#x27;;</span><br><span class="line">Query OK, 0 rows affected (0.00 sec)</span><br><span class="line"></span><br><span class="line">MariaDB [(none)]&gt; flush privileges;</span><br><span class="line">Query OK, 0 rows affected (0.00 sec)</span><br><span class="line"></span><br><span class="line">MariaDB [(none)]&gt; \q</span><br><span class="line">Bye</span><br></pre></td></tr></table></figure><ol start="3"><li><h2 id="Ruby"><a href="#Ruby" class="headerlink" title="Ruby"></a>Ruby</h2></li><li><p>rbenv<br>- 安装</p><ul><li>rbenv</li></ul>   <figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br></pre></td><td class="code"><pre><span class="line">$ git clone https://github.com/rbenv/rbenv.git ~/.rbenv</span><br><span class="line">$ cd ~/.rbenv &amp;&amp; src/configure &amp;&amp; make -C src</span><br></pre></td></tr></table></figure><ul><li>ruby-build</li></ul>   <figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br></pre></td><td class="code"><pre><span class="line">$ git clone https://github.com/rbenv/ruby-build.git</span><br><span class="line">$ cd ruby-build</span><br><span class="line">$ ./install.sh</span><br></pre></td></tr></table></figure><pre><code>- rbenv环境变量</code></pre>   <figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br></pre></td><td class="code"><pre><span class="line"># rbenv - setting</span><br><span class="line">export PATH=&quot;$HOME/.rbenv/bin:$PATH&quot;</span><br><span class="line"></span><br><span class="line"># to detect .rbenv-version</span><br><span class="line">eval &quot;$(rbenv init -)&quot;</span><br><span class="line"></span><br><span class="line"># prod</span><br><span class="line">export RAILS_ENV=&quot;production&quot;</span><br></pre></td></tr></table></figure></li><li><p>安装依赖</p>   <figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br></pre></td><td class="code"><pre><span class="line">gem install bundler</span><br><span class="line">sudo apt-get install libmagickwand-dev imagemagick</span><br><span class="line">gem install rmagick -v &#x27;2.16.0&#x27;</span><br><span class="line">gem install json -v &#x27;1.8.3&#x27;</span><br><span class="line">bundle install --without development test</span><br><span class="line">bundle exec rake generate_secret_token</span><br><span class="line">bundle exec rake db:migrate</span><br><span class="line">REDMINE_LANG=zh bundle exec rake redmine:load_default_data</span><br></pre></td></tr></table></figure></li><li><p>启动rails</p></li></ol><figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br></pre></td><td class="code"><pre><span class="line">bundle exec rails server webrick -e production</span><br><span class="line">bundle exec rails server webrick -b xxx.xxx.xxx.xxx -e production</span><br><span class="line">bundle exec rails server webrick -p 3000 -e production</span><br><span class="line"></span><br></pre></td></tr></table></figure>]]>
    </content>
    <id>https://kebyn.cc/2017/06/13/redmine/</id>
    <link href="https://kebyn.cc/2017/06/13/redmine/"/>
    <published>2017-06-13T04:06:37.000Z</published>
    <summary>
      <![CDATA[<ol>
<li>##<strong>403</strong></li>
</ol>
<p><strong>There are no projects with trackers for which you can create an issue!</strong></p>
<ol>
<li>Issue statuses问题状态<br> - 设置问题状态</li>
<li>Trackers跟踪标签<br> - 设置跟踪标签,跟踪标签中需要设置问题状态</li>
<li>Roles and permissions角色和权限<br> - 设置跟踪标签的权限，给予new issue权限</li>
</ol>]]>
    </summary>
    <title>redmine</title>
    <updated>2026-11-15T11:03:55.000Z</updated>
  </entry>
  <entry>
    <author>
      <name>By Kebyn</name>
    </author>
    <category term="Container" scheme="https://kebyn.cc/categories/Container/"/>
    <category term="docker" scheme="https://kebyn.cc/tags/docker/"/>
    <category term="docker engine" scheme="https://kebyn.cc/tags/docker-engine/"/>
    <category term="docker proxy" scheme="https://kebyn.cc/tags/docker-proxy/"/>
    <category term="docker command" scheme="https://kebyn.cc/tags/docker-command/"/>
    <category term="docker-compose" scheme="https://kebyn.cc/tags/docker-compose/"/>
    <content>
      <![CDATA[<p>Docker 安装、代理与常用命令备忘。</p><span id="more"></span><ol><li>docker engine安装</li></ol><ul><li><a href="https://docs.docker.com/engine/installation/#supported-platforms">docker install</a></li><li><a href="https://store.docker.com/editions/community/docker-ce-server-debian">debian install</a></li><li><a href="https://store.docker.com/editions/community/docker-ce-server-centos">centos install</a></li><li><a href="https://store.docker.com/editions/community/docker-ce-desktop-windows">windows install</a></li></ul>  <figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br></pre></td><td class="code"><pre><span class="line">  curl -fsSL https://get.docker.com | bash</span><br><span class="line"></span><br><span class="line">  dnf config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo</span><br><span class="line">  curl -s https://download.docker.com/linux/centos/docker-ce.repo -o /etc/yum.repos.d/docker-ce.repo</span><br><span class="line">  yum install -y docker-ce</span><br><span class="line"></span><br><span class="line"></span><br><span class="line"></span><br><span class="line"></span><br><span class="line">2. docker官方文档</span><br><span class="line">  - [docker administrator guide](https://docs.docker.com/engine/admin/start-containers-automatically/#restart-policy-details)</span><br><span class="line">  - [docker user guide](https://docs.docker.com/engine/userguide/)</span><br><span class="line">  - [docker proxy](https://stackoverflow.com/questions/23111631/cannot-download-docker-images-behind-a-proxy)</span><br></pre></td></tr></table></figure><pre><code>      $ cat /etc/docker/daemon.json        &#123;          &quot;registry-mirrors&quot;: [&quot;https://www.example.cc&quot;],          &quot;data-root&quot;: &quot;/data/docker&quot;,          &quot;proxies&quot;: &#123;            &quot;http-proxy&quot;: &quot;http://proxy.example.com:8080&quot;,            &quot;https-proxy&quot;: &quot;http://proxy.example.com:8080&quot;,            &quot;no-proxy&quot;: &quot;localhost,127.0.0.0/8,10.0.0.0/8,172.16.0.0/12,192.168.0.0/16&quot;          &#125;,          &quot;exec-opts&quot;: [&quot;native.cgroupdriver=systemd&quot;],          &quot;log-driver&quot;: &quot;json-file&quot;,          &quot;log-opts&quot;: &#123;            &quot;max-size&quot;: &quot;100m&quot;,            &quot;max-file&quot;: &quot;3&quot;,            &quot;tag&quot;: &quot;&#123;&#123;.ImageName&#125;&#125;|&#123;&#123;.Name&#125;&#125;|&#123;&#123;.ImageFullID&#125;&#125;|&#123;&#123;.FullID&#125;&#125;&quot;          &#125;,          &quot;storage-driver&quot;: &quot;overlay2&quot;        &#125;      $ cat /etc/systemd/system/docker.service.d        Environment=&quot;HTTP_PROXY=http://proxy.example.com:8080&quot;        Environment=&quot;HTTPS_PROXY=http://proxy.example.com:8080&quot;        Environment=&quot;NO_PROXY=localhost,127.0.0.0/8,10.0.0.0/8,172.16.0.0/12,192.168.0.0/16&quot;      $ systemctl daemon-reload &amp;&amp; systemctl restart docker      $ systemctl show --property Environment docker        Environment=HTTP_PROXY=http://proxy.example.com:8080      <figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br></pre></td><td class="code"><pre><span class="line">&lt;!-- more--&gt;</span><br><span class="line">  - [docker command](https://docs.docker.com/engine/reference/run/)</span><br></pre></td></tr></table></figure>docker version/info/logindocker rundocker run -i -tdocker pull/search/commit/pushdocker start/stop/kill/restartdocker ps       正在运行的dockerdocker ps -a    所有的dockerdocker ps -l    最近运行的dockerdocker rm       删除dockerdocker images   列出imagedocker rmi     删除imagedocker rmi `docker images -f dangling=true -q`docker save/loaddocker network inspect bridgedocker inspect ID/Name<figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br></pre></td><td class="code"><pre><span class="line">3. ~~docker-compose~~`docker compose` `v3`版本是`docker`的子命令</span><br><span class="line">  - [docker-compose command](https://docs.docker.com/compose/reference/overview/)</span><br><span class="line">  - [docker-compose install](https://github.com/docker/compose/releases)</span><br></pre></td></tr></table></figure>curl -L https://github.com/docker/compose/releases/download/1.14.0-rc2/docker-compose-`uname -s`-`uname -m` &gt; /usr/local/bin/docker-composechmod +x /usr/local/bin/docker-compose```</code></pre>]]>
    </content>
    <id>https://kebyn.cc/2017/06/08/docker_instructions/</id>
    <link href="https://kebyn.cc/2017/06/08/docker_instructions/"/>
    <published>2017-06-08T02:17:43.000Z</published>
    <summary>
      <![CDATA[<p>Docker 安装、代理与常用命令备忘。</p>]]>
    </summary>
    <title>docker</title>
    <updated>2026-11-15T11:03:55.000Z</updated>
  </entry>
  <entry>
    <author>
      <name>By Kebyn</name>
    </author>
    <category term="Network" scheme="https://kebyn.cc/categories/Network/"/>
    <category term="ssh" scheme="https://kebyn.cc/tags/ssh/"/>
    <category term="ssh_tunnel" scheme="https://kebyn.cc/tags/ssh-tunnel/"/>
    <category term="autossh" scheme="https://kebyn.cc/tags/autossh/"/>
    <content>
      <![CDATA[<ol><li><a href="http://www.ruanyifeng.com/blog/2011/12/ssh_port_forwarding.html">ssh转发</a></li></ol><ul><li><p><code>ssh -N -f -L 5000:localhost:3306 root@23.226.78.113</code></p><blockquote><p>-N 不启动shell</p></blockquote><blockquote><p>-f 后台执行</p></blockquote><blockquote><p>-T不分配TTY</p></blockquote><blockquote><p>-D动态转发、 -L本地转发 、 -R 远程转发</p></blockquote><blockquote><blockquote><p>SSH 端口转发自然需要 SSH 连接，而 SSH 连接是有方向的，从 SSH Client 到 SSH Server 。而我们的应用也是有方向的，比如需要连接 Server 时 ，Server 自然就是 Server 端，我们应用连接的方向也是从应用的 Client 端连接到应用的 Server 端。如果这两个连接的方向一致，那我们就说它是本地转发。而如果两个方向不一致，我们就说它是远程转发。<a href="https://www.ibm.com/developerworks/cn/linux/l-cn-sshforward/">本地转发与远程转发</a></p></blockquote></blockquote></li></ul><ol start="2"><li><a href="http://www.harding.motd.ca/autossh/">autossh官方</a></li></ol><ul><li><a href="../text/README">README</a></li></ul><figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">autossh -M 0 -o &quot;ServerAliveInterval 30&quot; -o &quot;ServerAliveCountMax 3&quot; -L 5000:localhost:3306 root@23.226.78.113</span><br></pre></td></tr></table></figure><blockquote><p><a href="https://www.everythingcli.org/ssh-tunnelling-for-fun-and-profit-autossh/">参考文档</a></p></blockquote><span id="more"></span><ol start="3"><li>systemctl</li></ol><figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br></pre></td><td class="code"><pre><span class="line">workspace:~$ cat autossh-mysql-tunnel.service</span><br><span class="line">[Unit]</span><br><span class="line">Description=AutoSSH tunnel service everythingcli MySQL on local port 5000</span><br><span class="line">After=network.target</span><br><span class="line"></span><br><span class="line">[Service]</span><br><span class="line">Environment=&quot;AUTOSSH_GATETIME=0&quot;</span><br><span class="line">ExecStart=/usr/bin/autossh -M 0 -o &quot;ServerAliveInterval 30&quot; -o &quot;ServerAliveCountMax 3&quot; -NL 5000:localhost:3306 root@23.226.78.113 -p 22</span><br><span class="line"></span><br><span class="line">[Install]</span><br><span class="line">WantedBy=multi-user.target</span><br></pre></td></tr></table></figure><ol start="4"><li>测试ssh_tunnel稳定性</li></ol><figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br><span class="line">18</span><br><span class="line">19</span><br><span class="line">20</span><br><span class="line">21</span><br><span class="line">22</span><br><span class="line">23</span><br><span class="line">24</span><br><span class="line">25</span><br><span class="line">26</span><br><span class="line">27</span><br><span class="line">28</span><br><span class="line">29</span><br><span class="line">30</span><br><span class="line">31</span><br><span class="line">32</span><br><span class="line">33</span><br><span class="line">34</span><br><span class="line">35</span><br><span class="line">36</span><br><span class="line">37</span><br><span class="line">38</span><br><span class="line">39</span><br><span class="line">40</span><br></pre></td><td class="code"><pre><span class="line">workspace:~$ cat ssh_tunnel.sh</span><br><span class="line">#!/bin/bash</span><br><span class="line">#kebyn</span><br><span class="line">#kebyn@kebyn.cc</span><br><span class="line"></span><br><span class="line">export PATH=$PATH:/bin:/sbin:/usr/bin:/usr/sbin</span><br><span class="line"></span><br><span class="line">case $1 in</span><br><span class="line">start | run)</span><br><span class="line">    #autossh</span><br><span class="line">    /usr/bin/autossh -i /home/user/.ssh/id_rsa -M 0 -o &quot;ServerAliveInterval 60&quot; -o &quot;ServerAliveCountMax 10&quot; -N -L 4096:localhost:80 root@23.226.78.113 &amp;</span><br><span class="line">    sleep 3</span><br><span class="line"></span><br><span class="line">    test_connect()&#123;</span><br><span class="line">        while true; do</span><br><span class="line">        #test_connect</span><br><span class="line">        web_code=$(curl --connect-timeout 1 127.0.0.1:4096 -i 2&gt;/dev/null |head -1 |perl -lane &#x27;print $F[1]&#x27;)</span><br><span class="line">        if [ &quot;$web_code&quot; != &quot;200&quot; ] ;then</span><br><span class="line">            echo &quot;$(date +%Y/%m/%d_%H:%M:%S)&quot; &gt;&gt; ssh_tunnel_erro.log</span><br><span class="line">            sleep 1</span><br><span class="line">        else</span><br><span class="line">            echo &quot;$(date +%Y/%m/%d_%H:%M:%S)&quot; &gt; ssh_tunnel_success.log</span><br><span class="line">            sleep 1</span><br><span class="line">        fi</span><br><span class="line">        done</span><br><span class="line">    &#125;</span><br><span class="line">    test_connect &amp;</span><br><span class="line">    ;;</span><br><span class="line">stop)</span><br><span class="line">    if [ &quot;$(/usr/bin/pgrep autossh)&quot; ] ;then</span><br><span class="line">        kill $(/usr/bin/pgrep autossh)</span><br><span class="line">    fi</span><br><span class="line">    if [ &quot;$(/usr/bin/pgrep ssh_tunnel)&quot; ] ;then</span><br><span class="line">        kill $(/usr/bin/pgrep ssh_tunnel)</span><br><span class="line">    fi</span><br><span class="line">    ;;</span><br><span class="line">*)</span><br><span class="line">    echo &#x27;Usage: ./ssh_tunnel.sh  [ OPTIONS ] &#123; start | stop | run &#125;&#x27;</span><br><span class="line">    ;;</span><br><span class="line">esac</span><br></pre></td></tr></table></figure>]]>
    </content>
    <id>https://kebyn.cc/2017/06/03/autossh_instructions/</id>
    <link href="https://kebyn.cc/2017/06/03/autossh_instructions/"/>
    <published>2017-06-03T01:17:43.000Z</published>
    <summary>
      <![CDATA[<ol>
<li><a href="http://www.ruanyifeng.com/blog/2011/12/ssh_port_forwarding.html">ssh转发</a></li>
</ol>
<ul>
<li><p><code>ssh -N -f -L 5000:localhost:3306 root@23.226.78.113</code></p>
<blockquote>
<p>-N 不启动shell</p>
</blockquote>
<blockquote>
<p>-f 后台执行</p>
</blockquote>
<blockquote>
<p>-T不分配TTY</p>
</blockquote>
<blockquote>
<p>-D动态转发、 -L本地转发 、 -R 远程转发</p>
</blockquote>
<blockquote>
<blockquote>
<p>SSH 端口转发自然需要 SSH 连接，而 SSH 连接是有方向的，从 SSH Client 到 SSH Server 。而我们的应用也是有方向的，比如需要连接 Server 时 ，Server 自然就是 Server 端，我们应用连接的方向也是从应用的 Client 端连接到应用的 Server 端。如果这两个连接的方向一致，那我们就说它是本地转发。而如果两个方向不一致，我们就说它是远程转发。<a href="https://www.ibm.com/developerworks/cn/linux/l-cn-sshforward/">本地转发与远程转发</a></p>
</blockquote>
</blockquote>
</li>
</ul>
<ol start="2">
<li><a href="http://www.harding.motd.ca/autossh/">autossh官方</a></li>
</ol>
<ul>
<li><a href="../text/README">README</a></li>
</ul>
<figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">autossh -M 0 -o &quot;ServerAliveInterval 30&quot; -o &quot;ServerAliveCountMax 3&quot; -L 5000:localhost:3306 root@23.226.78.113</span><br></pre></td></tr></table></figure>
<blockquote>
<p><a href="https://www.everythingcli.org/ssh-tunnelling-for-fun-and-profit-autossh/">参考文档</a></p>
</blockquote>]]>
    </summary>
    <title>ssh_tunnel</title>
    <updated>2026-11-15T11:03:55.000Z</updated>
  </entry>
  <entry>
    <author>
      <name>By Kebyn</name>
    </author>
    <category term="Network" scheme="https://kebyn.cc/categories/Network/"/>
    <category term="ssh" scheme="https://kebyn.cc/tags/ssh/"/>
    <category term="raspberry" scheme="https://kebyn.cc/tags/raspberry/"/>
    <category term="release" scheme="https://kebyn.cc/tags/release/"/>
    <content>
      <![CDATA[<h5 id="2016-11-25："><a href="#2016-11-25：" class="headerlink" title="2016-11-25："></a>2016-11-25：</h5><p>  <em><strong>*默认情况下禁用SSH; 可以通过在引导分区中创建名为“ssh”的文件来启用</strong></em><br>  <em><strong>*启用默认密码时启用SSH时提示密码更改</strong></em></p><blockquote><p><a href="http://downloads.raspberrypi.org/raspbian/release_notes.txt">官方文档</a></p></blockquote><figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br><span class="line">18</span><br><span class="line">19</span><br><span class="line">20</span><br><span class="line">21</span><br><span class="line">22</span><br><span class="line">23</span><br><span class="line">24</span><br><span class="line">25</span><br><span class="line">26</span><br><span class="line">27</span><br><span class="line">28</span><br><span class="line">29</span><br><span class="line">30</span><br><span class="line">31</span><br><span class="line">32</span><br><span class="line">33</span><br><span class="line">34</span><br><span class="line">35</span><br><span class="line">36</span><br></pre></td><td class="code"><pre><span class="line">2017-04-10：</span><br><span class="line">  * Wolfram Mathematica更新到11.0.1版本</span><br><span class="line">  * Adobe Flash Player已更新至版本25.0.0.127</span><br><span class="line">  *使用PARTUUID来支持USB启动</span><br><span class="line">2017-03-02：</span><br><span class="line">  *更新内核和固件（最终的Pi Zero W支持）</span><br><span class="line">  * Wolfram Mathematica更新到版本11</span><br><span class="line">  * NOOBS安装现在检查在NOOBS分区上是否存在&#x27;ssh&#x27;文件。</span><br><span class="line">2017-02-16：</span><br><span class="line">  * Chromium浏览器更新到版本56</span><br><span class="line">  * Adobe Flash Player已更新至24.0.0.221版</span><br><span class="line">  * RealVNC Server和Viewer更新到6.0.2版（RealVNC Connect）</span><br><span class="line">  * Sonic Pi更新到2.11版本</span><br><span class="line">  * Node-RED更新到版本0.15.3</span><br><span class="line">  * Scratch更新到120117版本</span><br><span class="line">  *使用默认密码检测启用的SSH已移至PAM</span><br><span class="line">  *更新桌面GL驱动程序，以支持使用假KMS选项</span><br><span class="line">  * Raspberry Pi配置和raspi-config允许设置固定的HDMI分辨率</span><br><span class="line">  * raspi-config允许串行硬件独立于串行终端</span><br><span class="line">  *更新内核和固件</span><br><span class="line">  *各种小错误修复和可用性和外观调整</span><br><span class="line">2017-01-11：</span><br><span class="line">  *使用FAT32格式的引导分区重新发布2016-11-25图像</span><br><span class="line">2016-11-25：</span><br><span class="line">  *默认情况下禁用SSH; 可以通过在引导分区中创建名为“ssh”的文件来启用</span><br><span class="line">  *启用默认密码时启用SSH时提示密码更改</span><br><span class="line">  *包括Adobe Flash Player</span><br><span class="line">  *更新Chromium浏览器中的硬件视频加速</span><br><span class="line">  * Greeter现在使用外观设置中最后一个设置的背景图像，而不是pi用户</span><br><span class="line">  *更新版本的Scratch</span><br><span class="line">  *从raspi-config和Raspberry Pi Configuration中删除Rastrack选项</span><br><span class="line">  *能够禁用图形启动启动屏幕添加到raspi-config和Raspberry Pi配置</span><br><span class="line">  *外观设置对话框标签为在小屏幕上更好地工作</span><br><span class="line">  * Raspberry Pi配置现在需要当前密码才能更改密码</span><br><span class="line">  *各种小错误修复</span><br><span class="line">  *更新固件和内核</span><br></pre></td></tr></table></figure><span id="more"></span><figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br><span class="line">18</span><br><span class="line">19</span><br><span class="line">20</span><br><span class="line">21</span><br><span class="line">22</span><br><span class="line">23</span><br><span class="line">24</span><br><span class="line">25</span><br><span class="line">26</span><br><span class="line">27</span><br><span class="line">28</span><br><span class="line">29</span><br><span class="line">30</span><br><span class="line">31</span><br><span class="line">32</span><br><span class="line">33</span><br><span class="line">34</span><br><span class="line">35</span><br><span class="line">36</span><br><span class="line">37</span><br><span class="line">38</span><br><span class="line">39</span><br><span class="line">40</span><br><span class="line">41</span><br><span class="line">42</span><br><span class="line">43</span><br><span class="line">44</span><br><span class="line">45</span><br><span class="line">46</span><br><span class="line">47</span><br><span class="line">48</span><br><span class="line">49</span><br><span class="line">50</span><br><span class="line">51</span><br><span class="line">52</span><br><span class="line">53</span><br><span class="line">54</span><br><span class="line">55</span><br><span class="line">56</span><br><span class="line">57</span><br><span class="line">58</span><br><span class="line">59</span><br><span class="line">60</span><br><span class="line">61</span><br><span class="line">62</span><br><span class="line">63</span><br><span class="line">64</span><br><span class="line">65</span><br><span class="line">66</span><br><span class="line">67</span><br><span class="line">68</span><br><span class="line">69</span><br><span class="line">70</span><br><span class="line">71</span><br><span class="line">72</span><br><span class="line">73</span><br><span class="line">74</span><br><span class="line">75</span><br><span class="line">76</span><br><span class="line">77</span><br><span class="line">78</span><br><span class="line">79</span><br><span class="line">80</span><br><span class="line">81</span><br><span class="line">82</span><br><span class="line">83</span><br><span class="line">84</span><br><span class="line">85</span><br><span class="line">86</span><br><span class="line">87</span><br><span class="line">88</span><br><span class="line">89</span><br><span class="line">90</span><br><span class="line">91</span><br><span class="line">92</span><br><span class="line">93</span><br><span class="line">94</span><br><span class="line">95</span><br><span class="line">96</span><br><span class="line">97</span><br><span class="line">98</span><br><span class="line">99</span><br><span class="line">100</span><br><span class="line">101</span><br><span class="line">102</span><br><span class="line">103</span><br><span class="line">104</span><br><span class="line">105</span><br><span class="line">106</span><br><span class="line">107</span><br><span class="line">108</span><br><span class="line">109</span><br><span class="line">110</span><br><span class="line">111</span><br><span class="line">112</span><br><span class="line">113</span><br><span class="line">114</span><br><span class="line">115</span><br><span class="line">116</span><br><span class="line">117</span><br><span class="line">118</span><br><span class="line">119</span><br><span class="line">120</span><br><span class="line">121</span><br><span class="line">122</span><br><span class="line">123</span><br><span class="line">124</span><br><span class="line">125</span><br><span class="line">126</span><br><span class="line">127</span><br><span class="line">128</span><br><span class="line">129</span><br><span class="line">130</span><br><span class="line">131</span><br><span class="line">132</span><br><span class="line">133</span><br><span class="line">134</span><br><span class="line">135</span><br><span class="line">136</span><br><span class="line">137</span><br><span class="line">138</span><br><span class="line">139</span><br><span class="line">140</span><br><span class="line">141</span><br><span class="line">142</span><br><span class="line">143</span><br><span class="line">144</span><br><span class="line">145</span><br><span class="line">146</span><br><span class="line">147</span><br><span class="line">148</span><br><span class="line">149</span><br><span class="line">150</span><br><span class="line">151</span><br><span class="line">152</span><br><span class="line">153</span><br><span class="line">154</span><br><span class="line">155</span><br></pre></td><td class="code"><pre><span class="line">2016-09-23：</span><br><span class="line">  *新的PIXEL桌面环境 - 新的图标集，窗口设计，桌面图像，启动屏幕和恭喜</span><br><span class="line">  *包含Chromium网络浏览器</span><br><span class="line">  *包含Infinality字体渲染补丁</span><br><span class="line">  *包括RealVNC服务器和查看器</span><br><span class="line">  *包含SenseHAT仿真器</span><br><span class="line">  * RFkill条目添加到Wifi和蓝牙面板插件</span><br><span class="line">  *更新各种标准应用程序，包括Scratch和NodeRED</span><br><span class="line">  *各种错误修复，调整和翻译更新</span><br><span class="line">  *更新固件和内核（https://github.com/raspberrypi/firmware/commit/ad8608c08b122b2c228dba0ff5070d6e9519faf5）</span><br><span class="line">至于27：</span><br><span class="line">  *当D-bus不可访问时，修复了lxpanel的崩溃</span><br><span class="line">  *固定D-bus蓝牙访问权限</span><br><span class="line">  *从关闭选项中删除sudo</span><br><span class="line">  *主题更新的工具提示的外观</span><br><span class="line">  *固定弹出插件抓取焦点</span><br><span class="line">  * raspi-config命令行和GUI应用程序整理; 删除不必要的重启</span><br><span class="line">  *在piclone中更多错误检测; 复制添加的卷名称和ID</span><br><span class="line">  *更新翻译文件</span><br><span class="line">2016-05 -10：</span><br><span class="line">  *新版Scratch，不再需要sudo</span><br><span class="line">  *新版BlueJ</span><br><span class="line">  *新版本的NodeRED</span><br><span class="line">  *新版Pypy</span><br><span class="line">  *包括pigpio</span><br><span class="line">  *包括geany编辑器</span><br><span class="line">  * SD卡复印机添加（可用于复制或备份Pi）</span><br><span class="line">  *蓝牙插件添加到任务栏</span><br><span class="line">  *任务栏上的音量控制现在与蓝牙设备兼容</span><br><span class="line">  *新的关机助手应用程序</span><br><span class="line">  *鼠标双击速度设置添加到鼠标和键盘首选项应用程序</span><br><span class="line">  *选项启用/禁用1线接口和远程访问添加到Raspberry Pi配置应用程序的pigpio</span><br><span class="line">  *文件系统在首次启动时自动扩展</span><br><span class="line">  *添加空的废纸篓选项到右键菜单</span><br><span class="line">  * Ctrl-Alt-T可用于打开终端窗口</span><br><span class="line">  *各种小错误修复和外观调整</span><br><span class="line">  *更新固件和内核（https://github.com/raspberrypi/firmware/commit/cc6d7bf8b4c03a2a660ff9fdf4083fc165620866）</span><br><span class="line">2016-03-18：</span><br><span class="line">  *更新固件和内核（https://github.com/raspberrypi/firmware/commit/951799bbcd795ddf27769d14acf4813fdcbe53dc）</span><br><span class="line">  *在cmdline.txt中使用serial0</span><br><span class="line">  * wpa_supplicant.conf国家默认为GB（允许使用通道12和13）</span><br><span class="line">2016-02-26：</span><br><span class="line">  *支持添加Pi 3，包括Wifi和蓝牙</span><br><span class="line">  *将WiFi国家代码设置为raspi-config的选项</span><br><span class="line">2016-02-09：</span><br><span class="line">  * dtb使用mmc sdcard驱动程序（修复某些SD卡遇到的问题）</span><br><span class="line">2016-02-03：</span><br><span class="line">  *新版本的Sonic Pi（2.9）</span><br><span class="line">  *新版Scratch（15/1/16）</span><br><span class="line">  *新版本的Node-Red（2.5）</span><br><span class="line">  *新版Wolfram（10.3）</span><br><span class="line">  *可选实验GL桌面驱动程序（可以使用命令行raspi-config中的高级选项启用）</span><br><span class="line">  *新版本的Java（1.8.0_65）</span><br><span class="line">  *新版本的WiringPi</span><br><span class="line">  *包含raspi-gpio</span><br><span class="line">  * ping不再需要sudo（NOOBS安装除外）</span><br><span class="line">  *支持lxpanel中的更多USB音频设备</span><br><span class="line">  *在Alacarte中创建新菜单的错误修复</span><br><span class="line">  *对raspi-config和GUI进行各种更改，以整理板支持和修复错误以及更新的翻译</span><br><span class="line">  *小调整主题以支持GL驱动</span><br><span class="line">2015-11-21：</span><br><span class="line">  *包括IBM Node-RED IoT应用程序</span><br><span class="line">  *包括图形包管理器</span><br><span class="line">  *包含加速的pixman库</span><br><span class="line">  *更新了Epiphany浏览器，以提高视频兼容性</span><br><span class="line">  *更新Scratch与性能改进和错误修复</span><br><span class="line">  *更新了Raspberry Pi配置，以允许启动暂停</span><br><span class="line">    网络建立</span><br><span class="line">  *各种小错误修复</span><br><span class="line">2015-09-25：</span><br><span class="line">  *基于Debian Jessie</span><br><span class="line">  *升级应用程序 - 主显节浏览器，Scratch和Sonic Pi</span><br><span class="line">  *包含的应用程序 -  LibreOffice，Claws Mail，Greenfoot，BlueJ</span><br><span class="line">  *包含的实用程序 -  Alacarte菜单编辑器，Lxkeymap，scrot，tree，pip</span><br><span class="line">  *新的基于GUI的Raspberry Pi配置应用程序</span><br><span class="line">  * GPIO控制现在可以不需要sudo</span><br><span class="line">  *包含Magpi杂志的网页链接</span><br><span class="line">  *新的任务栏插件来弹出安装的USB驱动器</span><br><span class="line">  *默认启动现在是GUI不是桌面</span><br><span class="line">  *现在看起来基于GTK + 3默认主题</span><br><span class="line">  *打印屏幕键启动scrot以产生截图</span><br><span class="line">  *由GUI和驱动程序自动检测的通用键盘相应地加载</span><br><span class="line">  *许多小的调整和错误修复</span><br><span class="line">2015-05-05：</span><br><span class="line">  *更新UI更改</span><br><span class="line">  *更新固件</span><br><span class="line">  *安装raspberrypi-net-mods</span><br><span class="line">  *安装avahi-daemon</span><br><span class="line">  *将用户pi添加到新的i2c和spi组</span><br><span class="line">  * i2c和spi设备修改的udev规则</span><br><span class="line">2015-02-16：</span><br><span class="line">  *较新的固件与各种修复</span><br><span class="line">  *新的Sonic Pi发行</span><br><span class="line">  * Pi2兼容RPi.GPIO</span><br><span class="line">  Wolfram数学更新</span><br><span class="line">2015-01-31：</span><br><span class="line">  *支持Pi2</span><br><span class="line">  *较新的固件</span><br><span class="line">  *新的Sonic Pi发行</span><br><span class="line">  *更新划痕</span><br><span class="line">  *新的Wolfram数学发行</span><br><span class="line">  *更新主显节</span><br><span class="line">2014-12-24：</span><br><span class="line">  *通过省略python-pygame来修复回归</span><br><span class="line">2014-12-22：</span><br><span class="line">  *新固件与variosu修复和改进</span><br><span class="line">  * lxde的新UI配置</span><br><span class="line">  *各种包更新</span><br><span class="line">  * python3-pygame预装</span><br><span class="line">  *&#x27;nuscratch&#x27;，在Cog StackVM上运行</span><br><span class="line">  *其他更改</span><br><span class="line">2014-09-09：</span><br><span class="line">  *具有各种修复和改进的新固件</span><br><span class="line">  * Minecraft Pi预装</span><br><span class="line">  * Sonic Pi升级到2.0</span><br><span class="line">  *包括Collabora中的主显式浏览器工作</span><br><span class="line">  *从Java 7切换到Java 8</span><br><span class="line">  *更新数学</span><br><span class="line">  *其他次要配置更改</span><br><span class="line">2014-06-20：</span><br><span class="line">  *具有各种修复的新固件和内核错误修复</span><br><span class="line">2014-06-02：</span><br><span class="line">  *许多固件更新与主要的USB改进</span><br><span class="line">  * pyserial默认安装</span><br><span class="line">  * picamera默认安装</span><br><span class="line">2014-01-07：</span><br><span class="line">  *固件更新</span><br><span class="line">  *保存在根文件系统上的一些空间</span><br><span class="line">2013-12-20：</span><br><span class="line">  *固件更新，包括V4L2修复</span><br><span class="line">  *更新omxplayer</span><br><span class="line">2013-12-18：</span><br><span class="line">  *固件更新，现在使用内核3.10。许多改进</span><br><span class="line">  * fbturbo XOrg驱动程序默认包含并启用。谢谢</span><br><span class="line">    ssvb https://github.com/ssvb/xf86-video-fbturbo</span><br><span class="line">  *更新Scratch图像与进一步的错误修复</span><br><span class="line">  *包括Wolfram Mathematica</span><br><span class="line">  *更新到PyPy 2.2</span><br><span class="line">  *更新omxplayer</span><br><span class="line">  *包含v4l-utils用于实验V4L2 Raspberry Pi相机驱动程序</span><br><span class="line">  *更新squeak-vm以解决加载JPEG的问题</span><br><span class="line">2013-09-25：</span><br><span class="line">  *更新Scratch图像以进一步提高性能</span><br><span class="line">  *包括Oracle JDK</span><br><span class="line">  *至少需要4GiB SD卡（见上文）</span><br><span class="line">  *包含PyPy 2.1</span><br><span class="line">  *包含基本的piface包</span><br><span class="line">  *更新raspi-config以包含用于继承语言设置的错误修复</span><br><span class="line">    来自NOOBS</span><br><span class="line">2013-09-10：</span><br><span class="line">  *更新到当前顶部的树固件</span><br><span class="line">  *更新squeak-vm，包括针对Raspbery Pi优化的fastblit</span><br><span class="line">  *包括Sonic Pi和固定的jackd2包</span><br><span class="line">  *支持启动到Scratch</span><br><span class="line">  *从NOOBS继承键盘和语言设置</span><br></pre></td></tr></table></figure>]]>
    </content>
    <id>https://kebyn.cc/2017/04/16/raspberry_ssh/</id>
    <link href="https://kebyn.cc/2017/04/16/raspberry_ssh/"/>
    <published>2017-04-16T14:36:17.000Z</published>
    <summary>
      <![CDATA[<h5 id="2016-11-25："><a href="#2016-11-25：" class="headerlink" title="2016-11-25："></a>2016-11-25：</h5><p>  <em><strong>*默认情况下禁用SSH; 可以通过在引导分区中创建名为“ssh”的文件来启用</strong></em><br>  <em><strong>*启用默认密码时启用SSH时提示密码更改</strong></em></p>
<blockquote>
<p><a href="http://downloads.raspberrypi.org/raspbian/release_notes.txt">官方文档</a></p>
</blockquote>
<figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br><span class="line">18</span><br><span class="line">19</span><br><span class="line">20</span><br><span class="line">21</span><br><span class="line">22</span><br><span class="line">23</span><br><span class="line">24</span><br><span class="line">25</span><br><span class="line">26</span><br><span class="line">27</span><br><span class="line">28</span><br><span class="line">29</span><br><span class="line">30</span><br><span class="line">31</span><br><span class="line">32</span><br><span class="line">33</span><br><span class="line">34</span><br><span class="line">35</span><br><span class="line">36</span><br></pre></td><td class="code"><pre><span class="line">2017-04-10：</span><br><span class="line">  * Wolfram Mathematica更新到11.0.1版本</span><br><span class="line">  * Adobe Flash Player已更新至版本25.0.0.127</span><br><span class="line">  *使用PARTUUID来支持USB启动</span><br><span class="line">2017-03-02：</span><br><span class="line">  *更新内核和固件（最终的Pi Zero W支持）</span><br><span class="line">  * Wolfram Mathematica更新到版本11</span><br><span class="line">  * NOOBS安装现在检查在NOOBS分区上是否存在&#x27;ssh&#x27;文件。</span><br><span class="line">2017-02-16：</span><br><span class="line">  * Chromium浏览器更新到版本56</span><br><span class="line">  * Adobe Flash Player已更新至24.0.0.221版</span><br><span class="line">  * RealVNC Server和Viewer更新到6.0.2版（RealVNC Connect）</span><br><span class="line">  * Sonic Pi更新到2.11版本</span><br><span class="line">  * Node-RED更新到版本0.15.3</span><br><span class="line">  * Scratch更新到120117版本</span><br><span class="line">  *使用默认密码检测启用的SSH已移至PAM</span><br><span class="line">  *更新桌面GL驱动程序，以支持使用假KMS选项</span><br><span class="line">  * Raspberry Pi配置和raspi-config允许设置固定的HDMI分辨率</span><br><span class="line">  * raspi-config允许串行硬件独立于串行终端</span><br><span class="line">  *更新内核和固件</span><br><span class="line">  *各种小错误修复和可用性和外观调整</span><br><span class="line">2017-01-11：</span><br><span class="line">  *使用FAT32格式的引导分区重新发布2016-11-25图像</span><br><span class="line">2016-11-25：</span><br><span class="line">  *默认情况下禁用SSH; 可以通过在引导分区中创建名为“ssh”的文件来启用</span><br><span class="line">  *启用默认密码时启用SSH时提示密码更改</span><br><span class="line">  *包括Adobe Flash Player</span><br><span class="line">  *更新Chromium浏览器中的硬件视频加速</span><br><span class="line">  * Greeter现在使用外观设置中最后一个设置的背景图像，而不是pi用户</span><br><span class="line">  *更新版本的Scratch</span><br><span class="line">  *从raspi-config和Raspberry Pi Configuration中删除Rastrack选项</span><br><span class="line">  *能够禁用图形启动启动屏幕添加到raspi-config和Raspberry Pi配置</span><br><span class="line">  *外观设置对话框标签为在小屏幕上更好地工作</span><br><span class="line">  * Raspberry Pi配置现在需要当前密码才能更改密码</span><br><span class="line">  *各种小错误修复</span><br><span class="line">  *更新固件和内核</span><br></pre></td></tr></table></figure>]]>
    </summary>
    <title>rsapberry ssh 连接不上问题 (raspberry ssh connection failed)</title>
    <updated>2026-11-15T11:03:55.000Z</updated>
  </entry>
  <entry>
    <author>
      <name>By Kebyn</name>
    </author>
    <category term="Database" scheme="https://kebyn.cc/categories/Database/"/>
    <category term="conf" scheme="https://kebyn.cc/tags/conf/"/>
    <category term="database" scheme="https://kebyn.cc/tags/database/"/>
    <category term="mysql" scheme="https://kebyn.cc/tags/mysql/"/>
    <category term="script" scheme="https://kebyn.cc/tags/script/"/>
    <category term="password" scheme="https://kebyn.cc/tags/password/"/>
    <content>
      <![CDATA[<h4 id="mysql-config-editor是MySQL5-6-6以后版本的工具。这个工具可以认证信息加密存储在-mylogin-cnf中，通常这个文件在Linux用户的家目录和Windows的-APPDATA-MySQL目录中。"><a href="#mysql-config-editor是MySQL5-6-6以后版本的工具。这个工具可以认证信息加密存储在-mylogin-cnf中，通常这个文件在Linux用户的家目录和Windows的-APPDATA-MySQL目录中。" class="headerlink" title="mysql_config_editor是MySQL5.6.6以后版本的工具。这个工具可以认证信息加密存储在.mylogin.cnf中，通常这个文件在Linux用户的家目录和Windows的%APPDATA%\MySQL目录中。"></a>mysql_config_editor是MySQL5.6.6以后版本的工具。这个工具可以认证信息加密存储在<code>.mylogin.cnf</code>中，通常这个文件在Linux用户的<code>家目录</code>和Windows的<code>%APPDATA%\MySQL</code>目录中。</h4><h5 id="mylogin-cnf文件未加密的示例如下："><a href="#mylogin-cnf文件未加密的示例如下：" class="headerlink" title=".mylogin.cnf文件未加密的示例如下："></a><code>.mylogin.cnf</code>文件未加密的示例如下：</h5><figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br></pre></td><td class="code"><pre><span class="line">[client]</span><br><span class="line">user = mydefaultname</span><br><span class="line">password = mydefaultpass</span><br><span class="line">host = 127.0.0.1</span><br><span class="line">[mypath]</span><br><span class="line">user = myothername</span><br><span class="line">password = myotherpass</span><br><span class="line">host = localhost</span><br></pre></td></tr></table></figure><blockquote><p>实际使用时密码会被加密。</p><blockquote><p>大坑！！！ 含有特殊字符的密码不能加密成功，没有报错，但是登陆会提示密码错误，让人迷惑。    —-于2017&#x2F;04&#x2F;01更新</p></blockquote></blockquote><span id="more"></span><h5 id="mysql-config-editor的用法"><a href="#mysql-config-editor的用法" class="headerlink" title="mysql_config_editor的用法"></a>mysql_config_editor的用法</h5><p><code>shell&gt; mysql_config_editor [program_options] command [command_options]</code></p><h4 id="添加认证信息"><a href="#添加认证信息" class="headerlink" title="添加认证信息"></a>添加认证信息</h4><figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br><span class="line">18</span><br><span class="line">19</span><br><span class="line">20</span><br><span class="line">21</span><br><span class="line">22</span><br></pre></td><td class="code"><pre><span class="line">#添加认证时查看帮助信息</span><br><span class="line">shell&gt; mysql_config_editor --help set</span><br><span class="line">shell&gt; mysql_config_editor set --help</span><br><span class="line"></span><br><span class="line">#添加认证信息</span><br><span class="line">shell&gt; mysql_config_editor set --login-path=client</span><br><span class="line">         --host=localhost --user=localuser --password</span><br><span class="line">Enter password: enter password &quot;localpass&quot; here</span><br><span class="line">shell&gt; mysql_config_editor set --login-path=remote</span><br><span class="line">         --host=remote.example.com --user=remoteuser --password</span><br><span class="line">Enter password: enter password &quot;remotepass&quot; here</span><br><span class="line"></span><br><span class="line">#查看已经添加的认证信息</span><br><span class="line">shell&gt; mysql_config_editor print --all</span><br><span class="line">[client]</span><br><span class="line">user = localuser</span><br><span class="line">password = *****</span><br><span class="line">host = localhost</span><br><span class="line">[remote]</span><br><span class="line">user = remoteuser</span><br><span class="line">password = *****</span><br><span class="line">host = remote.example.com</span><br></pre></td></tr></table></figure><h4 id="无密码登陆"><a href="#无密码登陆" class="headerlink" title="无密码登陆"></a>无密码登陆</h4><figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br></pre></td><td class="code"><pre><span class="line">shell&gt; mysql --login-path=remote</span><br><span class="line"></span><br><span class="line">shell&gt; mysql --login-path=client</span><br><span class="line">#因为mysql默认读取login-path=client的认证信息，所以上条命令可以简化如下</span><br><span class="line">shell&gt; mysql</span><br><span class="line"></span><br><span class="line">shell&gt; mysql --login-path=remote --host=remote2.example.com</span><br></pre></td></tr></table></figure><h4 id="移除认证信息"><a href="#移除认证信息" class="headerlink" title="移除认证信息"></a>移除认证信息</h4><figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br></pre></td><td class="code"><pre><span class="line">shell&gt; mysql_config_editor remove --login-path=mypath --user</span><br><span class="line">shell&gt; mysql_config_editor remove --login-path=mypath</span><br></pre></td></tr></table></figure><h4 id="查看帮助"><a href="#查看帮助" class="headerlink" title="查看帮助"></a>查看帮助</h4><p><code>shell&gt; mysql_config_editor command --help</code></p><h4 id="参考链接"><a href="#参考链接" class="headerlink" title="参考链接"></a>参考链接</h4><p><a href="https://dev.mysql.com/doc/refman/5.6/en/mysql-config-editor.html">https://dev.mysql.com/doc/refman/5.6/en/mysql-config-editor.html</a><br><a href="https://dev.mysql.com/doc/refman/5.7/en/mysql-config-editor.html">https://dev.mysql.com/doc/refman/5.7/en/mysql-config-editor.html</a></p>]]>
    </content>
    <id>https://kebyn.cc/2017/03/16/mysql_nopassword/</id>
    <link href="https://kebyn.cc/2017/03/16/mysql_nopassword/"/>
    <published>2017-03-16T11:22:42.000Z</published>
    <summary>
      <![CDATA[<h4 id="mysql-config-editor是MySQL5-6-6以后版本的工具。这个工具可以认证信息加密存储在-mylogin-cnf中，通常这个文件在Linux用户的家目录和Windows的-APPDATA-MySQL目录中。"><a href="#mysql-config-editor是MySQL5-6-6以后版本的工具。这个工具可以认证信息加密存储在-mylogin-cnf中，通常这个文件在Linux用户的家目录和Windows的-APPDATA-MySQL目录中。" class="headerlink" title="mysql_config_editor是MySQL5.6.6以后版本的工具。这个工具可以认证信息加密存储在.mylogin.cnf中，通常这个文件在Linux用户的家目录和Windows的%APPDATA%\MySQL目录中。"></a>mysql_config_editor是MySQL5.6.6以后版本的工具。这个工具可以认证信息加密存储在<code>.mylogin.cnf</code>中，通常这个文件在Linux用户的<code>家目录</code>和Windows的<code>%APPDATA%\MySQL</code>目录中。</h4><h5 id="mylogin-cnf文件未加密的示例如下："><a href="#mylogin-cnf文件未加密的示例如下：" class="headerlink" title=".mylogin.cnf文件未加密的示例如下："></a><code>.mylogin.cnf</code>文件未加密的示例如下：</h5><figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br></pre></td><td class="code"><pre><span class="line">[client]</span><br><span class="line">user = mydefaultname</span><br><span class="line">password = mydefaultpass</span><br><span class="line">host = 127.0.0.1</span><br><span class="line">[mypath]</span><br><span class="line">user = myothername</span><br><span class="line">password = myotherpass</span><br><span class="line">host = localhost</span><br></pre></td></tr></table></figure>
<blockquote>
<p>实际使用时密码会被加密。</p>
<blockquote>
<p>大坑！！！ 含有特殊字符的密码不能加密成功，没有报错，但是登陆会提示密码错误，让人迷惑。    —-于2017&#x2F;04&#x2F;01更新</p>
</blockquote>
</blockquote>]]>
    </summary>
    <title>MySQL无密码登陆（MySQL_config_editor用法）</title>
    <updated>2026-11-15T11:03:55.000Z</updated>
  </entry>
</feed>
