虚拟机Linux配置clash代理
描述
本blog旨在解决虚拟机Linux无法通过clash代理访问外网的问题
一、配置Clash
1、获取宿主机IP
通过win+r打开运行,输入cmd打开命令窗,在命令窗输入ipconfig获取网络信息

例如图中框起来的192.168.1.4即为宿主机IP
2、设置clash for windows应用配置

- 从图中能确认代理端口为7890
- 第二个“允许局域网连接入clash”建议只在虚拟机需要连接外网时才开启,使用完毕就关闭,因为开启之后会让本局域网所有人都通过你的clash代理端口访问,所以强烈建议开启前先做以下配置以提高安全性
修改clash配置文件
通过以下步骤打开config.yaml



打开config.yaml后你的原始配置应该跟我大差不差,不过只需要用下面内容覆盖上图框起来的这四行
mixed-port: 7890
allow-lan: true
external-controller: '宿主机IP:5055'
secret: "taciturn-hg_2007_clash_secure_zxcvbnm" # 随便写,在20位以上即可,不要空着
bind-address: 宿主机IP
修改完后到右下角找到clash并重启

设置防火墙(若是在公共wifi/校园网一定得设置)
一、HTTP/SOCKS 代理端口 7890 防护
-
打开 控制面板 → 系统和安全 → Windows 防火墙 → 高级设置 → 入站规则 → 新建规则





-
规则类型选择 端口 → TCP → 特定本地端口 → 7890


-
操作选择 允许连接

-
配置文件选择 域、专用(不要选择公用网络)

-
名称命名,例如
Clash Proxy 7890
-
新建后右键 → 属性 → 作用范围(Scope)
-
远程 IP 地址设置为 指定设备的 IP(如你的手机或虚拟机)

虚拟机linux的IP可以在其终端输入
ifconfig查看
-
保存配置
二、控制面板端口 5055 防护(跟上面差不多,就不做演示了)
- 同样新建规则 → TCP → 5055
- 允许连接 → 域、专用
- 名称例如
Clash Control 5055 - 属性 → 作用范围 → 远程 IP 地址设置为你的手机或虚拟机
- 保存配置
二、虚拟机 Linux 配置 Clash
前提:
- Clash 跑在 Windows 宿主机
- 端口:
7890- Linux 能访问宿主机 IP(如
192.168.1.4)
确认虚拟机能连到 Clash 端口
curl -v http://宿主机IP:7890
连不上 = 网络模式问题(NAT / 桥接)
Linux Shell 代理配置
vim ~/.bashrc
在文件后面追加以下配置
PROXY_ADDR="http://宿主机IP:7890"
export http_proxy="$PROXY_ADDR"
export https_proxy="$PROXY_ADDR"
export HTTP_PROXY="$PROXY_ADDR"
export HTTPS_PROXY="$PROXY_ADDR"
使其生效
source ~/.bashrc
三、配置完成,测试
在虚拟机linux命令窗输入命令
curl www.google.com
若输出类似前端代码的东西,则测试通过,反之若出现Could not connect to server,则连接失败
补充
使用「开关脚本」控制Linux代理
在原教程配置Linux代理后,总体环境变量就完全走clash代理,如果clash没开对应的配置开关,则无法连上网络,而且打开对应配置开关也会有安全性问题,所以这里建议使用「开关脚本」来控制Linux是否使用clash代理。
1、新建两个脚本(开/关代理)
开代理
mkdir -p ~/proxy
vim ~/proxy/proxy_on.sh
内容(改成你真实的宿主机 IP):
#!/bin/bash
PROXY_ADDR="http://宿主机IP:7890"
export http_proxy="$PROXY_ADDR"
export https_proxy="$PROXY_ADDR"
export all_proxy="$PROXY_ADDR"
echo "✅ Proxy ON -> $PROXY_ADDR"
如果复制粘贴后是下面图片这种,记得把框住的#删掉

关代理
vim ~/proxy/proxy_off.sh
内容:
#!/bin/bash
unset http_proxy https_proxy all_proxy
echo "❎ Proxy OFF"
2、给执行权限
chmod +x ~/proxy/*.sh
3、制作成命令
加进 .bashrc
vim ~/.bashrc
加到最后:
alias proxy-on='source ~/proxy/proxy_on.sh'
alias proxy-off='source ~/proxy/proxy_off.sh'
alias proxy-status='env | grep -i proxy'
然后:
source ~/.bashrc
4、测试
proxy-on # 走外网 / GitHub / yum
proxy-off # 回本地
proxy-status # 看当前状态