WireGuard

2020-08-21

有一天我发现,电脑菜单栏上的两个翻墙工具,图标恰好是一条龙和一只猫,不就是龙猫组合嘛。

翻墙这一件事,还用得着俩工具?它俩的使用场景不同,有互补性。我们今天就来讲讲 WireGuard。

WireGuard 是一个 VPN,它会把整个电脑的网络通信全部接管。比如你连的 VPN 服务器在日本,那么你电脑的网络流量全都会绕道日本。有些程序并不使用操作系统的网络代理,例如我用来下载 Instagram 资源的软件 4K Stogram,软件开发者不会考虑到有墙的存在。这时候 VPN 就派上用场了。

开启 VPN 后,所有流量都会绕道国外,显然不是最有效率的翻墙方式,所以第三方提供的翻墙服务,通常不是 VPN,而是 ShadowSocks, V2Ray, Trojan 这种通过设置系统网络代理来实现翻墙的。系统网络代理可以设置规则,只让被墙的网站走代理,就很智能,而且流量不会消耗的过快。行内管这种提供翻墙服务的供应商叫机场,他们往往有很多个节点,即使一部分结点挂了也无大碍。

但是,在某些极端敏感时期,机场有可能一架飞机都飞不起来,技术原因和技术之外的原因都有,属于不可抗力。这时候,有一台自己的海外服务器,翻墙方式又是相对小众的 WireGuard,是不是会安心很多。

WireGuard 在 VPN 领域是新人,但也诞生有几年了,而且进入了 Linux 内核,相比于机场使用的各种技术还是更稳定。看看大神 Linus Torvarlds 是怎么评价 WireGuard 的吧:

简单说,之前的 VPN 技术与 WireGuard 相比简直就是渣渣。如果你之前用过 VPN,一定知道连接过程是需要等待的。但 WireGuard 我用了这么久一直是秒连,说秒连都委屈它了,一秒都不用。

有了一键安装的脚本,让 WireGuard 在服务器上的安装不再复杂:

下载一键安装脚本,设置脚本权限:

wget --no-check-certificate -O /opt/wireguard.sh https://raw.githubusercontent.com/teddysun/across/master/wireguard.sh;
chmod 755 /opt/wireguard.sh;

脚本下载完成后,有两种安装方式。可先尝试从库安装,如果失败,可以尝试从源码编译安装:

从库安装:

/opt/wireguard.sh -r

从源码编译安装:

/opt/wireguard.sh -s

升级到最新版本:

/opt/wireguard.sh -u

安装完成后,会自动创建一个名为 wg0 的客户端配置。可以使用如下命令查看:

/opt/wireguard.sh -l

如果要新增一个客户端接口,执行以下命令:

/opt/wireguard.sh -a

在文字提示下,给新的客户端接口起一个名字,举例来说,你的笔记本电脑和手机都想通过 WireGuard 翻墙,不妨新建两个分别叫 xxx_laptop 和 xxx_phone.

新建完一个客户端接口之后,会在 /etc/wireguard/ 目录下创建两个文件,一个文本文件,一个二维码图片。它俩本质上是同一个东西,都是用于客户端配置。

在客户端创建 tunnel(也就是连接 VPN 服务器的通道),两种办法皆可,看哪个方便。

要特别说明的是,在苹果生态安装 WireGuard 客户端有些麻烦,因为在大陆的 AppStore 不允许上架,必须用外国的 AppleID 才下载得到。建议直接去淘宝购买海外 AppleID,非常便宜,比自己折腾划算很多。安装完之后,记得换回自己的 AppleID。至于买的这个 AppleID,建议把密码和密保信息都改一遍,这样就只有你能登录,以防淘宝卖家一号多卖。

END