0x00 前言

关于标题

我这人没啥想象力,想不到什么好的标题,见到忘年大佬的博客那篇教程的标题还挺不错就拿来用了,希望dalao不要见怪。
为了区分,我在这篇文章标题的开头添加了“【Rbit】”

关于这篇文章

说实话,我一开始没打算写这篇 blog 的,但经过两天辛辛苦苦的摸索,觉得不把这详细的经历和遇到的坑写下来实在对不起自己这两天花费的时间,同时希望我这篇记录能帮到各位遇到相同问题的朋友。

由于我是小白,文章也会是小白向,我会尽量把大大小小的问题都写出来。

参考资料

0x01 过程

因为我自己经历一遍下来,感觉整个过程分为几大块,那我就以分块的方式来给大家讲清楚

01.CloudFlare 部分

需要准备的材料有

  • 一个域名 (example.com)
  • 域名管理控制台

先在 CloudFlare 注册账号什么的就不用多说了。注册后,把域名绑定到 CloudFlare,这一步需要在 域名管理控制台 里面把域名的 DNS 设置成 CloudFlare 提供的 DNS 地址。(阿里云买的域名就在阿里云、腾讯云买的域名就在腾讯云,以此类推。不知道自己域名是哪个域名商的可以查查whois

如果 DNS 修改不成功的话可以查看下是不是开启了“禁止信息修改”的选项 (因为我自己就是,还是后来才发现的)

绑定好域名后,给你的域名添加一条解析

添加解析

1.按照教程里说的,要注意点开那朵橙色的云 (我添加时默认是已开)
2.前面写上 nginx

02.goflyway 部分

需要准备的材料有

  • 被墙机器的shell (假如 ssh 都连接不上的话在服务商那里应该会有提供能连接上的终端,比如我 vultr 的机子如下图)
  • 另外的临时梯子(以防上面这个终端出现什么奇奇怪怪的问题)

首先下载安装 GO ,这部分就直接搬运忘年大佬博客里的内容了

CentOS7:

yum -y install supervisor wget git

Debian9:

apt -y install supervisor wget git

下载 GO

wget https://dl.google.com/go/go1.12.5.linux-amd64.tar.gz
tar -xzvf go1.12.5.linux-amd64.tar.gz -C /usr/bin

导入环境变量

CentOS7导入环境变量:

echo "export PATH=$PATH:/usr/bin/go/bin" >> ~/.bash_profile
source ~/.bash_profile

Debian9导入环境变量:

echo "export PATH=$PATH:/usr/bin/go/bin" >> ~/.profile
source ~/.profile

Goflyway的服务端和客户端都是一个文件,所以这里我使用交叉编译,同时把Linux和Windows的二进制文件编译出来:

mkdir goflywaybuild && export GOPATH=$PWD/goflywaybuild
go get github.com/mitchellh/gox
go get -u -d github.com/coyove/goflyway/cmd/goflyway
cd $GOPATH/bin
./gox -os "windows linux" -arch amd64 $GOPATH/src/github.com/coyove/goflyway/cmd/goflyway

如果只需要编译 Linux 平台的:

mkdir goflyway && export GOPATH=$PWD/goflyway
go get -u github.com/coyove/goflyway/cmd/goflyway
cp goflyway/bin/goflyway /usr/bin
rm -rf goflyway && rm go1.12.5.linux-amd64.tar.gz


我本人在执行
“ go get -u github.com/coyove/goflyway/cmd/goflyway ”
这一步中,出现了各种奇奇怪怪的问题,比如:
1.明明是 root 用户却出现了 permission denied: go
2.执行命令行出现一长串英文且文件夹内并没有如预期中出现 bin 文件夹

受限于这个终端没有错误的染色和无法上翻查看输出内容,就算是有心解决问题也不知道是哪里出错。这个时候就只能借用临时的扶墙助手来 ssh 连接 shell 了。

03.Supervisor 部分

需要准备的材料有

  • nano (或者 vim)

以下也是搬运

接下来新建Supervisor的配置文件,将程序放到后台运行并进行守护:

CentOS7新建配置文件的路径:

nano /etc/supervisord.d/goflyway.ini

Debian9新建配置文件的路径:

nano /etc/supervisor/conf.d/goflyway.conf

配置文件内容通用:

[supervisord] nodaemon=false
[program:goflyway]
priority=1
directory=/usr/bin
command=/usr/bin/goflyway -l=":8080" -k="YourPassword"

注意:
1.使用Goflyway套CF,服务端监听的端口只能是CF支持的,具体支持的端口号可以看CF的介绍:
https://support.cloudflare.com/hc/en-us/articles/200169156-Which-ports-will-Cloudflare-work-with
2.-k后面是你的密码,务必设置一个复杂的。

最后启动Supervisor即可完成服务端的部署。

CentOS7:

systemctl restart supervisord
systemctl enable supervisord

Debian9:

systemctl restart supervisor
systemctl enable supervisor

(注意,区别在于结尾的 ‘d’)

04.客户端 部分

a.Windows 客户端

以下为搬运

接着我们来配置客户端,因为Goflyway程序没有GUI,要想使用的话得一直开着CMD或者PowerShell,这样太不方便,所以这里我们可以借助WinSw,将Goflyway创建为服务放在后台运行并实现开机自启。

WinSw下载地址:https://github.com/kohsuke/winsw/releases

XP系统下.Net2版本,其他系统下.Net4的即可:

现在你应该将之前编译的Windows平台下的Goflyway二进制文件以及WinSw放在同一个目录下,并且新建一个和WinSw同名的.xml文件:

打开xml文件,在文件内写入如下配置:

注:
1.12315是本地监听的HTTP/Socks5端口
2.-up=”cf://nginx.xxx.com:8080″,其中8080端口一定要和之前服务端上配置的端口一致。
现在打开PowerShell,进入到WinSw所在的目录,执行如下图所示的命令即可将Goflyway安装为服务:

客户端的配置到这里就全部完成了。
以Chrome为例,安装SwitchyOmege插件,添加Socks5代理:

即可正常使用

b.Linux 客户端

照常来说,客户端这边我重新 go get 编译一下就可以了,但是也许是墙的原因一直不成功(没有任何回显,猜测是超时)

于是我灵机一动,由于 goflyway 服务端和客户端是相同的,且现在情况是客户端服务端均为 Linux 系统,所以我可以把机子里面那个下载下来用。由于是 ip 被 ban,ssh 都连接不上 sftp 也同样,正巧我那个服务器挂着个网站,于是我就把 goflyway 放在了网站的目录下,并写了个download.html

<!DOCTYPE html>
<a href="goflyway" download="goflyway">下载goflyway</a>

(在手机用临时扶墙工具连接ssh写的,很不方便,能少写就少写)

通过浏览器下载下来,放到 /usr/bin 目录下,由于权限和其他应用不同,我就仿照其他应用的权限修改了一下

sudo chmod 755 goflyway

需要使用时,通过命令

goflyway -l=":1080" -k=YourPassword -up="cf://nginx.example.com:8080"



– 1. -l 设置本地监听的端口
– 2. -k 你的在服务端设置的密码
– 3. -up 只需要修改 example.com 为你的域名即可 (其中 8080 端口一定要和服务端配置一样)

c.Mac 客户端

由于本人没有 Mac 电脑,无法尝试,欢迎大家尝试过和反馈补充,我会添加上来。

0x02 后记

分类: 未分类

发表评论

电子邮件地址不会被公开。 必填项已用*标注