<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:content="http://purl.org/rss/1.0/modules/content/">
  <channel>
    <title>代理 on 极客Vinkey</title>
    <link>https://www.mawenqian.com/zh/tags/proxy/</link>
    <description>Recent content in 代理 on 极客Vinkey</description>
    <image>
      <title>极客Vinkey</title>
      <url>https://www.mawenqian.com/images/papermod-cover.png</url>
      <link>https://www.mawenqian.com/images/papermod-cover.png</link>
    </image>
    <generator>Hugo</generator>
    <language>zh-CN</language>
    <copyright>MA Wenqian · mawenqian.com</copyright>
    <atom:link href="https://www.mawenqian.com/zh/tags/proxy/index.xml" rel="self" type="application/rss+xml" />
    <item>
      <title>Claude 桌面版 SSH 远程服务器：给远端 Claude 单独设置代理</title>
      <link>https://www.mawenqian.com/zh/claude-desktop-ssh-proxy/</link>
      <pubDate>Thu, 24 Sep 2026 11:00:00 +0800</pubDate>
      <guid>https://www.mawenqian.com/zh/claude-desktop-ssh-proxy/</guid>
      <description>&lt;p&gt;Claude 桌面版的 Code 标签页可以直接添加 SSH 连接，在远程服务器上跑 Claude Code。桌面版会自己把程序传到服务器上，登录凭证也由桌面版负责，&lt;strong&gt;服务器上不用装 Claude，也不用登录&lt;/strong&gt;。&lt;/p&gt;
&lt;p&gt;问题是：如果服务器的出口访问不了 Anthropic（比如服务器在香港等 Anthropic 不提供服务的地区，直连会被拒），或者你想指定它走某个网络出口，远端 Claude 就发不出请求。解决办法是在服务器上给 Claude 单独配一个代理，只影响 Claude，不动整台机器的网络。&lt;/p&gt;
&lt;!-- more --&gt;
&lt;blockquote&gt;
&lt;p&gt;不想手动配？我把这套流程做成了一个 skill，装上之后跟 Claude 说一句「帮我给 xxx 服务器配 Claude 代理」，它会自己检查、写配置、重启、验证。安装方法、以及复制一句话交给 AI 的用法，见文末「&lt;a href=&#34;https://www.mawenqian.com/zh/claude-desktop-ssh-proxy/#%e7%94%a8-skill-%e8%87%aa%e5%8a%a8%e9%85%8d%e7%bd%ae&#34;&gt;用 skill 自动配置&lt;/a&gt;」。&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h2 id=&#34;症状&#34;&gt;症状&lt;/h2&gt;
&lt;p&gt;在桌面版里连上服务器、发消息，一直没有回复，或者卡在「Starting session…」。&lt;/p&gt;
&lt;p&gt;在服务器上直接请求 API 看一下：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;curl -sI https://api.anthropic.com &lt;span class=&#34;p&#34;&gt;|&lt;/span&gt; head -1
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;返回 &lt;code&gt;403&lt;/code&gt; 基本就是出口地区被拦了。能正常连通的机器，不带凭据请求一般回的是 &lt;code&gt;401&lt;/code&gt; 或 &lt;code&gt;405&lt;/code&gt;。&lt;/p&gt;
&lt;h2 id=&#34;一在服务器上写-claude-的配置&#34;&gt;一、在服务器上写 Claude 的配置&lt;/h2&gt;
&lt;p&gt;先 SSH 登录服务器，在&lt;strong&gt;你用来连接的那个用户&lt;/strong&gt;的家目录下编辑 &lt;code&gt;~/.claude/settings.json&lt;/code&gt;：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-json&#34; data-lang=&#34;json&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;p&#34;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;nt&#34;&gt;&amp;#34;env&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;nt&#34;&gt;&amp;#34;HTTPS_PROXY&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;http://127.0.0.1:7890&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;nt&#34;&gt;&amp;#34;HTTP_PROXY&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;http://127.0.0.1:7890&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;nt&#34;&gt;&amp;#34;NO_PROXY&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;localhost,127.0.0.1,192.168.0.0/16&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;p&#34;&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;p&#34;&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;ul&gt;
&lt;li&gt;&lt;code&gt;127.0.0.1:7890&lt;/code&gt; 换成你自己的代理地址。可以是服务器本机跑的代理，也可以是局域网里旁路由的地址，比如 &lt;code&gt;http://192.168.1.2:7890&lt;/code&gt;。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;只能用 HTTP / HTTPS 代理。&lt;/strong&gt; 官方文档写明 Claude Code 不支持 SOCKS 代理。Clash / mihomo 的 mixed 端口同时支持 HTTP，用 &lt;code&gt;http://&lt;/code&gt; 就行。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;代理需要认证的话&lt;/strong&gt;，把用户名和密码写进地址：&lt;code&gt;https://user:pass@proxy.example.com:443&lt;/code&gt;。密码里有 &lt;code&gt;@&lt;/code&gt;、&lt;code&gt;:&lt;/code&gt; 这类特殊字符要做 URL 编码。密码是明文存在文件里的，记得 &lt;code&gt;chmod 600 ~/.claude/settings.json&lt;/code&gt;。&lt;/li&gt;
&lt;li&gt;&lt;code&gt;NO_PROXY&lt;/code&gt; 里放不需要走代理的地址，比如本机和内网网段。用 Tailscale 的话，可以再加上 &lt;code&gt;100.64.0.0/10,.ts.net&lt;/code&gt;。&lt;/li&gt;
&lt;li&gt;如果文件已经存在，把 &lt;code&gt;env&lt;/code&gt; 这一段合并进去，别整个覆盖掉。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;改完检查一下 JSON 格式：&lt;/p&gt;</description>
    </item>
    <item>
      <title>OpenWrt 独立 WiFi 网段指向 mihomo 旁路由：连上即自动代理</title>
      <link>https://www.mawenqian.com/zh/openwrt-wifi-mihomo/</link>
      <pubDate>Thu, 20 Aug 2026 20:00:00 +0800</pubDate>
      <guid>https://www.mawenqian.com/zh/openwrt-wifi-mihomo/</guid>
      <description>&lt;p&gt;在 OpenWrt 上新建一个独立网段并绑定独立 WiFi，用源地址策略路由把整个网段的流量指向另一个网段里的 mihomo TUN 旁路由。客户端零配置，连上这个 SSID 就自动走代理，切回主网 WiFi 就恢复直连。文末附一个挺隐蔽的踩坑：ImmortalWRT 的 DNS 劫持。&lt;/p&gt;
