WireGuard – 让被墙IP的VPN重新复活的强大工具

首先感谢逗逼根据地提供的教程

WireGuard简单介绍

注意:WireGuard 是通过 UDP 协议传输数据的,这意味着它可以搭建在被墙的服务器上使用,复活被墙IP

同时:因为是 UDP 传输的,所以也不怕被墙,锐速、BBR 这类TCP加速工具也不会对其起到加速作用。

另外:如果你当地运营商对海外 UDP 链接进行 QOS 限速,那么速度可能不如使用 TCP 链接的代理软件理想。

至于该 VPN 是否容易被GFW针对封锁,目前还不得而知,至少目前 WireGuard 连 1.0 正式版都不算。

更少的代码

相比于 OpenVPN 、 IPSec 的几十万行代码,WireGuard 只有短短的四千行。

更容易部署

对于初次接触的人来说,相比于其他VPN协议,WireGuard 更容易部署。

更安全的加密

Curve25519 目前最高水平的秘钥交换算法。

ChaCha20 对称加解密算法,比 AES 更快更高效。

Poly1305 是一种 MAC (Message Authentication Code) 标准,用于验证数据的完整性和消息的真实性。

BLAKE2 一种更安全的 HASH 算法(类似的有 SHA1, SHA256, MD5)

SipHash24 另一种 HASH 算法。

HKDF 一种秘钥衍生算法。

Linux之父的评价:

Linus Torvalds, on the Linux Kernel Mailing List:
Can I just once again state my love for it and hope it gets merged soon? Maybe the code isn’t perfect, but I’ve skimmed it, and compared to the horrors that are OpenVPN and IPSec, it’s a work of art(它是一件艺术品).

官方网站:https://www.wireguard.com/


再多的我也编不出来了,大家凑活着看吧。

目前该地区对 VPN 的封锁日益加重,就连 Cisco AnyConnect VPN 思科VPN都在逐渐被干扰(前段时间开始不少人向我反馈频繁断开连接 和 干脆连不上),所以对 VPN 有需求的可以考虑一下 WireGuard ,而且WireGuard 还比 思科VPN配置简单,不需要导入证书什么的。

因为其链接特性,所以 WireGuard 有很好的稳定性,无论你怎么切换网络 或者 网络波动导致断开后,往往可以很快恢复链接,所以如果拿来加速游戏的话,可能效果不错(当然前提是你的代理服务器也要网络不错)。


前提要求

系统要求:Debian 8 / 9、Ubuntu 14.04 / 16.04 / 18.04 / 18.10

服务器要求:OpenVZ 虚拟化的服务器不支持安装该VPN,其他虚拟化均可。

如果担心出错,那么我推荐 Debian9、Ubuntu16.04 / 18.04 / 18.10 系统,这些较新的系统更不容易出错,相对来说 Ubuntu 系统安装更方便!

注意:如果你用的是 Vultr、DO,且你本地没有 IPv6 地址,那就不要勾选 Enable IPv6 ,否则可能客户端链接时可能会出错。

另外,请确保你的系统是纯净的,建议重装系统后直接开始本教程!

CentOS7 系统可以参考下官方给的安装代码,至于后面的配置步骤什么的全系统通用。因为时间有限,所以我目前只测试了各个 Debian Ubuntu 系统,有空的话我测试下 CentOS7,补充下手动教程。

Debian安装步骤

安装内核

首先,Debian 无论是哪个系统,默认往往都没有 linux-headers 内核,而安装使用 WireGuard 必须要这货,所以我们需要先安装:

# 更新软件包源

apt update

# 安装和 linux-image 内核版本相对于的 linux-headers 内核

apt install linuxheaders$(uname r) y

# 以下为示例内容(仅供参考)

# Debian8 安装前内核列表(空)

root@doubi:~# dpkg -l|grep linux-headers

# 空,没有任何输出

# Debian8 安装后内核列表(注意这里的版本号 可能不一样)

root@doubi:~# dpkg -l|grep linux-headers

ii linuxheaders3.16.06amd64 3.16.572 amd64 Header files for Linux 3.16.06amd64

ii linuxheaders3.16.06common 3.16.572

# Debian9 安装前内核列表(空)

root@doubi:~# dpkg -l|grep linux-headers

