<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: amoorzheyu</title>
    <description>The latest articles on DEV Community by amoorzheyu (@amoorzheyu).</description>
    <link>https://dev.to/amoorzheyu</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F3731015%2F7d2eb223-4f1d-47fe-a511-11d878626de9.jpg</url>
      <title>DEV Community: amoorzheyu</title>
      <link>https://dev.to/amoorzheyu</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/amoorzheyu"/>
    <language>en</language>
    <item>
      <title>修改 SSH 默认端口导致密钥登录失败的排查与解决</title>
      <dc:creator>amoorzheyu</dc:creator>
      <pubDate>Sun, 25 Jan 2026 10:46:02 +0000</pubDate>
      <link>https://dev.to/amoorzheyu/xiu-gai-ssh-mo-ren-duan-kou-dao-zhi-mi-yao-deng-lu-shi-bai-de-pai-cha-yu-jie-jue-1aac</link>
      <guid>https://dev.to/amoorzheyu/xiu-gai-ssh-mo-ren-duan-kou-dao-zhi-mi-yao-deng-lu-shi-bai-de-pai-cha-yu-jie-jue-1aac</guid>
      <description>&lt;p&gt;最近在服务器上修改了 SSH 默认端口，遇到密钥登录卡住、超时的问题。这里记录一下排查和解决过程，方便以后参考。&lt;/p&gt;




&lt;h2&gt;
  
  
  前提条件确认
&lt;/h2&gt;

&lt;p&gt;在排查前，我确保了以下条件：&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;服务器本地防火墙已经关闭或允许新端口&lt;/li&gt;
&lt;li&gt;云服务商安全组/防火墙已经放行该端口&lt;/li&gt;
&lt;li&gt;TCP 连接能够正常建立（通过 &lt;code&gt;telnet IP 端口号&lt;/code&gt; 验证）&lt;/li&gt;
&lt;/ul&gt;

&lt;blockquote&gt;
&lt;p&gt;也就是说网络通畅，问题出在 SSH 配置或认证阶段。&lt;/p&gt;
&lt;/blockquote&gt;




&lt;h2&gt;
  
  
  问题现象
&lt;/h2&gt;

&lt;p&gt;修改端口后，使用密钥登录时客户端出现超时，日志大致是：&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Outbound: Sending SERVICE_REQUEST (ssh-userauth)
Inbound: Received EXT_INFO
Timed out while waiting for handshake
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;分析发现：&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;TCP 连接正常&lt;/li&gt;
&lt;li&gt;SSH 握手完成&lt;/li&gt;
&lt;li&gt;卡在密钥认证阶段，服务端不响应&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  排查分析
&lt;/h2&gt;

&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;PubkeyAuthentication 默认被禁用&lt;/strong&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;查看 &lt;code&gt;/etc/ssh/sshd_config&lt;/code&gt;：&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight conf"&gt;&lt;code&gt;   &lt;span class="c"&gt;#PubkeyAuthentication yes
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ul&gt;
&lt;li&gt;注释掉意味着密钥登录默认关闭&lt;/li&gt;
&lt;li&gt;客户端发送密钥请求时服务端不响应 → 超时&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;结论&lt;/strong&gt;：修改默认端口后，很多 Linux 镜像会默认将密钥登录注释掉。&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;家目录及 &lt;code&gt;.ssh&lt;/code&gt; 权限&lt;/strong&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;SSH 对权限非常严格，如果不正确也会导致认证失败：&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;   /home/user        755
   /home/user/.ssh   700
   authorized_keys   600
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;SELinux 或云安全组件&lt;/strong&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;SELinux 可能阻止 SSH 读取公钥&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;云厂商安全组件可能限制非默认端口的密钥登录&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;blockquote&gt;
&lt;p&gt;前提是网络通畅、防火墙放行的情况下，这些仍可能导致问题。&lt;/p&gt;
&lt;/blockquote&gt;




&lt;h2&gt;
  
  
  解决过程
&lt;/h2&gt;