&lt;p&gt;旁路由本身怎么搭的，在上一篇里：&lt;a href=&#34;https://www.mawenqian.com/zh/mihomo-macvlan-gateway/&#34;&gt;用 Docker + macvlan 跑 mihomo 旁路由&lt;/a&gt;。&lt;/p&gt;
&lt;!-- more --&gt;
&lt;h2 id=&#34;目标&#34;&gt;目标&lt;/h2&gt;
&lt;p&gt;家里已有一个 mihomo 容器当旁路由（TUN 模式），主网设备想走代理就把网关/DNS 指过去。但逐台改设备很烦，家人设备也不适合动手脚。理想状态是：&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;开一个专用 WiFi，连上就全走 mihomo，断开连回主网就直连。客户端什么都不用设。&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;拓扑长这样：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;                ┌──────────────────────────────┐
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;                │  OpenWrt (ImmortalWRT)       │
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;   WiFi 主网 ── │  br-lan     10.0.0.1/24      │ ── WAN
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;   WiFi 代理 ── │  lan_hkt    192.168.88.1/24  │
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;                └──────────────┬───────────────┘
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;                               │ 10.0.0.0/24
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;                     ┌─────────┴─────────┐
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;                     │  N95 小主机        │
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;                     │  mihomo (macvlan) │
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;                     │  10.0.0.6  TUN    │
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;                     └───────────────────┘
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;mihomo 跑在 N95 上的 Docker 里，macvlan 拿到 10.0.0.6，是 &lt;strong&gt;10 段&lt;/strong&gt;的地址。新 WiFi 绑的是 &lt;strong&gt;192.168.88.0/24&lt;/strong&gt;。&lt;/p&gt;</description>
    </item>
    <item>
      <title>用 Docker &#43; macvlan 跑 mihomo 旁路由：宿主机互通与局域网接入</title>
      <link>https://www.mawenqian.com/zh/mihomo-macvlan-gateway/</link>
      <pubDate>Thu, 20 Aug 2026 19:30:00 +0800</pubDate>
      <guid>https://www.mawenqian.com/zh/mihomo-macvlan-gateway/</guid>
      <description>&lt;p&gt;家里用一台 N95 迷你主机当 homelab host，Docker 里跑 mihomo，用 macvlan 给它分一个独立的局域网 IP（&lt;code&gt;10.0.0.6&lt;/code&gt;），让它当局域网的旁路由——设备把网关指过去，流量就经过 mihomo 分流代理，不用动主路由的整体路由结构。&lt;/p&gt;
