使用Gost建立ssl加密中转矿池连接

发布于 / 系统运维 / 11 条评论

1.前言

其实网上关于此类教程应该已经有不少了,但是发现能搜索到的教程都是直接采用gost默认证书,这样可能会出现中间人攻击,因此在这里写一篇更为安全的完整教程,就目前来说,安全性还是非常高的,网上有很多说自己加密了但还是被发现的,我猜是他们使用了带抽水的内核,抽水的连接一般都是明文TCP,所以你还得屏蔽抽水(可以用Proxifier软件实现,自行搜索)…….扯远了直接开始教程吧

2.准备

服务器选择没有什么讲究,只要是服务器距离矿池地址近,且到国内无loss即可,延迟并没有那么敏感,实际上我顶着200ms延迟连续跑了几个月也是0拒绝率。但是最关键的一点就是不要用国内服务器!

另外如果你只是临时用一下不考虑安全问题,也是不需要域名的,但是我这篇教程中为了安全性需要域名并申请DV证书,因此需要自备域名,当然了网上有大量的教程免费获取域名,这一点也完全不用担心,比如说我就是用的nic.ua免费申请的pp.ua域名。

3.服务器端配置

gost的github项目地址:https://github.com/ginuerzh/gost/releases/ 目前最新是2.11.1版本,因此本篇文章就用该版本实战演示

wget https://github.com/ginuerzh/gost/releases/download/v2.11.1/gost-linux-amd64-2.11.1.gz

gunzip gost-linux-amd64-2.11.1.gz

mkdir /root/gost

mv gost-linux-amd64-2.11.1 /root/gost/gost

chmod +x /root/gost/gost

网上的教程一般都是直接./gost -L=relay+tls://:443,但是本教程自然得安全性拉满,我们还需要添加可信证书以及证书校验再加上密码访问

之前我们准备了自己的域名,先把它解析到自己的服务器IP上,然后就接着申请免费证书,直接去腾讯云 申请个免费DV证书即可,之所以用这个不Let’s Encrypt是因为亚洲诚信的有一年时间,Let’s Encrypt的只有三个月,考虑到gost不带自动续期功能,自然选择时间长的

申请好了之后下载证书,反正类型里面都没有带PEM证书的,之后都要进行转换,随便下个nginx类型的吧

下载下来解压有四个文件,挑出其中两个文件,一个是xxxx.xxx_bundle.crt,一个是 xxxx.xxx.key,将它们上传至服务器进行转换,对了,请先安装openssl套件,centos就直接yum install openssl,debian就直接apt install openssl

openssl x509 -in xxxx.xxx_bundle.crt -out cert.pem

openssl rsa -in xxxx.xxx.key -out key.pem

好了转换成功,将这两个文件 cert.pem 和 key.pem 移动到/root/gost文件夹下,接着启动服务端,命令如下:

cd /root/gost && ./gost -L="relay+tls://账号:密码@:端口?cert=证书文件&key=私钥文件"

举个例子:设置访问账号5648密码1234,服务器端口8888,证书密钥文件在同一目录下

cd /root/gost && ./gost -L="relay+tls://5648:1234@:8888?cert=./cert.pem&key=./key.pem"

设置账号密码是防止被别人拿去用!

这样服务端就跑起来了,但是直接这样你只要断开ssh进程就会终止,因此需要放到后台运行,安装screen软件, centos就直接yum install screen ,debian就直接apt install screen

创建后台:
 screen -dm -S gost cd /root/gost && ./gost -L="relay+tls://5648:1234@:8888?cert=./cert.pem&key=./key.pem"

如果你需要让gost开机自启或者进程掉线之后自动重启,可以创建一个脚本:

#gost服务端的启动脚本
ii=$(lsof -i:8888)
if [ "$ii" = "" ]
then
  echo -e "gost在8888端口没有检测到正在运行"
  killall gost
  screen -dm -S gost cd /root/gost && ./gost -L="relay+tls://5648:1234@:8888?cert=./cert.pem&key=./key.pem"
  echo -e "gost尝试启动完成"
 
