今天突然遇到 wsl2 中 sudo pacman -Syu 报错,ssl timeout。只有关闭 clash_for_windows 才可以正常运行。但是这个问题很让人着急,如何让代理正常了,后来发现是 clash 的 tun 模式引起的,关闭调 clash 的 tun 模式即可。
Clash for Windows 的 TUN 模式 是一种网络代理模式,它在网络通信中提供更高的隐私保护和安全性。相比传统的全局代理模式,TUN 模式 具有更灵活的配置选项和更高的定制能力,能够满足用户对个性化网络代理的需求1。具体来说:
- TUN 模式 通过创建一个虚拟网卡来接收操作系统的三层流量,从而扩展了 Clash 的入口(inbound)转发能力。
- 它可以提升 Clash 处理 UDP 流量的能力,并且可以劫持任何三层流量,实现 DNS 劫持。
- TUN 模式 与部分操作系统的网络栈结合良好,可以提升利用 iptables 等组件的能力。
总之,TUN 模式 可以让你更好地控制网络流量,提高隐私保护和安全性。1
想起来了,之前设置过 mtu 的值
TUN 模式 与 WSL2 的 镜像网络模式 之间的冲突是由于 TUN 模式 创建的虚拟网卡的 MTU(最大传输单元)值不正确。解决这个问题的方法是将 WSL2 上所有网卡的 MTU 设置为 1500。以下是修复步骤:
-
首先,使用
ifconfig
命令查看 WSL2 内的网卡,记下 IP 地址为 198.18.0.1 的网卡的名称(例如eth4
)。 -
以
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
-
运行以下命令启用并启动服务:
1 2
systemctl enable mtufix.service systemctl start mtufix.service
发现问题之前设置的是 eth4
现在变成了 eth3
改变 service 后,进行重启,查看一下 eth3 的 mtu 的值