# 空,没有任何输出

# Debian9 安装后内核列表(注意这里的版本号 可能不一样)

root@doubi:~# dpkg -l|grep linux-headers

ii linuxheaders4.9.07amd64 4.9.1103+deb9u2 amd64 Header files for Linux 4.9.07amd64

ii linuxheaders4.9.07common 4.9.1103+deb9u2 all Common header files for Linux 4.9.07

# 以上为示例内容(仅供参考)

安装WireGuard

然后我们就可以开始安装 WireGuard 了。

# 添加 unstable 软件包源,以确保安装版本是最新的

echo “deb http://deb.debian.org/debian/ unstable main” > /etc/apt/sources.list.d/unstable.list

echo e ‘Package: *\nPin: release a=unstable\nPin-Priority: 150’ > /etc/apt/preferences.d/limitunstable

# 更新一下软件包源

apt update

# 开始安装 WireGuard ,resolvconf 是用来指定DNS的,旧一些的系统可能没装。

apt install wireguard resolvconf y

Ubuntu安装步骤

配置PPA

首先如果你是 Ubuntu 14.04 系统,那么请先安装 PPA:

# 以下步骤仅限 Ubuntu 14.04 系统执行

apt update

apt install softwarepropertiescommon y

安装完成后,我们还需要通过 PPA 工具添加 WireGuard 源:

addaptrepository ppa:wireguard/wireguard

# 执行后提示如下示例内容(仅供参考):

root@doubi:~# add-apt-repository ppa:wireguard/wireguard

WireGuard is a novel VPN that runs inside the Linux Kernel. This is the Ubuntu packaging for WireGuard. More info may be found at its website, listed below.

More info: https://www.wireguard.com/

Packages: wireguard wireguardtools wireguarddkms

Install with: $ apt install wireguard

For help, please contact

More info: https://launchpad.net/~wireguard/+archive/ubuntu/wireguard

Press [ENTER] to continue or ctrlc to cancel adding it

# 这里会提示你是否继续,点击 回车键 继续,点击 Ctrl+C 键退出。

# 然后输出大概如下内容。

gpg: keyring ‘/tmp/tmp8bgitjjx/secring.gpg’ created

gpg: keyring ‘/tmp/tmp8bgitjjx/pubring.gpg’ created

gpg: requesting key 504A1A25 from hkp server keyserver.ubuntu.com

gpg: /tmp/tmp8bgitjjx/trustdb.gpg: trustdb created

gpg: key 504A1A25: public key “Launchpad PPA for wireguard-ppa” imported

gpg: Total number processed: 1

gpg: imported: 1 (RSA: 1)

OK

# 以上为输出示例内容(仅供参考)

安装WireGuard

然后我们就可以开始安装 WireGuard 了。

# 更新一下软件包源

apt update

# 开始安装 WireGuard ,resolvconf 是用来指定DNS的,旧一些的系统可能没装。

apt install wireguard resolvconf y

验证是否安装成功

当你通过上面的步骤安装完后,请用下面的代码验证一下是否安装成功。

lsmod | grep wireguard

# 执行该代码后,提示大概如下示例内容(仅供参考),第一行是必须要有的,至于下面的两行不同系统似乎还不一样,但是不影响使用。

root@doubi:~# modprobe wireguard && lsmod | grep wireguard

wireguard 212992 0

ip6_udp_tunnel 16384 1 wireguard

udp_tunnel 16384 1 wireguard

配置步骤

生成密匙对

当你确定安装成功后,就要开始配置服务端和客户端的配置文件了。放心,这很简单。

# 首先进入配置文件目录,如果该目录不存在请先手动创建:mkdir /etc/wireguard

cd /etc/wireguard

# 然后开始生成 密匙对(公匙+私匙)。

wg genkey | tee sprivatekey | wg pubkey > spublickey

wg genkey | tee cprivatekey | wg pubkey > cpublickey


查看主网卡名称

先查看一下你的主网卡名是什么:

ip addr

# 执行命令后,示例如下(仅供参考),lo 是本地环回 忽略,eth0 就是主网卡名了。

# 写着你的服务器外网IP的(下面 X.X.X.X 处),就是你的主网卡,NAT的服务器则是显示内网IP。

