1、安装

apt install wireguard

2、开启ipv4流量转发并使其生效

echo "net.ipv4.ip_forward = 1" >> /etc/sysctl.conf
sysctl -p

3、配置wireguard服务端

3.1、生成服务器和客户端密钥对

wg genkey | tee server_privatekey | wg pubkey > server_publickey
wg genkey | tee client_privatekey | wg pubkey > client_publickey

3.2、服务器配置文件

根据上一步产生的服务器私钥server_privatekey,客户端公钥client_publickey填入配置文件。

如果网卡名称不是eth0,根据实际情况修改PostUp/PostDown字段的iptables命令。

ListenPort为服务端口号,可以自定义设定。

复制代码
[Interface]
# 填写本机的privatekey 内容
PrivateKey = $(cat server_privatekey)
Address = 10.0.8.1/24
PostUp   = iptables -A FORWARD -i wg0 -j ACCEPT; iptables -A FORWARD -o wg0 -j ACCEPT; iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
PostDown = iptables -D FORWARD -i wg0 -j ACCEPT; iptables -D FORWARD -o wg0 -j ACCEPT; iptables -t nat -D POSTROUTING -o eth0 -j MASQUERADE
# 注意该端口是UDP端口
ListenPort = 50814
DNS = 8.8.8.8
MTU = 1420
[Peer]
# 填写对端的publickey 内容
PublicKey =  $(cat client_publickey) 
AllowedIPs = 10.0.8.10/24
复制代码

3.3、客户端配置文件

根据上一步生产的客户端私钥client_privatekey,服务器公钥cserver_publickey填入配置文件。

修改Endpoint为服务器实际的IP和端口。

复制代码
[Interface]
  # 填写本机的privatekey 内容
  PrivateKey = $(cat client_privatekey) 
  Address = 10.0.8.10/24
  DNS = 8.8.8.8
  MTU = 1420
[Peer]
  # 填写对端的publickey 内容
  PublicKey = $(cat server_publickey) 
  # 服务器公网的IP:PORT
  Endpoint = 服务器公网的IP:50814
  AllowedIPs = 0.0.0.0/0, ::0/0
  PersistentKeepalive = 25
复制代码

3.4、启动服务

设置开机自启动

systemctl enable wg-quick@wg0

首次启动wg0

复制代码
wg-quick up wg0
[#] ip link add wg0 type wireguard
[#] wg setconf wg0 /dev/fd/63
Warning: AllowedIP has nonzero host part: 10.0.8.10/24
[#] ip -4 address add 10.0.8.1/24 dev wg0
[#] ip link set mtu 1420 up dev wg0
[#] resolvconf -a wg0 -m 0 -x
/usr/bin/wg-quick: line 32: resolvconf: command not found
[#] ip link delete dev wg0
复制代码

Error: /usr/bin/wg-quick: line 32: resolvconf: command not found

解决:

apt install resolvconf -y

重新启动服务,成功信息如下。

复制代码
wg-quick up wg0
[#] ip link add wg0 type wireguard
[#] wg setconf wg0 /dev/fd/63
Warning: AllowedIP has nonzero host part: 10.0.8.10/24
[#] ip -4 address add 10.0.8.1/24 dev wg0
[#] ip link set mtu 1420 up dev wg0
[#] 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
复制代码

3.5、查看服务状态

复制代码
 wg
interface: wg0
  public key: xxx
  private key: (hidden)
  listening port: 50814

peer: xxx
  allowed ips: 10.0.8.0/24
复制代码

4、配置wireguard客户端

android平台:Google Paly商店wireguard app

4.1、获取客户端配置

为了方便客户端获取配置可以把client.conf转为二维码扫描使用。

目标配置文件:client.conf

服务器安装qrencode工具

apt install qrencode

将client.conf文件转为二维码

qrencode -t ansiutf8 < client.conf

4.2、wireguard app选择扫描二维码导入

识别二维码成功,为配置命名并保存。

4.3、客户端开启连接

点击连接名称可以查看到连接详情。

5、服务器端连接状态

复制代码
wg
interface: wg0
  public key: xxx
  private key: (hidden)
  listening port: 50814

peer: xxx
  endpoint: x.x.x.x:xxxx
  allowed ips: 10.0.8.0/24
  latest handshake: 19 seconds ago
  transfer: 55.94 KiB received, 28.78 KiB sent
复制代码

 

参考:

https://cloud.tencent.com/developer/article/1832768

https://www.wireguard.com/quickstart/#quick-start