&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;显式开启密钥认证&lt;/strong&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;修改 &lt;code&gt;/etc/ssh/sshd_config&lt;/code&gt;：&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight conf"&gt;&lt;code&gt;   &lt;span class="n"&gt;PermitRootLogin&lt;/span&gt; &lt;span class="n"&gt;yes&lt;/span&gt;
   &lt;span class="n"&gt;PubkeyAuthentication&lt;/span&gt; &lt;span class="n"&gt;yes&lt;/span&gt;
   &lt;span class="n"&gt;AuthorizedKeysFile&lt;/span&gt; .&lt;span class="n"&gt;ssh&lt;/span&gt;/&lt;span class="n"&gt;authorized_keys&lt;/span&gt;
   &lt;span class="n"&gt;PermitEmptyPasswords&lt;/span&gt; &lt;span class="n"&gt;no&lt;/span&gt;
   &lt;span class="n"&gt;Subsystem&lt;/span&gt;       &lt;span class="n"&gt;sftp&lt;/span&gt;    /&lt;span class="n"&gt;usr&lt;/span&gt;/&lt;span class="n"&gt;libexec&lt;/span&gt;/&lt;span class="n"&gt;openssh&lt;/span&gt;/&lt;span class="n"&gt;sftp&lt;/span&gt;-&lt;span class="n"&gt;server&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;检查权限&lt;/strong&gt;
&lt;/li&gt;
&lt;/ol&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;   &lt;span class="nb"&gt;ls&lt;/span&gt; &lt;span class="nt"&gt;-ld&lt;/span&gt; /home/user
   &lt;span class="nb"&gt;ls&lt;/span&gt; &lt;span class="nt"&gt;-ld&lt;/span&gt; /home/user/.ssh
   &lt;span class="nb"&gt;ls&lt;/span&gt; &lt;span class="nt"&gt;-l&lt;/span&gt; /home/user/.ssh/authorized_keys
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ul&gt;
&lt;li&gt;
&lt;code&gt;/home/user&lt;/code&gt; → 755&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;.ssh&lt;/code&gt; → 700&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;authorized_keys&lt;/code&gt; → 600&lt;/li&gt;
&lt;/ul&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;重启 SSH 服务&lt;/strong&gt;
&lt;/li&gt;
&lt;/ol&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;   &lt;span class="nb"&gt;sudo &lt;/span&gt;systemctl restart sshd
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;本地测试密钥登录&lt;/strong&gt;
&lt;/li&gt;
&lt;/ol&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;   ssh &lt;span class="nt"&gt;-i&lt;/span&gt; /path/to/private_key &lt;span class="nt"&gt;-p&lt;/span&gt; 端口号 user@服务器公网IP
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;登录成功后问题解决。&lt;/p&gt;




&lt;h2&gt;
  
  
  总结
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;修改 SSH 默认端口后，密钥登录可能会默认被禁用。&lt;/li&gt;
&lt;li&gt;即便关闭了防火墙和云供应商安全组，也可能出现问题，因为 SSH 默认策略或安全组件会阻止密钥认证。&lt;/li&gt;
&lt;li&gt;核心解决办法：显式开启 &lt;code&gt;PubkeyAuthentication yes&lt;/code&gt;，保证家目录和 &lt;code&gt;.ssh&lt;/code&gt; 权限正确。&lt;/li&gt;
&lt;/ul&gt;

</description>
      <category>linux</category>
      <category>networking</category>
      <category>security</category>
      <category>tutorial</category>
    </item>
    <item>
      <title>系统代理配置不可持久化的问题排查与解决</title>
      <dc:creator>amoorzheyu</dc:creator>
      <pubDate>Sun, 25 Jan 2026 07:41:32 +0000</pubDate>
      <link>https://dev.to/amoorzheyu/xi-tong-dai-li-pei-zhi-bu-ke-chi-jiu-hua-de-wen-ti-pai-cha-yu-jie-jue-23j8</link>
      <guid>https://dev.to/amoorzheyu/xi-tong-dai-li-pei-zhi-bu-ke-chi-jiu-hua-de-wen-ti-pai-cha-yu-jie-jue-23j8</guid>
      <description>&lt;p&gt;最近在使用 &lt;strong&gt;Mihomo（Clash 内核）&lt;/strong&gt; 时，我遇到了一个非常具体、但又绕不开的实际问题：&lt;br&gt;
