隔离 EasyConnect 实现规则分流到公司内网
问题
- 公司的内网需要使用独立 VPN App 才能连接
- 无法和我使用的 VPN 共存
- 公司用的 EasyConnect,深信服的恶臭不用多说
思路
将 EasyConnect 打包隔离起来,再暴露部分端口出来当代理端口,然后将这个代理加入分流
检索
已经有前人造好的轮子,果然深信服害人不浅啊
实现
要注意版本,示范的是 CentOS 7,具体看文档
- 安装 Docker 版 EasyConnect
1
touch ~/.easyconn
1
docker run --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 vpnaddress -u username -p password" hagb/docker-easyconnect:cli
- 开放 socks 1080 端口
1
iptables -I POSTROUTING -d 172.17.0.2 -p tcp -m tcp --dport 1080 -j MASQUERADE -t nat
查缺补漏
漏洞
socks 明文传输,直接暴露在公网太过危险
解决思路
在 socks 外面再套一层 ss 进行二次加密,然后在公网上暴露 ss 的端口
实现
- 安装 x-ui
1
bash <(curl -Ls https://raw.githubusercontent.com/vaxilu/x-ui/master/install.sh)
- 添加入站
- 默认端口54321,默认账号和密码都是admin,随心添加个
ss + tcp
- 放行端口(我直接关掉防火墙了)
1
2
3systemctl status firewalld.service #查看防火墙状态
systemctl stop firewalld.service #暂时关闭防火墙
systemctl disable firewalld.service #永久关闭防火墙
- 默认端口54321,默认账号和密码都是admin,随心添加个
- 设置 xray 配置文件
面板设置
->xray 相关设置
,在outbounds
中插入以下这段,然后保存配置
->重启面板
1
2
3
4
5
6
7
8
9
10
11{
"protocol": "socks",
"settings": {
"servers": [
{
"address": "127.0.0.1",
"port": 1080
}
]
}
}
- 在主路转发刚刚创建的入站节点的端口(家宽限定)
客户端配置
Shadowrocket
- 添加节点
- 在配置文件的
规则
里添加分流规则- 假设节点名称为
公司
,公司需要访问的域名为xx.com
- 类型选
DOMAIN-SUFFIX
,策略选公司
,域名填入xx.com
- 假设节点名称为
Clash
随便举个例子,详见官方文档
1 | # 只有访问`http://172.16.5.xxx`的流量才会走 vpn 的流量 |
踩坑
问题
该容器不会开机自动启动
解决
在 Linux 系统上,您可以使用 Systemd 来配置一个服务,使得容器在系统启动时自动启动。下面是一个示例步骤:
创建 Systemd 服务文件:
在
/etc/systemd/system/
目录下创建一个以.service
结尾的文件,比如mydockerapp.service
。打开该文件并添加以下内容:1
2
3
4
5
6
7
8
9
10
11
12[Unit]
Description=My Docker Container
Requires=docker.service
After=docker.service
[Service]
Restart=always
ExecStart=/usr/bin/docker start -a mydockercontainer
ExecStop=/usr/bin/docker stop -t 2 mydockercontainer
[Install]
WantedBy=default.target请确保将
mydockercontainer
替换为您的 Docker 容器的实际 ID。重载 Systemd:
运行以下命令重新加载 Systemd 配置文件:
1
sudo systemctl daemon-reload
启用并启动服务:
启用服务,使其在系统启动时自动启动,并启动服务:
1
2sudo systemctl enable mydockerapp
sudo systemctl start mydockerapp确保将服务名称替换为您在第一步中创建的服务文件的名称。
这样配置后,您的 Docker 容器应该会在系统启动时自动启动。请注意,确保 Docker 服务本身在系统启动时也已启动,因为上述服务文件中使用了 Requires=docker.service
和 After=docker.service
。
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 七夜 の Blog!
评论