综述
本文总结了自己在VPS搭建trojan-gfw代理过程中遇到的各种坑,以及最后的解决方案,以供大家参考。trojan是一个比较新的翻墙软件,在设计时采用了更适应国情的思路。在穿透gfw时,人们认为强加密和随机混淆可能会欺骗gfw的过滤机制。然而,trojan实现了这个思路的反面:它模仿了互联网上最常见的HTTPS协议,以诱骗gfw认为它就是HTTPS,从而不被识别。

本文的宗旨在于,将大量重复性的工作集中到配置过程中,以让使用过程尽量简单。所以本文的配置过程相较于网上的某些教程稍微复杂一点,但是如果严格按照本文配置过程配置的话,那么配置完成之后服务器端就可以几乎不用搭理他了,然后客户端几乎是拿到手就可以使用,特别适合有好几个人一起共享的情况。

本文分为7章,将按操作顺序介绍部署用于trojan代理服务的VPS服务器的详细过程,按照步骤操作一切正常的话一小时之内即可配置成功。如果配置过程中有什么疑问,欢迎在留言区交流!

VPS服务器购买
注册vultr
我使用的服务器是vultr。主要因为其按小时计费,随时可以停用服务器。这一点很重要,现在gfw相当高,所以你买到的机器很可能是已经被墙了的。其次,vultr本身没有被墙,这一点很重要,不然就是先有鸡还是先有蛋的问题了。当然,可以支付宝或微信付款也是一个加分点。vultr注册地址:https://www.vultr.com。点击链接跳转到vultr,网页右上角有个Create Account就是注册的地方了,接下来就是注册并激活账号了。

最新资讯:vultr充值10美元送50美元活动开始啦,必须是新用户,可支付宝或微信等支付方式,活动注册地址:https://www.vultr.com!不过要注意的是,赠送的50美元有效期只有一个月,所以这一个月你可以开配置好一点的vps啦!!!

上面的注册地址携带了我的邀请码,不介意的话可以通过上面的链接注册呀,大家互惠互利咯。如果介意那么将网址后面的邀请码删除即可,但是要注意的是没有邀请码充值是不会赠送50美元的哦。

充值
在购买服务器之前需要先充值。登陆vultr之后如图Billing->Alipay,选好要充值的金额数,然后Pay with Alipay即可跳转到支付宝扫码支付页面。 Billing

购买服务器
点击vultr网页右上角的蓝色+图标即可为账户添加服务器。 addServer

注意:向下滚动有很多选项,不要直接点击Deploy Now,这样会使用默认参数,但不是我们想要的! 第一个选项为选择服务器地址(Server Location),建议选择硅谷(Silicon Valley,离google最近),而不要选择日本(用的人多,大部分IP已经被墙); 服务器地点

第二个选项为选择服务器类型(Server Type),即选择服务器操作系统。这里我们选择选择Ubuntu 18.10 x64,这是trojan最低支持的Ubuntu操作系统版本,查看trojan支持的Ubuntu版本可以去这里。许多教程选择其他操作系统发行版本,但是配置过程和软件升级会比Ubuntu麻烦很多,所以还是建议大家选择Ubuntu。 注意如果你使用其他vps服务商的vps,可能有minimal选项,不能选择那一个,很多依赖乃没有安装,会导致自己配置失败(当然也可以,缺少哪个依赖自己再用apt安装就好了,例如:apt install software-properties-common和apt install vi等)。 服务器类型

第三个选项为选择服务器大小(Server Size),即选择服务器硬件性能。因为我们使用VPS服务器翻墙,所以性能瓶颈不在配置,而在网络带宽之类的。由于vultr的服务器带宽都是100M的,所以服务器当然是往便宜了选。当然,2.5d/mo的一般都是缺货的。选择5d/mo的就好,一个月三十几块钱,要是有好几个人一起分担的话就相当实惠了。 服务器大小

第四、五、六三个选项不懂就可以不用管它。

第七条要求为即将部署的服务器命名并给一个标签,随意就好。

此时可以点击右下角的现在部署(Deploy Now),vultr即开始分配资源,安装系统。此时Servers页面可以看到服务器信息,状态显示installing。当状态切换为Running的时候,服务器就可以使用了。 服务器标签

