XuLaLa.Tech

首页客户端下载Windows 使用V2Ray 教程SSR 教程Clash 教程

一个高速、安全、可以复活被墙IP的VPN —— WireGuard 服务端手动教程

2025.04.21
机场加速器梯子推荐:

优质SS/SSR/Trojan/Xray/V2Ray机场推荐 | IPLC/IEPL专线加速器梯子推荐 | 解锁奈飞Netflix/HBO/Hulu等国外流媒体

从几个月前就有人跟我说过 WireGuard 这个下一代VPN协议,不过当时网上也没什么中文教程,官方又全是英文,零零散散的看不懂就给无视了。

最近一段时间,貌似 WireGuard 开始流行了,好多人都推荐给我,让我写教程。我搜索了下,找到了几个中文教程,虽然也是零零散散的,不过要

重点感谢一下这个脚本

,让我清楚了完整配置过程。

昨天下午和今天上午简单研究了下,差不多可以写教程啦~


WireGuard简单介绍

更少的代码

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

更容易部署

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

更安全的加密

  • Curve25519 目前最高水平的秘钥交换算法。
  • ChaCha20 对称加解密算法,比 AES 更快更高效。
  • Poly1305 是一种 MAC (Message Authentication Code) 标准,用于验证数据的完整性和消息的真实性。
  • BLAKE2 一种更安全的 HASH 算法(类似的有 SHA1, SHA256, MD5)
  • SipHash24 另一种 HASH 算法。
  • HKDF 一种秘钥衍生算法。

Linux之父的评价:


官方网站: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 系统安装更方便!另外,请确保你的系统是纯净的,建议重装系统后直接开始本教程!

Debian安装步骤

安装内核

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

  1. # 更新软件包源
  2. apt update
  3. # 安装和 linux-image 内核版本相对于的 linux-headers 内核
  4. apt install linux–headers–$(uname –r) –y
  1. # 以下为示例内容(仅供参考)
  2.  
  3. #Debian8 安装前

    内核列表(空)

  4. root@doubi:~#dpkg -l|grep linux-headers
  5. # 空,没有任何输出
  6.  
  7. #Debian8 安装后

    内核列表(注意这里的版本号 可能不一样)

  8. root@doubi:~#dpkg -l|grep linux-headers
  9. ii linux–headers–3.16.0–6–amd64 3.16.57–2 amd64 Header files for Linux 3.16.0–6–amd64
  10. ii linux–headers–3.16.0–6–common 3.16.57–2
  11.  
  12.  
  13. #Debian9 安装前

    内核列表(空)

  14. root@doubi:~#dpkg -l|grep linux-headers
  15. # 空,没有任何输出
  16.  
  17. #Debian9 安装后

    内核列表(注意这里的版本号 可能不一样)

  18. root@doubi:~#dpkg -l|grep linux-headers
  19. ii linux–headers–4.9.0–7–amd64 4.9.110–3+deb9u2 amd64 Header files for Linux 4.9.0–7–amd64
  20. ii linux–headers–4.9.0–7–common 4.9.110–3+deb9u2 all Common header files for Linux 4.9.0–7
  21.  
  22. # 以上为示例内容(仅供参考)

安装WireGuard

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

  1. # 添加 unstable 软件包源,以确保安装版本是最新的
  2. echo “deb http://deb.debian.org/debian/ unstable main” > /etc/apt/sources.list.d/unstable.list
  3. echo –e ‘Package: *\nPin: release a=unstable\nPin-Priority: 150’ > /etc/apt/preferences.d/limit–unstable
  4.  
  5. # 更新一下软件包源
  6. apt update
  7.  
  8. # 开始安装 WireGuard ,resolvconf 是用来指定DNS的,旧一些的系统可能没装。
  9. apt install wireguard resolvconf –y

Ubuntu安装步骤

