V2ray从零开始实现科学上网00: 配置VPS
由于国内网络环境的影响, 获取一些国外技术资讯, 需要科学上网技术, 在此记录一下自己在这方面的学习历程吧
目前, 主流的科学上网方式有两种, 一种是加密, 一种是伪装
加密的方式, 稍微接触过一点科学上网的人, 应该都非常熟悉, 例如: vmess 就是一种加密协议, 但是缺点是流量没有特征, 容易被 GFW 封禁. 为什么呢? 因为没有特征其实就是最大的特征, 什么人会用完全没有特征的流量呢? 不言自明~
这系列博文, 介绍的科学上网方案, 具有以下特点:
- 外表是互联网上非常常见的协议, 实现为: tls+websocket+vmess, 外部特征为https
- 可以在搭建翻墙方案时, 顺便搞一个反向代理, 自己写了其他测试应用, 直接丢到VPS, 通过web server来访问自己的测试应用, 因为web server 一般都套了一层tls, 省得为不同应用搞安全方案了
- 使用docker部署, 未来可能会改为docker compose, 方便在不同机器上进行部署
- (可选) 如果你不信任自己的VPS提供商, 担心会被记录访问站点, 可以用第一层VPS做跳板, 跳转到第二层VPS
最好的方式其实是将自己藏匿于人群中, 你可以使用明面上的 https 流量, 域名指向你的网站, 但是, 接收到你的请求的 web 服务器会从你的请求 URL 中判断(URL 是不会被 GFW 查看到的, 例如: 你的网站是: mydomain.com, 请求 URL 是: /say, 那么这个/say 是不会被 GFW 查看到的, 可以知晓的仅仅是: mydomain.com, 为什么呢? 因为 client 在建立 TLS 连接的时候, 仅仅暴露了目标域名, 如果连目标域名都不想暴露的话, 就得使用 ESNI , 可惜, 国内目前不支持ESNI), 你到底是想要查看自己的网站, 还是想访问特定的 web app, web server 会根据你的 URL 来判断, 有疑惑的话, 随便抓一个https网站的包验证一下😂)
流程图如下:
过程如下:
本地设备与 Web 服务器建立 TLS 连接, Web 服务器通过查看设备的 URL, 将请求转发至不同的 App, App具体做什么由你控制, 比如说: 你可以设置: /free
这个URL作为翻墙应用, /blog
这个URL作为你的博客应用, /msg
这个URL作为你的消息通知机器人应用(例如: telegram 中的一些API组合起来做消息机器人), /
这个URL作为你的主站点应用.
挑选VPS
首先, 你需要挑选一个好用的VPS, 如何判断VPS是否好用呢?
主要用以下几个工具判断:
- tcping
- traceroute
- mtr
- scp
tcping
tcping是一款类似ping的工具, 不同的是: ping测试的是ICMP协议, 而tcping测试的是TCP协议
代码地址: tcping , 可以判断延迟 && 特定端口是否被封
traceroute
traceroute可以查看数据包由本地设备发往目的设备的过程中, 经过的网关节点的延时
mtr
mtr是一款可以查看数据包在由本地设备发往目的设备的过程中, 查看丢包率等数据
scp
scp 是通过ssh协议传输文件的工具, 使用他, 你可以测试从VPS下载文件到本地的速度, 当然, 如果你是公网IP, 也可以测试从本地设备上传文件到VPS的速度, 不过现如今公网IP不多了吧, 所以… 上传测试的话, 还是用speedtest吧(注意通过代理访问)
部署VPS
然后, 就可以开始部署VPS啦
新的VPS到手, 激动的心情过后, 需要做的事情, 还是不少滴, 参考digitalocean的这篇文章: Initial server setup
添加新用户
绝大多数情况下, 不建议直接使用root用户来操作, 而是使用处在sudo用户组中的用户来操作
|
|
使用SSH pubkey连接服务器
|
|
设置UFW rules
|
|
安装Docker环境
官方的Docker安装教程在此: Install Docker, 以Ubuntu环境为例:
|
|
总结
防火墙规则的添加和sshd_config的修改主要是为了VPS的安全性着想, 你实在是无法想象服务器每天要被探测多少次🤣(看一眼sshd.service的status和log会让你有所感触), 这只是最基本的防护手段, 还有一些监测系列, 以后再发吧.