服务器信息查看
服务器安装结束之后在Servers页面点击刚才购买的服务器名字即可跳转到服务器详情页。如图右上角有一个View console可以直接通过网页连接到服务器,但是由于它不支持复制粘贴,不不方便,我们需要使用第三方工具连接到服务器。所以需要知道IP、用户名和密码,如图左下角。 服务器信息

域名申请与解析
trojan需要一个域名用来做伪装,所以需要先申请一个域名。如果你只是用来翻墙没有其他作用,那么建议注册一个免费域名即可。本教程使用freenom免费域名和cloudflareDNS为例。

如果自己已经有域名了那么可以不用申请,直接用一个子域名就可以了。如果你的域名不是在cloudflare购买,那么你有两个方案可用。1. 将你的域名转移到cloudflare解析,这个对于已经有域名的来说应该不难,就不多说了;2. 下文与cloudflare相关的部分自行参考这个文档做调整,也很简单,找到你自己的DNS服务商,按照指引操作即可。建议是先严格按照教程操作成功之后再改为自己的域名,否则难免出奇怪的问题。

freenom免费域名申请
我自己在使用Edge注册freenom的时候会失败,使用chrome才可以,你如果也失败了请换一个浏览器试试!

freenom在检测到ip对应的国家和你填写的不一致就会不允许你注册,所以不要挂VPN去申请域名。

freenom注册地址在这里https://www.freenom.com,支持简体中文,可以自行切换。在寻找一个免费域名的输入框中输入自己理想的域名点击检查可用性,如图所示。检查到可用的中意的域名之后,点击现在获取即可锁定该域名。 检查域名可用性

现在可以点击完成按钮跳转到DNS配置和申请年限界面。点击Use DNS>>Use Frenom DNS Service。两个IP address框都直接输入0.0.0.0(这个没用,一会儿会改到cloudflareDNS)。Period选择12 Months @ FREE,然后点击Continue,输入并验证你的邮箱和信息即可。注意上面的提示,不要挂VPN,很多人会卡在验证账户的地方,一般都是挂了VPN导致的。

在freenom申请的免费域名是可以无限免费续期的,除非被人花钱抢注,所以自己每隔几个月回来续期一下就可以啦。反正这个域名只是拿来翻墙用,被人抢注了马上换一个成本也不大。如果介意这个的话,建议自己买付费域名,国外域名服务商推荐namecheap,不要买国内域名服务商的域名。 使用期限设置

注册cloudflare
cloudflare注册地址在这里https://www.cloudflare.com,网页右上角有个Sign up就是注册的地方了,接下来就是注册并激活账号了。注册完成之后会让你添加你的网站,输入你刚才申请的网站之后点击Add site。 添加网站

接下来是一个提示页面,直接下一步即可。然后计划选择FREE就好,够用了,然后点击confirm plan。 cf计划

然后cloudflare会导入现有的DNS记录,你也可以自己再添加,也可以在这里修改,现在需要将DNS记录指向自己的服务器。假设你的服务器地址是10.10.10.10,那么如下图所示:将域名A记录指向你的服务器即可,www的A记录删除不用。如果IP地址是IPv6的,那么需要添加的是AAAA记录而不是A记录(客户端也得有IPv6地址才能连接上服务器)。vultr的服务器是IPv4和IPv6地址都有的,可以即添加A记录又添加AAAA记录,客户端会自动选择他将会使用的IP地址版本。添加好记录之后,点击continue。注意:不能使用CDN(On Cloudflare),即DNS记录后面的云需要是灰色的而不是橙色的,否则会导致握手失败无法连接上服务器,参考trojan issue 70 导入dns记录

接下来就是最关键的一步,将你的DNS服务器转移到cloudflare。在这里你可以看到cloudflare让你将ns01.freenom.com和ns02.freenom.com分别改为anna.ns.cloudflare.com和sid.ns.cloudflare.com(每个人的可能不会一样,请按照cloudflare的提示)。

现在登陆freenom,点击域名后面对应的Manage Domain。 freenomMG

然后定位到Management Tools>>Nameservers。将DNS服务器改为Use custom nameservers (enter below),然后在Nameserver 1和Nameserver 2输入cloudflare给的两个dns,如图所示,点击change Nameservers即可。然后回到cloudflare点击Continue。 修改dnsservers

此时cloudflare会检测你的dns服务器是否已经切换到了cloudflare,如果没有检测到已经切换的话,稍作等待即可。最终,DNS配置结果如下图所示,即 DNS配置结果

