我个人是怎么翻墙的

自建trojan

Posted by xjmaoyaoyao on July 21, 2021

鸽了一两年的翻墙教程……鸽到现在终于开始写。之前的计划是写一个很详尽的step by step手把手教学,发现工作量太大,要完全遮蔽个人信息简直不可能。所以还是决定写一篇简略的“教程集合”体。风格类似于之前那篇刷机博文。超级超级不严谨的入门向,专业人士挑刺的话请……温柔一些。

基本概念

GFW

防火长城(英语:Great Firewall,常用简称:GFW,中文也称中国国家防火墙),中国大陆民众俗称网络长城功夫网等等),是中华人民共和国政府监控和过滤互联网国际出口内容的软硬件系统集合。随着使用的拓广,“墙”有时也被用作动词,中国网友所说的“被墙”即指网站内容被防火长城所屏蔽或者指服务器的通讯被封阻,“翻墙”也被引申为突破网络审查浏览中国大陆境外被屏蔽的网站或使用服务的行为。

——https://zh.wikipedia.org/wiki/防火长城#硬件

代理(重点!必读!)

代理工具的翻墙原理是这样滴:
假设你想通过翻墙代理访问某个被墙的网站(比如反动网站、黄色网站),这时候会经历如下几个步骤:
(1) 你的上网软件(通常是浏览器)会把数据发送给你电脑中的代理工具;
(2) 该工具把数据进行【加密】,然后发送给【国外】的某个代理服务器;
(3) 该代理服务器把数据解密,然后发送给你要访问的网站。
(4) 从该网站回传的数据,也是经过上述途径,最终回到你的浏览器。

——编程随想的博客

Trojan

对应 代理 中【加密-解密-发送】的工具

On penetrating GFW, people assume that strong encryption and random obfuscation may cheat GFW’s filtration mechanism. However, trojan implements the direct opposite: it imitates the most common protocol across the wall, HTTPS, to trick GFW into thinking that it is HTTPS.

——https://trojan-gfw.github.io/trojan/overview

与传统加密代理工具(如Shadowsocks)所不同的是,Trojan通过模仿HTTPS协议,达成迷惑GFW的目的。

VPS(虚拟专用服务器)

对应 代理 第(2)条:【国外】的某个代理服务器

A virtual private server runs its own copy of an operating system (OS), and customers may have superuser-level access to that operating system instance, so they can install almost any software that runs on that OS. For many purposes it is functionally equivalent to a dedicated physical server and, being software-defined, can much more easily be created and configured. A virtual server costs much less than an equivalent physical server. However, as virtual servers share the underlying physical hardware with other VPSes, performance may be lower, depending on the workload of any other executing virtual machines.

——https://en.wikipedia.org/wiki/Virtual_private_server

大概可以把VPS想象成一个远程的电脑。这电脑超强所以超贵,一整个拿来用……钞票是拿不出来的,这辈子都拿不出来的,只能搞搞群租房维持生活这样子。



(一键脚本之前的)准备工作

  • setup an HTTP server and make it useful in some sense (to deceive GFW).
  • register a domain name for your server.
  • Apply for or self-sign (NOT RECOMMENDED) an SSL certificate.

——https://trojan-gfw.github.io/trojan/usage

SSL这一步留到后面。我们先做以下这几步:

  • 购买一个位于墙外的vps
  • 购买一个域名
  • 域名解析 涉及花钱购买的步骤,对此有顾虑的朋友们就不用继续看下去了哦。支付用信用卡最好。对于安全需求不高的人,有支付宝也可。填地址的时候不要傻傻填真实信息。推荐搜索“美国地址生成器”


购买VPS

新手的话,我推荐vultr,因为这家是按时间计费的,随时停随时换,也支持支付宝,方便折腾。缺点在于很多ip可能本身被墙,需要耐心试验出一个可以用的。

链接含邀请代码,如使用此链接注册,我可能会获得收益,但不会损害使用者利益

