Win11 WSL2 configure proxy with Clash
- 使用网络应用时需要注意一些注意事项,无论是从 Windows 应用访问 Linux 网络应用还是从 Linux 应用访问 Windows 网络应用,都可能需要标识正在使用的虚拟机的 IP 地址,该地址将与本地物理机的 IP 地址不同。
WSL2 访问 Windows 网络
通过以下命令来获取主机的 ip 地址
cat /etc/resolv.conf
nameserver
后面即为主机的 ip 地址
配置 Clash
- 使用远程 IP 地址连接到应用程序时,它们将被视为来自局域网 (LAN) 的连接。这意味着您需要确保应用程序可以接受 LAN 连接。
以 Clash for Windows 为例,需要打开 Allow LAN
选项,以及记住配置好的端口号
配置 Windows Defender 防火墙
需要在 Windows Defender 防火墙
中允许 Clash
的访问
以管理员身份运行 PowerShell 并输入
New-NetFirewallRule -DisplayName "WSL" -Direction Inbound -InterfaceAlias "vEthernet (WSL)" -Action Allow
此命令将在 高级安全 Windows Defender 防火墙
中添加 WSL 的入站规则,效果如下
配置 WSL2 Ubuntu22.04 代理
编辑 ~/.bashrc
文件,在最后加入如下内容,7890
为配置好的代理端口
# 获取 Windows 系统的 IP 地址
win_ip=$(cat /etc/resolv.conf | grep nameserver | awk '{print $2}')
# 配置代理
export http_proxy="http://${win_ip}:7890"
export https_proxy="http://${win_ip}:7890"
- 执行
source ~/.bashrc
使配置生效
测试
env | grep -i proxy
curl www.google.com
wget www.google.com
快捷配置方式
可以在 ~/.bashrc
中创建函数,用命令行快速的执行代理的配置与取消
function setproxy() {
host_ip=$(cat /etc/resolv.conf |grep "nameserver" | awk '{print $2}')
export http_proxy=http://$host_ip:7890
export https_proxy=http://$host_ip:7890
echo "Proxy set up"
echo $(env | grep -i proxy)
}
function unsetproxy() {
unset http_proxy
unset https_proxy
echo "Proxy canceled"
}
命令行如下使用
# 设置代理
setproxy
# 取消代理
unsetproxy