&lt;strong&gt;我需要在开启系统代理的同时，正常访问公司内网的域名，而系统代理这一层恰好出了问题，并且在这个软件里无法配置。&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;这篇文章记录的不是网络原理本身，而是&lt;strong&gt;系统代理配置在现实使用场景中被覆盖、无法持久化时，应该如何工程化地解决&lt;/strong&gt;，以及最终我为什么选择用一个 bat 脚本来兜底。&lt;/p&gt;


&lt;h2&gt;
  
  
  一、真实的使用场景：系统代理 + 内网域名访问
&lt;/h2&gt;

&lt;p&gt;先说清楚背景动机。&lt;/p&gt;

&lt;p&gt;我的使用场景是：&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;浏览器需要使用系统代理（由 Mihomo 提供）&lt;/li&gt;
&lt;li&gt;同时需要访问公司内网网站&lt;/li&gt;
&lt;li&gt;内网网站是通过 &lt;strong&gt;内网域名&lt;/strong&gt; 访问的&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;这些域名依赖：&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;系统路由&lt;/li&gt;
&lt;li&gt;内网 DNS&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;不能走代理&lt;/strong&gt;&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;在 Windows 下，浏览器是否走代理，完全由 &lt;strong&gt;系统代理配置&lt;/strong&gt; 决定，尤其是：&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;“不使用代理的地址”（ProxyOverride）&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;只要内网域名没有被正确配置在这里：&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;浏览器请求就会被交给代理程序&lt;/li&gt;
&lt;li&gt;解析和连接都会走错路径&lt;/li&gt;
&lt;li&gt;结果就是内网网站无法访问&lt;/li&gt;
&lt;/ul&gt;


&lt;h2&gt;
  
  
  二、问题出现：系统代理例外配置无法保持
&lt;/h2&gt;

&lt;p&gt;一开始的操作非常直觉：&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;打开 Windows 系统代理设置&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;在“不使用代理的地址”里添加：&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;内网网段&lt;/li&gt;
&lt;li&gt;内网域名&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;p&gt;保存&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;当下效果是完全正确的：&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;内网域名立刻可以访问&lt;/li&gt;
&lt;li&gt;行为符合预期&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;但问题在于：&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;关闭 Mihomo&lt;/li&gt;
&lt;li&gt;再重新启动&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;刚刚添加的系统代理例外全部消失&lt;/strong&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;而且这是一个稳定可复现的现象。&lt;/p&gt;

&lt;p&gt;这说明问题已经不在“配置是否正确”，而在于：&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;有程序在启动时主动覆盖了系统代理配置。&lt;/strong&gt;&lt;/p&gt;
&lt;/blockquote&gt;


&lt;h2&gt;
  
  
  三、确认事实：Mihomo 启动会重写系统代理
&lt;/h2&gt;

&lt;p&gt;通过简单的验证可以确认：&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;在 Mihomo 未运行时修改系统代理&lt;/li&gt;
&lt;li&gt;注册表中 &lt;code&gt;ProxyOverride&lt;/code&gt; 已正确更新&lt;/li&gt;
&lt;li&gt;启动 Mihomo&lt;/li&gt;
&lt;li&gt;对应配置被整体重写&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;这意味着：&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Mihomo 在启动时&lt;/li&gt;
&lt;li&gt;并不是“读取并合并”现有系统代理配置&lt;/li&gt;
&lt;li&gt;而是&lt;strong&gt;直接写入一套固定模板&lt;/strong&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;这也是为什么：&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;手动改 UI 没有持久性&lt;/li&gt;
&lt;li&gt;重启软件就会丢失配置&lt;/li&gt;
&lt;/ul&gt;


