Ubuntu 16.04 安装 WireGuard
WireGuard
WireGuard 是 Jason A. Donenfeld 开发的开源 VPN 协议。目前支持 Linux, macOS, Android以及OpenWrt。被视为是下一代 VPN 协议。
WireGuard 安装
首先切换到 root 用户:
sudo su
依次执行如下的命令来进行安装
add-apt-repository ppa:wireguard/wireguard
apt-get update
apt-get install wireguard-dkms wireguard-tools resolvconf -y
安装完成之后得先开启服务器的 ipv4 流量转发
echo "net.ipv4.ip_forward = 1" >> /etc/sysctl.conf
sysctl -p
接下来创建 WireGuard 文件夹并设置权限
mkdir -p /etc/wireguard && chmod 0777 /etc/wireguard
cd /etc/wireguard
umask 077
接下来生成服务器和客户端的密钥对
wg genkey | tee server_privatekey | wg pubkey > server_publickey
wg genkey | tee client_privatekey | wg pubkey > client_publickey
服务端配置文件设置
首先查看自己的主网卡名称
ifconfig
记住当前主网卡的名称,接下来会用到
生成服务器配置文件
- 以下内容一次性粘贴执行,不要分行执行
- 重要:如果名字不是 enp0s5, 请将 enp0s5 替换成自己服务器显示的名字
- ListenPort为端口号,可以自己设置想使用的数字
echo "
[Interface]
PrivateKey = $(cat server_privatekey)
Address = 10.0.0.1/24
PostUp = iptables -A FORWARD -i wg0 -j ACCEPT; iptables -A FORWARD -o wg0 -j ACCEPT; iptables -t nat -A POSTROUTING -o enp0s5 -j MASQUERADE
PostDown = iptables -D FORWARD -i wg0 -j ACCEPT; iptables -D FORWARD -o wg0 -j ACCEPT; iptables -t nat -D POSTROUTING -o enp0s5 -j MASQUERADE
ListenPort = 50814
DNS = 8.8.8.8
MTU = 1420
[Peer]
PublicKey = $(cat client_publickey)
AllowedIPs = 10.0.0.2/32 " > wg0.conf
设置开机自启
systemctl enable wg-quick@wg0
客户端配置文件设置
生成客户端 client 配置文件
- Endpoint是自己服务器ip和服务端配置文件中设置的端口号
- 以下内容一次性粘贴执行,不要分行执行
echo "
[Interface]
PrivateKey = $(cat client_privatekey)
Address = 10.0.0.2/24
DNS = 8.8.8.8
MTU = 1420
[Peer]
PublicKey = $(cat server_publickey)
Endpoint = 1.2.3.4:50814
AllowedIPs = 0.0.0.0/0, ::0/0
PersistentKeepalive = 25 " > client.conf
多客户端配置文件生成
一个客户端文件只能同时有一个设备连接,所以如果需要同时使用的话,可以建立多个客户端文件。
再添加一个客户端 client0 的操作方法
首先生成新的密钥对
wg genkey | tee client0_privatekey | wg pubkey > client0_publickey
在服务端配置文件中加入新的客户端公钥
- AllowedIPs重新定义一个
- 一次性复制粘贴,不要分行执行
echo "
[Peer]
PublicKey = $(cat client0_publickey)
AllowedIPs = 10.0.0.3/32" >> wg0.conf
新建一个客户端文件,使用新客户端密钥的私钥
- Address 与上面的 AllowedIPs 保持一致
- Endpoint 和之前的一样,为服务器 ip 和设置好的 ListenPort
- 一次性复制粘贴,不要分行执行
echo "
[Interface]
PrivateKey = $(cat client0_privatekey)
Address = 10.0.0.3/24
DNS = 8.8.8.8
MTU = 1420
[Peer]
PublicKey = $(cat server_publickey)
Endpoint = 1.2.3.4:50814
AllowedIPs = 0.0.0.0/0, ::0/0
PersistentKeepalive = 25 " > client0.conf
启动 WireGuard
配置文件生成好之后便可以启动 WireGuard 了
wg-quick up wg0
查看运行状态
wg
停止 WireGuard 命令
wg-quick down wg0
导出服务端配置文件
方法一:使用 将客户端配置文件显示为二维码打印在终端上
apt install qrencode -y
# 选择一个客户端配置文件进行输出
qrencode -t ansiutf8 < /etc/wireguard/client.conf
方法二:手动在本地创建一个配置文件
# 选择一个客户端配置文件进行输出
cat /etc/wireguard/client.conf
然后在本地编辑一个 .conf 的文件,将上面输出的文件粘贴进去。