背景:公司内部通过给每个员工分配对应 IP ,然后设置代理服务器和端口,使用同一个出网口,进行上网,又有上外网的需求,如 Google,以及在本机上 VM/VB 虚拟机下运行一些 Linux 集群,对外提供服务;家庭网络不需要考虑此情形~~~,这是特定环境下面临的问题

举个栗子:
助理姐姐分配我一个IP:172.16.25.44
需要上网的话,通过手动设置代理服务器:172.16.25.75:808
然后就可以上网了

Q1: 按照上述配置,我的梯子,如 V2ray 等,全都不能用啦,求解!

画张目标图,我们就能明白之前的网络工具,所处位置:
QQ截图20200728173234.png

问题分析:当环境变化为示例情形,代理工具无法工作,是因为代理工具之前直连出网口,现在也需要先到达代理服务器,再出网和返回数据给请求。

而我们所知的,V2ray 本身是没有 代理服务器设置的,另外,在七层协议里面,严格的讲,SS 是最接近底层,链路层,而 V2ray 是应用层会话,V2ray 走Socket 5 协议的;
另外,Windows系统设置的代理模式,并不是严格意义的全局代理。

结论:那我们找个可以全局代理的软件,然后强制 V2ray 软件的流量 走代理服务器,就可以解决问题!

安利一个工具:ScoksCap (尽管在2017年停止了维护,并不妨碍他的可用性)

SocksCap 64免费下载 / SocksCap 64 Free Download. - SocksCap64
https://www.sockscap64.com/sockscap-64-free-download-zh-hans/

使用逻辑:

  • SocksCap 创建一个代理,代理参数配置为,公司的上网代理服务器

  • 添加程序,如 V2ray,运行,并将 V2ray 设置为全局代理
    SocksCap使用.png

  • 如果是 vm 虚拟机里面需要走代理,可以将 V2ray 里面的 允许局域网连接打开

v2分配给其他机器.png

最后就可以愉快的上谷歌和外网了!

Q2:使用这种模式上网后,我的 Vbox 内运行的 centos7 之类的 Linux 系统无法联网了

这里我们需要明确,Vbox 和 VMWare 常用的 网络模式概念

  • 桥接
    桥接网络是指本地物理网卡和虚拟网卡通过VMnet0虚拟交换机进行桥接,物理网卡和虚拟网卡在拓扑图上处于同等地位,那么物理网卡和虚拟网卡就相当于处于同一个网段,虚拟交换机就相当于一台现实网络中的交换机,所以两个网卡的IP地址也要设置为同一网段.

    所以当我们要在局域网使用虚拟机,对局域网其他pc提供服务时,例如提供ftp,提供ssh,提供http服务,那么就要选择桥接模式。

  • NAT
    NAT模式中,就是让虚拟机借助NAT(网络地址转换)功能,通过宿主机器所在的网络来访问公网。
    NAT模式中,虚拟机的网卡和物理网卡的网络,不在同一个网络,虚拟机的网卡

  • Host-Only
    在Host-Only模式下,虚拟网络是一个全封闭的网络,它唯一能够访问的就是主机。其实Host-Only网络和NAT网络很相似,不同的地方就是Host-Only网络没有NAT服务,所以虚拟网络不能连接到Internet。主机和虚拟机之间的通信是通过VMware Network Adepter VMnet1虚拟网卡来实现的。

问题分析:主要原因来着,每个人只有一个固定IP,那么无法使用桥接模式了,Vbox 只能使用 NAT + HostOnly 模式下,和 宿主机 进行 SSH 会话,但是此时,是无法ping 通 外网的

资料参考 :实例讲解虚拟机3种网络模式(桥接、nat、Host-only) - ggjucheng - 博客园
https://www.cnblogs.com/ggjucheng/archive/2012/08/19/2646007.html

Q3: 这种情况下,什么是最优解?

1. 选择合适的虚拟机厂商

我交替使用了 VMWare 和 Vbox ,发现 VMWare 要比 Vbox 好上太多,Vbox 经常面临掉驱动,手动安装驱动的问题
ps:ESXi 等不在讨论范围,这里基于 Window 系统

2. 操作

严格的说,我并没有解决局域网限制问题。我的解决方案是,公司除了以太网,一般还有员工网络,台式机加装无线网卡,笔记本则直接连接WIFI,然后使用 VMWare nat 模式,一定要在网络编辑器里面,指定 nat 模式下的网卡 为WIFI 的网卡。再手动设置 如 centos 下

/etc/sysconfig/network-scripts

内 ifcfg-* 开头的网卡,当 dhcp 分配网络功能正常后,再手动设置为 static ip,即可。
如果是公司员工少,更建议使用 桥接模式,此时 虚拟机内 的功能可以接入 局域网内其他功能。但公司员工多,桥接模式下分配的 IP,很难固定并可用。

最后,我成功在公司搭建了 redis 集群,和本地 konga 接入了 公司 kong 配置