&lt;h2&gt;
  
  
  四、为什么这个问题在 Mihomo 里无法解决
&lt;/h2&gt;

&lt;p&gt;接下来一个很自然的想法是：&lt;br&gt;
能不能在 Mihomo 里直接配置这些系统代理例外？&lt;/p&gt;

&lt;p&gt;结论是：&lt;strong&gt;不能。&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;原因在于设计取向：&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;Mihomo 关注的是：&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;代理端口&lt;/li&gt;
&lt;li&gt;规则匹配&lt;/li&gt;
&lt;li&gt;代理侧 DNS&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Windows 系统代理对它来说只是：&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;一个“启动时顺手写一次”的配置&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;系统代理例外（ProxyOverride）并不是它希望用户长期维护的配置项。&lt;/p&gt;

&lt;p&gt;换句话说：&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;系统代理配置只是 Mihomo 的副作用，而不是它的核心能力。&lt;/strong&gt;&lt;/p&gt;
&lt;/blockquote&gt;


&lt;h2&gt;
  
  
  五、关键认知转变：UI 不是最终真相
&lt;/h2&gt;

&lt;p&gt;到这里，一个关键认知就很清楚了：&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Windows 的系统代理设置页面只是一个 UI&lt;/li&gt;
&lt;li&gt;真正决定行为的是注册表&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;所有系统代理相关内容最终都落在：&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;HKCU\Software\Microsoft\Windows\CurrentVersion\Internet Settings
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;其中关键字段是：&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;code&gt;ProxyOverride&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;在这个模型下：&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;谁最后写入，谁就拥有最终控制权。&lt;/strong&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;而在我的场景中：&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Mihomo 每次启动都会成为“最后写入者”&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  六、思路转变：不阻止覆盖，而是在覆盖后修正
&lt;/h2&gt;

&lt;p&gt;确认这些事实之后，解决思路反而变简单了：&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;不试图阻止 Mihomo 写系统代理&lt;/li&gt;
&lt;li&gt;不反复通过 UI 去“抢配置”&lt;/li&gt;
&lt;li&gt;而是：&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;接受覆盖的存在，在覆盖完成之后，把配置修正回来。&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;这是一个典型的工程问题，而不是配置技巧问题。&lt;/p&gt;




&lt;h2&gt;
  
  
  七、最终方案：用 bat 脚本维护 ProxyOverride
&lt;/h2&gt;

&lt;p&gt;系统代理例外本质上只是一个字符串：&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;分号分隔&lt;/li&gt;
&lt;li&gt;支持通配符&lt;/li&gt;
&lt;li&gt;支持内网域名&lt;/li&gt;
&lt;li&gt;支持 &lt;code&gt;&amp;lt;local&amp;gt;&lt;/code&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;非常适合脚本化维护。&lt;/p&gt;

&lt;p&gt;脚本的目标只有一个：&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;无论当前系统代理被写成什么样，都把 ProxyOverride 改成我期望的状态。&lt;/strong&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h3&gt;
  
  
  使用方式
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;启动 Mihomo&lt;/li&gt;
&lt;li&gt;执行一次脚本&lt;/li&gt;
&lt;li&gt;系统代理例外立即恢复&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  八、最终使用的 bat 脚本
&lt;/h2&gt;

&lt;p&gt;下面是我最终使用的脚本内容，逻辑尽量保持简单和稳定。&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight batchfile"&gt;&lt;code&gt;@echo &lt;span class="na"&gt;off&lt;/span&gt;

&lt;span class="c"&gt;REM =========================&lt;/span&gt;
&lt;span class="c"&gt;REM ProxyOverride 脚本&lt;/span&gt;
&lt;span class="c"&gt;REM =========================&lt;/span&gt;