# 如果你拿不准哪个网卡是主网卡,请留言询问。

1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1

link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00

inet 127.0.0.1/8 scope host lo

valid_lft forever preferred_lft forever

inet6 ::1/128 scope host

valid_lft forever preferred_lft forever

2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000

link/ether 00:16:3c:cf:89:73 brd ff:ff:ff:ff:ff:ff

inet X.X.X.X/25 brd 255.255.255.255 scope global eth0

valid_lft forever preferred_lft forever

生成服务端配置文件

接下来就开始生成服务端配置文件:

# 井号开头的是注释说明,用该命令执行后会自动过滤注释文字。

# 下面加粗的这一大段都是一个代码!请把下面几行全部复制,然后粘贴到 SSH软件中执行,不要一行一行执行!

echo “[Interface]

# 服务器的私匙,对应客户端配置中的公匙(自动读取上面刚刚生成的密匙内容)

PrivateKey = $(cat sprivatekey)

# 本机的内网IP地址,一般默认即可,除非和你服务器或客户端设备本地网段冲突

Address = 10.0.0.1/24

# 运行 WireGuard 时要执行的 iptables 防火墙规则,用于打开NAT转发之类的。

# 如果你的服务器主网卡名称不是 eth0 ,那么请修改下面防火墙规则中最后的 eth0 为你的主网卡名称。

PostUp = iptables -A FORWARD -i wg0 -j ACCEPT; iptables -A FORWARD -o wg0 -j ACCEPT; iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE

# 停止 WireGuard 时要执行的 iptables 防火墙规则,用于关闭NAT转发之类的。

# 如果你的服务器主网卡名称不是 eth0 ,那么请修改下面防火墙规则中最后的 eth0 为你的主网卡名称。

PostDown = iptables -D FORWARD -i wg0 -j ACCEPT; iptables -D FORWARD -o wg0 -j ACCEPT; iptables -t nat -D POSTROUTING -o eth0 -j MASQUERADE

# 服务端监听端口,可以自行修改

ListenPort = 443

# 服务端请求域名解析 DNS

DNS = 8.8.8.8

# 保持默认

MTU = 1420

# [Peer] 代表客户端配置,每增加一段 [Peer] 就是增加一个客户端账号,具体我稍后会写多用户教程。

[Peer]

# 该客户端账号的公匙,对应客户端配置中的私匙(自动读取上面刚刚生成的密匙内容)

PublicKey = $(cat cpublickey)

# 该客户端账号的内网IP地址

AllowedIPs = 10.0.0.2/32″|sed ‘/^#/d;/^\s*$/d’ > wg0.conf

# 上面加粗的这一大段都是一个代码!请把下面几行全部复制,然后粘贴到 SSH软件中执行,不要一行一行执行!

多用户教程:

简单说明

其实 WireGuard 的多用户配置特别简单,只需要生成一对客户端密匙(公匙+私匙),在服务端配置文件中新增一段 [Peer] 写上新的客户端公匙和客户端的内网IP地址即可。

当然我们可以用命令快捷添加,或者手动修改服务端配置文件也行。

而各客户端账号配置文件的区别也只是 [Interface] 中的客户端私匙和客户端内网IP地址不同罢了。


另外我们需要明白一个对等原则:

  • 服务端配置文件中的 [Interface] 是保存自己的服务端私匙,而客户端配置文件中的 [Interface] 同样保存自己的客户端私匙。
  • 服务端配置文件中的 [Peer] 是保存客户端的公匙,而客户端配置文件中的 [Peer] 是保存服务端的公匙。
  • 即,服务端与客户端都是互相保存自己的私匙在 [Interface] 中,互相保存对方公匙在 [Peer] 中。

服务端配置文件添加用户

以下步骤是动态添加客户端配置(以下配置前提是你已经配置过 WireGuard 配置文件并启动了)。

你也可以手动修改配置文件 [/etc/wireguard/wg0.conf],记得修改完重启一下。以下动态添加无需重启。

# 重新生成一对客户端密匙

# cprivatekey1 为客户端私匙,cpublickey1 为客户端公匙

wg genkey | tee cprivatekey1 | wg pubkey > cpublickey1

# 服务器上执行添加客户端配置代码(新增一个 [peer]):

