之前一直使用 frp 进行内网服务穿透。
前两天折腾公司的VPN的时候,在找 HTTP 代理服务器的时候,发现的 goproxy 这个软件,https://snail007.host900.com/goproxy/manual/zh/。
看了文档,除了几种代理服务外,也支持做内网穿透。
前段时间我的备份文件服务器 https://files.steem.fans 因为一块硬盘挂了,导致所有数据损坏了,因为我使用的 LVM 把所有物理硬盘合并成一块虚拟磁盘使用的。
所有的备份数据在我家里的服务器上也有备份,这就需要我从家里传输这些文件到远程的这台服务器上。
因为 GFW 的存在,使用 rsync 传输数据一直有问题,总是意外中断,搞了一周多了,一个文件都没有传上去。又因为运营商的限制(家用网络不允许提供对外服务),不能把家里的服务器开web服务,从远程服务器上用 axel 多线程下载。
这个时候,我想到了内网穿透。
既然运营商有跑脚本,来检测下辖区域是否有家用电脑提供对外服务,那么我直接把我家里服务器的web服务端口穿透映射到远程服务器上,远程服务器再用 axel 下载不就可以了。
开始实施。
两边服务器都下载 goproxy https://github.com/snail007/goproxy/releases。
解压缩后,把 proxy 这个程序放到 /usr/bin
目录下面。
在其中一台服务器上执行 proxy keygen -C proxy
生成证书文件,然后用 scp
把证书文件传到另外一台服务器上。这个证书文件将作为两台服务器之间通信加密的签名证书使用。
然后在远程服务器上分别执行下面两条命令:
proxy bridge -p ":33080" -C proxy.crt -K proxy.key --forever --daemon --log /var/log/bridge.goproxy.log
proxy server -r "127.0.0.1:20800@:80" -P "127.0.0.1:33080" -C proxy.crt -K proxy.key --daemon --forever --log /var/log/server.goproxy.log
由于我只想我自己访问,因此我的 20800 端口只绑定到了 127.0.0.1
。
然后在我家里的服务器上执行:
proxy client -P "22.22.22.22:33080" -C proxy.crt -K proxy.key --forever --daemon --log /var/log/client.goproxy.log
这样,就在两台服务器之间建立了一个隧道,通过服务器的 33080 端口通信,然后把家里的服务器端口映射到了远程服务器的 20800 端口上。
使用 axel 下载:
axel -n 5 http://127.0.0.1:20800/xxxxxx.tar.gz
看上去性能很不错,至少把我家里服务器到国外服务器的上行带宽都跑满了。很牛!
牛B,看不懂;ety兄,能不能支持一下我的见证人,shenchensucc,谢谢
Downvoting a post can decrease pending rewards and make it less visible. Common reasons:
Submit