VPS服务器部署
远程工具安装
本文使用的第三方远程管理工具叫做Xshell。如果这个连接无法访问,那么自己随便找个连接下载就好了,各个软件管家里面都有的。Xshell学生和家庭版是免费的,可以随便使用而不需要破解。安装好Xshell之后即可开始连接服务器进行部署了。

连接服务器
启动Xshell,从菜单栏的文件->新建打开新建会话窗口如下图。会话名称随便取一个都可以,主机填写刚才记下来的服务器IP地址或者直接填域名也是可以的。点击确定立即尝试连接服务器,如果能连接上服务器会提示输入用户名和密码。用户名为root,密码可以从vultr服务器详情页拷贝过来。可以记住用户名和密码,这样下次连接就不用再输入那个复杂的密码了(当然密码是可以修改的,但是没必要。系统自动生成的密码强度相当高,可以避免暴力破解。自己设的密码就不好说了,而且还容易忘记)。 新建会话

连接成功之后会出现命令提示符:root@username:~#。如果你是使用其他服务商的vps主机,这里有可能不是root用户,那么需要输入命令sudo -i切换到root用户,否则后面的命令会执行失败。 新建会话

跳过了上面VPS服务器购买部分的介绍的要注意啦,本教程目前支持的操作系统版本是Ubuntu 18.10及以上,其他系统无法配置成功!

接下来就可以开始安装trojan了。如果Xshell一直连不上服务器,那么多半是被墙了,可以尝试着ping一下服务器看看。如果ping不通的话就只能换掉服务器了(血的教训:先购买新服务器,再去vultr服务器页面Destroy。反过来的话间隔太小,估计又买到原来的ip了)。

更新依赖
apt update
apt upgrade
启动bbr
bbr是谷歌开发的网络控制算法,可以加快访问速度。直接将下面四行命令拷贝粘贴到Xshell里面执行即可。

echo "net.core.default_qdisc=fq" >> /etc/sysctl.conf
echo "net.ipv4.tcp_congestion_control=bbr" >> /etc/sysctl.conf
sysctl -p
sysctl net.ipv4.tcp_congestion_control
执行完成之后会有如下提示即表示启动了bbr。

net.ipv4.tcp_congestion_control = bbr
配置trojan
添加ppa源
分别执行如下三个命令,注意提示,输入回车或者y,而且注意看是否报错。第一个命令是安装ppa源管理工具,第二个命令是安装trojan的ppa源,第三个命令是更新源以让系统可以找到trojan。

apt install software-properties-common
add-apt-repository ppa:greaterfire/trojan
apt update
安装trojan
分别执行如下三个命令,注意提示,输入y,而且注意看是否报错。第一个命令是安装trojan,第二个命令是查看trojan版本,第三个命令是修改配置文件。

apt install trojan
trojan version
vi /etc/trojan/config.json
第三个命令执行完之后屏幕会显示trojan的配置文件,按i进入编辑模式,使用方向键定位到password、cert和key并修改。密码按自己喜好,cert和key分别改为/etc/trojan/certificate.crt和/etc/trojan/private.key。编辑完成之后按Esc键退出编辑模式。输入英文冒号:,vi会进入命令模式,此时输入wq并回车即可保存刚才编辑的内容并退出vi。如果需要不保存而退出,那么输入q!强制退出vi。修改之后的config文件如图所示。另外,如果有IPv6地址,将local_addr的"0.0.0.0"改为"::"才可以使用。 修改config

更新trojan
如果trojan版本有更新(可以去这里或这里查看是否有更新),那么使用本教程搭建的服务器端更新trojan版本只需要两条命令即可。

apt install trojan
systemctl restart trojan
配置证书
不是使用cloudflare DNS的请查看域名申请与解析部分自己做调整!

安装acme.sh自动管理CA证书脚本
分别执行如下三个命令,注意提示,输入y,而且注意看是否报错。前面两句都是安装acme需要的依赖,第三句是安装acme。

apt install socat
apt install curl
curl https://get.acme.sh | sh
重新连接服务器
安装完acme之后要重新链接服务端,否则无法识别出acme.sh命令,重新连接之后注意是否是root用户。

安装完acme之后要重新链接服务端,否则无法识别出acme.sh命令,重新连接之后注意是否是root用户。

安装完acme之后要重新链接服务端,否则无法识别出acme.sh命令,重新连接之后注意是否是root用户。