# $(cat cpublickey1) 这个是客户端公匙,10.0.0.3/32 这个是客户端内网IP地址,按序递增最后一位(.3),不要重复

wg set wg0 peer $(cat cpublickey1) allowedips 10.0.0.3/32

然后查看 WireGuard 状态:

wg

# 执行命令后输出内容如下(仅供参考,下面的不是让你执行的命令):

interface: wg0

public key: xxxxxxxxxxxxxxxxx #服务端私匙

private key: (hidden)

listening port: 443

peer: xxxxxxxxxxxxxxxxxxxx #旧客户端账号的公匙

allowed ips: 10.0.0.2/32 #旧客户端账号的内网IP地址

peer: xxxxxxxxxxxxxxxxxxxx #新客户端账号的公匙

allowed ips: 10.0.0.3/32 #新客户端账号的内网IP地址

# 以上内容仅为输出示例(仅供参考)

如果显示正常,那么我们就保存到配置文件:

wgquick save wg0

然后我们就要开始生成对应的客户端配置文件了。

生成对应客户端配置文件

新客户端配置文件,和其他客户端账号的配置文件只有 [Interface] 中的客户端私匙、内网IP地址参数不一样。

# 井号开头的是注释说明,用该命令执行后会自动过滤注释文字。

# 下面加粗的这一大段都是一个代码!请把下面几行全部复制,然后粘贴到 SSH软件中执行,不要一行一行执行!

echo “[Interface]

# 客户端的私匙,对应服务器配置中的客户端公匙(自动读取上面刚刚生成的密匙内容)

PrivateKey = $(cat cprivatekey1)

# 客户端的内网IP地址(如果上面你添加的内网IP不是 .3 请自行修改)

Address = 10.0.0.3/24

# 解析域名用的DNS

DNS = 8.8.8.8

# 保持默认

MTU = 1420

[Peer]

# 服务器的公匙,对应服务器的私匙(自动读取上面刚刚生成的密匙内容)

PublicKey = $(cat spublickey)

# 服务器地址和端口,下面的 X.X.X.X 记得更换为你的服务器公网IP,端口请填写服务端配置时的监听端口

Endpoint = X.X.X.X:443

# 因为是客户端,所以这个设置为全部IP段即可

AllowedIPs = 0.0.0.0/0, ::0/0

# 保持连接,如果客户端或服务端是 NAT 网络(比如国内大多数家庭宽带没有公网IP,都是NAT),那么就需要添加这个参数定时链接服务端(单位:秒),如果你的服务器和你本地都不是 NAT 网络,那么建议不使用该参数(设置为0,或客户端配置文件中删除这行)

PersistentKeepalive = 25″|sed ‘/^#/d;/^\s*$/d’ > client1.conf

# 上面加粗的这一大段都是一个代码!请把下面几行全部复制,然后粘贴到 SSH软件中执行,不要一行一行执行!

接下来你就可以将这个客户端配置文件 [/etc/wireguard/client.conf] 通过SFTP、HTTP等方式下载到本地了。

不过我更推荐,SSH中打开显示配置文件内容并复制出来后,本地设备新建一个文本文件 [xxx.conf] (名称随意,后缀名需要是 .conf) 并写入其中,提供给 WireGuard 客户端读取使用。

cat /etc/wireguard/client.conf

服务端配置文件删除用户

要删除呢也很简单,首先你需要知道你要删除用户的客户端公匙(例如上面刚刚生成的 cpublickey1)。

当然,你也可以手动打开配置文件删除,记得修改后重启。下面的动态删除无需重启。

wg set wg0 peer $(cat cpublickey1) remove

# 如果客户端公匙文件还在,那么可以执行这个命令删除。

# 注意:该命令执行后,就可以跳过下面这段命令了,直接保存配置文件即可。

——————————————

# 如果客户端公匙文件已删除,那么可以通过 wg 命令看到客户端的公匙:

wg

# 执行命令后输出内容如下(仅供参考,下面的不是让你执行的命令):

interface: wg0

public key: xxxxxxxxxxxxxxxxx #服务端私匙

private key: (hidden)

listening port: 443

peer: xxxxxxxxxxxxxxxxxxxx #客户端账号的公匙

allowed ips: 10.0.0.2/32 #客户端账号的内网IP地址

