AmneziaVPN 是可以完整私有化部署的 VPN 套件,是完全开源、免费的,源自俄语区(俄罗斯、吉尔吉斯斯坦等),据说缅北也流行🧟🧟♀。项目包括/集成了完整的服务端和经典 VPN GUI 客户端,支持 AmneziaWG、OpenVPN over Cloak、OpenVPN over Shadowsocks、Xray Reality 等当下抗封锁能力最佳的几种传输协议或其组合。Amnezia 包括 AmneziaVPN 和 AmneziaWG 两个核心子项目,AmneziaVPN 支持经典 VPN 必备的分割隧道、泄露保护开关(Killswitch)、数据清除等功能以及猎奇性质的创建暗网站点(Creating a site in the TOR network),并且支持所有的桌面、移动平台和路由器(仅OpenWRT)。总之,Amnezia 是一个免费、开源、易用、性能强劲、功能丰富的项目,不只是 VPN。本文在介绍 Amzenia 支持协议的基础上,将带你从零开始搭建专属于你自己的 VPN,不想折腾的建议订阅机场。
AmneziaVPN 是一款免费开源的多协议 VPN 客户端,具备设置自有 VPN 服务器的功能,换言之,即自托管 VPN。
AmneziaVPN is a free open-source multi-protocol VPN client with the function of setting up your own VPN server, or in other words self-hosted VPN.官方站点-Amnezia VPN
官方文档-Wiki
官方仓库-Github Repo,包括客户端、核心 AmneziaWG(基于原版 Wireguard 修改) 组件以及 fork 的 Cloak、Xray、OpenVPN 等项目。
特别提示,对于 VPN/Proxy 协议等涉及技术概念的内容不感兴趣的,不建议动手折腾此类工具,不如踏踏实实买个机场服务上上外网,这里推荐「嘀嗒云」。自己动手部署了的,也不建议到处分享,连接数是 GFW 检测分析的重要依据。
Amnezia支持的抗封锁协议
Amnezia 项目支持众多传输协议及其组合,包括了常见的 Wireguard、OpenVPN、Xray、Shadowsocks,其中最具吸引力的是 AmneziaWG、OpenVPN over Cloak。
AmneziaWG
Wireguard 又快又好,但官方实现很独特且极易检测。AmneziaWG 是流行 VPN 协议 WireGuard 的现代版本,是 WireGuard-Go 的一个分支,提供了防止深度包检测(DPI)系统识别的保护,同时保留了原版的简洁架构和高性能。AmneziaWG 通过采用混淆方法解决了 Wireguard 易于检测的问题,使其流量能够与常规互联网流量无缝融合,使其成为寻求快速且隐秘 VPN 连接用户的绝佳选择。官方也给出了如下建议。
我们不建议在审查严格的国家使用未进行流量伪装的 OpenVPN、WireGuard®、IKEv2 协议,因为您的 VPS IP 地址可能会被封锁。为避免封锁,请仅使用 AmneziaWG。
We do not recommend using OpenVPN, WireGuard®, IKEv2 protocols without traffic masking in countries with high levels of censorship, as your VPS IP address may be blocked. To avoid blocking, use only AmneziaWG.
在早期 AmneziaWG Repo 中概要描述了对原版 WireGuard 实现的部分修改细节,较新版本的 README 和现有公开文档已略去了这些内容,大致可归纳如下:
- 数据包大小
DPI 监控识别 WireGuard 协议的第一种方式是通过握手启动阶段使用的独特数据包大小。
在加密通信中,握手仅仅是通信双方建立安全连接以交换加密密钥的步骤。使用 AmneziaWG,可以在握手启动前发送诱饵或“垃圾”数据包,这些数据包的数量和长度可以自定义并进行配置。此外,还可以在握手启动和响应消息前添加诱饵字节,使得连接更难以被识别。简言之,通过微弱的开销,AmneziaWG 避免了原版 WireGuard 数据包序列过于整齐的“问题”。
- 报头
通过 DPI 识别 WireGuard 的第二种方法是利用加密数据包的独特头部类型。默认情况下,WireGuard 的数据包共享相同的头部格式,这意味着不同用户的加密流量可以被识别为使用相同的加密协议。
仅仅修改头部填充内容和长度,很多独立开发者都可以轻松实现。使用 AmneziaWG,四种头部类型值可以重新映射为替代值,以增加进一步的复杂性。实际上,类型值映射意味着不同的 AmneziaWG 连接具有不同的头部值,使得基于通用头部结构将不同数据包关联起来的企图变得极为困难,无法关联,状态检测(Stateful-inspection)就无从入手。但是,尽管添加诱饵数据包仅需客户端更改,但标头类型值的重新映射和握手消息的修改要求客户端和服务器采用相同配置。AmneziaVPN 支持丰富的配置文件格式,具体配置内容参考官方文档。
OpenVPN over Cloak
OpenVPN 不做介绍,「Cloak」也是一个针对抗封锁和屏蔽而生的开源隧道项目,可以和任何传输协议搭配,并将其封装“整形”为标准的 https 流量。Cloak 在外网比较流行,在于其广泛支持 OpenVPN、Shadowsocks 甚至 Tor 网络,并不关心性能上的损失,以通用性和标准化为实现目的。
Red Alert
Amnezia 提供了获取免费服务器节点的服务,可通过 telegram bot 请求免费的 VPN 访问密钥,并粘贴在客户端使用免费、不限流量的 VPN 服务,但极度不建议作死使用免费节点。AmneziaVPN 的免费服务器节点由社区成员分享,其中包括缅甸服务器。涉及个人隐私信息和数字资产务必高度谨慎,贪图小便宜者会死得很惨。
第 1 步-VPS 的准备
VPS 可以在 AWS、Azure、GCP、Linode/akamai、DO、Vultr、OVHCloud、Hetzner 等大厂中选择,作者更建议之前介绍过的 Netcup(0.84欧元/月)、Upcloud(受邀新人赠送 25 欧元并按小时计费)、Atlantic(新用户免费 1 年2c4g VPS,按小时计费) 这些规模稍小但历史悠久、稳定可靠的云服务厂商。对于很多提供港台、新加坡、日本等地云服务器的小分销商,是没有 SLA(Service Level Agreement)可言的,对价格极度敏感、不在乎跑路或时不时失联一下的可以买来当盲盒开。
「Atlantic」
美国、加拿大、英国、新加坡等地数据中心可选,100% 可用性 SLA 承诺,G3.2GB(1c2g 4t/m)、G3.4GB(2c4g 5t/m)两种规格任选其一,均可免费使用 12 个月,国内双币信用卡可用,需要较严格的身份审核。参考往期博文「开通一年免费、250美元赠金的Atlantic VPS」、「Atlantic 免费套餐再度升级」。
「Upcloud」
美国、芬兰、新加坡、法国等 13 个国家数据中心可选,最低规格的 VPS(Developer) 提供 99.99% 可用性 SLA 承诺,新用户使用赠送的 25 欧元积分抵扣,实际年付 11 欧元可得无限流量的新加坡 Developer 主机(1c1g1000Mbps)1 台,中国移动直连,VPS 按小时计费。支持国内双币信用卡,如遇信用卡验证问题,可发送邮件至 abuse@upcloud.com 完成验证。参考往期博文「Upcloud-SG移动直连无限流量」。
「Netcup」
德国纽伦堡、奥地利维也纳、美国堪萨斯等数据中心可选,提供 99.9% 可用性的 SLA 承诺。产品覆盖从最低的 0.84 欧元/月的 piko G11s 12m 到性能强悍的 RS1000-16000 G11 系列,总能找到符合需求的。具体开通和购买可参考往期博文「Netcup注册与秒批指南」。
Amnezia 自动部署服务端同时支持密码和密钥验证,但建议开通 VPS 后,对于 AWS、GCP、Upcloud 等厂商,修改 ssh 验证方式为密码验证并允许 root 登录,同时,记住 ssh 密码和 VPS IP 地址。
除 atlantic 外,upcloud、netcup 均可在后台管理面板中配置防火墙,默认防火墙或关闭、或没有任何过滤规则。以下为开通 vps 后的初始化配置。
apt update -y && apt upgrade -y #开启原生BBR echo "net.core.default_qdisc=fq" >> /etc/sysctl.conf echo "net.ipv4.tcp_congestion_control=bbr" >> /etc/sysctl.conf sysctl -p #安装ufw并开放ssh apt install ufw -y ufw allow 22/tcp ufw enable
第 2 步-下载安装 Amnezia 客户端
Amnezia 客户端是可选的,可以使用官方提供的 AmneziaVPN 以适配多数支持的协议,也可以使用其他客户端仅适配某一个/类协议。例如,如果只使用 AmneziaWG 协议,Windows、移动端上可以下载、使用 AmneziaWG 客户端;如果只使用 OpenVPN over Cloak,则可以使用 ck-client-windows,也可以采用官方的 Amnezia VPN+Shadowsocks 方案;如果只是用 Xray reality,那么可用的客户端非常丰富,包括 shadowrocket 在内的一众客户端都可以直接使用。
客户端可选,那么服务端呢?
Amnezia 支持通过官方客户端(Amnezia Client)创建、部署 VPN 服务,不需要手动在 VPS 上进行安装、配置。也就是说,用户下载、安装客户端后,在客户端中远程连接 VPS,由 Amnezia 自动远程安装必要的服务端工具并完成配置。在此之后,用户可以使用其他的工具连接服务端/节点并使用 VPN 服务。这里以 Windows 下的 AmneziaVPN 客户端为例,下载、安装并配置 VPN 服务。
在官方仓库「Release 页面」下载对应的版本安装即可。
第3步-通过客户端远程配置服务端
安装完成后,AmneziaVPN将自动运行。在『Connection』 页面选择『Self-hosted VPN』,在『Configure your server』输入 VPS IP、ssh用户名(默认 root)、ssh 密码或密钥,点击『Continue』后,选择所在地区的互联网封锁控制等级(Low/低 或 High/高),默认为 High,将远程登录、连接 VPS,安装、配置、启动容器化的 AmneziaWG 服务端工具 。如果选择 Low,则安装原版 Wireguard。
稍等片刻,等待远程安装、部署完成后,客户端会自动切换到连接界面(首页)。在这里,我们可以点击下方的齿轮图标,进行配置。首先,我们将界面语言修改为简体中文。选择『Application』配置项,在选择『Language』 ,修改为简体中文,界面显示即时生效。 回到连接界面(首页),点击『连接』就可以连接上我们刚购买的 VPS,并以该 VPS 为代理服务节点访问外网了。
其他配置
在 Amnezia VPN 客户端,主要包括服务器、连接、应用等 3 项配置。
服务器配置
除推荐的 AmneziaWG 外,我们还可以远程在服务端安装 Xray Reality、OpenVPN over Cloak、OpenVPN over Shadowsocks 等。这里,我们建议额外安装 Xray with reality,国内不同地区的运营商往往会对 UDP 协议跨境流量进行限流限速甚至屏蔽,使用基于 TCP 的 Reality 可以解决这一问题,尽管会慢一些。
另外,希望自建 DNS 以避免受 DNS 污染的小伙伴也可以『服务』项下,远程部署专属 DNS 服务。当然,也可以通过 amnezia 搭建私有socks5 代理或 onion 站点,对应于一些游戏、web3 需求。
连接配置
只有部署了专属 DNS 服务,连接配置中的『使用 AmneziaDNS』才会生效。在没有自建 DNS 服务的前提下,可以指定 DNS 服务器,默认为 google dns。同时,Amnezia VPN 提供了两种直观的隧道分割方式:基于网站和基于应用,可以分别理解为按照访问的目标站点/应用和按照本地的发起应用程序对流量进行分支处理。
在远程服务端,所有安装的协议、DNS 组件等都是以容器存在的,如果连接或名称解析出现问题,应检查端口开放情况。
Amnezia VPN 是开源的,提供了包括其核心组件 AmneziaWG ,因此,高级用户可以在 VPS 上手动部署 AmneziaWG 二进制程序,大致部署方法和 Wireguard 并无区别,但在配置文件方面需要结合自身需求和网络环境进行适当调整,我们后续再进行部署过程演示和关键参数的说明。
更多精彩,敬请关注「老E 的博客」!
文章评论