id: 34fbf03c9e314fc085077eee4ed00f20
parent_id: 
item_type: 1
item_id: 1eb573864e924e979e04f78f139fdc6e
item_updated_time: 1764345504563
title_diff: "[{\"diffs\":[[1,\"Docker+Clash 部署透明“网关”的实现\"]],\"start1\":0,\"start2\":0,\"length1\":0,\"length2\":24}]"
body_diff: "[{\"diffs\":[[1,\"<html>\\\r\\\n<head>\\\r\\\n  <title>Docker+Clash 部署透明“网关”的实现</title>\\\r\\\n  <basefont face=\\\"微软雅黑\\\" size=\\\"2\\\" />\\\r\\\n  <meta http-equiv=\\\"Content-Type\\\" content=\\\"text/html;charset=utf-8\\\" />\\\r\\\n  <meta name=\\\"exporter-version\\\" content=\\\"YXBJ Windows/608924 (zh-CN, DDL); Windows/10.0.0 (Win64); EDAMVersion=V2;\\\"/>\\\r\\\n  <style>\\\r\\\n\\tbody, td {\\\r\\\n\\t  font-family: 微软雅黑;\\\r\\\n\\t  font-size: 12pt;\\\r\\\n\\t}\\\r\\\n  </style>\\\r\\\n</head>\\\r\\\n<body>\\\r\\\n<a name=\\\"32599\\\"></a>\\\r\\\n<h1>Docker+Clash 部署透明“网关”的实现</h1>\\\r\\\n\\\r\\\n<div><span>\\\n  <div style=\\\"--en-clipped-content:article\\\">\\\n<div><br/></div><div style=\\\"font-size: 16px; display:inline; min-width: 100%; position: relative;\\\"> <div><div style=\\\"font-family:-apple-system, BlinkMacSystemFont, &quot;Helvetica Neue&quot;, &quot;PingFang SC&quot;, &quot;Microsoft YaHei&quot;, &quot;Source Han Sans SC&quot;, &quot;Noto Sans CJK SC&quot;, &quot;WenQuanYi Micro Hei&quot;, sans-serif;color:rgb(18, 18, 18);-webkit-tap-highlight-color:rgba(18, 18, 18, 0);background:rgb(255, 255, 255);\\\"><div><div><span><div style=\\\"background:rgb(255, 255, 255);\\\"><div style=\\\"box-sizing:border-box;\\\"><div style=\\\"overflow:visible;\\\"><div><div><div style=\\\"word-break:break-word;line-height:1.6;\\\"><h2 style=\\\"font:inherit;margin:0px;font-synthesis:style;clear:left;margin-bottom:1.16667em;font-size:1.2em;line-height:1.5;font-weight:600;margin-top:0px;\\\">前言：</h2><p style=\\\"margin:1.4em 0px;\\\">偶然发现原来Docker里面的Clash也能进行全局网络接管，研究了一下，目前网络上的相关文章较少，且有些在实现上有错误。</p><p style=\\\"margin:1.4em 0px;\\\">故而整理出来这篇文章，仅供学习交流使用。</p><p style=\\\"margin:1.4em 0px;\\\">我会详细的解释一些设置和步骤，即便是基础知识薄弱也应该可以看懂。</p><hr style=\\\"margin:2em auto;width:240px;max-width:100%;border-right:none;border-bottom:none;border-left:none;border-image:initial;border-top:1px solid rgb(211, 211, 211);\\\"/><h2 style=\\\"font:inherit;margin:0px;font-synthesis:style;clear:left;margin-top:2.33333em;margin-bottom:1.16667em;font-size:1.2em;line-height:1.5;font-weight:600;\\\">1. Clash在Docker中的部署</h2><h3 style=\\\"font:inherit;margin:0px;font-synthesis:style;clear:left;margin-top:1.90909em;margin-bottom:1.27273em;font-size:1.1em;line-height:1.5;font-weight:600;\\\">1.1 部署可视化clash dashboard容器</h3><p style=\\\"margin:1.4em 0px;\\\">首先将dashboard的image pull下来。</p><div style=\\\"margin:1em 0px;\\\"><pre style=\\\"border-radius:4px;background-color: #fbfaf8;border: 1px solid rgba(0,0,0,.14902);color: #333;font-size: 12px;padding: 8px;font-family: Monaco,Menlo,Consolas,Courier New,monospace,sans-serif;box-sizing: border-box;\\\"><code style=\\\"font-size: 9pt; color: rgb(51, 51, 51); font-family: Monaco,Menlo,Consolas,Courier New,monospace,sans-serif\\\">docker pull haishanh/yacd</code></pre></div><p style=\\\"margin:1.4em 0px;\\\">然后直接跑起来就行，注意映射一个没在使用的端口就行</p><div style=\\\"margin:1em 0px;\\\"><pre style=\\\"border-radius:4px;background-color: #fbfaf8;border: 1px solid rgba(0,0,0,.14902);color: #333;font-size: 12px;padding: 8px;font-family: Monaco,Menlo,Consolas,Courier New,monospace,sans-serif;box-sizing: border-box;\\\"><code style=\\\"font-size: 9pt; color: rgb(51, 51, 51); font-family: Monaco,Menlo,Consolas,Courier New,monospace,sans-serif\\\">docker run -p 1234:80 -d haishanh/yacd</code></pre></div><p style=\\\"margin:1.4em 0px;\\\">在浏览器键入服务器地址跟端口号，我这里是输入192.168.199.10:1234，就可以打开dashboard页面</p><div style=\\\"margin:1.4em 0px;\\\"><img src=\\\":/9b5d58a2d4b14696b680a856c20d721e\\\" type=\\\"image/jpeg\\\" data-filename=\\\"v2-17ad411de1ff187a51c55574a5a731d9_r.jpg\\\" height=\\\"445\\\" style=\\\"height:auto;display:block;max-width:100%;margin:0px auto;cursor:zoom-in;\\\" width=\\\"689\\\"/></div><p style=\\\"margin:-0.8em 0px;\\\"><br/></p><h3 style=\\\"font:inherit;margin:0px;font-synthesis:style;clear:left;margin-top:1.90909em;margin-bottom:1.27273em;font-size:1.1em;line-height:1.5;font-weight:600;\\\">1.2 部署clash容器</h3><p style=\\\"margin:1.4em 0px;\\\">准备好你的配置文件config.yaml，节点和订阅得自己想办法，这里不提供，而且我也不认识毒药是谁。</p><p style=\\\"margin:1.4em 0px;\\\">将下边的代码覆盖入你原有的基础配置</p><div style=\\\"margin:1em 0px;\\\"><pre style=\\\"border-radius:4px;background-color: #fbfaf8;border: 1px solid rgba(0,0,0,.14902);color: #333;font-size: 12px;padding: 8px;font-family: Monaco,Menlo,Consolas,Courier New,monospace,sans-serif;box-sizing: border-box;\\\"><code style=\\\"font-size: 9pt; color: rgb(51, 51, 51); font-family: Monaco,Menlo,Consolas,Courier New,monospace,sans-serif\\\"><span style=\\\"color:rgb(23, 81, 153);\\\">port</span><span>:</span><span style=\\\"color:rgb(191, 191, 191);\\\"> </span><span style=\\\"color:rgb(5, 109, 232);\\\">7890</span><span style=\\\"color:rgb(191, 191, 191);\\\">\\\n</span><span style=\\\"color:rgb(191, 191, 191);\\\"></span><span style=\\\"color:rgb(23, 81, 153);\\\">socks-port</span><span>:</span><span style=\\\"color:rgb(191, 191, 191);\\\"> </span><span style=\\\"color:rgb(5, 109, 232);\\\">7891</span><span style=\\\"color:rgb(191, 191, 191);\\\">\\\n</span><span style=\\\"color:rgb(191, 191, 191);\\\"></span><span style=\\\"font-style:italic;color:rgb(153, 153, 153);\\\">#转发端口一定要配置</span><span style=\\\"color:rgb(191, 191, 191);\\\">\\\n</span><span style=\\\"color:rgb(191, 191, 191);\\\"></span><span style=\\\"color:rgb(23, 81, 153);\\\">redir-port</span><span>:</span><span style=\\\"color:rgb(191, 191, 191);\\\"> </span><span style=\\\"color:rgb(5, 109, 232);\\\">7892</span><span style=\\\"color:rgb(191, 191, 191);\\\">\\\n</span><span style=\\\"color:rgb(191, 191, 191);\\\"></span><span style=\\\"font-style:italic;color:rgb(153, 153, 153);\\\">#允许接管局域网流量</span><span style=\\\"color:rgb(191, 191, 191);\\\">\\\n</span><span style=\\\"color:rgb(191, 191, 191);\\\"></span><span style=\\\"color:rgb(23, 81, 153);\\\">allow-lan</span><span>:</span><span style=\\\"color:rgb(191, 191, 191);\\\"> </span><span style=\\\"font-weight:600;\\\">true</span><span style=\\\"color:rgb(191, 191, 191);\\\">\\\n</span><span style=\\\"color:rgb(191, 191, 191);\\\"></span><span style=\\\"font-style:italic;color:rgb(153, 153, 153);\\\">#默认代理模式</span><span style=\\\"color:rgb(191, 191, 191);\\\">\\\n</span><span style=\\\"color:rgb(191, 191, 191);\\\"></span><span style=\\\"color:rgb(23, 81, 153);\\\">mode</span><span>:</span><span style=\\\"color:rgb(191, 191, 191);\\\"> </span><span>Rule</span><span style=\\\"color:rgb(191, 191, 191);\\\">\\\n</span><span style=\\\"color:rgb(191, 191, 191);\\\"></span><span style=\\\"color:rgb(23, 81, 153);\\\">log-level</span><span>:</span><span style=\\\"color:rgb(191, 191, 191);\\\"> </span><span>warning</span><span style=\\\"color:rgb(191, 191, 191);\\\">\\\n</span><span style=\\\"color:rgb(191, 191, 191);\\\"></span><span style=\\\"font-style:italic;color:rgb(153, 153, 153);\\\">#接口控制端口你可以自己设置，默认是9090</span><span style=\\\"color:rgb(191, 191, 191);\\\">\\\n</span><span style=\\\"color:rgb(191, 191, 191);\\\"></span><span style=\\\"color:rgb(23, 81, 153);\\\">external-controller</span><span>:</span><span style=\\\"color:rgb(191, 191, 191);\\\"> </span><span style=\\\"color:rgb(5, 109, 232);\\\">0.0.0.0</span><span>:</span><span style=\\\"color:rgb(5, 109, 232);\\\">7070</span><span style=\\\"color:rgb(191, 191, 191);\\\">\\\n</span><span style=\\\"color:rgb(191, 191, 191);\\\"></span><span style=\\\"font-style:italic;color:rgb(153, 153, 153);\\\">#如果服务器对公网开放可以设置密码</span><span style=\\\"color:rgb(191, 191, 191);\\\">\\\n</span><span style=\\\"color:rgb(191, 191, 191);\\\"></span><span style=\\\"color:rgb(23, 81, 153);\\\">secret</span><span>:</span><span style=\\\"color:rgb(191, 191, 191);\\\"> </span><span style=\\\"color:rgb(241, 64, 60);\\\">&quot;&quot;</span><span style=\\\"color:rgb(191, 191, 191);\\\">\\\n</span><span style=\\\"color:rgb(191, 191, 191);\\\"></span><span style=\\\"font-style:italic;color:rgb(153, 153, 153);\\\">#external-ui: dashboard</span><span style=\\\"color:rgb(191, 191, 191);\\\">\\\n</span><span style=\\\"color:rgb(191, 191, 191);\\\"></span><span style=\\\"font-style:italic;color:rgb(153, 153, 153);\\\">#配置由clash接管的dns解析</span><span style=\\\"color:rgb(191, 191, 191);\\\">\\\n</span><span style=\\\"color:rgb(191, 191, 191);\\\"></span><span style=\\\"color:rgb(23, 81, 153);\\\">dns</span><span>:</span><span style=\\\"color:rgb(191, 191, 191);\\\">\\\n</span><span style=\\\"color:rgb(191, 191, 191);\\\">  </span><span style=\\\"color:rgb(23, 81, 153);\\\">enable</span><span>:</span><span style=\\\"color:rgb(191, 191, 191);\\\"> </span><span style=\\\"font-weight:600;\\\">true</span><span style=\\\"color:rgb(191, 191, 191);\\\">\\\n</span><span style=\\\"color:rgb(191, 191, 191);\\\"></span><span style=\\\"font-style:italic;color:rgb(153, 153, 153);\\\">#主要监听定向转发来的数据，后续会在路由表里配置转发端口为1053</span><span style=\\\"color:rgb(191, 191, 191);\\\">\\\n</span><span style=\\\"color:rgb(191, 191, 191);\\\">  </span><span style=\\\"color:rgb(23, 81, 153);\\\">listen</span><span>:</span><span style=\\\"color:rgb(191, 191, 191);\\\"> </span><span style=\\\"color:rgb(5, 109, 232);\\\">0.0.0.0</span><span>:</span><span style=\\\"color:rgb(5, 109, 232);\\\">1053</span><span style=\\\"color:rgb(191, 191, 191);\\\">\\\n</span><span style=\\\"color:rgb(191, 191, 191);\\\">  </span><span style=\\\"color:rgb(23, 81, 153);\\\">enhanced-mode</span><span>:</span><span style=\\\"color:rgb(191, 191, 191);\\\"> </span><span>redir-host</span><span style=\\\"color:rgb(191, 191, 191);\\\">\\\n</span><span style=\\\"color:rgb(191, 191, 191);\\\"></span><span style=\\\"font-style:italic;color:rgb(153, 153, 153);\\\">#见下方链接</span><span style=\\\"color:rgb(191, 191, 191);\\\">\\\n</span><span style=\\\"color:rgb(191, 191, 191);\\\">  </span><span style=\\\"color:rgb(23, 81, 153);\\\">nameserver</span><span>:</span><span style=\\\"color:rgb(191, 191, 191);\\\">\\\n</span><span style=\\\"color:rgb(191, 191, 191);\\\">    </span>- <span style=\\\"color:rgb(241, 64, 60);\\\">'114.114.114.114'</span><span style=\\\"color:rgb(191, 191, 191);\\\">\\\n</span><span style=\\\"color:rgb(191, 191, 191);\\\">    </span>- <span style=\\\"color:rgb(241, 64, 60);\\\">'223.5.5.5'</span><span style=\\\"color:rgb(191, 191, 191);\\\">\\\n</span><span style=\\\"color:rgb(191, 191, 191);\\\">  </span><span style=\\\"color:rgb(23, 81, 153);\\\">fallback</span><span>:</span><span style=\\\"color:rgb(191, 191, 191);\\\">\\\n</span><span style=\\\"color:rgb(191, 191, 191);\\\">    </span>- <span style=\\\"color:rgb(241, 64, 60);\\\">'tls://1.1.1.1:853'</span><span style=\\\"color:rgb(191, 191, 191);\\\">\\\n</span><span style=\\\"color:rgb(191, 191, 191);\\\">    </span>- <span style=\\\"color:rgb(241, 64, 60);\\\">'tcp://1.1.1.1:53'</span><span style=\\\"color:rgb(191, 191, 191);\\\">\\\n</span><span style=\\\"color:rgb(191, 191, 191);\\\">    </span>- <span style=\\\"color:rgb(241, 64, 60);\\\">'tcp://208.67.222.222:443'</span><span style=\\\"color:rgb(191, 191, 191);\\\">\\\n</span><span style=\\\"color:rgb(191, 191, 191);\\\">    </span>- <span style=\\\"color:rgb(241, 64, 60);\\\">'tls://dns.google'</span></code></pre></div><p style=\\\"margin:1.4em 0px;\\\">关于配置文件中的nameserver与fallback的运行与解析机制，详见下方链接。</p><div><a href=\\\"https://link.zhihu.com/?target=https%3A//github.com/Fndroid/clash_for_windows_pkg/wiki/DNS%25E6%25B1%25A1%25E6%259F%2593%25E5%25AF%25B9Clash%25EF%25BC%2588for-Windows%25EF%25BC%2589%25E7%259A%2584%25E5%25BD%25B1%25E5%2593%258D\\\" style=\\\"-webkit-box-orient:horizontal;-webkit-box-direction:normal;position:relative;display:flex;box-sizing:border-box;flex-direction:row;-webkit-box-align:center;align-items:center;width:390px;min-height:84px;border-radius:8px;max-width:100%;overflow:hidden;margin:16px auto;padding:12px 12px 9px;background-color:rgb(246, 246, 246);text-decoration:none;border:none;color:inherit;\\\" target=\\\"_blank\\\"><span style=\\\"-webkit-box-flex:1;display:block;flex:1 1 auto;position:relative;\\\"><span style=\\\"max-height:40px;margin-bottom:2px;font-size:15px;font-weight:500;color:rgb(18, 18, 18);display:-webkit-box;line-height:20px;text-overflow:ellipsis;overflow:hidden;-webkit-box-orient:vertical;-webkit-line-clamp:2;\\\">DNS污染对Clash（for Windows）的影响 · Fndroid/clash_for_windows_pkg Wiki (github.com)</span><span style=\\\"display:-webkit-box;font-size:13px;height:18px;line-height:18px;color:rgb(153, 153, 153);word-break:break-all;text-overflow:ellipsis;overflow:hidden;-webkit-box-orient:vertical;-webkit-line-clamp:1;\\\"><span style=\\\"display:inline-flex;align-items:center;\\\">​<img src=\\\"data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' width='14' height='14' viewBox='0 0 24 24' class='Zi Zi--InsertLink js-evernote-checked' fill='currentColor' data-evernote-id='234'%3e%3cpath fill-rule='evenodd' d='M5.327 18.883a3.005 3.005 0 0 1 0-4.25l2.608-2.607a.75.75 0 1 0-1.06-1.06l-2.608 2.607a4.505 4.505 0 0 0 6.37 6.37l2.608-2.607a.75.75 0 0 0-1.06-1.06l-2.608 2.607a3.005 3.005 0 0 1-4.25 0Zm5.428-11.799a.75.75 0 0 0 1.06 1.06L14.48 5.48a3.005 3.005 0 0 1 4.25 4.25l-2.665 2.665a.75.75 0 0 0 1.061 1.06l2.665-2.664a4.505 4.505 0 0 0-6.371-6.372l-2.665 2.665Zm5.323 2.117a.75.75 0 1 0-1.06-1.06l-7.072 7.07a.75.75 0 0 0 1.061 1.06l7.071-7.07Z' clip-rule='evenodd'%3e%3c/path%3e%3c/svg%3e\\\" style=\\\"margin-right:2px;\\\"></img></span>github.com/Fndroid/clash_for_windows_pkg/wiki/DNS%E6%B1%A1%E6%9F%93%E5%AF%B9Clash%EF%BC%88for-Windows%EF%BC%89%E7%9A%84%E5%BD%B1%E5%93%8D</span></span></a></div><p style=\\\"margin:-0.8em 0px;\\\"><br/></p><p style=\\\"margin:1.4em 0px;\\\">准备好配置文件之后 ，运行如下命令启动clash容器</p><div style=\\\"margin:1em 0px;\\\"><pre style=\\\"border-radius:4px;background-color: #fbfaf8;border: 1px solid rgba(0,0,0,.14902);color: #333;font-size: 12px;padding: 8px;font-family: Monaco,Menlo,Consolas,Courier New,monospace,sans-serif;box-sizing: border-box;\\\"><code style=\\\"font-size: 9pt; color: rgb(51, 51, 51); font-family: Monaco,Menlo,Consolas,Courier New,monospace,sans-serif\\\">docker pull dreamacro/clash\\\ndocker run --name Clash -d -v ~/clash/config.yaml:/root/.config/clash/config.yaml --network<span style=\\\"font-weight:600;\\\">=</span><span style=\\\"color:rgb(241, 64, 60);\\\">&quot;host&quot;</span> --privileged dreamacro/clash</code></pre></div><p style=\\\"margin:1.4em 0px;\\\">其中 -v 命令之后的挂载卷映射的左侧原始路径要改成你自己的config.yaml的位置。</p><p style=\\\"margin:1.4em 0px;\\\">如果配置文件设置无误的话，可以在dashboard页面输入服务器地址与端口，链接到clash进行设置了。</p><div style=\\\"margin:1.4em 0px;\\\"><img src=\\\":/7840d02c6ed14302a63e4635ed102317\\\" type=\\\"image/jpeg\\\" data-filename=\\\"v2-766c3e6f0474efc3ad5157fbdc8c39c8_r.jpg\\\" height=\\\"418\\\" style=\\\"height:auto;display:block;max-width:100%;margin:0px auto;cursor:zoom-in;\\\" width=\\\"509\\\"/></div><hr style=\\\"margin:2em auto;width:240px;max-width:100%;border-right:none;border-bottom:none;border-left:none;border-image:initial;border-top:1px solid rgb(211, 211, 211);\\\"/><h2 style=\\\"font:inherit;margin:0px;font-synthesis:style;clear:left;margin-top:2.33333em;margin-bottom:1.16667em;font-size:1.2em;line-height:1.5;font-weight:600;\\\">2. 配置路由表</h2><h3 style=\\\"font:inherit;margin:0px;font-synthesis:style;clear:left;margin-top:1.90909em;margin-bottom:1.27273em;font-size:1.1em;line-height:1.5;font-weight:600;\\\">2.1. 配置服务器路由表转发规则</h3><p style=\\\"margin:1.4em 0px;\\\">可以终端中输入以下命令，也可以写进.sh脚本，chmod +x 之后执行./xxx.sh。</p><div style=\\\"margin:1em 0px;\\\"><pre style=\\\"border-radius:4px;background-color: #fbfaf8;border: 1px solid rgba(0,0,0,.14902);color: #333;font-size: 12px;padding: 8px;font-family: Monaco,Menlo,Consolas,Courier New,monospace,sans-serif;box-sizing: border-box;\\\"><code style=\\\"font-size: 9pt; color: rgb(51, 51, 51); font-family: Monaco,Menlo,Consolas,Courier New,monospace,sans-serif\\\"><span style=\\\"font-style:italic;color:rgb(153, 153, 153);\\\">#在nat表中新建一个clash规则链</span>\\\niptables -t nat -N CLASH\\\n<span style=\\\"font-style:italic;color:rgb(153, 153, 153);\\\">#排除环形地址与保留地址，匹配之后直接RETURN</span>\\\niptables -t nat -A CLASH -d 0.0.0.0/8 -j RETURN\\\niptables -t nat -A CLASH -d 10.0.0.0/8 -j RETURN\\\niptables -t nat -A CLASH -d 127.0.0.0/8 -j RETURN\\\niptables -t nat -A CLASH -d 169.254.0.0/16 -j RETURN\\\niptables -t nat -A CLASH -d 172.16.0.0/12 -j RETURN\\\niptables -t nat -A CLASH -d 192.168.0.0/16 -j RETURN\\\niptables -t nat -A CLASH -d 224.0.0.0/4 -j RETURN\\\niptables -t nat -A CLASH -d 240.0.0.0/4 -j RETURN\\\n<span style=\\\"font-style:italic;color:rgb(153, 153, 153);\\\">#重定向tcp流量到本机7892端口</span>\\\niptables -t nat -A CLASH -p tcp -j REDIRECT --to-port <span style=\\\"color:rgb(5, 109, 232);\\\">7892</span>\\\n<span style=\\\"font-style:italic;color:rgb(153, 153, 153);\\\">#拦截外部tcp数据并交给clash规则链处理</span>\\\niptables -t nat -A PREROUTING -p tcp -j CLASH\\\n\\\n<span style=\\\"font-style:italic;color:rgb(153, 153, 153);\\\">#在nat表中新建一个clash_dns规则链</span>\\\niptables -t nat -N CLASH_DNS\\\n<span style=\\\"font-style:italic;color:rgb(153, 153, 153);\\\">#清空clash_dns规则链</span>\\\niptables -t nat -F CLASH_DNS\\\n<span style=\\\"font-style:italic;color:rgb(153, 153, 153);\\\">#重定向udp流量到本机1053端口</span>\\\niptables -t nat -A CLASH_DNS -p udp -j REDIRECT --to-port <span style=\\\"color:rgb(5, 109, 232);\\\">1053</span>\\\n<span style=\\\"font-style:italic;color:rgb(153, 153, 153);\\\">#抓取本机产生的53端口流量交给clash_dns规则链处理</span>\\\niptables -t nat -I OUTPUT -p udp --dport <span style=\\\"color:rgb(5, 109, 232);\\\">53</span> -j CLASH_DNS\\\n<span style=\\\"font-style:italic;color:rgb(153, 153, 153);\\\">#拦截外部upd的53端口流量交给clash_dns规则链处理</span>\\\niptables -t nat -I PREROUTING -p udp --dport <span style=\\\"color:rgb(5, 109, 232);\\\">53</span> -j CLASH_DNS</code></pre></div><p style=\\\"margin:1.4em 0px;\\\">执行之后可以先采取设置非侵入式网关来测试一下服务器上的clash代理与dns解析是否成功。</p><h3 style=\\\"font:inherit;margin:0px;font-synthesis:style;clear:left;margin-top:1.90909em;margin-bottom:1.27273em;font-size:1.1em;line-height:1.5;font-weight:600;\\\">2.2 路由表持久化</h3><p style=\\\"margin:1.4em 0px;\\\">路由表每次重新开机之后都会回复为默认值，如果想要将更改的内容持久化，需要借助一个软件包 iptables-persistent 实现。</p><div style=\\\"margin:1em 0px;\\\"><pre style=\\\"border-radius:4px;background-color: #fbfaf8;border: 1px solid rgba(0,0,0,.14902);color: #333;font-size: 12px;padding: 8px;font-family: Monaco,Menlo,Consolas,Courier New,monospace,sans-serif;box-sizing: border-box;\\\"><code style=\\\"font-size: 9pt; color: rgb(51, 51, 51); font-family: Monaco,Menlo,Consolas,Courier New,monospace,sans-serif\\\">sudo apt install iptables-persistent</code></pre></div><p style=\\\"margin:1.4em 0px;\\\">第一次安装时会问询是否保存当前路由表配置，保存之后每次重启就都可以恢复为保存时的配置。</p><p style=\\\"margin:1.4em 0px;\\\">如果对路由表有所修改，需要重新保存，则运行如下命令。</p><div style=\\\"margin:1em 0px;\\\"><pre style=\\\"border-radius:4px;background-color: #fbfaf8;border: 1px solid rgba(0,0,0,.14902);color: #333;font-size: 12px;padding: 8px;font-family: Monaco,Menlo,Consolas,Courier New,monospace,sans-serif;box-sizing: border-box;\\\"><code style=\\\"font-size: 9pt; color: rgb(51, 51, 51); font-family: Monaco,Menlo,Consolas,Courier New,monospace,sans-serif\\\">sudo dpkg-reconfigure iptables-persistent</code></pre></div><h3 style=\\\"font:inherit;margin:0px;font-synthesis:style;clear:left;margin-top:1.90909em;margin-bottom:1.27273em;font-size:1.1em;line-height:1.5;font-weight:600;\\\">2.3 路由表复原</h3><p style=\\\"margin:1.4em 0px;\\\">如果需要删除上述的路由表配置，执行以下命令</p><div style=\\\"margin:1em 0px;\\\"><pre style=\\\"border-radius:4px;background-color: #fbfaf8;border: 1px solid rgba(0,0,0,.14902);color: #333;font-size: 12px;padding: 8px;font-family: Monaco,Menlo,Consolas,Courier New,monospace,sans-serif;box-sizing: border-box;\\\"><code style=\\\"font-size: 9pt; color: rgb(51, 51, 51); font-family: Monaco,Menlo,Consolas,Courier New,monospace,sans-serif\\\">iptables -t nat -D PREROUTING -p tcp -j CLASH\\\niptables -t nat -D OUTPUT -p udp --dport 53 -j CLASH_DNS\\\niptables -t nat -D PREROUTING -p udp --dport 53 -j CLASH_DNS\\\niptables -t nat -F CLASH\\\niptables -t nat -X CLASH\\\niptables -t nat -F CLASH\\\niptables -t nat -X CLASH_DNS</code></pre></div><hr style=\\\"margin:2em auto;width:240px;max-width:100%;border-right:none;border-bottom:none;border-left:none;border-image:initial;border-top:1px solid rgb(211, 211, 211);\\\"/><h2 style=\\\"font:inherit;margin:0px;font-synthesis:style;clear:left;margin-top:2.33333em;margin-bottom:1.16667em;font-size:1.2em;line-height:1.5;font-weight:600;\\\">3. 两种流量接管方式</h2><h3 style=\\\"font:inherit;margin:0px;font-synthesis:style;clear:left;margin-top:1.90909em;margin-bottom:1.27273em;font-size:1.1em;line-height:1.5;font-weight:600;\\\">3.1 非侵入式</h3><p style=\\\"margin:1.4em 0px;\\\">手动设置需要被接管流量的终端设备的IP地址，将网关地址与DNS服务器地址设置为你部署clash的服务器地址。</p><div style=\\\"margin:1.4em 0px;\\\"><img src=\\\":/bb694921d1fd48eabc28663dfe425f2a\\\" type=\\\"image/jpeg\\\" data-filename=\\\"v2-e0a153f76ee270966544bfe1cb882e24_b.jpg\\\" height=\\\"752\\\" style=\\\"height:auto;display:block;max-width:100%;margin:0px auto;\\\" width=\\\"312\\\"/></div><p style=\\\"margin:1.4em 0px;\\\">此种方式为终端设备主动寻求流量接管。</p><p style=\\\"margin:1.4em 0px;\\\">优点是如果服务器宕机，局域网里的其他联网设备不受影响。</p><p style=\\\"margin:1.4em 0px;\\\">缺点是每一个需要接管的设备都需要手动设置，较为麻烦。</p><h3 style=\\\"font:inherit;margin:0px;font-synthesis:style;clear:left;margin-top:1.90909em;margin-bottom:1.27273em;font-size:1.1em;line-height:1.5;font-weight:600;\\\">3.2 侵入式</h3><p style=\\\"margin:1.4em 0px;\\\">手动设置服务器的网关地址为主路由器</p><div style=\\\"margin:1em 0px;\\\"><pre style=\\\"border-radius:4px;background-color: #fbfaf8;border: 1px solid rgba(0,0,0,.14902);color: #333;font-size: 12px;padding: 8px;font-family: Monaco,Menlo,Consolas,Courier New,monospace,sans-serif;box-sizing: border-box;\\\"><code style=\\\"font-size: 9pt; color: rgb(51, 51, 51); font-family: Monaco,Menlo,Consolas,Courier New,monospace,sans-serif\\\">vim /etc/network/interfaces</code></pre></div><p style=\\\"margin:1.4em 0px;\\\">在interfaces里追加下边的参数</p><div style=\\\"margin:1em 0px;\\\"><pre style=\\\"border-radius:4px;background-color: #fbfaf8;border: 1px solid rgba(0,0,0,.14902);color: #333;font-size: 12px;padding: 8px;font-family: Monaco,Menlo,Consolas,Courier New,monospace,sans-serif;box-sizing: border-box;\\\"><code style=\\\"font-size: 9pt; color: rgb(51, 51, 51); font-family: Monaco,Menlo,Consolas,Courier New,monospace,sans-serif\\\">auto eth0\\\niface eth0 inet static\\\n  address 192.168.199.10\\\n  netmask 255.255.255.0\\\n  gateway 192.168.199.1</code></pre></div><p style=\\\"margin:1.4em 0px;\\\">其中address填写你为clash服务器手动设置的地址, gateway填写主路由器地址, reboot。</p><p style=\\\"margin:1.4em 0px;\\\">登录路由器后台，在内网DHCP配置页面，将网关与DNS服务器都设置为clash服务器的IP地址。</p><div style=\\\"margin:1.4em 0px;\\\"><img src=\\\":/63606c0c04364da391e3ab4fa9586a63\\\" type=\\\"image/jpeg\\\" data-filename=\\\"v2-5246c9dad2c88ab165b0b674144a9582_r.jpg\\\" height=\\\"699\\\" style=\\\"height:auto;display:block;max-width:100%;margin:0px auto;cursor:zoom-in;\\\" width=\\\"692\\\"/></div><p style=\\\"margin:1.4em 0px;\\\">这样设置下，由主路由器分发给所有终端设备clash服务器的地址作为网关与dns解析接口</p><p style=\\\"margin:1.4em 0px;\\\">clash服务器处理完数据包之后发送回主路由器，并由主路由器向上送至光猫。</p><p style=\\\"margin:1.4em 0px;\\\">此时网络才是通的，实现的是旁路由的原理。</p><p style=\\\"margin:1.4em 0px;\\\">这种方法将由clash服务器全权接管局域网内的所有流量。</p><p style=\\\"margin:1.4em 0px;\\\">好处是在局域网覆盖范围内只要接入，直接走代理，不需要进行任何设置。</p><p style=\\\"margin:1.4em 0px;\\\">缺点是一旦服务器宕机，整个局域网就瘫痪了。</p><hr style=\\\"margin:2em auto;width:240px;max-width:100%;border-right:none;border-bottom:none;border-left:none;border-image:initial;border-top:1px solid rgb(211, 211, 211);\\\"/><h2 style=\\\"font:inherit;margin:0px;font-synthesis:style;clear:left;margin-top:2.33333em;margin-bottom:1.16667em;font-size:1.2em;line-height:1.5;font-weight:600;\\\">Tips：</h2><p style=\\\"margin:1.4em 0px;\\\">打通整个网络，除了配置要没有错误之外，以下三点要反复确认</p><ol style=\\\"width:100%;margin:1.4em 0px;padding:0px;display:table;\\\"><li style=\\\"list-style-type:none;display:table-row;list-style:none;\\\"><span style=\\\"list-style:none;list-style-type:none;width:1em;display:table-cell;text-align:right;white-space:pre;\\\">1. </span>docker里的clash在运行状态</li><li style=\\\"list-style-type:none;display:table-row;list-style:none;\\\"><span style=\\\"list-style:none;list-style-type:none;width:1em;display:table-cell;text-align:right;white-space:pre;\\\">2. </span>路由表配置完毕</li><li style=\\\"list-style-type:none;display:table-row;list-style:none;\\\"><span style=\\\"list-style:none;list-style-type:none;width:1em;display:table-cell;text-align:right;white-space:pre;\\\">3. </span>clash服务器网关地址指向主路由器</li></ol><hr style=\\\"margin:2em auto;width:240px;max-width:100%;border-right:none;border-bottom:none;border-left:none;border-image:initial;border-top:1px solid rgb(211, 211, 211);\\\"/><h2 style=\\\"font:inherit;margin:0px;font-synthesis:style;clear:left;margin-top:2.33333em;margin-bottom:1.16667em;font-size:1.2em;line-height:1.5;font-weight:600;\\\">附录：</h2><p style=\\\"margin:1.4em 0px;\\\">我是在Friendlyarm NanoPi M4V2 开发板上刷写armbian操作系统进行的上述操作。</p><p style=\\\"margin:1.4em 0px;\\\">故而理论上所有包括开发板，电视盒之内的能运行Linux系统的设备都可以拿来用。</p><p style=\\\"margin:1.4em 0px;margin-bottom:0px;\\\">至于在Docker之外直接在操作系统上部署Clash的文章有很多，不过透明代理的部分依旧可以参考我这篇文章。</p></div></div></div></div></div></div></span></div></div></div></div></div>\\\n</div>\\\n</span>\\\n</div></body></html>\\u0000\"]],\"start1\":0,\"start2\":0,\"length1\":0,\"length2\":23374}]"
metadata_diff: {"new":{"id":"1eb573864e924e979e04f78f139fdc6e","parent_id":"061de1401cfc4cfaadf6e74e015970e9","latitude":"0.00000000","longitude":"0.00000000","altitude":"0.0000","author":"","source_url":"","is_todo":0,"todo_due":0,"todo_completed":0,"source":"joplin-desktop","source_application":"net.cozic.joplin-desktop","application_data":"","order":1764345716999,"markup_language":2,"is_shared":0,"share_id":"","conflict_original_id":"","master_key_id":"","user_data":"","deleted_time":0},"deleted":[]}
encryption_cipher_text: 
encryption_applied: 0
updated_time: 2025-11-28T16:12:37.338Z
created_time: 2025-11-28T16:12:37.338Z
type_: 13