&lt;span class="kd"&gt;set&lt;/span&gt; &lt;span class="kd"&gt;LOCAL_BASIC&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="kd"&gt;localhost&lt;/span&gt;&lt;span class="o"&gt;;&lt;/span&gt;&lt;span class="m"&gt;127&lt;/span&gt;.&lt;span class="o"&gt;*&lt;/span&gt;
&lt;span class="kd"&gt;set&lt;/span&gt; &lt;span class="kd"&gt;PRIVATE_NETS&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="m"&gt;10&lt;/span&gt;.&lt;span class="o"&gt;*;&lt;/span&gt;&lt;span class="m"&gt;192&lt;/span&gt;.168.&lt;span class="o"&gt;*&lt;/span&gt;
&lt;span class="kd"&gt;set&lt;/span&gt; &lt;span class="kd"&gt;PRIVATE_172&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="m"&gt;172&lt;/span&gt;.16.&lt;span class="o"&gt;*;&lt;/span&gt;&lt;span class="m"&gt;172&lt;/span&gt;.17.&lt;span class="o"&gt;*;&lt;/span&gt;&lt;span class="m"&gt;172&lt;/span&gt;.18.&lt;span class="o"&gt;*;&lt;/span&gt;&lt;span class="m"&gt;172&lt;/span&gt;.19.&lt;span class="o"&gt;*;&lt;/span&gt;&lt;span class="m"&gt;172&lt;/span&gt;.20.&lt;span class="o"&gt;*;&lt;/span&gt;&lt;span class="m"&gt;172&lt;/span&gt;.21.&lt;span class="o"&gt;*;&lt;/span&gt;&lt;span class="m"&gt;172&lt;/span&gt;.22.&lt;span class="o"&gt;*;&lt;/span&gt;&lt;span class="m"&gt;172&lt;/span&gt;.23.&lt;span class="o"&gt;*;&lt;/span&gt;&lt;span class="m"&gt;172&lt;/span&gt;.24.&lt;span class="o"&gt;*;&lt;/span&gt;&lt;span class="m"&gt;172&lt;/span&gt;.25.&lt;span class="o"&gt;*;&lt;/span&gt;&lt;span class="m"&gt;172&lt;/span&gt;.26.&lt;span class="o"&gt;*;&lt;/span&gt;&lt;span class="m"&gt;172&lt;/span&gt;.27.&lt;span class="o"&gt;*;&lt;/span&gt;&lt;span class="m"&gt;172&lt;/span&gt;.28.&lt;span class="o"&gt;*;&lt;/span&gt;&lt;span class="m"&gt;172&lt;/span&gt;.29.&lt;span class="o"&gt;*;&lt;/span&gt;&lt;span class="m"&gt;172&lt;/span&gt;.30.&lt;span class="o"&gt;*;&lt;/span&gt;&lt;span class="m"&gt;172&lt;/span&gt;.31.&lt;span class="o"&gt;*&lt;/span&gt;

&lt;span class="c"&gt;REM 注意：&amp;lt;local&amp;gt; 不能进 set 变量&lt;/span&gt;
&lt;span class="nb"&gt;reg&lt;/span&gt; &lt;span class="kd"&gt;add&lt;/span&gt; &lt;span class="s2"&gt;"HKCU\Software\Microsoft\Windows\CurrentVersion\Internet Settings"&lt;/span&gt; &lt;span class="na"&gt;/v &lt;/span&gt;&lt;span class="kd"&gt;ProxyOverride&lt;/span&gt; &lt;span class="na"&gt;/t &lt;/span&gt;&lt;span class="kd"&gt;REG_SZ&lt;/span&gt; &lt;span class="na"&gt;/d &lt;/span&gt;&lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="nv"&gt;%LOCAL_BASIC%&lt;/span&gt;&lt;span class="s2"&gt;;&lt;/span&gt;&lt;span class="nv"&gt;%PRIVATE_NETS%&lt;/span&gt;&lt;span class="s2"&gt;;&lt;/span&gt;&lt;span class="vm"&gt;%PRIVATE&lt;/span&gt;&lt;span class="s2"&gt;_172&lt;/span&gt;&lt;span class="err"&gt;%&lt;/span&gt;&lt;span class="s2"&gt;;*.suanleme.local;&amp;lt;local&amp;gt;"&lt;/span&gt; &lt;span class="na"&gt;/f