配置PPA

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

  1. # 以下步骤仅限 Ubuntu 14.04 系统执行
  2. apt update
  3. apt install software–properties–common –y

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

  1. add–apt–repository ppa:wireguard/wireguard
  2. # 执行后提示如下示例内容(仅供参考):
  3.  
  4. root@doubi:~# add-apt-repository ppa:wireguard/wireguard
  5. 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.
  6.  
  7. More info: https://www.wireguard.com/
  8. Packages: wireguard wireguard–tools wireguard–dkms
  9.  
  10. Install with: $ apt install wireguard
  11.  
  12. For help, please contact
  13. More info: https://launchpad.net/~wireguard/+archive/ubuntu/wireguard
  14. Press [ENTER] to continue or ctrl–c to cancel adding it
  15.  
  16. # 这里会提示你是否继续,点击 回车键 继续,点击 Ctrl+C 键退出。
  17. # 然后输出大概如下内容。
  18.  
  19. gpg: keyring ‘/tmp/tmp8bgitjjx/secring.gpg’ created
  20. gpg: keyring ‘/tmp/tmp8bgitjjx/pubring.gpg’ created
  21. gpg: requesting key 504A1A25 from hkp server keyserver.ubuntu.com
  22. gpg: /tmp/tmp8bgitjjx/trustdb.gpg: trustdb created
  23. gpg: key 504A1A25: public key “Launchpad PPA for wireguard-ppa” imported
  24. gpg: Total number processed: 1
  25. gpg: imported: 1 (RSA: 1)
  26. OK
  27.  
  28. # 以上为输出示例内容(仅供参考)

安装WireGuard

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

  1. # 更新一下软件包源
  2. apt update
  3.  
  4. # 开始安装 WireGuard ,resolvconf 是用来指定DNS的,旧一些的系统可能没装。
  5. apt install wireguard resolvconf –y

验证是否安装成功

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

  1. lsmod | grep wireguard
  2. # 执行该代码后,提示大概如下示例内容(仅供参考),第一行是必须要有的,至于下面的两行不同系统似乎还不一样,但是不影响使用。
  3.  
  4. root@doubi:~# modprobe wireguard && lsmod | grep wireguard
  5. wireguard 212992 0
  6. ip6_udp_tunnel 16384 1 wireguard
  7. udp_tunnel 16384 1 wireguard

配置步骤

生成密匙对

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

  1. # 首先进入配置文件目录,如果该目录不存在请先手动创建:mkdir /etc/wireguard
  2. cd /etc/wireguard
  3.  
  4. # 然后开始生成 密匙对(公匙+私匙)。
  5. wg genkey | tee sprivatekey | wg pubkey > spublickey
  6. wg genkey | tee cprivatekey | wg pubkey > cpublickey

查看主网卡名称

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

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

    了。

  3. # 写着你的服务器外网IP

    的(下面

    X.X.X.X

    处),就是你的主网卡,NAT的服务器则是显示内网IP。

  4. # 如果你拿不准哪个网卡是主网卡,请留言询问。
  5.  
  6. 1:lo

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

  7. link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
  8. inet 127.0.0.1/8 scope host lo
  9. valid_lft forever preferred_lft forever
  10. inet6 ::1/128 scope host
  11. valid_lft forever preferred_lft forever
  12. 2:eth0

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

  13. link/ether 00:16:3c:cf:89:73 brd ff:ff:ff:ff:ff:ff
  14. inet X.X.X.X/25 brd 255.255.255.255 scope global eth0
  15. valid_lft forever preferred_lft forever

生成服务端配置文件

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

  1. # 井号开头的是注释说明,用该命令执行后会自动过滤注释文字。
  2. # 下面加粗的这一大段都是一个代码!请把下面几行全部复制,然后粘贴到 SSH软件中执行,不要一行一行执行!
  3.  
  4. echo “[Interface]
  5. # 服务器的私匙,对应客户端配置中的公匙(自动读取上面刚刚生成的密匙内容)
  6. PrivateKey = $(cat sprivatekey)
  7. # 本机的内网IP地址,一般默认即可,除非和你服务器或客户端设备本地网段冲突
  8. Address = 10.0.0.1/24
  9. # 运行 WireGuard 时要执行的 iptables 防火墙规则,用于打开NAT转发之类的。
  10. # 如果你的服务器主网卡名称不是 eth0 ,那么请修改下面防火墙规则中最后的eth0

    为你的主网卡名称。

  11. PostUp = iptables -A FORWARD -i wg0 -j ACCEPT; iptables -A FORWARD -o wg0 -j ACCEPT; iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
  12. # 停止 WireGuard 时要执行的 iptables 防火墙规则,用于关闭NAT转发之类的。
  13. # 如果你的服务器主网卡名称不是 eth0 ,那么请修改下面防火墙规则中最后的eth0

    为你的主网卡名称。

  14. PostDown = iptables -D FORWARD -i wg0 -j ACCEPT; iptables -D FORWARD -o wg0 -j ACCEPT; iptables -t nat -D POSTROUTING -o eth0 -j MASQUERADE
  15. # 服务端监听端口,可以自行修改
  16. ListenPort = 443
  17. # 服务端请求域名解析 DNS
  18. DNS = 8.8.8.8
  19. # 保持默认
  20. MTU = 1420
  21. # [Peer] 代表客户端配置,每增加一段 [Peer] 就是增加一个客户端账号,具体我稍后会写多用户教程。
  22. [Peer]
  23. # 该客户端账号的公匙,对应客户端配置中的私匙(自动读取上面刚刚生成的密匙内容)
  24. PublicKey = $(cat cpublickey)
  25. # 该客户端账号的内网IP地址
  26. AllowedIPs = 10.0.0.2/32″|sed ‘/^#/d;/^\s*$/d’ > wg0.conf
  27.  
  28. # 上面加粗的这一大段都是一个代码!请把下面几行全部复制,然后粘贴到 SSH软件中执行,不要一行一行执行!

