在 Ubuntu 18.04 上设置 wireguard 需要哪些步骤

在 Ubuntu 18.04 上设置 wireguard 需要哪些步骤

我在全新安装的 Ubuntu 18.04 上安装了 wireguard,但我不确定安装后需要做什么

答案1

由于项目人员的努力,在 Ubuntu 18.04 上安装 WireGuard 相对简单。WireGuard 有一个维护良好的 PPA 存储库。您可以像这样添加此 PPA 和推荐的先决条件:

配置服务器

  1. 打开终端(如果尚未打开)

  2. 添加 WireGuard PPA(20.04 及以上版本不需要):

    sudo add-apt-repository ppa:wireguard/wireguard
    
  3. 更新 Apt 以适应新的存储库:

    sudo apt update
    
  4. 安装 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.
    
  5. 安装 WireGuard 后,就该对其进行配置并创建允许该工具安全运行的加密密钥了:

    wg genkey | sudo tee /etc/wireguard/privatekey | wg pubkey | sudo tee /etc/wireguard/publickey
    

    按照命令建议,genkey生成私钥并pubkey生成匹配的公钥。

    下一步是创建一个隧道设备来路由 VPN 流量。这可以使用ipwg命令来完成。但是,为了便于管理,您可以创建一个隧道文件并在其中添加其配置。

  6. 运行以下命令来创建一个名为的隧道文件wg0.conf

    sudo vi /etc/wireguard/wg0.conf
    

    笔记:随意使用你喜欢的任何文本编辑器。vi这里的使用更多的是肌肉记忆,而不是明确的认可。

  7. 将其粘贴到文件中:

    [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

  8. 使隧道联机:

    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
    

    现在开始进行一些端口转发……

  9. 打开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
    
  10. 保存文件。然后运行以下命令来完成 WireGuard 服务器设置:

    sudo sysctl -p
    sudo ufw allow 51820/udp
    

    这将重新加载sysctl并允许端口 51820 通过防火墙。

配置客户端

接下来是连接到服务器的客户端。前几个步骤看起来很熟悉,因为我们需要添加必要的 PPA,然后安装基础软件:

  1. 打开终端(如果尚未打开)

  2. 添加 WireGuard PPA,更新 Apt 并安装:

    sudo add-apt-repository ppa:wireguard/wireguard
    sudo apt update
    sudo apt install wireguard software-properties-common
    
  3. 生成私钥和公钥安全密钥:

    wg genkey | sudo tee /etc/wireguard/privatekey | wg pubkey | sudo tee /etc/wireguard/publickey
    
  4. 创建wg0.conf文件:

    sudo vi /etc/wireguard/wg0.conf
    
  5. 将此基础粘贴到新文件中并进行相应自定义:

    [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 下载客户端软件

希望这能满足您的需要。

相关内容