如何使用谷歌云安装Trojan

最近正值春节期间,又恰逢武汉肺炎的影响,在家待着没地方去。闲来无事打开油管,看到一个使用谷歌云安装Trojan的视频教程,瞬间被安利了。之前我一直使用的是gost+goproxy-vps的科学上网工具。无奈社长已经退出,goproxy-vps不再更新,gost成了我的主力上网工具。

但自从套了CDN之后,虽然一定程度上保护了VPS的安全性,速度却也大打折扣,于是萌生了再入一台备用VPS的想法。谷歌云(以下简称GCP)的确是不错的选择,一来可以免费试用一年(不会自动扣费),二来可以自由选择香港、台湾、日本、韩国等离大陆较近的线路(减少延迟,提升速度),前提是要有Visa/Master Card/JCB信用卡

如何注册GCP

我最初尝试的办法是使用Payoneer派安盈)来注册GCP,但是使用该方法薅羊毛的人太多了,导致至少目前为止,使用Community Federal Savings Bank(美国社区联邦储蓄银行)账户的方法已经失效。在进行申请GCP的结算账户时,Google会发来一封邮件要求提供身份信息以及银行对账单证明的后4位号截图。哪怕这些手续都齐全了,最后Google还是会提示不支持该支付方式。以下是Google的回复邮件

Thanks for submitting your verification information. We’re not able to reactivate your Google Cloud Platform billing account because the payment method on file is invalid and not acceptable form of payment for Google Cloud Platform.

费了这么多精力的我自然不甘心,最后还是乖乖注册起了信用卡。因为之前看很多教程说,双标的信用卡已经无法注册GCP了,所以我就特意申请了一个单标的。所谓的单双标,指的就是信用卡上有没有银联的标志。国内大部分信用卡都是双标的,既支持银联这种国内的支付渠道又支持VisaMaster Card这些国外的支付渠道。单标指的是只支持VisaMaster Card等国外支付渠道,换句话说就是只能在国外使用。

就在我无限期等待信用卡的期间,突然想起家里人最近办过一张双标的信用卡。本着不死心尝试一下的态度去申请GCP看看,没想到竟然申请成功了,300美金立即到账,而且不需要提供身份验证。我猜有几种可能性:

  1. 因为信用卡是某行的,可能某行的双标信用卡还能用
  2. 该信用卡从未被用来注册过GCP,以前反复注册同一张信用卡的方法可能已经失效
  3. 和我的Google帐户有关,因为我这个帐户已经使用很多年了,还有一些正在运行的GAE

不管是哪个原因吧,对我来说总归是一个好消息,至少不用再苦苦等我的信用卡了。下面是信用卡申请时的一些注意事项

  • 申请国家我选的是美国
  • 地址可以借助地址生成器生成美国地址
  • 名字请填写真实姓名(我填的是拼音),因为有可能会要求上传身份证进行验证
  • 付款方式选择添加信用卡或借记卡,去掉信用卡或借记卡账单邮寄地址与上述地址相同的勾选,邮寄地址填写真实的信用卡的邮寄地址(非上面的美国地址),如果不记得了填国内的地址应该也可以
  • 如果收到要求激活结算账户的邮件,需上传身份证(自己的身份证或护照即可)以及信用卡背面后4位号的照片(前面的数字自己打马赛克)
  • Google 会从信用卡中扣除 1 美元用于验证,验证完成后会退还到账户。
  • 不要点击页面的 升级激活 按钮,否则会从免费试用升级到付费帐号,除非你不差钱。

谷歌云申请介绍完了,下面开始就是使用GCP安装Trojan的正文了。

如何安装Trojan

首先说一下为什么选择Trojan?Trojan的原理其实很简单,就是伪装成最常见的HTTPS流量。这个想法和当年社长开发goproxy-vps的想法不谋而合,这也是我为什么选择Trojan的一个原因。够纯粹,将一种功能发挥到极致。另外,goproxy-vps毕竟已经落后好几代了,虽然升级一下Go版本应该还能用,但我毕竟不是原作者。作为goproxy-vps的替代者,Trojan不断地在迭代完善中。