生成客户端配置文件

接下来就开始生成客户端配置文件:

  1. # 井号开头的是注释说明,用该命令执行后会自动过滤注释文字。
  2. # 下面加粗的这一大段都是一个代码!请把下面几行全部复制,然后粘贴到 SSH软件中执行,不要一行一行执行!
  3.  
  4. echo “[Interface]
  5. # 客户端的私匙,对应服务器配置中的客户端公匙(自动读取上面刚刚生成的密匙内容)
  6. PrivateKey = $(cat cprivatekey)
  7. # 客户端的内网IP地址
  8. Address = 10.0.0.2/24
  9. # 解析域名用的DNS
  10. DNS = 8.8.8.8
  11. # 保持默认
  12. MTU = 1420
  13. [Peer]
  14. # 服务器的公匙,对应服务器的私匙(自动读取上面刚刚生成的密匙内容)
  15. PublicKey = $(cat spublickey)
  16. # 服务器地址和端口,下面的 X.X.X.X 记得更换为你的服务器公网IP,端口请填写服务端配置时的监听端口
  17. Endpoint = X.X.X.X:443
  18. # 因为是客户端,所以这个设置为全部IP段即可
  19. AllowedIPs = 0.0.0.0/0, ::0/0
  20. # 保持连接,如果客户端或服务端是 NAT 网络(比如国内大多数家庭宽带没有公网IP,都是NAT),那么就需要添加这个参数定时链接服务端(单位:秒),如果你的服务器和你本地都不是 NAT 网络,那么建议不使用该参数(设置为0,或客户端配置文件中删除这行)
  21. PersistentKeepalive = 25″|sed ‘/^#/d;/^\s*$/d’ > client.conf
  22.  
  23. # 上面加粗的这一大段都是一个代码!请把下面几行全部复制,然后粘贴到 SSH软件中执行,不要一行一行执行!

接下来你就可以将这个客户端配置文件 

[/etc/wireguard/client.conf]

 通过SFTP、HTTP等方式下载到本地了。

不过我更推荐,SSH中打开显示配置文件内容并复制出来后,本地设备新建一个文本文件 

[xxx.conf] (名称随意,后缀名需要是 .conf)

 并写入其中,提供给 WireGuard 客户端读取使用。

  1. cat /etc/wireguard/client.conf

其他剩余其他操作:

  1. # 赋予配置文件夹权限
  2. chmod 777 –R /etc/wireguard
  3.  
  4. # 打开防火墙转发功能
  5. echo 1 > /proc/sys/net/ipv4/ip_forward
  6. echo “net.ipv4.ip_forward = 1” >> /etc/sysctl.conf
  7. sysctl –p

启动WireGuard

  1. wg–quick up wg0
  2. # 执行命令后,输出示例如下(仅供参考)
  3.  
  4. [#] ip link add wg0 type wireguard
  5. [#] wg setconf wg0 /dev/fd/63
  6. [#] ip address add 10.0.0.1/24 dev wg0
  7. [#] ip link set mtu 1420 dev wg0
  8. [#] ip link set wg0 up
  9. [#] resolvconf -a tun.wg0 -m 0 -x
  10. [#] iptables -A FORWARD -i wg0 -j ACCEPT; iptables -A FORWARD -o wg0 -j ACCEPT; iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
  11.  
  12. # 如果此处没有报错:RTNETLINK answers: Operation not supported,且输入内容差不多,那么说明启动成功了!

停止WireGuard

  1. wg–quick down wg0

查询WireGuard状态

  1. wg

开机启动

  1. # 设置开机启动
  2. systemctl enable wg–quick@wg0
  3. # 取消开机启动
  4. systemctl disable wg–quick@wg0
© 2010-2022 XuLaLa 保留所有权利 本站由 WordPress 强力驱动
请求次数:69 次,加载用时:0.665 秒,内存占用:32.19 MB