Tag: networking

2 notes found.

WSL2 默认是 NAT 模式,127.0.0.1 在 WSL 里指 WSL 自己,所以 Windows 上 Clash 监听的端口在 WSL 里连不到——代理地址要写 Windows 宿主 IP(default route 的 gateway):

HOST_IP=$(ip route show default | awk '{print $3; exit}')
export http_proxy=http://$HOST_IP:7897 https_proxy=http://$HOST_IP:7897 all_proxy=socks5://$HOST_IP:7897
export no_proxy=localhost,127.0.0.1,::1,.local,10.0.0.0/8,172.16.0.0/12,192.168.0.0/16

Clash 侧两个前置:局域网连接要开(否则只监听 127.0.0.1,WSL 连不到)、端口用 mixed 端口(同一个口同时吃 HTTP 和 SOCKS5,所以 all_proxy 可以指它)。

换端口或换客户端时先探端点:

timeout 1 bash -c "exec 3<>/dev/tcp/$HOST_IP/7897" && echo ok

别用 zsh 内建的 ztcp 做这个判断,它对已关闭的端口同样返回 0。

开了 DNS 覆写就别关 TUN

DNS 覆写开着时,WSL 的 DNS 查询也走 Windows 宿主,域名被解析成 fake-ip(198.18.0.0/16),这些地址只有 Windows 侧的 TUN 能路由回去。所以 TUN 是 WSL 网络的地基:关掉它,WSL 里所有不走 proxy 环境变量的直连都会因为 198.18.x.x 不可路由而挂。

同理 198.18.0.0/16 不要加进 no_proxy——它是 fake-ip 不是真实地址,加了只会让分流失效。

在外工作时走代理回家里的内网,在家时自动切回直连——也就是策略组要跟着所在网络自动切。

[SSID Setting] 做不到(它只管 suspend / cellular-mode),得用 Subnet Group:

[Proxy Group]
PROXY-HOME = subnet, default = PROXY-HOME-SMART, SSID:LearningCenter = DIRECT
# 中间层必需:smart 不能直接放进 subnet
PROXY-HOME-SMART = smart, DEVICE:XIAOKEN, 🇨🇳http-home-mac

DEVICE:XIAOKEN 是 Ponte 的动态策略,指向家里那台 Mac(xiaoken),不用在 [Proxy] 里声明;🇨🇳http-home-mac 是普通代理节点。

条件按声明顺序求值,首个匹配生效,网络变化时自动重新求值——这就是「在家直连、出门走代理」。条件支持 SSID: / BSSID: / ROUTER: / TYPE:WIFI|WIRED|CELLULAR,其中 SSID: 大小写敏感。

app 自带 agent skill

Surge.app 里带了一份完整的 agent skill,只是不在 agent 的搜索路径里,软链过去即可(app 升级自动跟随):

find /Applications/<App>.app -iname "SKILL.md" 2>/dev/null
ln -s /Applications/Surge.app/Contents/Resources/Skills/surge ~/.agents/skills/surge
SC=/Applications/Surge.app/Contents/Applications/surge-cli
$SC rule match github.com      # 这个域名会走哪条规则
$SC http probe <url> "<policy>"                        # 端到端验证策略
$SC rule temp add "DOMAIN-SUFFIX,example.com,Proxy"    # 调试用临时规则,别改 profile