解决wsl2的clash_for_windows代理问题

今天突然遇到 wsl2 中 sudo pacman -Syu 报错,ssl timeout。只有关闭 clash_for_windows 才可以正常运行。但是这个问题很让人着急,如何让代理正常了,后来发现是 clash 的 tun 模式引起的,关闭调 clash 的 tun 模式即可。

image-20240416121530279

Clash for Windows 的 TUN 模式 是一种网络代理模式,它在网络通信中提供更高的隐私保护和安全性。相比传统的全局代理模式,TUN 模式 具有更灵活的配置选项和更高的定制能力,能够满足用户对个性化网络代理的需求1。具体来说:

  1. TUN 模式 通过创建一个虚拟网卡来接收操作系统的三层流量,从而扩展了 Clash 的入口(inbound)转发能力。
  2. 它可以提升 Clash 处理 UDP 流量的能力,并且可以劫持任何三层流量,实现 DNS 劫持。
  3. TUN 模式 与部分操作系统的网络栈结合良好,可以提升利用 iptables 等组件的能力。

总之,TUN 模式 可以让你更好地控制网络流量,提高隐私保护和安全性。1

想起来了,之前设置过 mtu 的值

TUN 模式 与 WSL2 的 镜像网络模式 之间的冲突是由于 TUN 模式 创建的虚拟网卡的 MTU(最大传输单元)值不正确。解决这个问题的方法是将 WSL2 上所有网卡的 MTU 设置为 1500。以下是修复步骤:

  1. 首先,使用 ifconfig 命令查看 WSL2 内的网卡,记下 IP 地址为 198.18.0.1 的网卡的名称(例如 eth4)。

  2. 以

    root 用户身份

    运行以下命令,将网卡名称替换为上一步中记下的名称:

    1
    
    echo -e "[Unit]\nDescription=clash tun mtu fix\nAfter=network-online.target\n\n[Service]\nExecStart=$(which ip) link set eth4 mtu 1500\n\n[Install]\nWantedBy=multi-user.target" | sudo tee /etc/systemd/system/mtufix.service
    
  3. 运行以下命令启用并启动服务:

    1
    2
    
    systemctl enable mtufix.service
    systemctl start mtufix.service
    
  4. 现在重新测试,你应该能够正常联网了,HTTPS 访问也会正常连接12。

发现问题之前设置的是 eth4

image-20240416122747019

现在变成了 eth3

改变 service 后,进行重启,查看一下 eth3 的 mtu 的值

image-20240416123049926

Licensed under CC BY-NC-SA 4.0
最后更新于 Sep 10, 2025 02:16 UTC
comments powered by Disqus
Built with Hugo
主题 Stack 由 Jimmy 设计
#׷¼ÓÄÚÈÝ
Caret Up