解决wsl2的clash_for_windows代理问题

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

image-20240416121530279

Clash for WindowsTUN 模式 是一种网络代理模式,它在网络通信中提供更高的隐私保护和安全性。相比传统的全局代理模式,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
最后更新于 Jan 06, 2025 05:52 UTC
comments powered by Disqus
Built with Hugo
主题 StackJimmy 设计
Caret Up