添加cloudflare Global CA Key
需要让acme.sh自动管理你的证书,所以需要添加cloudflare的API。登录cloudflare之后定位到:头像>>My Profile>>页面底部。可以看到这里有两个API Key。我们需要的是Global API Key。Origin CA Key是不可以使用的。点击View即可查看,注意查看之后自己保存下来,每天可查看次数是有限制的。

然后在Xshell里面执行如下两条命令,注意执行成功没有提示,所以自己不要输错了。其中引号内的内容改为你自己的。

export CF_Key="Your Global API Key"
export CF_Email="Your cloudflare account Email"
申请证书
执行如下命令(注意域名改为你自己的),等待一会儿。

acme.sh --issue --dns dns_cf -d tdom.ml
看到下图的提示表示证书申请成功。 证书申请成功提示

申请失败怎么办?证书申请失败的可能性一般有:1. CF_Key或CF_Email填写错误;证书申请次数超限等。此时切记反复尝试,证书每一个周申请次数是有限制的,好像是20次,如果超限了就需要等一个周或者更换域名了。如果需要反复测试,那么可以在上述命令后加--staging参数继续测试,待此时通过之后再取消--staging参数再执行一次。如果提示证书已经存在你仍然想要重新申请证书(比如使用--staging参数获取的证书客户端是无法认证的),那么可以将上述命令中的--issue参数改为--renew参数,或者去上图所示目录删除掉已存在的证书和密钥。

配置证书
执行如下三个命令(注意域名改为你自己的),第一个是拷贝证书到trojan配置文件目录,第二个是配置acme.sh自动更新证书,第三个是赋予证书文件夹权限。

acme.sh --install-cert -d tdom.ml --key-file /etc/trojan/private.key --fullchain-file /etc/trojan/certificate.crt
acme.sh --upgrade --auto-upgrade
chmod -R 755 /etc/trojan
配置Nginx
安装Nginx
执行如下命令即可安装Nginx,注意提示,输入y。

apt install nginx
配置Nginx
执行如下命令(注意域名和IP改为你自己的),注意下面的代码块是一个整体,一起拷贝到记事本编辑好之后再拷贝到Xshell执行。

第5行的server_name指向你自己的域名;
第8行的proxy_pass随便指向一个网站都可以,这就是你要反向代理的网站,这里我是用我的博客了;
第16行的server_name指向自己的IP;
第18和27行tdom.ml改为自己的域名,注意别填错了。
bash -c 'echo "
server {
listen 127.0.0.1:80 default_server;

server_name tdom.ml;

location / {
    proxy_pass https://blog.siaimes.me;
}

}

server {
listen 127.0.0.1:80;

server_name 10.10.10.10;

return 301 https://tdom.ml\$request_uri;

}

server {
listen 0.0.0.0:80;
listen [::]:80;

server_name _;

return 301 https://tdom.ml\$request_uri;

}
" > /etc/nginx/sites-available/default'
解释一下这个配置文件的一些细节:第一个server接收来自trojan的流量,与上面trojan配置文件对应;第二个server也是接收来自trojan的流量,但是这个流量尝试使用IP而不是域名访问服务器,所以将其认为是异常流量,并重定向到域名;第三个server接收除127.0.0.1:80外的所有80端口的流量并重定向到域名,防止恶意探测。

启动trojan和Nginx
trojan和nginx启动、查看状态命令分别如下,第一条是启动trojan和nginx,第二条是查看trojan和nginx运行状态。启动之后再查看一下状态,trojan和nginx都显示active (running)即表示正常启动了。

systemctl restart trojan nginx
systemctl status trojan nginx
配置trojan开机自启
systemctl enable trojan
配置防火墙只打开22、80和443端口
关闭无用端口,可有效降低服务器暴露的风险,此步骤非必须。

执行如下命令安装ufw,ufw是一个很好用的防火墙配置命令。

apt install ufw
如果服务器无IPv6地址那么需要执行如下命令。将IPV6=yes修改为IPV6=no。

vi /etc/default/ufw
执行如下命令即可成功配置防火墙。注意,如果ssh端口不是22那么第一行需要调整(ssh改为端口号)。

ufw allow ssh
ufw allow https
ufw allow http
ufw enable
ufw status
ufw status verbose
检查服务器是否配置成功
到这里服务器就配置完成了。此时你可以在浏览器里面访问你的网站看是否能够访问,如果你的网站可以访问了,那么就一切正常啦。