&lt;/span&gt;&lt;span class="kd"&gt;ie4uinit&lt;/span&gt;&lt;span class="err"&gt;.exe&lt;/span&gt; &lt;span class="na"&gt;-show

&lt;/span&gt;&lt;span class="nb"&gt;echo&lt;/span&gt;.
&lt;span class="nb"&gt;echo&lt;/span&gt; &lt;span class="kd"&gt;Current&lt;/span&gt; &lt;span class="kd"&gt;ProxyOverride&lt;/span&gt;:
&lt;span class="nb"&gt;reg&lt;/span&gt; &lt;span class="nb"&gt;query&lt;/span&gt; &lt;span class="s2"&gt;"HKCU\Software\Microsoft\Windows\CurrentVersion\Internet Settings"&lt;/span&gt; &lt;span class="na"&gt;/v &lt;/span&gt;&lt;span class="kd"&gt;ProxyOverride&lt;/span&gt;
&lt;span class="nb"&gt;echo&lt;/span&gt;.
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;这个脚本的特点是：&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;不依赖 UI&lt;/li&gt;
&lt;li&gt;不依赖 Mihomo 是否支持配置&lt;/li&gt;
&lt;li&gt;每次执行结果确定&lt;/li&gt;
&lt;li&gt;可随时修改、扩展内网规则&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  九、最终效果
&lt;/h2&gt;

&lt;p&gt;使用脚本后，流程变成：&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;启动 Mihomo&lt;/li&gt;
&lt;li&gt;系统代理被写入其默认配置&lt;/li&gt;
&lt;li&gt;执行脚本&lt;/li&gt;
&lt;li&gt;内网域名被正确排除出系统代理&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;结果是：&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;内网网站访问稳定&lt;/li&gt;
&lt;li&gt;不再反复检查系统代理 UI&lt;/li&gt;
&lt;li&gt;不再担心“下次启动又坏了”&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  十、总结
&lt;/h2&gt;

&lt;p&gt;这次问题表面上是：&lt;/p&gt;

&lt;p&gt;“系统代理配置为什么保存不了？”&lt;/p&gt;

&lt;p&gt;但真正学到的是：&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;当配置反复被覆盖时，说明你找错了修改入口&lt;/li&gt;
&lt;li&gt;UI 只是表象，注册表才是底层事实&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;当工具不支持你的需求粒度时：&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;与其反复手工操作&lt;/li&gt;
&lt;li&gt;不如用脚本补齐能力&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;/ul&gt;

&lt;p&gt;最终我接受了一个很工程化的结论：&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;当配置开始变得不可控时，&lt;br&gt;
脚本不是折腾，而是最稳妥的解决方案。&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;把这次过程记录下来，避免以后再从同一个坑重新踩一遍。&lt;/p&gt;

</description>
      <category>automation</category>
      <category>microsoft</category>
      <category>networking</category>
      <category>tutorial</category>
    </item>
    <item>
      <title>双 VPN 环境下的一次排错记录：内网域名无法访问的问题</title>
      <dc:creator>amoorzheyu</dc:creator>
      <pubDate>Sun, 25 Jan 2026 06:34:49 +0000</pubDate>
      <link>https://dev.to/amoorzheyu/shuang-vpn-huan-jing-xia-de-ci-pai-cuo-ji-lu-nei-wang-yu-ming-wu-fa-fang-wen-de-wen-ti-2dh5</link>
      <guid>https://dev.to/amoorzheyu/shuang-vpn-huan-jing-xia-de-ci-pai-cuo-ji-lu-nei-wang-yu-ming-wu-fa-fang-wen-de-wen-ti-2dh5</guid>
      <description>&lt;p&gt;最近在使用双 VPN 的网络环境时，遇到了一次比较典型但又容易被忽略的问题：一边需要翻墙访问公网，一边又要连接公司内网，结果发现内网网站通过域名无法访问。这里记录一下整个排查和解决过程，作为一篇个人使用日志。&lt;/p&gt;




