Cirry's Blog

如何设置系统代理和命令行代理

2022-09-28
随笔
最后更新:2024-04-25
3分钟
512字

Windows 环境

windows拉取docker镜像经常拉取不下来,目前我知道有三种方式可以处理这个问题。

  1. 本机挂代理下载
  2. 可以上外网的服务器下载后打包传回本机
  3. github配合阿里云docker镜像

这里我感觉使用第一个比较简单,剩下的两个方式大家可以自行搜索。

我使用的是v2rayN,先点击设置查看一下端口号。

临时生效

这种方式只是临时生效,当你关闭Cmd再次打开,代理就失效了。

使用sock5代理

Terminal window
1
set http_proxy=socks5://127.0.0.1:10808
2
set https_proxy=socks5://127.0.0.1:10808

取消代理设置

Terminal window
1
set http_proxy=
2
set https_proxy=

测试是否生效

Terminal window
1
curl www.google.com # 有返回值说明代理成功

长期生效

右键此电脑 -> 属性 -> 高级系统设置 -> 环境变量 ,在系统环境中,添加如下两个环境变量。

Linux环境

我使用的arch系统,代理软件是qv2ray,大家的配置方式可能不同,但也是大同小异,本文重点参考Arch Wiki Proxy

先qv2ray中查看,本地代理端口:

临时生效

Terminal window
1
export http_proxy=http://10.203.0.1:5187/
2
export https_proxy=$http_proxy

临时取消代理

Terminal window
1
export http_proxy=
2
export https_proxy=

脚本生效(推荐使用)

vim ~/.bashrc

复制粘贴如下代码

Terminal window
1
function proxy_on() {
2
export no_proxy="localhost,127.0.0.1,localaddress,.localdomain.com"
3
4
if (( $# > 0 )); then
5
valid=$(echo $@ | sed -n 's/\([0-9]\{1,3\}.\?\)\{4\}:\([0-9]\+\)/&/p')
6
if [[ $valid != $@ ]]; then
7
>&2 echo "Invalid address"
8
return 1
9
fi
10
local proxy=$1
11
export http_proxy="$proxy" \
12
https_proxy=$proxy \
13
ftp_proxy=$proxy \
14
rsync_proxy=$proxy
15
echo "Proxy environment variable set."
28 collapsed lines
16
return 0
17
fi
18
19
echo -n "username: "; read username
20
if [[ $username != "" ]]; then
21
echo -n "password: "
22
read -es password
23
local pre="$username:$password@"
24
fi
25
26
echo -n "server: "; read server
27
echo -n "port: "; read port
28
local proxy=$pre$server:$port
29
export http_proxy="$proxy" \
30
https_proxy=$proxy \
31
ftp_proxy=$proxy \
32
rsync_proxy=$proxy \
33
HTTP_PROXY=$proxy \
34
HTTPS_PROXY=$proxy \
35
FTP_PROXY=$proxy \
36
RSYNC_PROXY=$proxy
37
}
38
39
function proxy_off(){
40
unset http_proxy https_proxy ftp_proxy rsync_proxy \
41
HTTP_PROXY HTTPS_PROXY FTP_PROXY RSYNC_PROXY
42
echo -e "Proxy environment variable removed."
43
}

没有usernamepassword可以不填。

source ~/.bashrc,重新跑一下脚本。

直接在命令行中输入proxy_on即可配置开启代理,proxy_off关闭代理。

切换sudo命令时,会因为环境变量切换导致代理失效,解决办法如下:

/etc/sudoers.d/05_proxy中添加一行:

Terminal window
1
Defaults env_keep += "*_proxy *_PROXY"
本文标题:如何设置系统代理和命令行代理
文章作者:Cirry
发布时间:2022-09-28
版权声明:本作品采用「署名-非商业性使用-相同方式共享 4.0 国际」许可协议进行许可。
感谢大佬送来的咖啡☕
alipayQRCode
wechatQRCode