MAC-Win11虚拟机双VPN环境内网穿透解决思路

MAC-Win11虚拟机双VPN环境内网穿透解决思路

背景

日常工作需要同时在mac上连接两个不同公司的vpn,下文简称:公司A -> vpn1;公司B -> vpn2。

对于公司B,需要在开发工作中,连接内网数据库、redis等服务,其vpn客户端同时支持macos与windows;对于公司A,原本只需要使用一些内网的web资源,其vpn客户端仅支持windows。

所以,我本机工作环境如下:

  1. macos下安装win11虚拟机,win11通过虚拟机的"共享网络"设置实现联网。
  2. macos下安装公司B的vpn2,idea等服务可以正常访问公司B内网的数据库等资源。
  3. win11下安装公司A的vpn1,在虚拟机里可以正常访问公司A的内网资源。
  4. 虚拟机新建一个HOST-ONLY网络,IP地址设置为192.168.137.3
  5. win11下安装ccproxy,搭建一个HTTP代理,代理地址为192.168.137.3

如此,可以在macos下既能访问公司B的内网数据库,又能正常访问公司A 的web页面,原本用的十分顺心,直到接到一个mq的开发需求。

新的问题

新项目的开发调试,需要同时连接公司B内网的数据库、zk和redis,以及公司A内网的rocketMQ服务,我原本天真的以为,将HTTP代理改为socks代理,然后通过添加静态路由,把mq的地址路由到代理服务器上就能解决问题,结果不知道是不是由于两个公司的内网都是10网段,导致静态路由无法生效。

解决方案

问题定位

  1. PD虚拟机的网络共享工作机制,可能导致某些协议的流量无法被正常转发;
  2. IDEA的工作机制:IDEA 本身不会自动将项目的所有网络请求通过系统的全局代理,尤其是当项目使用的是底层网络库(如 Netty、OkHttp 等)时,这些库有可能不会默认遵循系统的代理设置。
  3. 项目的架构:由于项目使用的rocketMQ客户端是二次封装的,rocketMQ 默认使用 Netty 进行通信,无法通过简单修改配置的方法设置代理,改底层代码不符合开发规范。
  4. socks工作机制:SOCKS 代理用于转发应用层的流量(如 HTTP、SSH 等),但并不支持直接转发 ICMP 请求(即 ping),这说明某些更底层的连接,socks可能代理不到。

解决方法

  1. 在虚拟机中,安装公司B的VPN客户端;
  2. 在虚拟机中,先拨公司A的vpn1,再拨公司B的vpn2;
  3. 在虚拟机中,删除造成冲突的vpn2添加的大网段路由,手动添加需要访问的数据库、redis具体IP地址的路由,指向vpn2网关,将命令做成bat脚本。
  4. 启动ccproxy,配置好socks代理。
  5. mac中打开idea,设置-> 外观与行为-> 系统设置-> HTTP代理:在右侧选手动配置代理-> socks,填上ccproxy配置好的ip端口。
  6. 打开项目运行设置,添加虚拟机运行参数(jvm),添加配置:-DsocksProxyHost=192.168.137.3 -DsocksProxyPort=1080
  7. mac下安装proxychains-ng,配置好代理服务器地址,并排除调127.0.0.1和localhost等本地地址,然后关闭idea,再通过proxychains-ng启动idea

所有问题解决。

其他

  1. 只打开idea的全局代理,运行项目无法连接到数据库,因为JDBC 数据库连接默认不会通过系统代理进行通信,因此要加上jvm参数。
  2. 不安装proxychains-ng无法连接mq,rocketMQ 默认情况下并不直接支持通过 JVM 参数配置代理进行连接。RocketMQ 使用的是 TCP 协议,而许多代理服务器(尤其是 HTTP 和 SOCKS 代理)可能无法处理 TCP 连接。这是导致 RocketMQ 不能通过 JVM 参数直接连接代理的原因。
  3. Proxychains可以在 Linux/MacOS 环境中使用,它能将 TCP 流量强制通过 SOCKS 代理发送。不过这种方式对稳定性和性能可能有一定的影响,仅用于本地开发测试尚可。
相关推荐
云原生指北6 小时前
Apple Container Machine:把 Linux 搬进 Mac
macos·docker
星栈独行16 小时前
Rust + Makepad 应用怎么打包发布:Windows、macOS、Linux 全平台交付
windows·程序人生·macos·ui·rust
daly52016 小时前
PyCharm怎么下载?2026最新版PyCharm安装教程(Windows/macOS/Linux)
windows·macos·pycharm
元媛媛16 小时前
如何安装Claude Code|VS Code Mac版
macos
故渊at19 小时前
第十五板块:Android 系统调试与逆向工程 | 第三十五篇:ART 虚拟机内部机制与 OAT 文件格式
android·虚拟机·art·机器码·oat文件格式
2601_961845421 天前
法考真题及答案解析|历年真题|资料已整理
linux·windows·ubuntu·macos·centos·gnu
Allen Su1 天前
【Mac 教程系列第 20 篇】macOS 鼠须管(Squirrel)皮肤大全(持续更新)
macos·rime·squirrel·rime 输入法皮肤大全
其实防守也摸鱼1 天前
无线网络安全--10 规避WLAN验证之挫败MAC地址限制
网络·智能路由器·php·教程·虚拟机·wlan·无线网络安全
LinMin_Rik1 天前
Mac上获取私钥证书P12文件(也可以给win11的HbuilderX使用)
macos
音视频牛哥2 天前
macOS如何实现RTSP/RTMP低延迟播放? SmartMacPlayer技术实战探究
macos·大牛直播sdk·mac rtsp播放器·mac rtmp·mac rtmp播放器·mac平台播放rtsp·mac平台播放rtmp