匿名之路:虚拟机+VPN+Tor

这篇文章旨在帮助只具有较少IT经验的人,从零出发,到达100%可靠的匿名状态,以安全地使用网络。

1 准备工作

1.1 几个基本概念

1.1.1 虚拟机

在本文中,指的是在你的Windows系统中,安装的1个或N个虚拟的操作系统,它运行在你的本地电脑上,操作系统可以是windows,也可以是Linux。

虚拟机通常意义上是与宿主机完全隔离的,在虚拟机内部的操作不会影响到宿主机,反之亦然。虚拟机在关机后,所有的系统文件、配置、数据均以文件形式存在于宿主机上,可以复制、转移或删除。

可以安装多个虚拟机,并且每次使用不同的虚拟机,以实现虚拟机之间的完全隔离。例如,可以在一个虚拟机中进行某一虚拟身份的匿名操作,在另一个虚拟机中进行与现实身份相关的日常工作,例如微信聊天。目前尚不存在可以在一个虚拟机中攻击宿主机上另一个虚拟机的技术。

可以对虚拟机的所有文件进行全盘加密。目前尚不存在对于已经关闭的虚拟机的全盘加密数据进行简单破解的技术,前提是全盘加密的密码足够强。

1.1.2 VPS

Virtual Private Server,虚拟专用服务器。它是搭建在云上的虚拟空间,一般拥有固定的IPv4(或IPv6)地址。全球有不计其数的VPS服务商,我们将选择其中口碑最好、最安全可靠的。

我们需要至少1台VPS,作为虚拟机访问网络的第一层跳板。

1.1.3 Ubuntu

ubuntu,中文叫乌班图,是目前最主流的Linux系统,完全开源,最新版本为Ubuntu 24.04 LTS (Noble Numbat)。LTS表示Long-Term Support,会获得较长时间的支持。由于开源、使用广泛、维护人员众多,且使用者基本没有小白,它远比Windows更加安全。本文中,无论是VPS还是虚拟机,均推荐使用ubuntu系统。其中,VPS使用server版本(纯命令行模式),虚拟机使用Desktop版本(带有桌面环境)。

1.1.4 Windows的安全性

很差。即使计算机专业人士,熟练掌握Windows,也无法完全避免有针对性的入侵。Windows存在众多公开的、未被公开的漏洞,从网上已经泄漏的安全公司相关资料来看,对于Windows系统入侵工具最多,也最有效。

所以,我们不能直接使用Windows来实现完全的匿名。另外,也不能信赖Windows的凭据管理器,通俗来说就是,不要让Windows“记住密码”。

但是,不代表Windows就毫不重要。作为第一道防线,它可以有效阻截来自网络的大部分自动化的恶意攻击,同时对于有意识针对你的人,提高第一步的入侵门槛。

安全的做法包括:

1、打开Windows的自动更新,并总是及时更新。

2、设置强有力的管理员密码。

3、不要安装任何额外的服务,例如搭建IIS网站等等。

4、仅安装日常使用的主流工具,例如office,chrome,完美解码(potplayer)等。

5、避免安装QQ、微信等可能在你不知情的情况下对你的屏幕进行截图、录像操作的软件。(这一条对于很多人来说可能较难接受。那么请确保在使用虚拟机的过程中,彻底关闭这些软件。)

6、避免安装国内出品的输入法,例如搜狗、百度、讯飞等。它们会记录你所有的打字记录保存上传,因此有可能泄漏你的虚拟机密码。

7、从严格的安全意义上讲,你的个人工作、娱乐,建议也在另一个虚拟机中进行。

1.1.5 强密码

想出一个好密码是比较头疼的事情。偷懒的人们习惯于在不同的网站使用相同或高度相似的密码,这很不安全。

最佳实践是将密码的一部分使用密码生成器自动生成(在线密码生成器),并将它写下来(或加密压缩保存);你自己再用脑袋记住一个绝对不会忘记的密码,真正使用的密码是两个密码的连接。例如,自动生成的密码是A^D_%th$3,你记住的密码是bJtb+t,那么写在纸上的(或加密压缩保存的)是A^D_%th$3,实际使用的密码是A^D_%th$3bJtb+t。这样做的好处很明显:密码写在纸上(或加密保存),你密码不会忘记;同时,即使这张纸暴露了,真正的密码仍然是安全的。

1.1.6 匿名邮箱

习惯于国内软件生态的人,可能已经忘记了:从物理上,我们并不需要提供手机号码或实名验证,就可以注册包括邮箱在内的网络服务。在国外的很多平台上,通常只需要提供邮箱地址即可完成注册。那么,一个与真实身份完全无关的匿名邮箱就非常必要了。

在这里暂不给出推荐的匿名邮箱服务商,因为安全的做法是在虚拟机而不是在Windows中注册它。

切勿使用任何国内邮箱来注册与匿名身份相关的平台。这一点无需解释。

1.1.7 匿名原理

整个匿名实现的过程可以分为几步:

1、虚拟机。可以把你的Windows想象为你的家,暴力机关随时可以破门而入。而虚拟机则好比家里一只无法被暴力破拆的密码箱,只有通过密码才能打开。你的一切匿名身份活动都在这只“密码箱”中进行。

2、虚拟机与外界的联系,首先通过第一层VPN进行。为了确保VPN的可靠,本文将不会教你购买市面上的VPN(机场),而是指导你一步一步地手动自行搭建。

3、用来搭建VPN服务的VPS,选择目前最可靠、速度最快的老牌服务商(Bandwagonhost,搬瓦工)。在整个过程中,向Bandwagonhost支付VPS费用的方式可能存在一点点瑕疵,因为如何完成匿名的支付是另一个比较大且难的课题。本文中我们暂时使用支付宝,目前没有证据显示Bandwagonhost会泄漏用户的支付信息和对应的VPS信息,因此基本不用担心。相比之下,使用VPN供应商(机场)的风险要大的多。

4、搭建在你的VPS上的VPN只是第一层跳板,后续对各大网络平台的访问,将全部通过Tor浏览器进行。Tor浏览器以安全性著称于世,其原理是自动从全球已经存在的节点中随机选择3层跳板(分别处于不同的国家),并且默认10分钟切换1次。这使得追踪者从你在各大网络平台的活动痕迹出发,反向追溯到你的第一层跳板(也就是你的VPS)就已经变成一件“几乎”不可能的事情。为什么说“几乎”呢?因为理论上讲,如果追踪者已经全面掌握了所有Tor节点的权限,动作又很敏捷,那么是可以一步一步追踪过来的。但这就是分布式架构的好处了:除了上帝,没有人可以掌握全部的Tor节点。

5、那为什么不直接在虚拟机中使用Tor,而一定要通过VPS搭建VPN增加第一层跳板呢?因为某组织虽然不能掌握这些Tor节点,但已经屏蔽了绝大多数Tor节点,这使得你的Tor浏览器如果不通过第一层跳板,将变成一个孤岛,很难接入庞大的全球节点网络。

