VMware Ubuntu 代理到 Windows veee 完整记录

背景

宿主机 Windows(192.168.1.5)运行 veee 代理(端口 15236,HTTP 代理),只监听 127.0.0.1。VMware 中运行 Ubuntu 虚拟机,需要让 Ubuntu 的终端和程序通过宿主机的 veee 代理访问外网。

最初宿主机通过有线网卡连接路由器,VMware 使用桥接模式一切正常。后因路由器损坏,改为 WiFi 上网,桥接目标网卡(有线)断开,导致以下问题:

  • OpenWrt VM 网络瘫痪(桥接目标网卡未插线)
  • Ubuntu VM 无法通过 192.168.1.5:15236 连接 veee(veee 只绑定了 127.0.0.1)

第一步:解决 OpenWrt 网络 —— NAT + 仅主机双网卡

问题

VMware 桥接模式指向的有线网卡已断开(WiFi 桥接不稳定),OpenWrt 二层不通,ARP 表 MAC 全为 00:00:00:00:00:00

方案

给 OpenWrt VM 配两张网卡:

网卡 模式 用途
eth0 NAT OpenWrt 通过宿主机 WiFi 访问外网
eth1(新增) 仅主机(VMnet1) 宿主机与 OpenWrt 互通

操作

VMware 设置: 关闭 VM → 设置 → 原有网卡改 NAT → 添加网卡设仅主机模式 → 启动。

OpenWrt /etc/config/network 新增:

config interface 'hostonly'
    option device 'eth1'
    option proto 'static'
    option ipaddr '192.168.47.100'
    option netmask '255.255.255.0'

/etc/init.d/network reload 后,宿主机 192.168.47.1 即可 ping 通 OpenWrt 192.168.47.100

附带修复

dropbear SSH 只监听旧 IP 192.168.1.100:22,导致 ssh root@192.168.47.100 被拒绝:

uci set dropbear.@dropbear[0].Interface=''
uci commit dropbear
/etc/init.d/dropbear restart

第二步:暴露 veee 端口 —— netsh portproxy

veee 只监听 127.0.0.1:15236,其他设备无法直连。用 Windows netsh 端口转发把 veee 暴露到仅主机网络 192.168.47.1:15236

netsh interface portproxy add v4tov4 listenport=15236 listenaddress=192.168.47.1 connectport=15236 connectaddress=127.0.0.1

验证:

netsh interface portproxy show v4tov4

同时附上 proxy-forward.bat 交互式管理脚本(启动/停止/状态/防火墙/连通性测试)。


第三步:Ubuntu 代理配置 —— proxy-manager.sh

最终链路

Ubuntu → 192.168.47.1:15236 (仅主机 VMnet1)
           ↓ netsh portproxy
       127.0.0.1:15236 (veee)
           ↓
         外网

脚本设计

proxy-manager.sh + deploy.sh 组成自动化代理管理套件:

  • proxy-manager.sh:核心管理脚本,负责探测宿主机 IP、写入代理环境变量
  • deploy.sh:部署脚本,安装/卸载 systemd 服务,实现开机自启

关键设计点

  1. IP 自动探测:优先检测 192.168.47.1(仅主机网络),依次回退到 192.168.1.5192.168.137.1192.168.174.1

  2. 环境变量持久化:写入 ~/.proxy_env~/.bashrc 自动 source(避免 /etc/environment PAM 加载不稳定的问题),同时写入 aiworker 和 root 两个用户

  3. systemd 开机自启:通过 proxy-env.service 在系统启动时自动设置代理

  4. 失败排查提示:检测失败时提示 veee 是否运行、portproxy 是否生效、VMnet1 IP 是否正确

使用方法

./deploy.sh install    # 安装 + 开机自启
./deploy.sh uninstall  # 卸载
./deploy.sh status     # 查看状态

安装后新开终端自动生效,或 source ~/.proxy_env 立即加载。


文件清单

文件 位置 说明
proxy-manager.sh Ubuntu /home/aiworker/proxyshell/ 代理管理核心脚本
deploy.sh Ubuntu /home/aiworker/proxyshell/ systemd 部署脚本
proxy-env.service Ubuntu /etc/systemd/system/ systemd 服务文件
proxy-forward.bat Windows C:\Users\Administrator\Downloads\proxyshell\ Windows 端口转发管理

踩坑记录

问题 原因 解决
OpenWrt 与宿主机互 ping 不通 桥接目标有线网卡已断开 改用 NAT + 仅主机双网卡
SSH Connection refused dropbear 只监听旧 IP 清空 Interface 绑定
/etc/environment 代理不生效 PAM 未加载到当前 shell 改用 ~/.proxy_env + .bashrc source
systemd 以 root 运行导致 .proxy_env 路径错误 $HOME 指向 /root 同时写入 aiworker 和 root 的 home 目录
curl 不加 -x 不走代理 环境变量格式含反引号 / 未 export 用 heredoc 生成干净的 export 文件

0 条评论

发表回复

您的电子邮箱地址不会被公开。