接上一篇
应用容器化改造-CSDN博客https://blog.csdn.net/weixin_53439529/article/details/137045255最近要测试的虚拟机比较多,都是分属不同的网段,每个网段访问都需要VPN,不同云厂商的VPN产品不一样,有时候需要开好几个。更坑的是用同一个VPN的,比如好几家都用的是深信服的SSL-VPN,就需要反复登出切换地址,如果需要同时访问两个不同网段的机器就抓瞎。
鉴于切换地址和用户都很麻烦,个别服务器在堡垒机上,所以需要登录VPN后再配置代理服务器跳转,有的不用代理跳转,代理一会开一会关也很难受。同事给了一个docker启动多个VPN容器的思路,正好本机装了docker,封印VPN之后果然非常清爽。简单记录一下。
需要用到的软件有:
Docker
VNC Viewer(EasyConnect 的图形界面)
Proxifier(代理)
SecoClient(华为的SSL-VPN,这是另一个VPN软件,也一并封印了)
1 Docker
本机已安装,跳过(官网下载也很方便,可能需要一个梯子)
2 Proxifier
本机已安装,跳过
3 VNC Viewer
EasyConnect 需要图形界面登录,需要安装 VNC Viewer。VNC Viewer 的安装非常简单,到官网的 下载 页面,选择相应的版本下载,然后一路下一步就完成了。
【Docker 运行 EasyConnect】
本机打开一个cmd命令行/终端,因为需要图形界面,输入命令:
docker run --device /dev/net/tun --cap-add NET_ADMIN -ti -e PASSWORD=password -v $HOME/.ecdata:/root -p 127.0.0.1:5901:5901 -p 127.0.0.1:1080:1080 hagb/docker-easyconnect:7.6.7
docker run --device /dev/net/tun
命令的含义是将 /dev/net/tun
设备添加到 Docker 容器中。在这种情况下,/dev/net/tun
是一个 TUN/TAP 设备,通常用于创建虚拟网络设备,以便容器可以访问主机网络或其他网络资源。其中 hagb/docker-easyconnect:7.6.7 表示使用 7.6.7 版本的 EasyConnect,密码是password。VNC界面的端口是本机5901对应容器5901,easyconnect服务端口是本机1080对应容器1080。当 5901 或者 1080 端口被其他服务占用时,可以更改 docker 运行的 EasyConnect 的端口:15901:5901表示容器的5901端口映射到本机的15901端口,建议端口不要连续。
这时候在docker的小鲸鱼界面里就能看到一个在运行中的容器了。
【VNC Viewer】
打开 VNC Viewer,点击左上角的 File -> New connection,新建一个链接,在弹出的对话框中的 VNC Server 中填入 127.0.0.1:5901,对应docker run命令中指定的VNC地址和端口。
VNC Viewer配置点击 OK 后,双击我们刚刚创建好的链接,输入密码,就可以进行连接了,进去之后是熟悉的界面,输入地址,用户名和密码之后就可以关掉了。在 Docker 中运行的 EasyConnect 都不用输验证码,以后使用的时候只需要点一下relogin登录按钮就可以了。到这一步,就会有一个 socks5 代理跑在本机的 1080 端口,接下来就是配置 Proxifier进行转发。
【Proxifier】
首先要加入本机启动的docker-easyconnect作为代理服务器,Profile-Proxy Servers新增SOCKS5类型的server,有几个docker-easyconnect就加几个。地址是容器指定的127.0.0.1:1080。
如果原来是通过VPN直连的服务器,原来不用配置代理,但是在用docker封印VPN后,本机就成了一个代理服务器,所以需要将原来直接访问的服务器配置成代理的目标Host。
然后在Proxification Rules里面新增代理转发规则,1080端口这个代理要连接到指定地址的服务器,在Target Hosts里面就加入服务器地址,如果末尾有多个就输入*,Action就是配置好的server,其他默认。
比如10.200.56.*;10.210.56.*;
然后就可以访问上面这几个IP地址了,所有端口都可以。
【代理链】
因为有些网络是本来就需要代理访问,所以需要先连接本机的docker-easyconnect代理地址,然后再连接vpc内的代理,才能访问其他服务器。如果只是单纯新增两个proxy server是不能转发的,需要配置代理链:
proxy server中配置proxy chain,需要先新增两个代理地址到server中,然后把这两个新增到chain中,变成一个新的action。Proxification Rules里面把要访问的内网服务器加进去,选择代理链action。
【Docker 运行 SecoClient】
SecoClient是华为的SSL-VPN客户端,这个客户端有windows图形界面版,但是linux版只有命令行界面,不过也挺简单的,直接给它打成镜像,通过socks5服务连接(需要在镜像里安装socks5服务,而且修改UniVPNCS的配置)。容器化改造跟之前的应用差不多,就是换个应用。
本机运行
意思是本机D盘UniVPN-data下的文件映射到容器内,这样就不用每次都到容器中修改VPN的配置了,在ini文件中修改连接地址、端口等(用户名/密码改了不生效)。
比较麻烦的是每次容器启动后需要到容器的命令行启动./UniVPNCS,然后选择对应的链接,输入用户名密码才能连上。而且这破玩意一天掉线一次,贼难用。