&lt;p&gt;容器起来只是第一步，实际会撞上两件事：&lt;strong&gt;宿主机和自己衍生出的 macvlan 容器默认互相不通&lt;/strong&gt;，以及&lt;strong&gt;局域网设备到底怎么切到这个网关&lt;/strong&gt;。这篇把两个都记下来。&lt;/p&gt;
&lt;!-- more --&gt;
&lt;h2 id=&#34;为什么用-macvlan&#34;&gt;为什么用 macvlan&lt;/h2&gt;
&lt;p&gt;docker-compose 配置：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-yaml&#34; data-lang=&#34;yaml&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nt&#34;&gt;services&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;  &lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;mihomo&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;    &lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;image&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;l&#34;&gt;metacubex/mihomo:latest&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;    &lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;container_name&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;l&#34;&gt;mihomo&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;    &lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;cap_add&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;      &lt;/span&gt;- &lt;span class=&#34;l&#34;&gt;NET_ADMIN&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;    &lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;devices&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;      &lt;/span&gt;- &lt;span class=&#34;l&#34;&gt;/dev/net/tun:/dev/net/tun&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;    &lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;volumes&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;      &lt;/span&gt;- &lt;span class=&#34;l&#34;&gt;./data:/root/.config/mihomo&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;    &lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;networks&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;      &lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;macvlan_net&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;        &lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;ipv4_address&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;m&#34;&gt;10.0.0.6&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;        &lt;/span&gt;&lt;span class=&#34;c&#34;&gt;# 需要 IPv6 就把下面带 # 的行全解开（含 sysctls 里那两行）&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;        &lt;/span&gt;&lt;span class=&#34;c&#34;&gt;# driver_opts:&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;        &lt;/span&gt;&lt;span class=&#34;c&#34;&gt;#   com.docker.network.endpoint.sysctls: &amp;#34;net.ipv6.conf.IFNAME.disable_ipv6=0,net.ipv6.conf.IFNAME.accept_ra=2&amp;#34;&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;    &lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;sysctls&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;      &lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;net.ipv4.ip_forward&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;m&#34;&gt;1&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;      &lt;/span&gt;&lt;span class=&#34;c&#34;&gt;# net.ipv6.conf.all.disable_ipv6: 0&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;      &lt;/span&gt;&lt;span class=&#34;c&#34;&gt;# net.ipv6.conf.all.forwarding: 1&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nt&#34;&gt;networks&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;  &lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;macvlan_net&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;    &lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;driver&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;l&#34;&gt;macvlan&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;    &lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;driver_opts&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;      &lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;parent&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;l&#34;&gt;enp1s0&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;    &lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;ipam&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;      &lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;config&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;        &lt;/span&gt;- &lt;span class=&#34;nt&#34;&gt;subnet&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;m&#34;&gt;10.0.0.0&lt;/span&gt;&lt;span class=&#34;l&#34;&gt;/24&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;          &lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;gateway&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;m&#34;&gt;10.0.0.1&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;用 macvlan 而不是普通 bridge，是因为要给容器一个和局域网其他设备平级的真实 IP，这样它才能被其他设备当网关直接访问、转发流量。bridge 模式下容器藏在宿主机的 NAT 后面，别的设备根本没法把它当网关。&lt;/p&gt;</description>
    </item>
    <item>
      <title>Docker 装完之后：免 sudo、配代理，以及每天都在敲的那些命令</title>
      <link>https://www.mawenqian.com/zh/docker-post-install/</link>
      <pubDate>Tue, 18 Aug 2026 09:20:00 +0800</pubDate>
      <guid>https://www.mawenqian.com/zh/docker-post-install/</guid>
      <description>&lt;p&gt;&lt;code&gt;apt install docker-ce&lt;/code&gt; 跑完并不等于能用了。每次装完新机器我都要重复同样三件事：把当前用户加进 docker 组、给守护进程配代理、然后把服务用 compose 起起来。这篇把这三件事和之后天天要敲的命令一起记下来，下次直接抄。&lt;/p&gt;
&lt;!-- more --&gt;
&lt;h2 id=&#34;一免-sudo-敲-docker&#34;&gt;一、免 sudo 敲 docker&lt;/h2&gt;
&lt;p&gt;刚装完执行 &lt;code&gt;docker ps&lt;/code&gt; 会报 &lt;code&gt;permission denied ... /var/run/docker.sock&lt;/code&gt;。因为这个 socket 属于 &lt;code&gt;docker&lt;/code&gt; 组，而你的用户不在组里。&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# 1. 创建 docker 组（安装时通常已自动创建，执行一下无妨）&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;sudo groupadd docker
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# 2. 将当前用户加入 docker 组&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;sudo usermod -aG docker &lt;span class=&#34;nv&#34;&gt;$USER&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# 3. 激活组更改（或者直接退出并重新登录 SSH）&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;newgrp docker
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;&lt;code&gt;newgrp&lt;/code&gt; 只对当前这个 shell 生效，新开的窗口仍然是旧的组信息。想彻底干净，还是退出重连 SSH 最省事。&lt;/p&gt;
&lt;p&gt;验证：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;docker run --rm hello-world
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;blockquote&gt;
&lt;p&gt;⚠️ 需要知道的一件事：&lt;strong&gt;docker 组等价于 root 权限&lt;/strong&gt;。进了这个组的用户，可以挂载宿主机根目录起一个容器，等于拿到全盘读写。个人服务器无所谓，多人共用的机器就要想清楚再加。&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h2 id=&#34;二给守护进程配代理&#34;&gt;二、给守护进程配代理&lt;/h2&gt;
&lt;p&gt;在境内拉 &lt;code&gt;docker.io&lt;/code&gt; 的镜像经常超时。注意这里要配的是 &lt;strong&gt;dockerd 这个守护进程的代理&lt;/strong&gt;，不是你 shell 里的 &lt;code&gt;http_proxy&lt;/code&gt;——因为真正去拉镜像的是后台的 dockerd，它读不到你终端里的环境变量。&lt;/p&gt;</description>
    </item>
  </channel>
</rss>
