WireGuard配置过程
WrieGuard(专用网络连接)已经成为Linux的内核模块,WrieGuard是Linux内核级的端到端网络连接通道服务软件,只需要配置服务端,然后客户端把证书在本地安装即可使用,非常简单。
参考:
- 官方网站,https://www.wireguard.com/
- 容器服务,https://hub.docker.com/r/cmulk/wireguard-docker/dockerfile
- Web UI for provisioning and managing device keys and configurations for Wireguard
安装 WireGuard
Debain 系统:
# 先安装linux-headers
apt update
apt install linux-headers-$(uname -r) -y
# 安装WireGuard
echo "deb http://deb.debian.org/debian/ unstable main" > /etc/apt/sources.list.d/unstable.list
printf 'Package: *nPin: release a=unstablenPin-Priority: 150n' > /etc/apt/preferences.d/limit-unstable
apt update
apt install wireguard-dkms wireguard-tools resolvconf -y
Ubuntu 系统:
add-apt-repository ppa:wireguard/wireguard
apt-get update
apt-get install wireguard-dkms wireguard-tools resolvconf -y
注意:除了Debain
、Ubuntu
其他操作系统的安装命令可以在WireGuard Installstion查看。
除了以上部分内容不同系统不一样,接下来的操作都是一样的。
# 开启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
服务端配置文件
- 创建并进入了 WireGuard 后,开始配置服务端文件,输入
ifconfig
查看主网卡名称,可能结果如下:
记住以上标记处名字,若不是eth0
,可以将其复制了待会需要用到。 - 生成服务器配置文件
/etc/wireguard/wg0.conf
:
# 重要!如果名字不是eth0, 以下PostUp和PostDown处里面的eth0替换成自己服务器显示的名字
# 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 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
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
客户端配置文件
生成客户端配置文件/etc/wireguard/client.conf
:
# Endpoint是自己服务器ip和服务端配置文件中设置的端口号,自己在本地编辑好再粘贴到SSH里
# 以下内容一次性粘贴执行,不要分行执行
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
至此,基本上就已经搞定了,可以启动 WireGuard 了:
# 启动WireGuard
wg-quick up wg0
# 停止WireGuard
wg-quick down wg0
# 查看WireGuard运行状态
wg
导出配置文件
我们需要导出客户端的配置供客户端使用,客户端可以自己手动填,但是密钥什么的输入比较麻烦,以下提供两种方法供使用:
- 方法一:使用配置文件,使用
cat /etc/wireguard/client.conf
指令查看配置文件信息并复制,然后自己本地编辑一个.conf
文件(名字可以自定义)将复制内容粘贴并保存,发送到手机上;或者使用 FTP 等方式把配置文件下载到本地; - 方法二:使用二维码
apt install qrencode -y
qrencode -t ansiutf8 < /etc/wireguard/client.conf
客户端使用方法
客户端界面都很简单,操作基本没什么难度。
下载地址
- iOS: WireGuard TestFlight
- Android: WireGuard Google Play
- Windows: Coming Soon
IOS
ANDROID
配置多用户
一个客户端文件只能同时有一个设备连接,所以如果需要同时使用的话,可以建立多个客户端文件。
再添加一个客户端的操作方法:
# 停止WireGuard
wg-quick down wg0
# 生成新的客户端密钥对
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
wg-quick up wg0
# 导出客户端配置文件方式依旧可以采用上面介绍的两种方法,例如此客户端文件生成二维码就应该为
qrencode -t ansiutf8 < /etc/wireguard/client0.conf
如果还需要添加Peer
,同样方法再次操作即可。
注意
- 不支持 OVZ,建议使用 KVM 架构的 VPS,且推荐高版本系统;