和easyconnect的爱恨情仇
背景
痛点1
新入职的公司使用easyconnect来连接内网环境,刚开始发现我的电脑比较奇怪,IDEA以及maven并不走代理,其他的数据库连接工具都可以正常连接内网数据库,导致了我花了很长事件来解决IDEA启动的jar不走代理无法连接内网数据库以及maven无法连接内网正常下载依赖的问题。
我的同事都没有这种问题,也算是奇葩小问题了,最终的解决方法是:
jar
加上启动参数-Djava.net.preferIPv4Stack=true
maven
执行命令的方式下载依赖
mvn dependency:copy-dependencies -gs=D:\win10桌面存放\java\Maven\apache-maven-3.6.3\conf\settings.xml -Djava.net.preferIPv4Stack=true
痛点2
痛点1解决后,随着时间越来越发现easyconnect好难用(网上也属于是槽点一堆了),因为公司的内网无法科学上网,平时也难免有这方面需求,就导致我在我自己的vpn和easyconnect频繁切换,这就很不爽了,科学上网和连接内网只能选择一个,并且切换起来相当耗时,比较讨厌。那这篇文章主要描述我是怎么解决这个问题的。
前置准备
-
clash
属于是常规软件了,给个地址
-
docker
我们需要用它封装easyconnect运行,并暴露一个socks5端口用于走内网代理
你可以在本机安装docker也可以在远程服务器上
本机的话我是windows安装docker麻烦,并且我已经有一台远程服务器上有docker,所以我选择使用远程服务器
docker的安装方式网上也一堆可以参考
-
Proxy SwitchyOmega
这是一款在浏览器上轻松快捷地管理和切换多个代理设置的插件,用于解决开了vpn后访问一些国内网站比较慢的痛点(国内网站采用直连模式),google应用商店搜索Proxy SwitchyOmega安装即可
使用Proxy SwitchyOmega
Proxy SwitchyOmegaan安装好后,对其进行配置
确认端口
首先确保clash开启代理,以及clash的代理端口(6789)
(代理端口和下方的Allow LAN配合可以开始局域网代理哦)
配置
proxy
在Proxy SwitchyOmegaan插件中配置代理服务器,如果Proxy SwitchyOmegaan选择了这个场景模式就意味着,浏览器的所有请求走127.0.0.1:6789
auto switch
这种场景模式可以根据配置判断哪些走代理走那种代理以及不走代理的情况。
配置规则列表,哪些域名走代理已经有大佬总结出来的,我们只需下载配置文件即可
https://raw.githubusercontent.com/gfwlist/gfwlist/master/gfwlist.txt
上方的规则列表规则选择proxy
,默认场景选择直接连接,这样就可以了。
选择场景模式
浏览器打开插件,选择auto switch
模式,这样就可以让符合规则列表的域名就会走代理,不符合的就会直接连接了。
封装easyconnect
完成以上操作,不需要内网的操作算是结束了,接下我们折腾easyconnect。
本来我是想像以上配置,在Proxy SwitchyOmega配置easyconnect的代理端口的,但是找了半天找不到,估计是easyconnect没有。
然后在网上找着找着发现了docker-easyconnect,它可以将easyconnect封装在docker容器中并暴露出一个端口,这就很完美了,它不在本机当中运行所以和clash
并不冲突,同时又暴露出了一个可以走内网代理的端口,那我们只需在Proxy SwitchyOmega配置暴露粗来的端口即可。
运行docker
文档是
docker run --device /dev/net/tun --cap-add NET_ADMIN -ti -p 127.0.0.1:1080:1080 -p 127.0.0.1:8888:8888 -e EC_VER=7.6.3 -e CLI_OPTS=“-d vpnaddress -u username -p password” hagb/docker-easyconnect:cli
我估计是我的密码有特殊字符不太行
使了这个,输入地址和用户名和密码,最后succeed就好
[root@VM-16-14-centos ~]# docker run --device /dev/net/tun --cap-add NET_ADMIN -ti -p 1767:1080 -e EC_VER=7.6.7 --name easyconn hagb/docker-easyconnect:cli
update-alternatives: using /usr/sbin/iptables-legacy to provide /usr/sbin/iptables (iptables) in manual mode
update-alternatives: using /usr/sbin/ip6tables-legacy to provide /usr/sbin/ip6tables (ip6tables) in manual mode
WARNING: logging deactivated (can’t log to stdout when daemonized)
auto login is disabled
vpn adress:
username:
password:
启动成功后就会有一个SOCKS5 端口1767
运行在服务器上,值得注意的是映射到本机的端口1767
一定是未被占用的,被占用换一个就是
命令netstat -anp | grep 1767
可检查端口占用情况
ssh隧道端口转发
以下操作本机安装docker就不用了
由于SOCKS5没有安全认证,所以不能轻易的暴露服务器端口,需要借助ssh做端口转发。什么意思呢。
就是通过ssh认证,将本机的某一个端口流量可以转发至服务器的某一个端口(在这里就是SOCKS5:1767
)
命令:
ssh -L 1767:127.0.0.1:1767 用户名@服务器ip -NT -f -o ServerAliveInterval=30
然后键入服务器密码即可
参数解释, 更多参数接收参阅: https://man.openbsd.org/ssh.1
-L 绑定地址
-N 端口转发,不做命令执行
-f 后台运行,不后台运行长时间不操作ssh会断开连接
-o ServerAliveInterval=30 每30秒发送心跳连接
配置Proxy SwitchyOmega
以上操作做好后,只需在Proxy SwitchyOmega配置一下转发规则就好
新建一个场景模式叫easyconn
将内网的域名配置(可使用通配符)上去就好
TUN
简介
以上配置完成后浏览器访问内网算是没有问题了,但是一些连接工具就无法访问内网了,这时候就可以借助clash的tun模式了,
官方的解释是:
对于不遵循系统代理的软件,TUN 模式可以接管其流量并交由 CFW 处理,在 Windows 中,TUN 模式性能比 TAP 模式好
总之就是tun模式可以代理一些系统软件就是拉
文档:
- https://docs.cfw.lbyczf.com/contents/tun.html#windows
- https://github.com/Dreamacro/clash/wiki/Premium-Core-Features
配置文件
首先我们在clash打开profiles菜单,复制出来一个配置文件
然后在复制出来的配置上右击点击edit编辑
将以下内容配置复制进配置文件(记得修改端口,域名等信息)
1 | proxies: |
rules代理规则解释:
-
DOMAIN-SUFFIX,xxx.xx,easyconn
依域名xxx.xx结尾的的会被路由至
easyconn
-
IP-CIDR,111.111.11.0/24,easyconn
数据包去往111.111.11.0/24的路由至
easyconn
-
MATCH,easyconn
其余数据包路由到
easyconn
. 这条规则是必需的。
更多解释参阅文档
配置TUN
1,在clash中打开菜单General
, 安装service model
,成功后旁边的小地球会变绿
2,打开Mixin
配置文件
根据文档配置以下信息
1 | mixin: |
点击保存
3,选择代理
验收
可以看到navicat就可以连接内网数据库拉,其他连接工具也是一样的
同时之前痛点1的问题也就不存在了拉,不用再加参数拉
然后切换代理也十分方便,在clash里切换即可
-
模式1(正常模式)
可以科学上网,浏览器内可以访问内网地址,连接工具无法访问内网
-
模式2(开发模式)
无法科学上网,但是连接工具以及jar可以访问内网