在命令行(终端)进行网络代理(Network Proxy)

在命令行(终端)进行网络代理(Network Proxy)
hezh为何要在命令行(终端)设置网络代理
主要是方便 curl、wget、apt、pip、git、npm 等工具的使用。众所周知,代理工具的常规方法是无法代理到终端的流量。
需要用到命令行网络代理的场景:
- 当
pip下包下不动或是屡屡报网络错误,那无非就两种情况:一是下载了过于冷门的包版本,二是包源仓库在国外,国外裸连下载不一定会成功,如果在手机流量和校园网流量之间尝试仍无法下载,则直接终端网络代理。 - 当需要
git来克隆仓库,发现timeout 或者下载慢,那么请直接代理流量。 - 当链接是任何的国外链接时,裸连可能无法建立稳定的连接。比如 claudecode的两条下载命令(分别是powershell和cmd):
irm https://claude.ai/install.ps1 | iex或curl -fsSL https://claude.ai/install.cmd -o install.cmd && install.cmd && del install.cmd,网络代理之后会很明显的顺利下下来。
四种实现方式
1. 网络代理工具开启虚拟网卡模式(即 TUN 模式)
该方法好处是方便,鼠标一点就完成的事情;坏处是不太稳定,可能体现在浏览器打不开网页,但 qq、微信等却能发信息。目前不知道跟什么东西挂钩,节点质量?代理工具?若开启之后浏览器能正常使用,我倒是很推荐这种方法,十分方便。
原理:在电脑本地创建了一个虚拟的网卡,所有电脑的流量都经过该虚拟网卡,达到连终端流量一起代理的效果。
测试用 ping www.google.com 或者 curl -I https://www.google.com
分别在 cmd、powershell、wsl2 演示:
- 启用 TUN:
- 未启用 TUN:
可见 TUN 确实可以代理到终端的流量。
Tip
以下的格式均是:http(s)_proxy=< ip >:< 代理工具的转发端口 >
只要不是人为改动,小猫咪的默认端口都是 7897(该端口为混合端口,包含http、https、socks5)
以下三个方法都是开启【系统代理】进行,演示如何通过命令代理而非 TUN 模式来获取代理特殊流量的效果。
Caution
【系统代理】不要和【虚拟网卡模式】(即 TUN 模式)同时开启。
2. cmd 设置网络代理
1 | |
用 curl -I https://www.google.com 验证,返回 200 即可。
3. powershell 设置网络代理
1 | |
用 curl.exe -I https://www.google.com 验证,返回 200 即可。
4. wsl2 设置网络代理
1 | |
这个 wsl2 进行网络代理的方法稍有不同,IP 处不能是 127.0.0.1 ,WSL2 的网络是隔离的,127.0.0.1 指向 WSL2 自身。如果代理跑在 Windows 上,需要用宿主机 IP。因为如果填写本地回环地址,相当于代理了 Linux 系统里面的一个叫 7897 端口的软件,而小猫咪一般都是安装在 Windows 上,不在 Linux 上,这就会导致链路不通。
wsl2 设置网络代理方法一
所以 IP 处应该填写 wsl2 拿到 Windows 主机 IP,命令是:
1 | |
Tip
这个命令作用是查看 /etc/resolv.conf 里 WSL 的 DNS 配置文件,由 WSL 自动生成
这个 WSL2 里拿到的 10.255.255.254 是 WSL 虚拟网卡的网关 IP,是 WSL 访问 Windows 宿主机的 默认入口。
所以命令是:
1 | |
wsl2 设置网络代理方法二
把 IP 换成本机 ipv4 地址,此方法必须在小猫咪的设置里把 允许局域网连接 打开。
1 | |
用 curl -I https://www.google.com 验证,返回 200 即可。
wsl2 设置网络代理方法三
WSL2 目前支持 4 种网络模式
| 模式 | networkingMode 值 | 说明 |
|---|---|---|
| NAT | nat(默认) | WSL2 有独立虚拟网卡,通过 NAT 访问外网,宿主机 IP 需从 /etc/resolv.conf 获取 |
| 镜像 | mirrored | 共享 Windows 网络栈,127.0.0.1 直通宿主机,支持 IPv6 |
| 桥接 | bridged | WSL2 直接接入物理网络,获得局域网 IP,对外表现为独立设备 |
| Virtiofs/无网络 | none | 禁用网络 |
如何确认自己的网络模式
执行以下命令,若显示无此文件或打开显示为 networkingMode=nat 则说明是 NAT 模式。默认都是 NAT 模式,跟虚拟机 VMware 一样。
1 | |
配置的语法是:
1 | |
若在 .wslconfig 里配置了 镜像模式,则可以直接用 127.0.0.1 来代理。
1 | |
以上方法均是临时代理(除了 TUN 模式),关闭窗口后代理就自动失效。