参考教程:https://zhuanlan.zhihu.com/p/112198146

其中选择系统这一步,我自用的一键脚本用Debian9,所以我也就一直Debian9了。
购买完成后,win电脑用户打开cmd(同时按下键盘上的Win+R组合键。 在运行对话框里输入“cmd”,点击确定。)
非win的其他用户怎么ping自己搜索哦。

ping (购买的VPS的ip地址,括号删掉)

如果出现

来自 (购买的VPS的ip地址) 的回复: 字节=32 时间<1ms TTL=128

类似的内容,说明这个服务器大概可以用。
如果出现

请求超时。

就说明这个服务器的ip地址被墙了。删掉再重新买一个。买到能用为止。



购买域名(domain name)

当我购买域名时,我买了个啥:

域名 (Domain Name,現也有簡稱為”Domain”),是用作識別您的網站,例如yourdomain.com。 域名比IP地址更容易記住,可以讓大眾更快捷容易地通過域名找到你的網站。 域名,是沒有重複的,一個域名只會代表一個位置,您選定一個獨一無二的域名後,需向認可的域名註冊商註冊您域名。 子域名是一個另外的網頁,有獨立不同的內容,但不是一個新的域名。 子域名是無須申請的,當你登記了你自己的域名後,你就可以在你的域名前加上任何子域名。 例如:en.dataplugs.com是dataplugs.com的子域名。 ——https://www.dataplugs.com/tc/kb/what-is-main-domain-name-addon-domain-subdomain-parked-domain/

我从一开始用的就是Namesilo。你要我说各家好坏我也分不出来。
参考教程:https://zhuanlan.zhihu.com/p/33921436


域名解析

在域名没有被发明之前,人们访问网站都是通过IP地址,也就是类似1.1.1.1这样的一串字符,但是IP地址不直观,而且用户记忆十分不方便,于是人们又发明了另一套字符型的地址方案,即所谓的域名地址
域名已经有了,怎么样才能让域名地址和IP地址一一对应呢?
这个时候DNS(Domain name server)就出现了,这个应该很多人应该都早有耳闻,域名地址和IP地址的对应关系就放在DNS内,我们只需要记住域名地址就行了,对应转换工作就留给了DNS。
回到问题,什么是域名解析?
域名解析就是需要我们手动把域名地址和IP地址的对应关系写到DNS服务器上,这样别人访问域名地址的时候就可以在DNS查询到对于的IP地址。

——https://zhuanlan.zhihu.com/p/91731036

通俗但不准确的比喻:DNS是黄页,IP地址是电话号码,域名是电话对应的那个人名。域名解析的过程,就是把【某某的电话是xxxx】记录到黄页上。
namesilo上,设置域名解析的教程:https://zhuanlan.zhihu.com/p/86961133


一键脚本,在服务器上安装trojan

分为以下几步:

  • 下载安装SSH client
  • SSH连接之前买的那个VPS
  • 使用一键脚本安装并配置trojan

一键脚本,这个东西不是官方的,是google出来的,所以说可能有安全隐患。我自己稍微看过其中内容,自己也用的。但是我菜,所以说这个脚本万一有啥问题我也……不知道,对这点有顾虑的人也不用继续看下去了。

不看也没事(?)的基本概念

(非引用的部分都是本菜鸡的菜鸡言论,请大佬们温柔地指正我的错误!) 我们买的那个VPS,装的是Linux操作系统。Linux和Windows,对于菜鸡如我,不同之处之一,在于后者一般是我们熟悉的图形界面(GUI),而前者是命令行。我们输入命令进行操作。

Shell