peer: xxxxxxxxxxxxxxxxxxxx #客户端账号的公匙

allowed ips: 10.0.0.3/32 #客户端账号的内网IP地址

# 以上内容仅为输出示例(仅供参考)

# 复制你要删除的客户端账号的公匙(peer 后面的字符),替换下面命令中的 xxxxxxx 并执行即可

wg set wg0 peer xxxxxxx remove

# 执行后,我们在用 wg 命令查看一下是否删除成功。

如果删除成功,那么我们就保存到配置文件:

wgquick save wg0

其他剩余其他操作:

# 赋予配置文件夹权限

chmod 777 R /etc/wireguard

# 打开防火墙转发功能

echo 1 > /proc/sys/net/ipv4/ip_forward

echo “net.ipv4.ip_forward = 1” >> /etc/sysctl.conf

sysctl p

启动WireGuard

wgquick up wg0

# 执行命令后,输出示例如下(仅供参考)

[#] ip link add wg0 type wireguard

[#] wg setconf wg0 /dev/fd/63

[#] ip address add 10.0.0.1/24 dev wg0

[#] ip link set mtu 1420 dev wg0

[#] ip link set wg0 up

[#] resolvconf -a tun.wg0 -m 0 -x

[#] iptables -A FORWARD -i wg0 -j ACCEPT; iptables -A FORWARD -o wg0 -j ACCEPT; iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE

# 如果此处没有报错:RTNETLINK answers: Operation not supported,且输入内容差不多,那么说明启动成功了!

WireGuard —— Windows/Android 客户端简单使用教程

目前 WireGuard 还只有个 Android 版的官方客户端,而 Windows 和 Android(另一个) 以及 IOS 客户端都是由第三方(TunSafe)制作(开源)的。至于 Mac 和 Linux 都还没有可视化的程序,只能命令行方式使用。

因为我只有 Windows 和 Android 设备,所以本教程为:Windows Android 客户端简单使用教程。

IOS 官方版客户端(TestFlight 测试中):https://testflight.apple.com/join/63I19SDT

IOS TunSafe版客户端(TestFlight 测试中):https://testflight.apple.com/join/9gbYAJLB

 


TunSafe 提供的免费 WireGuard 账号:https://tunsafe.com/vpn

打开网页后选择你想要的服务器地区,然后点击绿色的 [Generate and Download] 按钮下载配置文件,导入客户端即可,手机客户端可以扫描二维码(点击下载按钮后显示)。

下载

下载稳定版安装包:https://tunsafe.com/downloads/TunSafe-1.4.exe

下载测试版安装包:https://tunsafe.com/downloads/TunSafe-1.5-rc1.exe

测试版相比稳定版修复了一些问题、新增了一些功能,但是没有经过大量稳定测试,有兴趣可以尝试下。

随着时间的变化,以上下载链接可能不再是最新版本,所以可能需要去官方下载页面 下载(第一个或第二个绿色按钮 Download TunSafe X.X Installer)。


这个客户端也有绿色版,去上面的官方下载页面根据你的系统位数选择下载压缩包:

  1. TunSafe X.X Standalone Zip for 64-bit systems (x64, Windows 7 or later, 206 kB)
  2. TunSafe X.X Standalone Zip for 32-bit systems (x86, Windows 7 or later, 177 kB)

当然绿色版就需要你手动安装 TAP 虚拟网卡了:

  1. Standalone TunSafe-TAP Installer 9.21.2 (Windows 7 or later, 178 kB)

 


安装

下载后,右键 [以管理员方式运行] 安装程序,然后如下图所示开始安装:

04t8oze

上图是使用条款,直接点击 [I Agree] 按钮继续。

下图是选择要安装的程序,客户端自身 和 TAP虚拟网卡程序,默认全部勾选,点击 [Next >] 按钮继续。

biwrn0vd

下图,选择安装目录后,点击 [Install] 按钮开始安装。

然后等待安装完成,安装过程中可能会因为涉及到安装虚拟网卡,系统会提示你要安装设备软件,记得勾选左下角的 [信任xxx….] ,然后点击 [安装] 按钮。

ed10rbsb-2

 


使用

安装完成后,会直接启动软件,软件整体如下图所示。

h9tx8ooa

我们点击 File – Import File 选项,就会提示你选择客户端配置文件(如下多个图演示)。

当然你也可以点击 File – Browse in Explorer 选项,会直接打开该VPN客户端的客户端配置文件存放目录,你将你的客户端配置文件(xx.conf)复制过去就行了。

注意:配置文件名即为VPN客户端服务器列表中显示的名称,例如 client.conf 显示为 client ,可以自己修改。

lrxvmpl-3

ompsr1hj

rgt18cei-2

添加完后,我们选择 client 这个我们刚刚添加的VPN客户端配置,然后点击右侧的 [Connect] 按钮(下图是点击后的,所以按钮变成了 [Reconnect] ,即重新链接)。[Disconnect] 按钮代表停止链接。

该软件的托盘菜单中也有 [Connect]、[Reconnect]、[Disconnect] 选项。

点击右侧的 [Edit Config] 按钮即可编辑当前配置文件。

u1mzmpah

另外,软件 Options – Service Mode 中的选项分别对应的是:

  1. Don’t Use a Service – 不使用服务
  2. Foreground Mode (Close connection when closing TunSafe) – 前台模式(关闭TunSafe时关闭连接)
  3. Background Mode (Stay connected when closing TunSafe) – 后台模式(关闭TunSafe时保持连接状态)
  4. Resume Connection when Windows Starts – Windows启动时自动连接
  5. Minimize to Tray when Windows Starts – Windows启动时最小化到托盘

 


Android 官方版客户端

下载安装

Google Play地址:https://play.google.com/store/apps/details?id=com.wireguard.android

逗比云地址:https://yun.doubibackup.com/?dir=科学上网/Android/WireGuard


使用方法

打开客户端后,一片空白,我们点击右下角的 [+加号蓝色] 按钮,可以看出弹出几个添加配置的选项,分别是:

  1. 选择客户端配置文件
  2. 扫描二维码
  3. 创建文件

推荐前两种。

第一种就是将客户端配置文件传到手机上,然后选择配置文件就行了(配置文件名不要包含中文)。

第二种即你去找个生成二维码图片的网站,复制你的客户端配置文件内容去这些网站将其生成为二维码,然后手机扫描二维码即可添加成功,添加时会提示你要给该配置文件起个名字。

rgt18cei-3

下图的 ubuntu14.04 配置选项就是我添加的,点击配置名称即可看到配置详情,而点击配置名称右侧的 [开关] 选项,即可链接该服务器。

h9tx8ooa-2
lrxvmpl-4

配置不走VPN的应用

我们点击配置名称看到配置详情后,点击右上角的 [铅笔] 按钮,即可修改配置信息,其中有个 [0 EXCLUDED APPLICATIONS] 选项,点击后就可以 勾选 不走VPN的应用。

u1mzmpah-2

 


Android TunSafe版客户端

相比官方版客户端,TunSafe 版只是自带了30天免费的服务器账号(1天1GB),所以你觉得哪个好用就用哪个。


下载安装

Google Play地址:https://play.google.com/store/apps/details?id=com.tunsafe.app

逗比云地址:https://yun.doubibackup.com/?dir=科学上网/Android/TunSafe VPN


使用方法

打开客户端后,可以看到如下界面,我们点击右上角的 [三点] 按钮可以看到如下几个选项,分别是:

  1. 配置文件列表
  2. 配置不走VPN的应用
  3. 客户端设置

我们点击第一个选项 [Config Files],进入配置文件列表页面。

注意:第二个选项,进去后勾选想要不走VPN的应用即可,我就不截图了。

biwrn0vd-2

我们可以看到这里和 WireGuard Android官方版客户端一样。

我们点击右下角的 [+加号蓝色] 按钮,可以看出弹出几个添加配置的选项,分别是:

  1. 选择客户端配置文件
  2. 扫描二维码
  3. 创建文件

推荐前两种。

第一种就是将客户端配置文件传到手机上,然后选择配置文件就行了(配置文件名不要包含中文)。

第二种即你去找个生成二维码图片的网站,复制你的客户端配置文件内容去这些网站将其生成为二维码,然后手机扫描二维码即可添加成功,添加时会提示你要给该配置文件起个名字。

ed10rbsb-3

添加完成后,点击勾选你要使用的 配置名称,然后回到该客户端软件首页。

点击中间的 大红条 ,即可连接至当前选中的服务器。

然后 大红条 就变成 大绿条 了,并且下面的公网IP也变为服务器IP了。

04t8oze-2
yvewr2xg

设置页面

最后就是设置页面了,下图中的选项分别对应:

  1. 互联网禁用开关
    当 TunSafe 断开连接时,禁用所有的互联网访问。
  2. TunSafe 启动时连接
    启动 TunSafe 时,自动连接上次使用的VPN服务器。
  3. 开机时自动启动
    设备开机后,自动连接上次使用的VPN服务器。
  4. 允许本地网络流量
    不将专用网络(例如192.168.x.x)路由通过VPN隧道。
  5. 显示Ping延迟
    服务器列表显示延迟(表示没看到)。
  6. 显示公网IP
    服务器列表显示公网IP(表示没看到)。
  7. 显示前台通知
    当TunSafe处于活动状态时,显示带有统计信息的通知。

不懂保持默认就行。

ompsr1hj-2

 


客户端到这里基本就介绍完了,有什么需要补充的记得告诉我。

WireGuard —— Windows 客户端国内外IP分流教程

分流原理很简单,就是利用 WireGuard 配置文件中的 PreUp、PostDown 参数,这两个参数分别指的是:启动时执行的命令,结束时执行的命令

我们只需要收集一下中国IP段,然后做个 .bat 批处理脚本,将脚本位置写到这两个参数后面,这样每次启动时,都会执行脚本将中国IP段加入系统路由表中,这样中国IP就会直连,而国外IP则会走VPN,实现了国内外IP分流。

正好,我也发现了一个已经做好了的项目,我们可以直接拿来用,感谢一下项目作者。

Github 项目地址:https://github.com/lmc999/auto-add-routes


使用步骤

下载文件

首先我们要下载所需的文件:

下载地址:https://github.com/lmc999/auto-add-routes/archive/master.zip

下载后我们会得到一个压缩包:auto-add-routes-master.zip

我们将其解压到任意目录,例如我们解压后得到的路径为:D:\Program Files\TunSafe\auto-add-routes-master

那么我们开始修改客户端配置文件。


修改客户端配置文件

首先我们选择你要修改的配置文件名称,然后点击右侧的 [Edit Config] 按钮,即可打开配置文件。

或者你也可以点击菜单栏 File – Browse in Explorer ,这样就直接打开了客户端的配置文件存放目录,自行打开配置文件。

ed10rbsb

然后我们在 [Interface] 字段中加入以下两行代码,注意别加到 [Peer] 中!

  1. PreUp = start “” “D:\Program Files\TunSafe\auto-add-routes-master\routes-up.bat”
  2. PostDown = start “” “D:\Program Files\TunSafe\auto-add-routes-master\routes-down.bat”
  3.  
  4. # 自行修改 D:\Program Files\TunSafe\auto-add-routes-master 为你的文件路径。

加入位置如下图所示(仅供参考):

修改并保存后,我们就可以开始启动客户端了。

rgt18cei


启动客户端

开始链接服务器之前,我们需要勾选 Options – Allow Pre/Post Commands 选项。

这个选项代表:当启动/停止链接VPN时,将会执行配置文件中指定的代码(即我们刚才添加的)。

如果不勾选这个选项,则代表不会执行命令,所以:

  1. 勾选 Allow Pre/Post Commands 选项:国内外IP分流,国内IP不走VPN
  2. 不勾选 Allow Pre/Post Commands 选项:全局走VPN

1这样你就可以根据需求,把这个选项当初一个 国内外IP分流/全局 来回切换的选项。

注意:不要在正在连接VPN时取消勾选 Allow Pre/Post Commands 选项,这样会导致你停止链接时,软件将不会清理系统路由表。

同理:不要在正在连接VPN时勾选 Allow Pre/Post Commands 选项,这样会导致你停止链接时可能会报错(毕竟没有路由表让脚本删除)。

勾选 Allow Pre/Post Commands 选项并点击 [Connect] 按钮开始链接VPN后,访问 http://ip111.cn/ 网页看看,国内IP显示的是不是你的本地IP,而国外IP显示的是不是你的服务器IP。

lrxvmpl-