介绍
WireGuard是一个非常简单,快速和现代化的VPN解决方案,它利用了最先进的密码技术。根据一些不同的基准测试,WireGuard是目前与IPSec和OpenVPN相比最快的VPN解决方案。在本指南中,您将学习如何在两台服务器之间建立WireGuard连接。
要求
- Ubuntu或Debian
- 内核4.1或更新
视频教程
安装和克隆
WireGuard本身的安装非常简单,只需4个步骤即可完成。首先,我们必须安装内核头文件以及构建必需品和各种其他必需的软件包:
apt-get install libmnl-dev linux-headers-$(uname -r) build-essential make git
完成此步骤后,我们可以继续从Git存储库中提取WireGuard:
git clone https://git.zx2c4.com/WireGuard
建立
截至目前,我们已经安装了所有必需的软件包以及克隆的WireGuard WireGuard/
。我们可以继续使用WireGuard的构建过程并安装它:
cd WireGuard/src/makemake install
在make install
过程完成后没有错误,我们可以继续在其他服务器上运行完全相同的步骤。完成后,跳转到本指南的下一部分
– 配置过程。
组态
使用WireGuard创建隧道非常简单,只需使用几个命令即可完成。我们首先创建VPN接口:
ip link add dev wg0 type wireguard
接下来,我们生成私钥,用于加密双方之间的数据:
umask 077wg genkey > private
在这一点上,我们已经完成了创建隧道本身的所有要求:
wg set wg0 listen-port 51920 private-key ~/private peer <PEER_PUBLIC_KEY> allowed-ips 192.168.2.0/24 endpoint <OTHER_SERVER_IP>:51920
注意:您必须在两台服务器上运行此命令,并调整以下参数:PEER_PUBLIC_KEY
和OTHER_SERVER_IP
。
为了读取两台服务器上的公钥,我们必须运行以下命令将私钥转换为公钥,然后读取它:
wg pubkey < private > publiccat public
最后,我们可以将IP地址分配给我们的接口(.1
对于第一台服务器,.2
对于第二台服务器):
ip link set up dev wg0ip addr add 192.168.2.1/24 dev wg0
测试
尝试在第一台服务器上使用以下命令ping其他服务器:
ping 192.168.2.2
如果您看到来自服务器的响应,则表明您的安装正确并且VPN链接正在运行。如果您没有收到任何响应或错误,请查看您在两台服务器上执行的命令,并确认您已相应地调整了参数。
配置一个 VPN 服务器
Wireguard 自带一个快速创建和销毁 VPN
服务器的工具,wg-quick
。注意这里使用的配置文件不是一个能被 wg setconf
有效的配置文件,并且你可能至少要把 eth0
改成你实际使用的。
服务器
/etc/wireguard/wg0server.conf
[Interface] Address = 10.0.0.1/24 # This is the virtual IP address, with the subnet mask we will use for the VPN PostUp = iptables -A FORWARD -i %i -j ACCEPT; iptables -A FORWARD -o %i -j ACCEPT; iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE PostDown = iptables -D FORWARD -i %i -j ACCEPT; iptables -D FORWARD -o %i -j ACCEPT; iptables -t nat -D POSTROUTING -o eth0 -j MASQUERADE ListenPort = 51820 PrivateKey = [SERVER PRIVATE KEY] [Peer] PublicKey = [CLIENT PUBLIC KEY] AllowedIPs = 10.0.0.2/32 # 这表示客户端只有一个 ip。
要使 iptables 规则生效,启用 IPv4 转发:
# sysctl net.ipv4.ip_forward=1
永久保留这项改变,向 /etc/sysctl.d/99-sysctl.conf
添加 net.ipv4.ip_forward = 1
。
使用 wg-quick up wg0server
启用
Interface,wg-quick down wg0server
用以关闭
客户端 (转发所有流量)
/etc/wireguard/wg0.conf
[Interface] Address = 10.0.0.2/24 # The client IP from wg0server.conf with the same subnet mask PrivateKey = [CLIENT PRIVATE KEY] DNS = 10.0.0.1 [Peer] PublicKey = [SERVER PUBLICKEY] AllowedIPs = 0.0.0.0/0, ::0/0 Endpoint = [SERVER ENDPOINT]:51820 PersistentKeepalive = 25
使用 wg-quick up wg0
来启用 Interface,
使用 wg-quick down wg0
来关闭。
使用 systemctl enable
[email protected]
来自动启动。
如果你使用 NetworkManager, 可能有必要启用
NetworkManager-wait-online.service systemctl enable NetworkManager-wait-online.service
或者你使用的是 systemd-networkd, 启用
systemd-networkd-wait-online.service systemctl enable
systemd-networkd-wait-online.service
等待所有设备就绪再尝试 wireguard 连接
结论
WireGuard是一个非常易于使用的安全VPN解决方案。它适用于许多网络拓扑,包括(但不限于):服务器之间的连接,主干网使用,个人VPN网络和漫游VPN网络。有关其他文档,请访问官方网站。快乐黑客!