我在全新安装的 Ubuntu 18.04 上安装了 wireguard,但我不确定安装后需要做什么
答案1
由于项目人员的努力,在 Ubuntu 18.04 上安装 WireGuard 相对简单。WireGuard 有一个维护良好的 PPA 存储库。您可以像这样添加此 PPA 和推荐的先决条件:
配置服务器
打开终端(如果尚未打开)
添加 WireGuard PPA(20.04 及以上版本不需要):
sudo add-apt-repository ppa:wireguard/wireguard
更新 Apt 以适应新的存储库:
sudo apt update
安装 WireGuard 以及一些推荐的先决条件:
sudo apt install wireguard software-properties-common
安装完成后,你应该看到类似这样的内容:
wireguard: Running module version sanity check. Original module No original module exists within this kernel Installation Installing to /lib/modules/5.3.0-46-generic/updates/dkms/ depmod… DKMS: install completed.
安装 WireGuard 后,就该对其进行配置并创建允许该工具安全运行的加密密钥了:
wg genkey | sudo tee /etc/wireguard/privatekey | wg pubkey | sudo tee /etc/wireguard/publickey
按照命令建议,
genkey
生成私钥并pubkey
生成匹配的公钥。下一步是创建一个隧道设备来路由 VPN 流量。这可以使用
ip
或wg
命令来完成。但是,为了便于管理,您可以创建一个隧道文件并在其中添加其配置。运行以下命令来创建一个名为的隧道文件
wg0.conf
:sudo vi /etc/wireguard/wg0.conf
笔记:随意使用你喜欢的任何文本编辑器。
vi
这里的使用更多的是肌肉记忆,而不是明确的认可。将其粘贴到文件中:
[Interface] Address = 10.0.0.2/24 SaveConfig = true ListenPort = 51820 PrivateKey = {paste private key here} PostUp = iptables -A FORWARD -i %i -j ACCEPT; iptables -t nat -A POSTROUTING -o enp0s3 -j MASQUERADE PostDown = iptables -D FORWARD -i %i -j ACCEPT; iptables -t nat -D POSTROUTING -o enp0s3 -j MASQUERADE
确保将 替换
{paste private key here}
为上一步中 WireGuard 生成的实际私钥,并将其enp0s3
替换为将监听连接的设备。您可以使用 找到此信息ip a
。使隧道联机:
sudo wg-quick up wg0 sudo systemctl enable wg-quick@wg0
您将看到类似这样的输出:
[#] ip link add wg0 type wireguard [#] wg setconf wg0 /dev/fd/63 [#] ip -4 address add 10.0.0.2/24 dev wg0 [#] ip link set mtu 1420 up dev wg0 [#] iptables -A FORWARD -i wg0 -j ACCEPT; iptables -t nat -A POSTROUTING -o enp0s3 -j MASQUERADE
您可以使用以下命令验证隧道是否已建立:
sudo wg show wg0
这将显示类似以下内容的内容:
interface: wg0 public key: vGzuXr0nETkqGLg6abrVSCDe4C6tO5eWcIE8gdpRMAk= private key: (hidden) listening port: 51820
现在开始进行一些端口转发……
打开
sysctl.conf
文件进行编辑:sudo vi /etc/sysctl.conf
如果您使用的是 IPv4 地址,请取消注释以下行:
net.ipv4.ip_forward=1
。如果您使用的是 IPv6 地址,请取消注释以下行net.ipv6.conf.all.forwarding=1
。这将为您提供如下所示的部分:# Uncomment the next line to enable packet forwarding for IPv4 net.ipv4.ip_forward=1 # Uncomment the next line to enable packet forwarding for IPv6 # Enabling this option disables Stateless Address Autoconfiguration # based on Router Advertisements for this host #net.ipv6.conf.all.forwarding=1
保存文件。然后运行以下命令来完成 WireGuard 服务器设置:
sudo sysctl -p sudo ufw allow 51820/udp
这将重新加载
sysctl
并允许端口 51820 通过防火墙。
配置客户端
接下来是连接到服务器的客户端。前几个步骤看起来很熟悉,因为我们需要添加必要的 PPA,然后安装基础软件:
打开终端(如果尚未打开)
添加 WireGuard PPA,更新 Apt 并安装:
sudo add-apt-repository ppa:wireguard/wireguard sudo apt update sudo apt install wireguard software-properties-common
生成私钥和公钥安全密钥:
wg genkey | sudo tee /etc/wireguard/privatekey | wg pubkey | sudo tee /etc/wireguard/publickey
创建
wg0.conf
文件:sudo vi /etc/wireguard/wg0.conf
将此基础粘贴到新文件中并进行相应自定义:
[Interface] PrivateKey = {Client Private Key} Address = 10.0.0.2/24 [Peer] PublicKey = {Server Public Key} Endpoint = {Server IP}:51820 AllowedIPs = 0.0.0.0/0
笔记:一定要用
{Client Private Key}
刚刚创建并记录在文件中的密钥/etc/wireguard/privatekey
、{Server Public Key}
服务器上记录的公钥以及{Server IP}
服务器可访问的 IP 地址进行替换。
最后 …
最后一步是让服务器知道客户端将在某个时间点进行调用。因此,回到服务器的终端,运行:
sudo wg set wg0 peer {Client Public Key} allowed-ips 10.0.0.2
再次确保{Client Public Key}
用来自客户端的公钥进行替换。
回到客户端……
现在您可以启动(或重置)界面并检查连接:
sudo wg-quick up wg0
sudo wg
如果一切连接正确,你应该看到类似这样的内容:
interface: wg0
public key: sZThYo/0oECwzUsIKTa6LYXLhk+Jb/nqK4kCCP2pyFg=
private key: (hidden)
listening port: 48052
fwmark: 0xca6c
peer: r3imyh3MCYggaZACmkx+CxlD6uAmICI8pe/PGq8+qCg=
endpoint: XXX.XXX.XXX.XXX:51820
allowed ips: 0.0.0.0/0
latest handshake: 15 seconds ago
transfer: 28.88 KiB received, 47.74 KiB sent
如果您希望断开隧道连接,可以发出以下命令:
sudo wg-quick down wg0
这里有很多针对 Ubuntu 18.04 的步骤,并且很多在较新的版本中更简单,但这将为您提供在 Ubuntu 上运行 WireGuard 所需的一切。如果您想从 Windows、macOS 或大量其他 Linux/BSD 发行版连接到您的服务器,您可以直接从 WireGuard 下载客户端软件。
希望这能满足您的需要。