经过上述过程,追踪者首先将通过一定的手段拿到你在社交平台上的活动痕迹(这一步对于境外平台来说已经比较难),进一步将发现你的IP非常随机,一会儿来自阿根廷,一会儿来自丹麦,10分钟切换1次,他会意识到你使用了Tor,并立即放弃通过技术途径追踪你的企图。

为什么强调仅仅是放弃“技术途径”?因为还有很多的社会工程学方法,这就没有办法通过技术手段来弥补,需要你自身加强安全意识了。例如,你发一张在星巴克喝咖啡的照片,虽然没有拍到人,但追踪者将可以通过地点、时间,轻松地将你锁定在那段时间在这个特定星巴克门店产生消费记录的一个极小人群范围之内。

完全的匿名,意味着你的匿名身份与你的真实身份毫无关联,完全不是同一个人,彼此也不“认识”。因此,不要把你在国内社交平台上说过的话在匿名身份中再重复一遍,也不要发布任何在国内平台上已经发布过的照片,最好不要发布任何照片,除非你知道如何清除照片的Exif信息。更不要使用与国内平台上相同的头像和昵称,这个不用解释了吧?

此外,手机在安全性上远不如电脑,国产手机更是几乎透明的,微信这类app在手机上的权限也非常大,你在手机上其他app中的操作很难做到完全私密。所以,必须杜绝在手机上进行任何与匿名身份相关的操作,包括使用注册匿名身份时使用的邮箱。

1.2 需要的硬件、软件

1.2.1 硬件

内存:硬件上,宿主机通常可以分配一半的内存给虚拟机,ubuntu要求的最小内存是1G,但考虑到我们使用桌面版且会使用浏览器,我推荐给它分配4G内存,以保证其运行流畅。这样一来宿主机建议的最小内存为8G。

如果还要创建用于日常使用的Windows虚拟机,以达到更高的安全性,那么这台虚拟机则应分配8G内存,宿主机最好具备16G内存。

CPU:影响不大,本文推荐使用的虚拟机软件vmware支持2011 年或之后推出的兼容 64 位 x86/AMD64 CPU。

硬盘:将用于存放ubuntu虚拟机的分区,最小应有50个G剩余空间,建议预留100G。如果是固态硬盘分区更佳,可以极大缩短虚拟机系统加载的时间。

1.2.2 软件

在宿主机中将要使用的软件包括:

Vmware workstation pro 17.5.2:百度网盘,用于创建和管理虚拟机。2024.5.1 vmware被博通收购后,所有个人用户均可免费使用vmware workstation pro 17.5.2及今后的版本。

Xshell 7:百度网盘,用于登录你的VPS,并提供命令行操作界面。

WinSCP 6.1.2:百度网盘,用于登录你的VPS,并进行便捷的文件管理和文件编辑。

1.3 心理准备

专门写一节的原因是,接下来的步骤对于一个不太懂计算机技术的人来说,会是费时、费脑的痛苦之旅。你可能需要预备数天的时间来完成全部的过程。但是,既然你已经看到了这里,说明匿名对你带来的自由非常重要,而且你可能听过一句话:Free is not free.

幸好它还不算太漫长,与它能达到的成果相比,这一点代价是完全值得的。来,振作精神,让我们一起开始这追寻自由之路吧。

2 安装ubuntu虚拟机

2.1 安装Vmware

第一步先安装vmware workstation pro 17.5.2。

安装过程比较简单,路径可以默认,后续安装的虚拟机系统的文件通常会指定到别的分区,不会占用C盘空间。

如果让你选择个人用户还是商业用途,选择个人用户,无需输入许可证。“启动时检查产品更新”建议勾选,“加入客户体验提升计划”建议取消勾选。

需要注意的是,vmware会在你的“控制面板\网络和 Internet\网络连接”中增加一个虚拟网卡VMware Network Adapter VMnetX。这是正常现象。

2.2 下载ubuntu

强烈建议从ubuntu的官方网站上下载:https://releases.ubuntu.com/。目前最新版本Ubuntu 24.04 LTS (Noble Numbat)。我们下载Desktop image(桌面版本),是一个ISO文件,大小约5.7G。

2.3 在虚拟机中安装ubuntu

打开vmware。在“文件”菜单中,点击“新建虚拟机”。在弹出的窗口中选择“典型(推荐)”。

安装来源中,点选“安装程序光盘映像文件(iso)”,单击“浏览”选择刚刚下载的ubuntu iso文件。程序将会有一个小小的提示:“已检测到Ubuntu 64位 24.04,该操作系统将使用简易安装。”

接下来将设置Ubuntu的系统用户名和密码。注意,此处不要使用自己惯常使用的用户名,建议随机选择一个烂大街的英文名字,例如Sam。密码一定要足够复杂,建议使用密码生成器自动生成(在线密码生成器),且必须不能与Windows密码相同或相似。密码一定要妥善保存,写在纸上是一个好办法,注意大小写要写的足够清晰。

接下来是虚拟机名称和存储路径。名称随意,但同样不要使用可能会暗示你真实身份的任何字符串。位置则选择有足够空间的分区,考虑到未来可能还会创建多个虚拟机,因此路径应该有一定可扩展性,例如,第一个Ubuntu虚拟机可以放在“E:\Virtual Machines\Ubuntu-1-Sam\”路径中。

接下来是最大磁盘大小,可以按默认的20G,或根据你使用目的和磁盘空间,适当再大一些。

下面一个选项是,虚拟磁盘存储为单个文件还是多个文件?从性能角度,单个文件更好;从易于复制和移动角度,拆分成多个文件更好。但实际上现在随便一个U盘都有512G了,移动单个大文件也不成问题。我的建议是存储为单个文件。

最后一页,会列出虚拟机的默认配置。为了开启默认的3D图形功能,需要给它8个G的内存。如果关闭3D(确实也用不上),则给它4G的内存,2个CPU内核就足够了。你可以根据自己宿主机的条件,进一步提高虚拟机的配置。

勾选“创建后打开虚拟机”,点击“完成”。vmware开始安装Ubuntu系统。数分钟后,ubuntu的可视化安装引导成功,并会自动打开。首先会有一系列初始化设置。

语言可以选择“中文(简体)”,可访问性可以保持默认,键盘布局按默认“汉语”,连接到互联网选择“使用有线连接”。“您想对ubuntu做什么?”选择“安装Ubuntu”,并在下一页选择“交互安装”。在应用集选择页面,建议选择默认集合,以最小化系统。专有软件界面,推荐勾选“为图形和Wi-Fi硬件安装第三方软件”、“下载并安装对其他媒体格式的支持”。选择“擦除磁盘并安装Ubuntu”。下一页重新输入用户名、密码。时区可以选择上海,这对于安全性而言基本没有影响。

