跳过正文
  1. Computers/

使用docker-easyconnect和Proxifier部署EasyConnect服务

4 分钟·
Dyingdong
作者
Dyingdong
喜欢旅行,边走边拍
目录

1 需求功能
#

1.1 已实现
#

✅ 正常访问内网网页 ✅ 访问内网数据库 ✅ 远程控制内网计算机

1.2 未实现
#

❎ 可以和内网计算机上的程序通信

2 部署流程
#

2.1 安装docker
#

直接按教程安装即可

2.2 部署docker-easyconnect
#

2.2.1 教程
#

2.2.1.1 GitHub项目地址
#

https://github.com/docker-easyconnect/docker-easyconnect 主要用到“图形界面版 EasyConnect(x86、amd64、arm64、mips64el 架构)”

2.2.1.2 其他教程
#

2.2.2 终端输入命令
#

2.2.2.1 命令
#
docker run \
--rm \
--device /dev/net/tun \
--cap-add NET_ADMIN \
-ti \
-e PASSWORD=xxxx \
-e URLWIN=1 \
-e DISABLE_PKG_VERSION_XML=1 \
-v $HOME/.ecdata:/root \
-p 127.0.0.1:5901:5901 \
-p 127.0.0.1:1080:1080 \
-p 127.0.0.1:8888:8888 \
-p 127.0.0.1:54530:54530 \
--name easyconnect \
hagb/docker-easyconnect:7.6.7

⚠️ 如果有如下报错忽略即可:

2.2.2.2 参数逐项说明
#
  1. docker run
    • 创建并启动容器实例
  2. –rm
    • 运行容器后,容器执行完毕会自动删除
    • 调试完成后,这个参数后期要删除
  3. –device /dev/net/tun
    • 让容器可以直接使用宿主机上的 /dev/net/tun 设备
    • 这在需要在容器中建立网络隧道时是必须的
  4. –cap-add NET_ADMIN
    • 必须的
    • 因为 VPN 要创建 tun 网络接口,为容器添加NET_ADMIN能力,这允许容器管理网络设置,例如设置IP地址、路由等
  5. -ti
    • 这是两个参数 -t 和 -i 的组合
    • 参数 -t 分配一个伪终端或终端,并且 -i 让容器的标准输入保持开启
  6. -e PASSWORD=xxxx
    • 设置容器内的环境变量 PASSWORD 的值为 xxxx
    • 使用VNC时要输入这个密码,可以自行设置自己常用的密码
  7. -e URLWIN=1
    • 默认为空,此时当 VPN 前端想要调用浏览器时,不会弹窗,若该变量设为任何非空值,则会弹出一个包含链接的对话框供用户复制
  8. -e DISABLE_PKG_VERSION_XML=1
    • arm64 和 mips64el 架构需要加入
  9. -v $HOME/.ecdata:/root
    • 挂载宿主机的 $HOME/.ecdata 目录到容器的 /root 目录
    • 这样,容器可以访问宿主机上的这个目录,并且任何在容器中对这个目录的修改都会反映到宿主机上
  10. –name easyconnect
    • 指定容器名称,方便后续管理操作
  11. hagb/docker-easyconnect:7.6.7
    • 指定使用的镜像名称与版本
2.2.2.3 端口映射参数
#
  1. -p 127.0.0.1:5901:5901:VNC桌面访问端口
  2. -p 127.0.0.1:1080:1080:Socks5代理服务端口
  3. -p 127.0.0.1:8888:8888:http代理服务端口
  4. -p 127.0.0.1:54530:54530:使用web访问VPN服务端口

2.2.3 登陆VPN
#

打开VNC客户端,连接地址:127.0.1:5901,输入之前设置的密码即可登录VPN桌面

PS:用web登陆还没有成功

2.3 使用Proxifier将VPN流量转发到本地端口
#

2.3.1 添加Proxy
#

  1. 点击“Add”添加一个新的Proxy
  2. 在弹出的窗口中设置如下参数:
    • Address:127.0.0.1
    • Proxy Type:选择“Socks5”

2.3.2 添加Rule
#

需要添加两个Rule,用于避免容器网络和代理嵌套冲突和连接数据库、远程控制内网计算机、访问内网网页和使用公司邮箱

2.3.2.1 Local_Docker_Bypass
#
  1. 配置
    • Name: Local_Docker_Bypass
    • Applications: 右下角“➕”号,选择docker程序
    • Target Hosts: 127.0.0.*;host.docker.internal
    • Target Ports: 不用填
    • Action: 选择“Direct”
  2. 作用 让 Docker 进程访问本地回环和 Docker 内部地址时不走代理,避免容器网络和代理嵌套冲突
2.3.2.2 Selected_Apps_Use_Inner_Net
#
  1. 配置
    • Name: All_Inner_Net
    • Applications: 不用填
    • Target Hosts: 不用填
    • Target Ports: 不用填
    • Action: 选择“Proxy”,并选择之前添加的Socks5 Proxy“Proxy SOCKS5 127.0.0.1:1080”
  2. 作用
    • 可控制特定应用程序访问内网资源时走代理,例如访问内网网页、连接内网数据库、远程控制内网计算机等
  3. 注意
    • Target Hosts最好不要加限制,否则无法访问网站和邮箱
    • 如果不加应用限制,可以不用这条Rule,直接把默认的 “Default” Rule的 Action改成之前添加的“Proxy SOCKS5 127.0.0.1:1080”
    • 如果添加应用限制,必须把Proxifier添加到“Applications”里,否则无法访问内网资源
    • 需要走代理的应用:
      • 浏览器:Safari、Edge
      • 数据库客户端:DBeaver
      • 远程控制软件:Windows App
      • 邮箱客户端:Foxmail
      • 编程工具:IntelliJ IDEA
    • 添加Edge的时候要用如下写法,否则无法访问内网网页
      • “Microsoft Edge.app”; “Microsoft Edge”; com.microsoft.edgemac; “Microsoft Edge Helper”; edge.microsoft.com
      • 其中“Microsoft Edge Helper”; edge.microsoft.com是通过查看Proxifier的日志发现的
2.3.2.3 默认Rule
#

默认生成的Rule不用管

  1. Localhost
    • 作用:所有本地回环流量直连,避免本地服务被代理
  2. Default
    • 作用:所有公网流量直连,不影响外网速度
2.3.2.4 Rule顺序
#
  1. Localhost(默认)
  2. Local_Docker_Bypass(自定义)
  3. All_Inner_Net(自定义)
  4. Default(默认)

2.3.3 设置DNS
#

  1. 需要将Proxifier的DNS设置从默认的“Detect DNS settings automatically”改成“Resolve hostnames through proxy”
  2. 其他的DNS设置保持默认即可