使用docker封装easy connect并暴露指定域名
背景
公司使用easy connect连接内网,默认linux客户端会创建tun设备并写入大量路由规则,侵入性太强易冲突。
诉求
希望仅保留easy connect的基础代理功能,对系统影响降至最小。
实现
容器化
参考已有项目docker-easyconnect/docker-easyconnect对easy connect进行隔离并暴露代理端口
docker run -d --restart unless-stopped --name easyconn --device /dev/net/tun --cap-add NET_ADMIN -ti -p 1080:1080 -p 8888:8888 -e EC_VER=7.6.3 -e CLI_OPTS="-d <endpoint> -u <username> -p <password>" hagb/docker-easyconnect:cli
注意指定版本EC_VER,端口协议1080=socks5,8888=http
SSH
对于ssh直连和git pull ssh://可以通过ssh_config进行代理注入
vi ~/.ssh/config
Match host bitbucket.company.ai
ProxyCommand ncat --proxy 127.0.0.1:1080 --proxy-type socks5 %h %p
域名
对于其他内网资源可以通过改写host的方式实现本地访问
# 创建docker network
docker network create --driver bridge --subnet 10.1.0.0/24 easynet
# 获取内网域名对应地址
ping nexus.company.ai # 172.30.20.8
# 端口转发,使用10.1.0.1:1080作为socks4代理(通常向后兼容),将172.30.20.8:443转发至10.1.0.8:443
docker run -d --restart unless-stopped --name nexus --network easynet --ip 10.1.0.8 verb/socat:alpine TCP4-LISTEN:443,fork SOCKS:10.1.0.1:172.30.20.8:443,socksport=1080
# 写入/etc/hosts
10.1.0.8 nexus.company.ai
纯浏览器使用也可以借助插件Proxy SwitchyOmega 3将指定域名*.company.ai
分流至本地8888的http代理
参考
docker-easyconnect/docker-easyconnect: 使深信服(Sangfor)开发的非自由的 VPN 软件 EasyConnect 和 aTrust 运行在 docker 或 podman 中,并作为网关和/或提供 socks5、http 代理服务
对已启动的Docker container添加端口映射 - azureology - 博客园
Proxy SwitchyOmega 3 (ZeroOmega) - Chrome Web Store