1.下载安装 WireGuard (服务端)
sudo add-apt-repository ppa:wireguard/wireguard sudo apt-get update sudo apt-get install wireguard
2.生成公钥,私钥,共享密钥
sudo mkdir -p /etc/wireguard && sudo chmod 0777 /etc/wireguard && cd /etc/wireguard umask 077 wg genkey | tee privatekey | wg pubkey > publickey | wg genpsk > presharedkey
3.打印输出私钥
cat privatekey +Cr59JzbCKz9rESqimHGi5C2QfIRYZ5xVMssiTAEqV4=
4.打印输出公钥
cat publickey bco6xIgfp++iFBj6vmDr27tAXfgYsppn/wyUJRcFgUc=
5.打印输出共享密钥(可以不生成,配置文件中不是必须的)
cat presharedkey Vv0MdBNolqbnsBPQPf0ttJecOw2QC8QqWBVieNtvoIo=
6.编辑并保存wg0配置文件wg0.conf
sudo vi wg0.conf
7.配置服务端相关参数,创建并编辑 /etc/wireguard/wg0.conf ,内容如下:
[Interface] PrivateKey = <Private Key> Address = 10.0.0.1/24 ListenPort = 56660 PostUp = iptables -A FORWARD -i wg0 -j ACCEPT; iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE; ip6tables -A FORWARD -i wg0 -j ACCEPT; ip6tables -t nat -A POSTROUTING -o eth0 -j MASQUERADE PostDown = iptables -D FORWARD -i wg0 -j ACCEPT; iptables -t nat -D POSTROUTING -o eth0 -j MASQUERADE; ip6tables -D FORWARD -i wg0 -j ACCEPT; ip6tables -t nat -D POSTROUTING -o eth0 -j MASQUERADE SaveConfig = true
其中 PrivateKey 通过命令 wg genkey 生成(即服务端私钥)。
注意:这里的Address的IP地址段不能和服务器的内网IP地址段相同。
8.启动服务端 WireGuard
wg-quick up wg0
9.可以通过命令 sudo wg
检查启动是否成功,成功的话会输出如下内容:
interface: wg0 public key: xxxxxxxxxx private key: (hidden) listening port: 56660
10.将 WireGuard 设置成开机启动
systemctl enable wg-quick@wg0
客户端配置信息
1.配置客户端相关参数,创建并编辑 /etc/wireguard/wg0.conf ,内容如下:
[Interface] PrivateKey = xxxxxxxxxx Address = 10.0.0.3/24 DNS = 8.8.8.8 [Peer] PublicKey = xxxxxxxxxx Endpoint = <Server Public IP>:56660 AllowedIPs = 0.0.0.0/0
其中 PrivateKey (即客户端私钥)可以通过tunsafe生成, Peer 的 PublicKey 填入上面服务端公钥, Endpoint 的 IP 设置为服务端可访问的公网 IP 。
注意:这里的Address的IP地址段不能和服务器的内网IP地址段相同。
服务端配置
11.在服务端添加客户端信息
sudo wg set wg0 peer <Public Key> allowed-ips 10.0.0.3/24
注意:这里的Address的IP地址段不能和服务器的内网IP地址段相同。
Public Key 是客户端的公钥。
如果在服务端配置信息里设置了 SaveConfig = true 那么刚才添加的客户端参数信息会在服务端关闭时自动保存到配置文件中。如果想立即存储刚设置的参数也可以执行命令 wg-quick save wg0
12.设置服务器的NAT流量转发
sudo vi /etc/sysctl.conf
找到这一行#net .ipv4.ip_forward = 1
去掉注释符“#”
net.ipv4.ip_forward = 1
执行sysctl并生效
sudo sysctl -p
检查wg设置是否正常
sudo wg show
正常情况应该输出以下内容:
interface: wg0 public key: 1lq23n/oNwYosnf0xMadtrIcC+droND9fg/wiS0aEhw= private key: (hidden) listening port: 1194 peer: 8+9jGlxuwyGUWtUk8/NZMAl1Ax577KAvnXJY0EeuNkQ= endpoint: 12.34.56.78:56660 allowed ips: 10.100.0.0/24 latest handshake: 0 days, 8 minutes, 19 seconds ago transfer: 0.60 GiB received, 0.93 GiB sent
服务器端设置完成,可以开始使用了。