ESXi 透明代理虚拟机
弃坑了,太鸡儿难用了😡,还是使用了 LEDE软路由
0. 项目背景
由于工作的环境是 ESXi ,上面运行着一堆虚拟机,用来做部署方案测试使用。因为要经常访问 GitHub 以及要去 gcr.k8s.io 上拉去镜像;而且在写 Dockerfile build 镜像的时候,也需要去 GitHub 下载 release 包;使用helm初始化时需要的docker 镜像无法pull那个速度比百度网盘还慢啊啊啊啊,气死人。我觉着 GFW 的存在严重第影响了我的工作效率,遂决定搓一个虚拟机来当代理网关,或者叫旁路网关。被需要代理的机器仅仅需要修改网关和 DNS 为透明代理服务器 IP 即可。
题外话:其实用软路由 LEDE/OpenWrt 实现最合适,而且占用资源也极低,但因为使用软路由发生了一次事故,所以就不再用软路由了。那时候刚入职实习,在 ESXi 上装了个 LEDE 软路由,然后办公室的网络就瘫痪了。。
1.实现功能
- 透明代理,客户端仅仅需要修改默认网关为上游透明网关即可,无需安装其他代理软件
- 国外/国内域名分开解析,解决运营商DNS域名污染问题
- 加快客户端访问GitHub、Google等网站速度,clone速度峰值 15MB/S
- Docker pull 镜像速度 15MB/S,clone torvalds/linux
- 需要代理的内网机器仅仅需要修改网关和 DNS 即可实现透明代理
2. 实现效果
1. wget 下载 GitHub release 上的文件,以 Linux为例
163M Aug 23 21:35 v5.3-rc5.tar.gz
163M 的文件用时不到 30s
2. kubeadm config image pull
使用 kubeadm 命令加上 --kubernetes-version=
参数指定镜像的版本号,速度还是可以的😂
3. 使用 nload 命令查看网关流量情况
4. git clone GitHub 上的 repo
在此还是以 linux 项目为例,clone 过程速度飘忽不定,但一般都会在 10MiB/S 以上,按照这个速度,还和我物理机器的网卡有关,虽然号称是千兆网卡,但实际测试峰值就达不到 500Mbps,欲哭无泪🤦♂️
5. 要代理的虚拟机
5. 网关占用资源
总的来说,这个速度还是可以接受的,比那几十几百 KB/S 的龟速满意得多了,而且对于要代理的机器来说配置起来也及其的方便,仅仅修改默认网关和 DNS 就行。
3. 实现过程
0. project
主要使用到 ss-tproxy 这个项目,按照项目上的 README 部署部署起来就 ojbk
大佬的博客ss/ssr/v2ray/socks5 透明代理 ,很详细,建议认真读完
1. OS
首先虚拟机的系统我是使用的 Debian 10,使用 netinst 镜像安装好的,当然你也可以使用 Ubuntu ,选择 Debian 是因为 Debian 可以再精简一些,安装后的占用不到 700MB 。至于 Alpine 可能要费点功夫,因为编译需要的包比较麻烦。
2. 安装编译环境和依赖
Debian 和 Ubuntu 的话就一把梭子就行哈
1 | apt update |
3. 安装爱国软件
这里根据你的代理软件安装配置好就行,我就剽窃一下 shadowsocks-libev 官方的 wiki
1 | # Installation of libsodium |
4. 安装 Chinadns
安装 Chinadns 实现域名分流,国内的域名交给国内的 DNS (119.29.29.29 或 223.6.6.6) 来解析,国外的域名交给 国外的 DNS (8.8.8.8 或 1.1.1.1)来解析
1 | # Installation of chinadns-ng |
5. 安装 ss-tproxy
1 | # Installation of ss-tproxy |
6. 配置 ss-redir
1 | cat >> /etc/ss.json << EOF |
1 | "server":"", 代理服务器的 IP |
7. 配置 ss-tproxy
剽窃一下官方的配置文件 /etc/ss-tproxy/ss-tproxy.conf
1 | ## mode |
8. 启动
启动亲需要先关闭本机的 dnsmasq 进程,不然会提示 53 端口已占用
1 | systemctl stop dnsmasq |
4. 结语
完成以上该能跑起来了,需要注意的是,透明网关要和需要代理的机器在同一网段,不可跨网段,只能在一个 LAN 局域网里。最后祝 GFW 早点倒吧😡
完整脚本,在 Debian 10 下测试通过
1 |
|