Linux:ubuntu虚拟机共享win10主机网络代理

447 阅读2分钟
  • 目的

在win10笔记本上有代理服务,使用vmvare虚拟机创建ubuntu想要共享宿主机的代理

宿主机防火墙

  • 宿主机:win10,笔记本电脑
  • 虚拟机:ubuntu24,vmware

防火墙配置

对于面向用户的win笔记本,默认是禁止所有入站请求的

如果我们需要宿主机兼职代理服务器等功能,需要配置允许来自虚拟网络的请求

在windows防火墙高级设置中,为入站规则添加一条自定义规则,允许所有程序、端口等等。限制远程IP为vmvare的虚拟网段(219为NAT模式,198为仅主机模式)

clash配置

必须开启 “允许局域网代理”,以接收来自虚拟机的代理请求

命令行与APT

  • 环境变量添加代理
  • APT下载添加代理

将以下内容保存成脚本 proxy_init.sh

然后执行 source proxy_init.sh(不能用sh或者bash)

#!/bin/bash

# 遇到错误时立即退出
set -e

proxy_url="http://192.168.219.1:7890"

# 命令行添加代理
echo '----------命令行添加代理----------'
proxy_settings=$(cat <<EOF
# 添加代理
export http_proxy=$proxy_url
export https_proxy=$proxy_url
EOF
)
if ! grep -q "http_proxy" ~/.bashrc; then
  echo "$proxy_settings" >> ~/.bashrc
  echo "代理设置已添加到 ~/.bashrc"
else
  echo "代理设置已存在,跳过添加。"
fi
source ~/.bashrc
echo "请手动执行 source ~/.bashrc 或重新打开终端以使代理设置生效"

# APT源添加代理
echo '----------APT源添加代理----------'
apt_proxy_settings=$(cat <<EOF
Acquire::http::Proxy "$proxy_url";
Acquire::https::Proxy "$proxy_url";
EOF
)
sudo tee /etc/apt/apt.conf.d/95proxies <<< "$apt_proxy_settings" > /dev/null
sudo apt update -y

由于网络代理可能存在波动,导致 apt update 时出现502,但这无伤大雅,这种情况只要多执行几次就好了

确保宿主机代理服务正常,在虚拟机 curl www.google.com 返回内容证明代理已生效

sudo代理环境

sudo 重置环境变量:当你使用 sudo 运行命令时,出于安全考虑,sudo 默认会重置大部分环境变量,包括 http_proxyhttps_proxy。这可以防止恶意程序通过设置环境变量来劫持 sudo 命令的网络请求。

使用sudo命令时,我们配置的代理会失效,因为不会加载我们配置的代理环境变量

验证:sudo curl www.google.com 无法响应,证明代理失效

  • 临时解决

对部分需要代理,同时需要sudo的命令,使用 -E 参数,可以保留用户环境变量

如:sudo -E curl www.google.com  正常响应,代理生效

  • 长久解决

将代理配置,同时写入 /root/.bashrc 中