Stay hungry. Stay foolish.

0%

trojan

这是从ss->ssr->v2ray->trojan的折腾终章,只为畅通无阻科学上网
P.S.今天吃鱼不小心被鱼刺卡到,我脑袋里突然蹦出来一个形容遇到bug时十分形象的词语:如鲠在喉!!!

Trojan原理

原理图

英文官方文档还没看,先简单记录一下通过折腾配置体会到的:
Trojan思想是把自己伪装成一个持证上岗的web服务器(持有SSL证书),提供https服务(443端口),国内的trojan客户端可以把国外的trojan服务器端作为中转访问外网,非客户端请求则通过trojan访问nginx服务器的80端口(nginx提供一个真实的静态网站服务),因此看起来和普通的加密传输的web服务器没有区别,是目前最新的扶墙技术。

准备工作

伪装也要装的像一点,索性给自己的博客挪个窝,github page稳定性自己体会……再综合上述,需要做以下工作:

  • 注册一个域名+SSL证书
  • 借助git搭个远程仓库
  • 安装配置nginx环境
  • 安装配置trojan环境

实践踩坑

注册域名与SSL证书

提前使用了github的学生包,由namecheap提供的一年免费.me域名与SSL证书服务

注意事项:
1.SSL服务购买后去Dashboard里面找
ssl
2.生成私钥以及CSR:

1
openssl req -new -newkey rsa:2048 -nodes -keyout yoursever.key -out yoursever.csr

3.域名所有权验证选择第三个Domains to Validate:添加指定记录,我按要求添加后长时间没有验证成功最后无奈找国外客服,按照客服要求重新添加后解决(删除了指定的记录host里面的次级和顶级域名)

搭建远程git仓库(*)

linux基础命令不牢固,导致地动山摇……梳理一下思路,有待进一步研究git用法

1.新建用户ssh远程登陆(之前一直root太不安全了)
2.克隆github博客项目(不是源码,只是hexo部署生成的)
3.新建空白仓库,创建./hooks/post-receive文件,使用Git-Hooks同步网站根目录,当有Git收发的时候会调用该脚本,自动将最新内容同步到网站根目录中,post-receive中指定相应git仓库以及网站根目录

安装nginx(*)

网上一些教程需要配置环境解压缩包编译安装,反正我是没搞成,最后不信邪直接yum一键安装,有待进一步研究nginx

  • 配置文件:/etc/nginx/nginx.conf
  • 日志文件:/var/log/nginx/access.log & /var/log/nginx/error.log
  • 443配置CRT证书需要将得到的两个文件合并成一个
  • 访问发现403问题可能是配置文件里面user不存在或者没有权限(权限问题是个大坑)

上述给博客挪窝具体操作可参考:fisher’s blog

安装trojan(*)

直接官网原版压缩包安装需要自己写一些配置脚本,一番折腾后仍然是linux基础不牢地动山摇……最后还是乖乖地用别人写好的脚本一键安装,参考tlanyan

  • /usr/local/bin/trojan
  • /usr/local/etc/trojan/config.json
  • /etc/systemd/system/trojan.service

带证书的blog与trojan伪装共用方案:
为了trojan的安全性,443端口必须给它,将其伪装由默认80端口改为其他任意端口,如6666,nginx做相应配置;同时,为了让blog持证上岗,但已经失去了443端口,不得已80端口硬着头皮上,在80端口上配置SSL,需要注意一点的是如果用户访问http连接的话会提示“the plain http request was sent to https”意思就是http请求转到https了,其实nginx官网认为这个是正常现象定义了个497的状态,只要在nginx配置中添加以下内容就可以搞定:

1
2
error_page 497 https://$server_name:80$request_uri;   
// 自动跳转域名后面会带着:80很丑也是没办法了

反思

1.英文文档不要依赖谷歌一键翻译,参考一下就好,否则会出现意想不到的问题
2.linux基础不牢地动山摇

  • 用户、组及文件权限
  • 各种基础命令的熟练使用
  • vim编辑器的快捷编辑方式

3.由linux的ssh远程登陆引发的一系列网络安全以及密码学问题
4.git的使用只看到了冰山一角
5.影响VPS网速的因素研究

备忘录

  1. https://github.com/Jrohy/trojan
  2. nginx的安装与卸载(直接yum install/remove nginx)

*注意用户权限!!否则无法访问
3. 面板端换个能用的端口,伪装端随便放个页面都行