另外,基于以上考虑到的可能的恶意探测,可以验证一下以下情况是否正常。

浏览器中使用ip访问:重定向到https://tdom.ml;
浏览器中使用https://ip访问:重定向到https://tdom.ml;
浏览器中使用tdom.ml访问:重定向到https://tdom.ml。
windows客户端部署
几点说明,目前windows客户端trojan不能使用全局代理,所以需要配合其他软件使用,比如proxifier等。推荐使用trojan+chrome插件SwitchyOmega实现只能chrome翻墙的目的。这样trojan只用监听一个端口,由chrome插件决定当前流量是否走代理。如果你有别的用途可以单独在某个软件内部使用SOCKS5协议指定代理,地址为trojan的地址:127.0.0.1:1080。

配置windows客户端
windows客户端下载地址trojanforWindows。

下载成功之后解压,修改目录中的config.json配置文件中的local_port、remote_addr和password即可。其中,remote_addr填写自己的域名,local_port开启本地端口,用来接收本地数据。trojan不需要安装就可以直接运行,拷贝trojan文件夹到电脑里面,双击即可运行。为了方便自己建立一个快捷方式到桌面或者设置开机自启即可。如果启动报错,那么说明你的系统里面没有C++运行环境,需要安装vc_redist.x86.exe,然后重新启动trojan,确认trojan没有报错即可。如果启动trojan会一闪而过,那么应该是你配置文件有错误,请仔细检查。

如何配置图形界面trojan的windows客户端目前还没有图形界面,如果对黑框有强迫症,可以使用CommandTrayHost将黑框托盘化。

安装chrome
如果没有安装chrome需要先安装一下chrome。

确认服务器可达
在chrome浏览器中访问你自己的网站,确保服务器可达。这一步在每一台Windows的客户端都必须做,否则有可能会连接服务器失败(trojan日志显示握手失败),这是Windows系统的问题(或者说是bug吧)。

安装SwitchyOmega插件
在命令提示符(搜索框输入cmd)输入下面的命令启动chrome,注意端口号如果你有修改也要对应的修改。

socks5://127.0.0.1:1080" --host-resolver-rules="MAP * ~NOTFOUND , EXCLUDE 127.0.0.1"start C:"Program Files (x86)"\Google\Chrome\Application\chrome.exe --proxy-server="
在 Chrome 地址栏输入 chrome://extensions 打开扩展程序,点击底部获取更多拓展程序。搜索proxy即可找到SwitchyOmega插件安装之。安装完成之后重启chrome。

如果上述命令无法启动chrome,是因为新版本的chrome更改了安装路径导致的,你需要更新你的chrome版本啦。

配置SwitchyOmega插件(以下每一步配置完之后记得应用选项)
在chrome右上角打开SwitchyOmega配置界面,如图所示: SwitchyOmega选项

情景模式中的auto switch配置如图所示:注意规则列表规则选择proxy,规则列表格式为AutoProxy,其网址为:

https://raw.githubusercontent.com/gfwlist/gfwlist/master/gfwlist.txt
填写完成之后需要先更新情景模式使其生效,如图所示: autoSwitch

情景模式中的proxy配置如下图所示,其中代理协议选择SOCKS5,这是trojan支持的协议,注意不要选错了,127.0.0.1:1080为trojan代理地址,只有流向这个地址的流量trojan才会处理,如果trojan配置文件有修改本地端口号这里也得对应的修改。 proxy

设定中的初始情景模式选择auto switch,如图所示。这样当检测到目标地址在gfw列表中的时候chrome会让其走trojan代理。否则直连。 初始情景模式

然后重启chrome,保证SwitchyOmega运行在auto switch模式,否则可能无法正常使用,常见现象有无法访问国外网站、导致访问国内网站速度变慢或无法访问内网等。如图所示: 确定状态

至此windows客户端trojan已经配置完成,尽情享受吧!!!

其他客户端部署指南
该软件所有客户端都还在测试版,包括windows客户端。

Linux客户端:Linux客户端安装方式与服务端一样,配置文件按照客户端修改即可;

MAC客户端:trojanforMAC;

IOS客户端:trojanforIOS美区ID+[Pharos Pro | Shadowrocket];

Android客户端:trojanforAndroid。

文章作者: 辣比丶小新
版权声明: 本站所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 Y丶Zon
ss trojan linux
喜欢就支持一下吧