虽然gost也支持HTTPS/HTTP2模式,而且是更加原生的基于TLS的HTTP模式(Trojan的HTTPS模式是基于TLS的SOCKS模式),可以搭配SwitchyOmega,直接使用HTTPS模式连接,省去了再运行一个客户端的步骤。但是,本着多接触接触的猎奇心理,我觉得优秀的科学上网工具应该多多易善才对。无论如何也要力挺Trojan,感谢每一位为科学上网作出贡献的作者。

创建GCP实例

导航菜单 > Compute Engine > VM 实例

  • 区域我选择的是香港,因为速度最快,也最为抢手,因此很有可能遇到IP暂时分配不到的情况,建议换个地区试试。如果是移动的网络的话,延迟有点高,可以考虑其它区域,比如日本或者台湾
  • 机器类型选择f1-micro,614MB内存绰绰有余,更大的内存意味着更多的钱。有这些钱,还不如再开一个其它地区的VM实例。
  • 启动磁盘我选择的是默认的Debian 9,只要不是太旧的都行。
  • 防火墙勾选允许HTTP流量允许HTTPS流量

点击创建,等待实例创建完成即可。

配置GCP SSH连接

创建完成VM实例后,先使用浏览器打开SSH。默认的用户名是Gmail邮箱的@部分前缀,没有设置密码。我们先为该用户名设置一个密码

1
2
$ sudo passwd ${whoami}
# 输入密码

然后为root用户设置一个密码

1
2
$ sudo passwd root
# 输入密码

接下来在本地(客户端)生成公钥和私钥,用于免密登录

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
$ cd ~/.ssh
$ ssh-keygen -f myKey
Generating public/private rsa key pair.
Enter passphrase (empty for no passphrase): (给 private key 设置一个密码,避免私钥被人盗用的风险)
Enter same passphrase again: (再次输入上次相同密码)
Your identification has been saved in myKey.
Your public key has been saved in myKey.pub.
The key fingerprint is:
SHA256:EW7ow1wCKAh1rM/GG08ZAwOy+7+SUiT0rFXY2f8mNvk user@computer-name.local
The key's randomart image is:
+---[RSA 2048]----+
|=.o+= o . |
|o+.o+= + . |
|o.o..oo * |
|..o+ +o+ o |
|.oo+ =+S o |
| o. * o. = o |
| ..o = . = |
|. o.. . E |
| . .o. |
+----[SHA256]-----+
# 此时会生成 公钥 myKey.pub 和 私钥 myKey

复制公钥

1
2
$ cat myKey.pub
# 把这长长的一段复制下来,把其中最后的 user@computer-name.local 改为你在浏览器 SSH 登入之后的当前用户名 ${whoami}

将其导入 Compute Engine > 元数据 > SSH密钥,注意复制的公钥不能有换行符,不然会添加多条错误的数据。添加完成后,谷歌就会把上面这段 public key 写入到VM实例的 ~/.ssh/authorized_keys文件中。

最后,打开本地终端,通过私钥实现免密登录。

1
2
3
$ ssh -i ~/.ssh/myKey user@VM实例外部IP
Enter passphrase for key 'myKey': (输入 private key 密码)
Identity added: /Users/xxx/.ssh/myKey (/Users/xxx/.ssh/myKey)

如果嫌私钥麻烦的话,也可以直接用密码登录,前提需要在GCP上把实例的密码验证登录打开

1
2
3
4
5
6
7
8
9
10
11
12
13
$ ssh user@VM实例外部IP
Permission denied (publickey)

# 之所以会出现这种情况,因为GCP默认把密码验证登录关了,需要自行打开
$ sudo vi /etc/ssh/sshd_config
PasswordAuthentication yes
:wq!