一段时间之后,Ubuntu将完成安装。点击“重启系统”。

2024.5.18更新:初步测试,最新版本的vmware 17.5.2已经不会出现水土不服问题。但以下内容暂时保留。

2024.10.7更新:Ubuntu 24.04 LTS仍然会出现黑屏、死机等水土不服现象,关键问题还是在“加速3D图形”。解决步骤:

1)建议重启宿主机器,以避免强制终止vmware workstation带来的其他问题。

2)打开Ubuntu 24.04 LTS的虚拟机文件,注意不是启动它。然后编辑虚拟机设置,在“显示器”中关闭“加速3D图形”。

3)不出意外此时已经可以正常进入Ubuntu 24.04 LTS。

4)后续步骤建议在部署了VPN之后进行。

2、手动安装vm-tools

进入系统后,可以看到Ubuntu的任务栏默认在左侧。这时候你拖动vmware的窗口界面,会发现Ubuntu的窗口大小是固定的,这很不方便。因此我们需要安装vm-tools。

左下角的有一个类似Windows的“开始按钮”,在Ubuntu中的作用是显示所有应用。点击它,并单击“终端”进入命令行模式,依次执行以下命令:

首先更新软件包版本信息:

sudo apt upgrade

sudo前缀表示你要以管理员权限执行此项命令。为确保安全,终端会要求你再输入一次管理员密码。之后在同一个窗口下再次执行sudo命令将不再需要输入密码。

然后安装vm-tools:

sudo apt install open-vm-tools-desktop -y

执行完毕后,重启系统。可以使用命令行“sudo reboot”或直接通过vmware对它进行重启。

重启后,我们点击vmware菜单上的“虚拟机”,会发现一个灰色的菜单“重新安装vmware tools”,表明vm-tools已经安装成功。

这时候拉动vmware窗口,会发现ubuntu已经可以自适应窗口分辨率了。

2.4 对虚拟机全盘加密

虽然我们设置了很强的密码,必须输入密码才能登录这个Ubuntu虚拟机,但这并不意味着虚拟机的文件就是安全的。

这个道理好比,虽然Windows设置了很强的密码,但在没有进行全盘加密的情况下,只要摘取硬盘,将它接到到另一台电脑上,仍然可以轻松读取其中的文件。虚拟机也是一样,虚拟机对应的硬盘文件,此时仍可以被单独挂载读取,从而导致文件泄密。

截至目前为止,我们对Ubuntu虚拟机的操作,与个人身份毫无关联,所以还是安全的;但接下来,我们将要用它来注册匿名邮箱,在那之前,我们需要对Ubuntu虚拟机进行全盘加密。

首先关闭虚拟机,并删除已有的快照(如果生成过快照,没有生成快照的话请忽略)。

单击“编辑虚拟机设置”,并切换到上方的“选项”标签。单击“访问控制”。可以看到右侧显示“此虚拟机未加密”。

点击“加密”,点选“此虚拟机的所有文件”,并取消勾选“在此计算机上的凭据管理器中记住密码”(还记得么,凭据管理器并不可靠)。

输入足够强悍的密码。这里其实可以使用Ubuntu系统登录一样的密码,只要确保密码不泄露,一样可以确保安全性,而且省去要记住两个复杂密码的麻烦。

点击加密,通常只需要1~2分钟即可完成。

关闭vmware重新打开Ubuntu虚拟机,你会发现vmware会提示你输入密码,否则无法访问该虚拟机。至此加密完成。

2.5 在虚拟机中注册匿名邮箱

Ubuntu自带一个Firefox浏览器。这是目前世界上使用最广泛的开源浏览器。

在第一次打开Firefox的时候,你可能会注意到,它“贴心”地在默认首页上,提供了包括百度、知乎、微博在内的一系列中国“主流”网站的链接。

请不要打开它们,更不要在Ubuntu虚拟机中登录你已有的这些平台的帐号。牢记这个原则:Ubuntu虚拟机中的一切操作,都必须与你真实的身份(或你在国内平台上的帐号,因为实名制的存在,两者是一回事儿)杜绝任何一丁点儿关联。

