WSL2子系统中如何使用代理

19 阅读1分钟

(可以直接使用第二点,如果无法使用在参考第一点,文章仅供参考)

  1. 打开或者创建wsl的配置文件,2.0后才可以这样使用,文件位置在C盘的用户目录USER的用户名下面的.wslconfig,如没有这个文件,创建即可,在文件中添加下面的内容
[experimental]
autoMemoryReclaim=gradual  
networkingMode=mirrored
dnsTunneling=true
firewall=true
autoProxy=true
  1. 添加下面代码到一个sh脚本内容,例如./proxy.sh中,执行该脚本即可

       也可以添加到bashrc或者zshrc中方便使用
       vim ~/.zshrc   或者 vim ~/.bashrc
       在文件中添加下面的命令,路径按自己的实际路径填写即可
       alias proxy="source ./proxy.sh" 
       添加后更新配置source ~/.zhsrc
       更新配置后即可使用
       proxy set 开启
       proxy unset 关闭
       proxy test 测试是否可以使用
       为了方便,可以把自己常用的一些命令简写到配置文件中,比如频繁的命令
       alias vzhsrc="vim ~/.zshrc"
       alias szhrc="source ~/.zshrc"
       alias n="neofetch" 
       alias vim="nvim"
       alias vi="nvim"
       
    

注意,如果是archLiux中hostname无法使用,可以使用hostnamectl hostname即可,或者删除脚本中涉及输出主机名

#!/bin/sh
hostip=$(cat /etc/resolv.conf | grep nameserver | awk '{ print $2 }')
wslip=$(hostname -I | awk '{print $1}')    
port=端口号
 
PROXY_HTTP="http://${hostip}:${port}"
 
set_proxy(){
  export http_proxy="${PROXY_HTTP}"
  export HTTP_PROXY="${PROXY_HTTP}"
 
  export https_proxy="${PROXY_HTTP}"
  export HTTPS_proxy="${PROXY_HTTP}"
 
  export ALL_PROXY="${PROXY_SOCKS5}"
  export all_proxy=${PROXY_SOCKS5}
 
  git config --global http.https://github.com.proxy ${PROXY_HTTP}
  git config --global https.https://github.com.proxy ${PROXY_HTTP}
 
  echo "Proxy has been opened."
}
 
unset_proxy(){
  unset http_proxy
  unset HTTP_PROXY
  unset https_proxy
  unset HTTPS_PROXY
  unset ALL_PROXY
  unset all_proxy
  git config --global --unset http.https://github.com.proxy
  git config --global --unset https.https://github.com.proxy
 
  echo "Proxy has been closed."
}
 
test_setting(){
  echo "Host IP:" ${hostip}
  echo "WSL IP:" ${wslip}
  echo "Try to connect to Google..."
  resp=$(curl -I -s --connect-timeout 5 -m 5 -w "%{http_code}" -o /dev/null www.google.com)
  if [ ${resp} = 200 ]; then
    echo "Proxy setup succeeded!"
  else
    echo "Proxy setup failed!"
  fi
}
 
if [ "$1" = "set" ]
then
  set_proxy
 
elif [ "$1" = "unset" ]
then
  unset_proxy
 
elif [ "$1" = "test" ]
then
  test_setting
else
  echo "Unsupported arguments."
fi