# 改完要重启 ssh 服务
$ sudo service sshd restart

# 再次连接即可
$ ssh user@VM实例外部IP

考虑到安全性,我更推荐修改默认的SSH端口号

1
2
3
4
5
6
$ sudo vi /etc/ssh/sshd_config
# Port 22
# 去掉上面这行`#`注释,将22修改为你自定义的端口号,比如2222

# 改完要重启 ssh 服务
$ sudo service sshd restart

这个时候立马登录会超时,因为没有修改GCP防火墙规则。打开菜单 > VPC网络 > 防火墙规则,点击default-allow-ssh,点击修改,找到协议和端口,打个比方,将原来的22修改为2222即可。

1
2
# SSH指定端口号登录
$ ssh -p 2222 user@VM实例外部IP

执行Trojan一键安装脚本

终于要安装Trojan了,但是有几个先决条件要知道

  • 首先要申请一个域名,可以到freenom上去申请
  • 然后将域名解析到GCP实例的外部IP并生效
  • 系统必须满足centos7+/debian9+/ubuntu16+
  • GCP实例需要开放80以及443端口
  • 不支持CDN

这些操作,这里就不赘述了,可以在我以前的goproxy-vps教程里去查找。Trojan的一键安装脚本我是参考了这篇文章

首先,我建议切换到root用户,因为涉及到acme的证书签发,非root用户会可能会有问题

1
sudo -i

然后下载一键安装脚本,并且执行。该脚本支持centos7+/debian9+/ubuntu16+多系统

1
curl -O https://raw.githubusercontent.com/atrandys/trojan/master/trojan_mult.sh && chmod +x trojan_mult.sh && ./trojan_mult.sh

根据提示安装就行了,过程中我没有遇到任何问题。

安装完成后,会展示一条客户端的下载地址,复制该地址,下载下来。不过,由于默认的客户端是Windows,而我的客户端是Mac,需要到trojan-gfw官网的发行版本中去自行下载。解压默认的Windows客户端,其中有一个重要的配置文件config.json,用它替换Mac版客户端的config.json文件。

Chrome浏览器插件SwitchOmega怎么添加一条代理,我这里就不赘述了,以前也介绍过。需要注意,客户端只支持SOCKS5协议,请根据config.json来配置。

接下来打开trojan程序,就可以来测试了。不过由于我的线路是移动的,GCP香港地区的丢包率还挺高的,如果想找一条对移动提速的线路,建议多尝试几个GCP地区,比如台湾、日本等。反正不满意的话再建一个实例,把不满意的删了就行了。测速的话,可以用这个链接

最后,Trojan安装完毕之后,建议开启BBR加速。BBR是Google开发的新的TCP 拥塞控制算法,可以让服务器的带宽尽量跑慢,并且尽量不要有排队的情况,让网络服务更佳稳定和高效。Linux内核4.9以上都内置了BBR,由于我选择的系统是Debian 9,内核正好是4.9,所以我只要打开BBR就行了。

修改系统变量

1
2
echo "net.core.default_qdisc=fq" >> /etc/sysctl.conf
echo "net.ipv4.tcp_congestion_control=bbr" >> /etc/sysctl.conf

保存生效

1
sysctl -p

执行

1
sysctl net.ipv4.tcp_available_congestion_control

如果要检测是否已经开启BBR,可以执行命令

1
lsmod | grep bbr

总结

选择Trojan不是因为Trojan更好,纯粹是想把各种软件都试一下,感受一下哪种更方便,更适合自己。顺便也介绍了一下在2020年如何申请谷歌云的情况,因为我之前参照的一些教程可能都过时了而没人知道,走了不少弯路。

最后,希望各位不要肆意薅羊毛。这些优秀的服务是用来学习的,请珍惜这一片土地,不然大家都没得玩。

avatar

chilihotpot

You Are The JavaScript In My HTML