VPS搭建WireGuard服务器图文教程

WireGuard 是一个易于配置、快速且安全的开源 VPN,它利用了最新的加密技术。目的是提供一种更快、更简单、更精简的通用 VPN,它可以轻松地在树莓派这类低端设备到高端服务器上部署。

Linux作者Linus Torvalds曾公开表示:我能否再次声明对它的爱,并希望它能很快合并?也许代码不是完美的,但我不在乎,与 OpenVPN 和 IPSec 的恐怖相比,这是一件艺术品。

WireGuard 最初是为 Linux 开发的,但现在可用于 Windows、macOS、BSD、iOS 和 Android。它仍在活跃开发中。除了可以跨平台之外,WireGuard 的最大优点之一就是易于部署。配置和部署 WireGuard 就像配置和使用 SSH 一样容易。

其实在WireGuard官方网站(https://www.wireguard.com/)有详细的安装教程,鉴于部分用户无法访问,因此波波特意转载如下。

一、配置PPA

如果你的系统是Ubuntu 14.04,那么在开始安装WireGuard之前请先安装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. [email protected]:~# add-apt-repository ppa:wireguard/wireguard
  4.  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.
  5. More info: https://www.wireguard.com/
  6. Packages: wireguard wireguard-tools wireguard-dkms
  7. Install with: $ apt install wireguard
  8. For help, please contact
  9.  More info: https://launchpad.net/~wireguard/+archive/ubuntu/wireguard
  10. Press [ENTER] to continue or ctrl-c to cancel adding it
  11. # 这里会提示你是否继续,点击 回车键 继续,点击 Ctrl+C 键退出。
  12. # 然后输出大概如下内容。
  13. gpg: keyring '/tmp/tmp8bgitjjx/secring.gpg' created
  14. gpg: keyring '/tmp/tmp8bgitjjx/pubring.gpg' created
  15. gpg: requesting key 504A1A25 from hkp server keyserver.ubuntu.com
  16. gpg: /tmp/tmp8bgitjjx/trustdb.gpg: trustdb created
  17. gpg: key 504A1A25: public key "Launchpad PPA for wireguard-ppa" imported
  18. gpg: Total number processed: 1
  19. gpg:               imported: 1  (RSA: 1)
  20. OK
  21. # 以上为输出示例内容(仅供参考)

二、安装WireGuard

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

三、验证是否安装成功

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

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

四、配置步骤

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

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

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

  1. ip addr
  2. # 执行命令后,示例如下(仅供参考),lo 是本地环回 忽略,eth0 就是主网卡名了。
  3. # 写着你的服务器外网IP的(下面 X.X.X.X 处),就是你的主网卡,NAT的服务器则是显示内网IP。
  4. # 如果你拿不准哪个网卡是主网卡,请留言询问。
  5. 1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1
  6.     link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
  7.     inet 127.0.0.1/8 scope host lo
  8.        valid_lft forever preferred_lft forever
  9.     inet6 ::1/128 scope host
  10.        valid_lft forever preferred_lft forever
  11. 2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
  12.     link/ether 00:16:3c:cf:89:73 brd ff:ff:ff:ff:ff:ff
  13.     inet X.X.X.X/25 brd 255.255.255.255 scope global eth0
  14.        valid_lft forever preferred_lft forever

③生成服务端配置文件。

  1. # 井号开头的是注释说明,用该命令执行后会自动过滤注释文字。
  2. # 下面加粗的这一大段都是一个代码!请把下面几行全部复制,然后粘贴到 SSH软件中执行,不要一行一行执行!
  3. echo "[Interface]
  4. # 服务器的私匙,对应客户端配置中的公匙(自动读取上面刚刚生成的密匙内容)
  5. PrivateKey = $(cat sprivatekey)
  6. # 本机的内网IP地址,一般默认即可,除非和你服务器或客户端设备本地网段冲突
  7. Address = 10.0.0.1/24 
  8. # 运行 WireGuard 时要执行的 iptables 防火墙规则,用于打开NAT转发之类的。
  9. # 如果你的服务器主网卡名称不是 eth0 ,那么请修改下面防火墙规则中最后的 eth0 为你的主网卡名称。
  10. PostUp   = iptables -A FORWARD -i wg0 -j ACCEPT; iptables -A FORWARD -o wg0 -j ACCEPT; iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
  11. # 停止 WireGuard 时要执行的 iptables 防火墙规则,用于关闭NAT转发之类的。
  12. # 如果你的服务器主网卡名称不是 eth0 ,那么请修改下面防火墙规则中最后的 eth0 为你的主网卡名称。
  13. PostDown = iptables -D FORWARD -i wg0 -j ACCEPT; iptables -D FORWARD -o wg0 -j ACCEPT; iptables -t nat -D POSTROUTING -o eth0 -j MASQUERADE
  14. # 服务端监听端口,可以自行修改
  15. ListenPort = 443
  16. # 服务端请求域名解析 DNS
  17. DNS = 8.8.8.8
  18. # 保持默认
  19. MTU = 1420
  20. # [Peer] 代表客户端配置,每增加一段 [Peer] 就是增加一个客户端账号,具体我稍后会写多用户教程。
  21. [Peer]
  22. # 该客户端账号的公匙,对应客户端配置中的私匙(自动读取上面刚刚生成的密匙内容)
  23. PublicKey = $(cat cpublickey)
  24. # 该客户端账号的内网IP地址
  25. AllowedIPs = 10.0.0.2/32"|sed '/^#/d;/^\s*$/d' > wg0.conf
  26. # 上面加粗的这一大段都是一个代码!请把下面几行全部复制,然后粘贴到 SSH软件中执行,不要一行一行执行!

④生成客户端配置文件。

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

六、启动与开机启动

①启动WireGuard

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

②设置开机启动

  1. # 设置开机启动
  2. systemctl enable [email protected]
  3. # 取消开机启动
  4. systemctl disable [email protected]

③其他命令补充

  1. # 停止WireGuard
  2. wg-quick down wg0
  3. # 查询WireGuard状态
  4. wg

VPS搭建WireGuard服务器图文教程

以上内容就是关于VPS搭建WireGuard服务器图文教程,希望可以帮助新手朋友可以快速入门服务器的安装配置。更多详细内容可参考官方白皮书>>点击进入

温馨提示:本篇笔记转载的目的在于服务器通信的学习研究,不得用于非法目的。违者后果自负。

你想把广告放到这里吗?

发表评论

您必须 登录 才能发表留言!