else
  echo -e "gost在8888端口正常运行"
fi

保存脚本,将其设置为自动任务,一分钟运行一次即可

crontab -e
在编辑界面填入
* * * * * bash 你的脚本文件路径

4.本地客户端配置

下载gost的windows端软件,地址:https://github.com/ginuerzh/gost/releases/download/v2.11.1/gost-windows-amd64-2.11.1.zip

解压出来,将gost-windows-amd64.exe重命名为gost.exe,我图方便直接丢到C:\Windows\System32目录下,这样就可以在cmd中直接调用

然后将之前服务端转换好的证书文件和私钥文件下载下来,至于丢哪个目录就是你自己怎么方便怎么来

gost -L=tcp://:本地代理端口/矿池地址:矿池端口 -F="relay+tls://服务端设置的账号:服务端设置的密码@gost服务端的域名:gost服务端的端口?secure=true&cert=./cert.pem"

举个例子:gost服务端设置的访问账号为5648密码1234,gost服务端的端口8888,gost服务端域名为eth.xxx.com证书密钥文件在E盘下,本地代理端口为16688(随便设置),矿池用的鱼池 eth.f2pool.com:6688 ,并开启双向证书强制验证

gost.exe -L=tcp://:16688/eth.f2pool.com:6688 -F="relay+tls://5648:[email protected]:8888?secure=true&cert=E:\cert.pem"

你也可以创建一个cmd脚本以便以后再次运行,随便创建一个xxxx.cmd文件即可,将以下文本粘贴进去(请自行修改)

@echo off

gost.exe -L=tcp://:16688/eth.f2pool.com:6688 -F="relay+tls://5648:[email protected]:8888?secure=true&cert=E:\cert.pem"

pause

将gost的cmd窗口放着别动保持运行即可

5.挖K内核运行设置

我用的Gminer内核进行举例实战,因为 Gminer 可以用软件禁止它的抽水连接而又不会影响正常运行(不禁止抽水链接会导致前功尽弃)

miner.exe --server 127.0.0.1 --port 16688 --user 挖K用户名.设备名称 --algo ethash

无论是什么内核,只要将矿池服务器设置为127.0.0.1,端口设置为之前gost客户端所设置的本地代理端口即可,不出意外的话,运行结果如下:

本文基于《署名-非商业性使用-相同方式共享 4.0 国际 (CC BY-NC-SA 4.0)》许可协议授权
转载原创文章请注明,转载自: 沧水的博客 » 使用Gost建立ssl加密中转矿池连接
  1. 怀念曾经

    “因为 Gminer 可以用软件禁止它的抽水连接而又不会影响正常运行(不禁止抽水链接会导致前功尽弃)”请教大哥,怎么禁止它抽水

  2. 孙伟杰

    微信多少,我准备需要帮忙搭建一下

  3. yukikaze

    Proxifier的原理是不是类似矿机不连网,然后用局域网中另一台电脑连上gost,在本地路由器转发端口,矿机再连上那个端口,好像是这样,之前看过一篇帖子是这样写的

  4. 111

    腾讯好像被警告了,请问腾讯云花钱么?

  5. ttt

    你好,可以把你的证书发我用一下吗?那儿都注册不到证书,谢谢

    1. 沧水
      @ttt 别人的证书没用
  6. 小P同学

    我想问下那个矿机本地代理端口是在哪里看的

  7. 饭困

    请问 Proxifier 禁止抽水的用法 要用什么关键字搜呢。 搜了一圈找不到

  8. XAY

    请问
    因为 Gminer 可以用软件禁止它的抽水连接而又不会影响正常运行(不禁止抽水链接会导致前功尽弃)
    这里是需要文章中没有提到的软件吗

    1. 沧水
      @XAY 忘记写了 软件叫做 Proxifier 自己搜索用法
      1. XAY
        @沧水 网上找不到Proxifier 禁止抽水的教程,大佬准备写个教程吗?