&lt;h2&gt;
  
  
  背景
&lt;/h2&gt;

&lt;p&gt;当时的网络环境是同时开启了两个 VPN：&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;VPN A：Mihomo Party&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;用于翻墙访问墙外网站&lt;/li&gt;
&lt;li&gt;采用规则模式，规则中已经排除了内网域名&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;VPN B：OpenVPN&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;用于访问公司内网&lt;/li&gt;
&lt;li&gt;内网中包含数据库、内部网站以及其他服务&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;从设计上看，两个 VPN 的职责是明确分开的：&lt;br&gt;
公网流量交给 Mihomo，内网流量交给 OpenVPN。&lt;/p&gt;




&lt;h2&gt;
  
  
  问题现象
&lt;/h2&gt;

&lt;p&gt;问题出现时的表现比较奇怪：&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;公网网站可以正常访问，翻墙没有问题&lt;/li&gt;
&lt;li&gt;内网数据库可以正常连接&lt;/li&gt;
&lt;li&gt;但通过浏览器访问内网网站（使用域名）却始终打不开&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;这说明问题并不是简单的“内网不通”。&lt;/p&gt;




&lt;h2&gt;
  
  
  初步排查
&lt;/h2&gt;

&lt;p&gt;首先检查的是最基础的连通性。&lt;/p&gt;

&lt;p&gt;使用 ping 测试内网域名，结果是正常的，这意味着：&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;OpenVPN 隧道是通的&lt;/li&gt;
&lt;li&gt;内网路由没有问题&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;既然网络层没问题，那就只能把注意力放到应用层。&lt;/p&gt;




&lt;h2&gt;
  
  
  逐步定位问题
&lt;/h2&gt;

&lt;p&gt;接下来我把关注点放在浏览器和代理行为上。&lt;/p&gt;

&lt;p&gt;浏览器默认是依赖系统代理的，而 Mihomo Party 启动后会接管系统代理设置。虽然在 Mihomo 的规则中已经把内网域名设置为 DIRECT，但浏览器的请求实际上仍然会先被送到 Mihomo。&lt;/p&gt;

&lt;p&gt;这一步本身并不一定有问题，真正的关键在于 DNS。&lt;/p&gt;




&lt;h2&gt;
  
  
  DNS 解析路径的差异
&lt;/h2&gt;

&lt;p&gt;在这个双 VPN 场景下，实际上存在两套完全不同的 DNS 解析路径。&lt;/p&gt;

&lt;p&gt;当流量走代理时：&lt;/p&gt;

&lt;p&gt;浏览器&lt;br&gt;
→ Mihomo Party&lt;br&gt;
→ Mihomo 内置 DNS 或公网 DNS&lt;/p&gt;

&lt;p&gt;这种情况下，内网域名是无法被正确解析的。&lt;/p&gt;

&lt;p&gt;而当流量真正直连时：&lt;/p&gt;

&lt;p&gt;浏览器&lt;br&gt;
→ 系统路由&lt;br&gt;
→ OpenVPN 下发的内网 DNS&lt;/p&gt;

&lt;p&gt;只有走这条路径，内网域名才能解析成功，内网网站才能访问。&lt;/p&gt;

&lt;p&gt;问题就出在这里：浏览器访问内网网站时，并没有真正绕过系统代理。&lt;/p&gt;




&lt;h2&gt;
  
  
  问题根因
&lt;/h2&gt;

&lt;p&gt;总结下来，根因其实很清晰：&lt;/p&gt;

&lt;p&gt;浏览器访问内网域名时，流量仍然被系统代理交给了 Mihomo，导致 DNS 使用的是公网侧的解析器，而不是 OpenVPN 提供的内网 DNS，从而造成内网域名解析失败。&lt;/p&gt;




