docker启动多个VPN并设置网络代理

本文介绍了如何使用Docker容器化技术,结合EasyConnect、Proxifier和SecoClient等工具,解决在多网络段间频繁切换VPNs和配置代理的问题,实现更为便捷的网络访问方式。
摘要由CSDN通过智能技术生成

接上一篇

应用容器化改造-CSDN博客icon-default.png?t=N7T8https://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的配置)。容器化改造跟之前的应用差不多,就是换个应用。

本机运行

docker run --device /dev/net/tun --cap-add NET_ADMIN -d -v /d/UniVPN-data:/root/UniVPN -p 127.0.0.1:10085:1085 univpn:v4

意思是本机D盘UniVPN-data下的文件映射到容器内,这样就不用每次都到容器中修改VPN的配置了,在ini文件中修改连接地址、端口等(用户名/密码改了不生效)。

比较麻烦的是每次容器启动后需要到容器的命令行启动./UniVPNCS,然后选择对应的链接,输入用户名密码才能连上。而且这破玩意一天掉线一次,贼难用。

  • 26
    点赞
  • 19
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值