这是从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里面找
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 | error_page 497 https://$server_name:80$request_uri; |
反思
1.英文文档不要依赖谷歌一键翻译,参考一下就好,否则会出现意想不到的问题
2.linux基础不牢地动山摇
- 用户、组及文件权限
- 各种基础命令的熟练使用
- vim编辑器的快捷编辑方式
3.由linux的ssh远程登陆引发的一系列网络安全以及密码学问题
4.git的使用只看到了冰山一角
5.影响VPS网速的因素研究
备忘录
- https://github.com/Jrohy/trojan
- nginx的安装与卸载(直接yum install/remove nginx)
*注意用户权限!!否则无法访问
3. 面板端换个能用的端口,伪装端随便放个页面都行