&lt;h2&gt;
  
  
  解决办法
&lt;/h2&gt;

&lt;p&gt;解决思路其实很直接：&lt;br&gt;
让浏览器在访问内网资源时，彻底绕过系统代理。&lt;/p&gt;

&lt;p&gt;在 Windows 系统中，这需要通过配置 &lt;strong&gt;系统代理的例外规则（ProxyOverride）&lt;/strong&gt; 来实现。&lt;/p&gt;

&lt;p&gt;具体操作如下：&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;打开 &lt;strong&gt;Internet 选项&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;进入 &lt;strong&gt;连接 → 局域网设置&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;在 &lt;strong&gt;代理服务器&lt;/strong&gt; 中点击 &lt;strong&gt;高级&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;在“不使用代理服务器的地址”中添加内网地址和域名，例如：
&lt;/li&gt;
&lt;/ol&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;localhost;127.*;192.168.*;10.*;
172.16.*;172.17.*;172.18.*;172.19.*;172.20.*;
*.suanleme.local
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;完成以上配置后，浏览器在访问这些地址时将：&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;不再经过代理程序&lt;/li&gt;
&lt;li&gt;直接使用系统路由和内网 DNS&lt;/li&gt;
&lt;li&gt;内网网站可以正常访问&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;但在实际使用中很快发现，这种方式只能暂时生效。&lt;br&gt;
只要重新启动 Mihomo，系统代理的例外配置就会被覆盖，无法持久化。&lt;/p&gt;

&lt;p&gt;针对系统代理配置不可持久化的问题，后续对原因进行了进一步排查，并最终通过脚本的方式进行修正，完整的分析和解决过程已整理如下：&lt;/p&gt;

&lt;p&gt;&lt;a href="https://dev.to/amoorzheyu/xi-tong-dai-li-pei-zhi-bu-ke-chi-jiu-hua-de-wen-ti-pai-cha-yu-jie-jue-23j8"&gt;系统代理配置不可持久化的问题排查与解决&lt;/a&gt;&lt;/p&gt;




&lt;h2&gt;
  
  
  再看一次整体流程
&lt;/h2&gt;

&lt;p&gt;调整完成后，整个访问逻辑就变得很清晰了。&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;内网域名&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;浏览器直连&lt;/li&gt;
&lt;li&gt;使用 OpenVPN 下发的内网 DNS&lt;/li&gt;
&lt;li&gt;可以正常访问&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;li&gt;

&lt;p&gt;公网域名&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;浏览器走系统代理&lt;/li&gt;
&lt;li&gt;由 Mihomo Party 转发&lt;/li&gt;
&lt;li&gt;使用 Mihomo 内置 DNS 翻墙访问&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;/ul&gt;

&lt;p&gt;内网和公网各走各的路，互不干扰。&lt;/p&gt;




&lt;h2&gt;
  
  
  结果验证
&lt;/h2&gt;

&lt;p&gt;修改系统代理例外后：&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;浏览器可以正常访问内网网站&lt;/li&gt;
&lt;li&gt;公网网站依然可以正常翻墙&lt;/li&gt;
&lt;li&gt;内网数据库访问没有受到任何影响&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;双 VPN 可以稳定同时使用。&lt;/p&gt;




&lt;h2&gt;
  
  
  小结
&lt;/h2&gt;

&lt;p&gt;这次问题的关键不在 VPN 本身，而在于浏览器、系统代理和 DNS 之间的配合关系。&lt;/p&gt;

&lt;p&gt;在双 VPN 环境下：&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;分流规则只是第一步&lt;/li&gt;
&lt;li&gt;系统代理例外决定浏览器是否真正直连&lt;/li&gt;
&lt;li&gt;DNS 解析路径最终决定访问是否成功&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;把这几个点想清楚之后，这类问题基本都能快速定位和解决。&lt;/p&gt;

</description>
      <category>devjournal</category>
      <category>networking</category>
      <category>productivity</category>
      <category>tutorial</category>
    </item>
  </channel>
</rss>