好了,我们用Firefox打开Tuta(https://tuta.com)。这是一个尚未被屏蔽的,端到端加密,且无需登记个人身份信息的匿名邮件服务商。

单击网页右上角的“登录”,之后在登录区域下方选择“注册”。网页加载可能比较慢,稍微耐心多等一会儿。

在之后的订阅选项中,选择“Free”。弹出的窗口告诉你:免费账户仅用于个人使用,每个人只能有1个免费邮箱,且6个月不登录就会被删除。没问题,实际上它并不能有效判断你究竟已经注册了几个免费邮箱。点击继续。

在接下来的界面中,输入电子邮件地址前缀和密码。再次提醒,切勿使用与你个人身份有任何关联的字符串作为邮箱地址。邮箱地址和密码请妥善保存。

随后,网站会给你提供一大串的恢复码。妥善保存恢复码,以备忘记密码时恢复邮箱账户。

好了,现在可以登录到邮箱。现在tuta邮箱需要经过审核才可以开通,开通时间不超过48小时。

考虑到6个月不登录邮箱就会失效,我建议你在手机上创建一个登录查阅邮箱的提醒任务,并设置为每1~2个月重复提醒一次。

接下来的操作,需要等待这个匿名邮箱生效才能继续。那么,Take a break!

3 建设VPN

3.1 购买VPS

3.1.1 注册bandwagonhost

Bingo,maybe 1天之后,tuta审核通过,现在你已经拥有1了个匿名邮箱。可以用它来注册其他服务了。

前面已经说过,我们选择老牌的搬瓦工作为VPS服务商。主要原因有两个:1、它历史悠久,口碑过硬,没有安全方面的不良记录。2、它稳定提供CN2 GIA顶级线路的VPS,这对我们将来使用Tor的体验至关重要。可以想象,Tor所有的连接都要从地球上转一大圈,所以作为第一层跳板的VPS,速度必须既快且稳(and贵)。

搬瓦工的主页(https://bandwagonhost.com/)毫不意外的是被GFW屏蔽的。但好在有镜像站(目前有效地址包括:https://bwh81.nethttps://bwh89.net)可以直接访问。注意,在Ubuntu虚拟机的Firefox中输入该地址时,千万不要忘记http后面还有一个s,否则有数据泄漏的风险。

点击主页右上角“Register”进行注册。在一大堆的信息栏中,邮箱填你之前注册的匿名邮箱XX@tutamail.com,Company name可以不填,Address 2可以不填,其他必填。注意邮箱地址必须真实,要用它来接收验证码。手机号码不用填自己的号码,随意即可。由于搬瓦工会核对你的地址信息和IP对应关系,因此建议国家选择中国,省份、城市就不用准确了,至于Address 1中的详细地址和邮编,打开百度地图或高德地图,是很容易做出一个逼真的地址的。

在Ubuntu虚拟机中的操作可以相对放心,简便起见,可以用Firefox自带功能自动生成、保存复杂密码。

提交注册后,搬瓦工会发送一个验证码到你的邮箱。验证通过后,注册完成。

3.1.2 选购CN2 GIA线路的VPS

建议通过搬瓦工监视页面(https://status.bwgyhw.cn/)来跟踪搬瓦工的VPS上架信息。首先要明确的是,基于我们的需求,强烈建议选择CN2 GIA线路的VPS。一般认为CN2 GIA-E最具性价比,硬件性能够用,每月流量500G也足够正常使用,每年仅需49.99美元。但缺点是这一款经常需要等,一般数周才会上架1次,而且数小时内就会被抢购一空。如果对价格并非那么敏感,那么CN2 GIA-E的2核/1G/20G/1000G月流量/2.5G带宽的版本也很好,169.99美元/年,其综合性价比仍然与顶级机场相当。

该页面最上方有当前有效的优惠码(当前是BWHCCNCXVV),在购买时记得填入,可以有6.78%的折扣。

大胆使用支付宝进行支付。搬瓦工不会泄露你的服务器具体信息。

完成购买后,在主页右上方进入“Client Area”,然后可以在菜单“Services”-“My Services”中,看到已经订购的VPS。最右侧有一个齿轮状的Manage按钮,点击它,选择“Open KiwiVM”,即可进入该VPS的管理界面。

在这里,可以为新VPS安装操作系统。推荐使用最新版本的Ubuntu。注意,这里安装的Ubuntu均为Server版本,默认不带桌面环境。这和我们的Ubuntu虚拟机是有区别的。没关系,我们后面的操作并不需要在它的桌面环境中进行。

系统安装完成后,搬瓦工会自动发送一封邮件到你的注册邮箱,告知你这台VPS的SSH端口和root登录密码(现在你知道为什么要大费周章注册一个端到端加密的、非国内的匿名邮箱了)。

VPS已经就绪,但在搭建VPN之前,我们还需要注册一个域名,这很有非要,有了域名才可以申请SSL证书,实现https加密,这可以让我们与VPS(第一层跳板)之间的连接安全性大大增加。

觉得累了?喝杯咖啡,鼓鼓劲儿,我们已经完成一半的工作啦。

3.2 购买域名

3.2.1名词解释

在继续之前,有必要先对几个概念有基本的了解。

1、域名和DNS解析

我们通常是通过一个好记的网址来访问网站,例如baidu.com,taobao.com。这些都是域名。域名必须转换为IP地址,才能被计算机网络进一步处理,建立你的电脑和服务器之间的通信,例如,baidu.com转换为39.156.66.10,taobao.com对应的是59.82.43.234。这种转换称之为DNS(Domain Name System)解析,干这件事的服务器则简称为DNS(域名服务器)。

受DNS的基础协议限制,全球只有13台传统根域名服务器,它们掌管着全球所有网站的域名和IP对应关系的“终极地址簿”。通过Anycast策略,可以将实际的DNS服务器数量大幅增加。截至2023年6月,全球实际上有1719台根域名服务器。

域名并不神秘。一个常见的误区是,域名是只有机构才能拥有的东西,并且价格一定非常昂贵,其实大谬不然。每个人都可以选择任意的域名托管商注册自己的域名,并任意分配它对应的IP地址。近二十年来,除了最常见的.com、.net、.org之外,顶级域名的可选择范围极大拓宽,.vip、.top、.app、.cc、.co……简单好记的顶级域名后缀多达上千种,令“抢注”一个好的域名的门槛大幅降低。而多数域名的费用非常低廉,每年通常在9美元-40美元之间。

一个顶级域名可以对应无数个二级域名。例如,你购买了一个顶级域名myname.fun。那么,你的博客网站可以叫blog.myname.fun,音乐网站是music.myname.fun,这些二级域名均可以指向完全不同的IP地址,并完全免费。

2、http和https

我们经常见到网址前面有一个http或https。前者是一种超文本传输协议,后者则是在前者基础上的经过加密的安全协议(HTTP over TLS/SSL)。http使用明文传输数据,这就使得数据传输的每一个节点都有被窃听的风险。为了解决这个问题,Netscape公司早在1994年就发明了https,利用TLS/SSL证书来加密数据包。最初仅用于支付系统等敏感信息传输,但随着2000-2010年钓鱼、欺诈网站兴起,https被广泛推广。2015年,Let's Encrypt机构成立,提供简便、免费的TLS证书,将https的成本彻底降到了0,可以预见在不久的将来,所有网站都将使用https协议。

由于TLS/SSL证书通常来说只能与域名绑定,因为域名才真正意义上确定了所有权:例如,你可以这个月把blog.myname.fun绑定在IP-1上,下个月又绑定在另一台服务器IP-2上,所以,仅凭IP来制作证书是不推荐的做法,也不被主流的CA(证书颁发机构)支持。

这就是为什么我们还是要有一个域名。让我们从cloudflare开始。

3.2.2 注册Cloudflare

Cloudflare经常被网友们戏称为“活菩萨”、“义父”,原因是它提供了多种灵活的网络服务,很多在其他服务商那里需要花不少钱才能实现的功能,在cloudflare上都可以免费使用,或提供了夸张的免费额度。在本文中,我们不过多探秘cloudflare的有趣世界,只是用它来做两件事:购买域名,以及为域名分配DNS解析地址(IP)。

访问cloudflare的官网。它的中文首页地址(并没有被GFW屏蔽):https://www.cloudflare.com/zh-cn/。单击右上角“注册”,选择Free Plan,单击Free下面的“添加一个网站”按钮,进入注册页面。

“活菩萨”只需要一个邮箱地址和密码,即可完成注册(此刻应双手合十,口念“善哉,善哉”)。

当然,邮箱地址仍然使用之前注册的tuta匿名邮箱地址。Cloudflare会发送一封验证邮件到你的注册邮箱地址,点击邮件中的验证链接完成注册。Cloudflare今后会不定期发送很多域名运行情况、DNS解析情况的邮件给你,这些都属于“天机不可泄露”。

从注册帐号角度,Cloudflare除了一个邮箱地址之外,不掌握你的个人信息,泄漏隐私也就无从谈起。

3.2.3 在Cloudflare上购买域名

登录cloudflare,会进入dash.cloudflare.com操作面板主页。在左侧菜单中找到“Domain Registration”-“Register Domains”。或者在网页顶部切换到中文,那么菜单就是“域注册”-“注册域”。

有一个简单的“搜索框”,可以输入你心仪的域名。单击搜索,可以检查此域名是否可用(是否已经被别人注册过了),同时,在下方给出一系列相似的、可用的推荐域名。建议点击搜索框下方的“支持的扩展”,以查看cloudflare支持的所有顶级域名后缀,这样可以进一步拓展思路。注意,这里没有.cn和.ai。

如果你搜索的域名可用,cloudflare会直接标出价格和续费价格(以年度计算)。

不断调整、验证,最终找到可用的、你满意的、价格相对低廉的域名。我们假设它就是myname.fun。

支付界面中,首先要添加域名相关的个人信息。注册域必须填写个人信息,好在这个信息不需要真实,而且cloudflare不会透露给WHOIS(域名信息查询网站)。参考之前搬瓦工的注册,任意给一个姓名、地址即可,邮箱仍然可以用tuta匿名邮箱。电话号码随意。

支付方式选择第一项“卡”,它支持visa和mastercard。这里就必须填写真实信息了,由于境外的信用卡并不验证密码,它实际上是通过卡号、CVC、有效期、持卡人姓名等信息来验证的,所以无法绕过。但目前没有证据显示Cloudflare会透露你的银行卡信息,所以我们可以认为它是安全的。

填完所有信息后,单击“完成购买”。恭喜你,你拥有了一个域名(myname.fun)。

3.2.3 配置域名DNS

点击左侧菜单中最上方的“网站”,回到控制面板首页。右侧列出了你拥有的所有域名。单击刚刚注册完成的“myname.fun”,进入域名概述页。点击右上角的“DNS 记录”。

DNS记录页面,可以对主域名和所有二级域名、N级域名的DNS解析地址进行管理。单击“添加记录”,类型选择“A”(意味着普通IPv4),名称中填入二级域名字符串。这里如果填入“a”,那么对应的域名就是a.myname.fun。建议不要填写诸如“vpn”这种带有强烈暗示的字串,随机一点比较好。“IPv4”地址,填入你的VPS的IPv4地址。如果不清楚这个地址,参考本文3.1.2节,进入VPS的管理页面查看即可。

代理状态默认是勾选的,但由于我们将要搭建一个VPN,所以不需要、也不能使用Cloudflare提供的CDN服务,这里必须取消(在其他场合下,这个代理非常有用)。

考虑到今后可能会不断添加大量的DNS记录,如果怕自己忘记每个记录是干嘛用的,可以在注释行中写一点提示,例如“my first VPN”。

点击“保存”。

注意,对于一个刚刚注册的顶级域名来说,它需要一点时间“昭告天下”(和全球所有的域名根服务器报个到、拜个码头),这个时间短则半个小时,长则5个小时。所以,你的第一个DNS域名解析通常不会立即生效。测试它是否生效的方法是,Windows中运行“cmd”,输入命令:

ping a.myname.fun

看看有没有来自正确IP的响应即可(域名改成你实际域名)。也可以在线检测(https://myssl.com/dns_check.html),选择A记录,输入域名即可检测。

数个小时之后,DNS解析生效。一旦第一次生效,以后在该顶级域名上添加更多的二级(或N级)域名解析通常会立即生效。

好了,现在你已经登上这条海盗船,即将扬帆启程,晦涩难明的未来正在向你招手了。如果你的内心还有一丝犹豫,此时打住还来得及。

3.3 在VPS上配置Gost

3.3.1 安装并配置Xshell、WinSCP

两个软件的下载参见本文1.2.2。Xshell需要破解,下载文件中有一个压缩包是破解文件。该文件会被Windows自带的防火墙报毒,所以加密压缩了,解压缩密码见边上的txt。正常安装Xshell之后,将Windows防火墙暂时关闭,然后将破解文件解压缩到Xshell的安装目录,执行它,按提示操作即可。

破解之后运行Xshell,它可能会提示你升级,因为升级会导致破解失效,且新的版本很难找到破解,不要升级。

我们需要用Xshell来连接之前购买的搬瓦工VPS。点击菜单中“文件”-“新建”,在“连接”页填入VPS服务器信息。名称随意,例如“bwg”;协议就按默认的SSH;主机填入VPS的IP地址,端口号不是默认的22了,搬瓦工为了加强安全性,修改了默认的SSH端口,还记得吗?搬瓦工把端口号、登录密码都发邮件到你的tuta匿名邮箱了。进入你的Ubuntu虚拟机,登录tura邮箱,找到这个端口号和密码。

输入正确的端口号后,切换到“用户身份验证”页,这里的用户名填“root”,密码是tura邮箱中搬瓦工发给你的密码。方法用默认的Password。点击“确认”,此时搬瓦工VPS就已经保存在Xshell的服务器列表中了。“文件”-“打开”,选择刚刚添加的“bwg”,不出意外的话,可以顺利登录,并进入SSH命令行提示符模式,当前用户是root,因此提示符会形如“root@[VPS机器名]:~#”。

WinSCP是免费开源软件,安装一路默认即可,如果提示升级,可以按提示到它的官方网站上升级。

运行WinSCP后,点击“新标签页”,再单击“新建站点”。文件协议按默认的SFTP,主机名填入VPS的IP,填入端口号(和前面的Xshell一样),然后是用户名(root)和密码。全部填完之后,单击下方的“保存”,输入一个好记的站点名称,例如“bwg”。之后双击“bwg”,尝试连接服务器。

通常来说,WinSCP左侧是一个树状目录,类似Windows的资源管理器,上方有一个地址栏。注意ubuntu(所有Linux)的地址是类似“/etc/nginx/dir1/dir2”这样的形式,和Windows有所不同。打开到某个路径后,双击路径下面的文件可以直接打开并编辑。也可以用ctrl+c、ctrl+v或者拖动的方式来管理文件。这比在SSH命令行下操作方便多了。

好了,工具准备就绪,让我们正式开始吧。

3.3.2 配置防火墙

用Xshell登录你的搬瓦工VPS。当前用户是root,已经拥有最高权限,所以后面的命令均无需sudo前缀。

首先看一下服务器有没有默认自带ufw(简易防火墙)。在终端中执行:

ufw status

如果返回说命令不存在(command not found),说明没有安装ufw,那么先安装一下ufw。

apt upgrade
apt install ufw

然后放行[SSH端口]、80、443端口:

ufw allow [SSH端口]
ufw allow 80
ufw allow 443

其中,[SSH端口]是你的VPS设置的SSH特殊端口,还记得Xshell、WinSCP是如何设置的吗?假设搬瓦工邮件告诉你:你的VPS SSH端口是22035,那么,第一行就是(千万不要弄错):

ufw allow 22035

开放80端口,是因为在第一次申请SSL证书时,certbot会临时创建一个web服务器以完成HTTP-01验证,这个验证过程需要用到80端口(也就是http协议默认端口)。

而开放443端口,是因为SSL证书配置好后,今后你和该服务器的VPN连接将伪装成https协议下的网站连接,而https协议默认使用的就是443端口。实际上如果你的服务器本身还要用作其他网站服务,那么这里也可以不用443端口,以避免和网站服务冲突。本文假设你的VPS没有其他网站,所以仍然使用443。

好了,下面启用防火墙:

ufw enable

查看防火墙当前状态:

ufw status

3.3.3 安装Certbot并申请SSL证书

certbot是一个非常好用且免费的SSL证书申请和配置工具。提供了snap安装方式,因此安装也非常容易:

snap install --classic certbot

接下来,我们手动申请SSL证书:

certbot certonly --standalone

之所以选择手动申请,因为certbot大部分情况下,是与网站服务配合使用的,而我们其实并没有一个真实的网站服务,只是伪装成网站服务,所以只好手动操作了。

命令执行后,它在第一次执行时,会有一些提示,输入邮箱地址,以及输入你要申请SSL证书的域名。请正确填写。

全部完成后,certbot会提示证书申请成功,并告诉你证书的存储地址。假设你申请的SSL证书域名是“a.myname.fun”,那么这个证书应该会默认保存到“/etc/letsencrypt/a.myname.fun/”目录中。证书文件有两个,通常一个叫fullchain.pem,一个叫privkey.pem。

3.3.4 安装和配置Gost

接下来首先安装docker,依次执行:

curl -fsSL https://get.docker.com -o get-docker.sh
sh get-docker.sh

然后安装docker版本的gost。本文以gost v2版本为例:

docker run --rm ginuerzh/gost -V

其中,--rm参数表示仅安装gost,但不运行它。-V则显示gost版本号。

接下来,我们打开WinSCP,并连接到搬瓦工VPS(bwg)。进入路径:“/usr/bin/”,右键新建一个文件“start_gost.sh”。这里路径和文件名随意,但最好记一下,防止以后找不到。

start_gost.sh是一个启动脚本。其内容用WinSCP编辑如下:

#替换成实际域名,并设定用户名、密码。
#如果不设定用户名密码,则无法开启反探测功能
DOMAIN="DOMAIN"
USER="username"
PASS="password"
#可以使用443,这样伪装成https网站更逼真
#为了避免端口冲突,也可以选择其他端口,https协议依然支持
PORT=443
#为了避免用户名、密码有特殊字符嵌入URL后出错,使用AUTH方式认证
AUTH=$(echo -n ${USER}:${PASS} | base64)

BIND_IP=0.0.0.0
#配置SSL
CERT_DIR=/etc/letsencrypt
CERT=${CERT_DIR}/live/${DOMAIN}/fullchain.pem
KEY=${CERT_DIR}/live/${DOMAIN}/privkey.pem
#运行gost
sudo docker run -d --name gost \
    -v ${CERT_DIR}:${CERT_DIR}:ro \
        -v /var/www/html/index.html:/var/local/index.html \
    --net=host ginuerzh/gost \
    -L "http2://${BIND_IP}:${PORT}?auth=${AUTH}&cert=${CERT}&key=${KEY}&probe_resist=file:/var/local/index.html&knock=www.google.com"

其中,DOMAIN是你的SSL证书对应的域名,本文中以“a.myname.fun”为例。PORT=443设置gost使用443服务。这与前面的防火墙设置一致。

USER、PASS分别是用户名和密码。和前面一样,请设置足够复杂的密码。

CERT_DIR是SSL证书存储的路径,一般不用改。CERT和KEY分别对应两个pem文件。

需要进一步解释的是,最后的sudo docker run命令中,带有一个“probe_resist”参数,这是一个反探测设定。当潜在的不明连接在不清楚用户名和密码的情况下,偷摸访问你的VPS时,它会自动返回一个页面,这个页面被设定为“file:/var/local/index.html”。这是一个伪装网页。我们需要提供一个看上去非常逼真的网页,建议使用nginx的默认页。

注意/var/local/index.html这个路径,是docker环境中的路径,而不是你的VPS本身的文件路径。所以,在最后docker run命令中,使用参数“-v /var/www/html/index.html:/var/local/index.html”,将docker环境中的/var/local/index.html路径与VPS的/var/local/index.html路径建立一个映射关系。

聪明的你一定想到了,我们还需要用WinSCP在VPS的“/var/local/”目录下,创建一个index.html文件。内容如下:

<!DOCTYPE html>
<html>
<head>
<title>Welcome to nginx!</title>
<style>
html { color-scheme: light dark; }
body { width: 35em; margin: 0 auto;
font-family: Tahoma, Verdana, Arial, sans-serif; }
</style>
</head>
<body>
<h1>Welcome to nginx!</h1>
<p>If you see this page, the nginx web server is successfully installed and
working. Further configuration is required.</p>

<p>For online documentation and support please refer to
<a href="http://nginx.org/">nginx.org</a>.<br/>
Commercial support is available at
<a href="http://nginx.com/">nginx.com</a>.</p>

<p><em>Thank you for using nginx.</em></p>
</body>
</html>

这是一个标准的nginx网站还没有配置好的样子。当然,你也可以把它改成个性化的页面,反正,它只是用来充充门面的。

接下来,为start_gost.sh脚本赋予执行权限:

chmod +x /usr/bin/start_gost.sh

然后执行它:

/usr/bin/start_gost.sh

为了验证脚本是否正常运行,我们用netstat命令来看一下:

netstat -nolp | grep 443

这个命令会枚举当前正在监听443端口的程序。

3.3.5 配置SSL证书自动更新及Gost定期重启

我们使用certbot申请的证书,默认只有3个月的有效期,到期之后需要续期。同时,为了让gost服务始终保持稳定,强烈建议定期对它进行重启。这两项工作可以通过任务计划来执行。在ubuntu中,通过配置crontab来实现。

配置cron,在SSH终端执行:

crontab -e

它会默认使用系统自带的nano编辑器来打开。在编辑器中,添加如下两行:

0 0 1 * * /snap/bin/certbot renew --force-renewal
5 0 1 * * /usr/bin/docker restart gost

注意,因为我们的certbot是通过snap安装的,所以第一行中的路径是/snap/bin/certbot。如果其他安装方法,需要修改为certbot实际所在路径。

每一行前面有5个数字(包括*),分别代表分钟、小时、日期、月份、星期,*表示“每个”。所以,以上两行的意思是,每个月的第1天的0点0分执行一次certbot的续期操作;每个月的第1天的0点5分执行gost的重启操作。

对于nano编辑器来说,ctrl+o保存,ctrl+x退出。此时任务计划即刻生效。

好了,经过以上种种操作,你已经成功创建了一个伪装成https网站服务的VPN服务。可以用浏览器访问一下“a.myname.fun”,它会返回你预设的nginx默认页面。

3.4 编写yml配置文件

有了VPN,我们将要使用clash客户端来连接它。在此之前,我们先准备好一个clash的yml配置文件(假设文件名为myvpn.yml)。

myvpn.yml的具体内容如下:

port: 7890
socks-port: 7891
redir-port: 7892
mixed-port: 7893
allow-lan: false
mode: Rule
log-level: info
ipv6: false
hosts:
dns:
  enable: true
  ipv6: false
  listen: 0.0.0.0:1053
  use-hosts: true
  default-nameserver:
    - 8.8.8.8
    - 1.1.1.1
  nameserver:
    - https://dns.google/dns-query
    - https://1.1.1.1/dns-query
  fake-ip-range: 198.18.0.1/16
  fake-ip-filter:
    - '*.lan'
    - '*.localdomain'
    - '*.example'
    - '*.invalid'
    - '*.localhost'
    - '*.test'
    - '*.local'
    - '*.home.arpa'
    - time.*.com
    - time.*.gov
    - time.*.edu.cn
    - time.*.apple.com
    - time1.*.com
    - time2.*.com
    - time3.*.com
    - time4.*.com
    - time5.*.com
    - time6.*.com
    - time7.*.com
    - ntp.*.com
    - ntp1.*.com
    - ntp2.*.com
    - ntp3.*.com
    - ntp4.*.com
    - ntp5.*.com
    - ntp6.*.com
    - ntp7.*.com
external-controller: 127.0.0.1:9090
clash-for-android:
  append-system-dns: false
profile:
  tracing: true
proxies:
  - name: a01
    type: http
    server: a.myname.fun
    port: "443"
    username: "USERNAME"
    password: "PASSWORD"
    tls: true
    skip-cert-verify: false
proxy-groups:
  - name: mygroup-1
    type: select
    proxies:
      - ♻️ Auto
      - a01
  - name: ♻️ Auto
    type: url-test
    url: http://www.google.com/generate_204
    interval: 300
    tolerance: 50
    proxies:
      - a01
  - name: China-Media
    type: select
    proxies:
      - DIRECT
      - mygroup-1
  - name: China-Websites
    type: select
    proxies:
      - DIRECT
      - mygroup-1
  - name: Final
    type: select
    proxies:
      - mygroup-1
      - DIRECT
rules:
  - DOMAIN-SUFFIX,tmall.com,China-Websites
  - DOMAIN-SUFFIX,toutiao.com,China-Websites
  - IP-CIDR,192.168.0.0/16,China-Websites
  - IP-CIDR,10.0.0.0/8,China-Websites
  - IP-CIDR,172.16.0.0/12,China-Websites
  - IP-CIDR,127.0.0.0/8,China-Websites
  - IP-CIDR,100.64.0.0/10,China-Websites
  - GEOIP,CN,China-Websites
  - MATCH,Final

有几个需要重点关注的地方:

1、yml文件的格式要求极其严格,每一行前面缩进的空格数都是规定好的,不能搞错。

2、proxies段,可以看到定义了一个a01(这个名称随意,但要和后面的配置对应),type是“http”,server是前文中申请了SSL证书的二级域名“a.myname.fun”,port是443,用户名、密码请修改为你在VPS的gost配置中指定的用户名、密码。tls为true,skip-cert-verify为true。可以参照此格式,创建多个proxies,本例中就只有1个a01。

3、注意以上配置中的红色文字部分:default-nameserver使用的是google和cloudflare的DNS,比较可靠(当然不能用境内的),同时,nameserver使用了DoH(DNS over HTTPS),这样避免了ISP使用透明代理来劫持你的DNS(它们确实会这样干)。以及,节点的skip-cert-verify设置为false,这样就会强制进行SSL证书验证,前面的工作不会白费啦。

4、proxy-groups是策略组,第一个是“mygroup-1”(这个名称随意,但要和后面的配置对应),这是默认组,其中默认为自动,第二就是a01。第二个组为自动类型(type为url-test),并且给出了用于测试的地址(google)。第三、四个组是China-Media、China-Websites,顾名思义,这两个组用来约定当目标地址属于中国境内的网址时,使用哪一个proxies(通常选direct,直接连接)。Final组表示当前面的策略都不匹配时,兜底采用的连接。

5、rules段规定了哪些网址属于哪个策略组。可以看到,局域网地址被设定为China-Websites组,所以该组默认为direct,也就是直接连接,这很容易理解。MATCH,Final表示前面都不命中的话,就按Final策略来。

这个yml文件通过一系列总体设置、proxies列表,组策略,以及规则清单,共同构成了可供clash软件识别的代理逻辑。其中的各个部分可以拓展,此处不再详述。

4 配置ubuntu虚拟机

4.1 安装clash

4.1.1 将clash文件copy到虚拟机

首先下载clash(下载地址)。解压缩rar,得到一个tar.gz后缀的文件。

在宿主机Windows上创建一个文件夹,用来和你的ubuntu虚拟机传递文件。假设文件夹路径为D:\Share_VM。

在vmware中,打开(或运行)你的ubuntu虚拟机,然后单击菜单“虚拟机”-“设置”。单击上方的“选项”页。单击“共享文件夹”。在右侧单选“总是启用”,然后点击下面的“添加”。按照向导把D:\Share_VM路径添加进去,然后确定。

这时候,你在Ubuntu虚拟机中,打开“文件”(默认左侧任务栏中的第二个就是),在地址栏中输入“/mnt/hgfs”回车,就可以进入Windows共享的文件夹了。

回到Windows,将下载并解压缩后的tar.gz文件,以及前面千辛万苦编辑的yml文件,复制到D:\Share_VM。

回到Ubuntu虚拟机,用F5刷新Share_VM文件夹,然后将这两个文件复制到虚拟机内部,假设我们在“主文件夹-文档”下创建了tools\clash文件夹,就放到clash文件夹里。

4.1.2 运行并配置clash

在“主文件夹\文档\tools\clash\”中,右键点击这个tar.gz文件,单击“提取”。文件将被解压缩,边上会出现一个文件夹。进入该文件夹,再进一层子文件夹,你会看到一堆文件,这就是clash的程序文件了。

为了后续的方便,我们将这些文件(包括cfw主程序文件),统统挪到“主文件夹\clash”目录下。确保cfw主程序文件的路径为“/home/sam/clash/cfw”(本文例子中用户名是sam)。

双击cfw,即可运行。不出意外的话,现在已经可以看到clash的主面板。点击左侧的“Profiles”,右侧有一个自带的config,右键点它并删除。点击上方的第三个按钮“Import”,定位到“主文件夹\文档\tools\clash\”,导入myvpn.yml。单击一下导入的myvpn,确保它左侧有一个绿色的竖条,这表示当前已经切换到该配置文件。

点击面板左侧的“Proxies”,在最上方,选择“Global”。然后在下方选择我们自定义的“a01”节点。如果该节点正常,它会在节点名称后面显示一个绿色的Ping值。如果显示Time out,那么说明我们的yml配置文件有问题,或者VPS上的Gost执行有问题。

我强烈建议在此处使用Global模式,而不是最常用的Rule模式,因为安全的做法是不使用Ubuntu虚拟机访问任何国内网站。

4.1.3 修改系统代理设置

这时候其实还不能访问“那些”网站。还需要对Ubuntu系统代理作一个手动配置。点击桌面左下角ubuntu的“开始菜单”,打开“设置”。在左侧最上方找到“网络”设置,右侧进入“代理”设置。启用代理,并选择“手动”配置,将http、https的代理地址均设置为127.0.0.1,端口7890。socks代理地址也是127.0.0.1端口为7891。

此时尝试打开Firefox访问google.com或youtube.com,可以打开,说明一切顺利。

4.1.4 令clash开机自动运行

Ubuntu虚拟机中点击左下角“开始菜单”,打开“文本编辑器”。编辑以下内容:

[Desktop Entry]
Type=Application
Name=Clash
Exec=/home/sam/clash/cfw //注意如果路径带有空格,需要加上双引号
Terminal=false

注意//之后为注释。Exec程序路径必须确保正确。将该文件保存到路径“/home/sam/.config/autostart”中,文件名建议保存为clash.desktop。

文件管理器定位到/home/sam/.config/autostart路径。右键点击clash.desktop文件,勾选最下方的“作为程序执行”。

之后系统每次启动,将自动运行clash。

4.1.5 解决“加速3D图形”剩下的问题(20241007更新)

好了,现在已经有了VPN,那么可以继续解决“加速3D图形”的问题。前面我们在设置中关闭了它,避免了Ubuntu 24.04 LTS虚拟机的死机、黑屏问题。但这显然不是完美解决方案。现在继续:

进入系统,打开“终端”。

添加一个第三方软件源:

sudo add-apt-repository ppa:oibaf/graphics-drivers

然后原则上我们需要执行sudo apt update以及sudo upgrade,但实际上,如果不设置好代理,这个第三方软件源的下载速度非常慢。而“终端”中执行的apt默认是不使用代理的,需要手动配置一下。用nano添加一个配置文件:

sudo nano /etc/apt/apt.conf

在编辑窗口中,写入如下两行:

Acquire::http::Proxy "http://127.0.0.1:7890/";
Acquire::https::Proxy "http://127.0.0.1:7890/";

写完后,ctrl+o保存,ctrl+x关闭。这就令apt后续以代理模式执行了。接下来:

sudo apt update
sudo apt upgrade

在代理的加持下,这个步骤应该可以顺利执行。

注意,当sudo apt upgrade完成后,强烈建议再次用nano清除那两行设置,否则可能引发系统重启异常。

接下来,关闭(注意不是重启)系统。

再次进入编辑虚拟机设置,进入“显示器”,打开右侧的“加速3D图形”。不知为何,按照第三方软件源更新了相关显示驱动后,它将要求必须打开“加速3D图形”,否则无法进入系统。

然后,正常进入Ubuntu 24.04 LTS。

4.2 安装Tor浏览器

首先下载Tor。Tor的官方网站已经被GFW屏蔽,但现在咱们已经鸟枪换炮了:由于已经安装了clash,ubuntu虚拟机已经不再受到GFW的影响。在clash运行的前提下(屏幕顶部有一个黄色的小猫)打开Firefox,访问Tor的中文版下载页面(https://www.torproject.org/zh-CN/download/),下载其中的Linux版本,你将得到一个tar.xz文件,默认会位于“主文件夹/下载”中。

方便起见,建议将解压缩后文件夹中的子文件夹“tor-browser”文件夹整个儿剪切到主文件夹下。你会发现它已经自带了一个desktop文件(start-tor-browser.desktop)。将该文件复制到“/home/sam/.local/share/applications”目录,确保其属性中,已经开启了“作为程序打开”选项。

此时点击ubuntu虚拟机的“开始菜单”,会发现Tor browser已经出现在那里。右键点它,单击“固定到快捷栏”,Tor browser的洋葱图标就会出现在ubuntu虚拟机的任务栏上,以后打开它就方便了。

还没完。打开Tor browser,先别急着连接,还需要设置一下代理。单击浏览器右上方的菜单,进入“设置”,点击左侧的“连接”,在右侧的“高级”选项中,找到“配置Tor浏览器联网方式”。单击后面的“设置...”。勾选“使用代理连接互联网”,代理服务器类型选择“socks5”,然后地址填写“127.0.0.1”,端口填入7890(注意不是7891,这有点奇怪,但就是如此)。单击确定。

这时候再点击“连接”,或者直接重新打开tor,尝试连接。正常情况下,在1分钟之内,就可以完成连接。

尝试打开youtube.com。你会发现,在打开的网站地址栏左侧,有一个3个节点的图标,点击它可以看到当前连接所经过的链路。通常来说,这3个节点分别经过3个不同的国家,并且10分钟切换1次,从而让你的网络痕迹无从追踪。

第一次打开任意网站时,Tor可能会提示你:“是否宣称你使用英文?”如果你的英文不错,那么建议按它的推荐来。宣称使用英文,可以令你的请求更好地隐藏。

4.3 配置视频编码器、IBus输入法

本质上,你已经成功实现了100%的匿名。但根据Ubuntu的版本不同,可能还需要两个额外的设置。

如果发现youtube上的在线视频无法在浏览器中播放,那么可能是系统中缺少ffmpeg模块。开始菜单打开终端,输入以下命令:

sudo apt update
sudo apt install ffmpeg
sudo apt install ubuntu-restricted-extras

这将安装一系列视频编码器,解决在线视频无法播放的问题。

屏幕顶端右侧有一个输入法切换图标,如果发现没有“中文-智能拼音”,那么需要手动安装一下IBus输入法:

sudo apt install ibus
sudo apt install ibus-libpinyin

之后切换到“中文-智能拼音”即可。可以在“首选项”中进一步设置输入法。可以绝对放心,IBus不会透露你输入的任何信息。

至此,大功告成。先别急着离开,让我们再复习一下安全守则。

5 安全守则

1、你的虚拟机中是完全不同的一个人,因此,他永远不会发布任何与你的真实身份有关的任何信息。

2、切勿让Windows记住虚拟机的全盘加密密码,也不要使用Windows中的国产输入法来输入虚拟机的密码。

3、在使用虚拟机时,最好关闭Windows宿主机上的微信、QQ。

4、不要在Ubuntu虚拟机中,访问任何境内主流网站,例如百度、知乎、微博、豆瓣等。

5、绝对不要在Ubuntu虚拟机中,登录任何你在Windows宿主机上或其他任意系统上登陆过的任何网站、服务的帐号。

6 你好,世界

仍然记得若干年前,当第一次实现100%匿名后,看着输入框中跳动的提示符,我首先感觉到的不是喜悦,而是疲惫与迷茫。历经“千辛万苦”走到这一步,却发现自己一时间不知道该说什么,就好像《肖申克的救赎》中服刑40年的瑞德,走出监狱大门,茫然四顾,不知该身往何方。

希望看完这篇文章的朋友,可以重拾自由,让紧闭一生的心灵,喑哑出重生后的第一句:你好,世界。