這應該是個蠻有趣的話題:『什麼是 Shell 』?相信只要摸過電腦,對於作業系統 (不論是 Linux 、 Unix 或者是 Windows) 有點概念的朋友們大多聽過這個名詞,因為只要有『作業系統』那麼就離不開 Shell 這個東西。不過,在討論 Shell 之前,我們先來瞭解一下電腦的運作狀況吧! 舉個例子來說:當你要電腦傳輸出來『音樂』的時候,你的電腦需要什麼東西呢?

  1. 硬體:當然就是需要你的硬體有『音效卡晶片』這個配備,否則怎麼會有聲音;
  2. 核心管理:作業系統的核心可以支援這個晶片組,當然還需要提供晶片的驅動程式囉;
  3. 應用程式:需要使用者 (就是你) 輸入發生聲音的指令囉!

    這就是基本的一個輸出聲音所需要的步驟!也就是說,你必須要『輸入』一個指令之後, 『硬體』才會透過你下達的指令來工作!那麼硬體如何知道你下達的指令呢?那就是 kernel (核心) 的控制工作了!也就是說,我們必須要透過『 Shell 』將我們輸入的指令與 Kernel 溝通,好讓 Kernel 可以控制硬體來正確無誤的工作
    其實殼程式的功能只是提供使用者操作系統的一個介面,因此這個殼程式需要可以呼叫其他軟體才好。
    ——http://linux.vbird.org/linux_basic/0320bash.php
SSH

The Secure Shell Protocol (SSH) is a cryptographic network protocol for operating network services securely over an unsecured network. Typical applications include remote command-line, login, and remote command execution, but any network service can be secured with SSH.
——https://en.wikipedia.org/wiki/Secure_Shell_Protocol

SSH 是 Linux 系统的登录工具,现在广泛用于服务器登录和各种加密通信。

历史上,网络主机之间的通信是不加密的,属于明文通信。这使得通信很不安全,一个典型的例子就是服务器登录。登录远程服务器的时候,需要将用户输入的密码传给服务器,如果这个过程是明文通信,就意味着传递过程中,线路经过的中间计算机都能看到密码,这是很可怕的。
SSH 就是为了解决这个问题而诞生的,它能够加密计算机之间的通信,保证不被窃听或篡改。它还能对操作者进行认证(authentication)和授权(authorization)。明文的网络协议可以套用在它里面,从而实现加密。
——https://wangdoc.com/ssh/basic.html



下载安装 SSH Client

连接Linux服务器的远程工具有很多,我自己在Win端用的是Bitvise SSH Client
Bitvise SSH Client连接Linux服务器教程:https://www.daxianseo.cn/archives/1111
Bitvise官网下载: https://www.bitvise.com/ssh-client-download

写完才发现Bitvise官网也是被墙的,怎会如此……
**其他的SSH工具:https://zhuanlan.zhihu.com/p/46586317
PuTTY教程:https://www.hostarr.com/putty-tutorial/
PuTTY下载地址:https://www.chiark.greenend.org.uk/~sgtatham/putty/latest.html


SSH连接之前买的那个VPS

登录你自己的vultr点进之前买的那个VPS,看看ip地址和密码。

preview

图片来自互联网。

Bitvise SSH Client连接Linux服务器教程:https://www.daxianseo.cn/archives/1111

PuTTY教程:https://www.hostarr.com/putty-tutorial/

第一次登陆:用户名root,端口22

安全使用VPS

服务器VPS安全防护

一键脚本安装服务器端Trojan

这个脚本需要在root用户下安装。

再重申一遍:一键脚本,这个东西不是官方的,是google出来的,所以说可能有安全隐患。我自己稍微看过其中内容,自己也用的。但是我菜,所以说这个脚本万一有啥问题我也……不知道,对这点有顾虑的人也不用继续看下去了。

Ubuntu 16.04 or Debian 9 及以上
参考https://github.com/johnrosen1/vpstoolbox
原仓库的脚本升级后,我的小鸡装不了,现在用的是harry3633君回退版本fork后的 。原命令curl后面跟的东西有点长,我自己改了一下。

apt-get update && apt-get install sudo curl -y && curl -sO https://raw.githubusercontent.com/harry3633/trojan-gfw-script/master/trojangui.sh && sudo bash trojangui.sh