本文最后更新于 2373 天前,其中的信息可能已经有所发展或是发生改变。
背景
公司有台机器需要用VPN访问,资源包括ssh和web页面。在物理机上开VPN能够访问该内网资源,但会影响公网的访问效率和一些资源(毕竟通过VPN绕了一圈内网再回来)。很自然想到用虚拟机挂VPN,需要访问内网资源的时候到虚拟机上去解决。尽管我使用mac,触摸板划一下就能无缝切换虚拟机窗口,但多了个操作系统环境还是有些不方便。毕竟我想在同一个浏览器和终端软件上同时切换公网/内网的tab。
解决方案
- VPN还是挂在虚拟机上;
- 同时在虚拟机上安装一个网络代理软件,将常用的SOCK和HTTP端口开了就行(SOCK还是HTTP看自己需求);
- 但此时物理机是访问不了虚拟机端口的,我们需要在虚拟机软件上设置端口映射(一般虚拟机都支持吧),将物理机某个端口映射到虚拟机监听的SOCK或HTTP端口;
- 应用:物理机浏览器:安装一个SwitchyOmega插件,很方便得对某个域名走指定的情景规则(这个情景设置代理为刚刚映射的http/sock代理);ssh添加代理配置即可(下面具体步骤贴命令)
实际操作
以我的案例描述下具体操作,我的物理机是mac。
- 安装虚拟机(我安装的是parallels desktop。Windows下可安装VMware或VirtualBox)。然后在虚拟机安装一个操作系统(我安装的是win7)
- 下载了一个CCProxy(一款据说比较优秀的代理软件),将其安装在虚拟机。默认已经设置好了端口,可以不改动。
- 关掉win的防火墙,另外如果VPN软件有特殊限制的话,需要去掉。例如我使用的思科VPN软件
- 在虚拟机软件配置端口映射。如图(parallels desktop >> 偏好设置 >> 网络),我将本地的19888端口映射到了win7虚拟机的808端口(http),将本地的19889端口映射到了win7虚拟机的1080端口(SOCK5)
- 浏览器访问内网资源,使用SwitchyOmega。对内网资源配置规则用该情景模式。
- ssh登录内网机器,配置~/.ssh/config
Host xxxx.oa.com ProxyCommand nc -X 5 -x 127.0.0.1:19889 %h %p
然后直接ssh username@xxxx.oa.com就可以了,是不是很方便。BTW:为了避免两边子网ip冲突,我用域名替换了内网的ip,这个需要在虚拟机那边的hosts文件设置下(Windows在C:\Windows\System32\drivers\etc\hosts更改)
最后
有疑问欢迎留言~
SSH和WEB资源这些暂用的带宽并不是很大吧?我选择物理机挂着VPN,骚操作完结
主要作用是将原本VPN导致的网络隔离打通。这样可以在物理机根据不同的app用途指定不同的网络连接,避免了挂VPN,断开VPN的烦恼操作。