如何在 Ubuntu 18.04 上设置 WireGuard VPN

2023-10-30

WireGuard 是一种采用最先进加密技术的现代 VPN(虚拟专用网络)技术。与其他类似解决方案(例如 IPsec 和)相比OpenVPN,WireGuard 更快、更容易配置且性能更高。它是跨平台的,几乎可以在任何地方运行,包括 Linux、Windows、Android 和 macOS。 Wireguard 是一种点对点 VPN;它不使用客户端-服务器模型。根据其配置,对等方可以充当传统服务器或客户端。

线卫其工作原理是在每个对等设备上创建一个充当隧道的网络接口。对等点通过交换和验证公钥来相互验证,模仿 SSH 模型。公钥与隧道中允许的 IP 地址列表进行映射。 VPN 流量封装在 UDP 中。

在本教程中,我们将在 Ubuntu 18.04 计算机上设置 WireGuard,该计算机将充当 VPN 服务器。我们还将向您展示如何将 WireGuard 配置为客户端。客户端的流量将通过 Ubuntu 18.04 服务器进行路由。

此设置可用于防御中间人攻击、匿名上网、绕过地理限制内容或允许您的同事在远程工作时安全连接到公司网络。

先决条件#

您需要一个 Ubuntu 18.04 服务器,您可以使用 root 或帐户访问该服务器须藤权限 .

设置 WireGuard 服务器#

在本节中,我们将在 Ubuntu 计算机上安装 WireGuard 并将其设置为充当服务器。我们还将配置系统以通过它路由客户端的流量。

在 Ubuntu 18.04 上安装 WireGuard#

WireGuard 包含在默认的 Ubuntu 存储库中。要安装它,请运行以下命令:

sudo apt updatesudo apt install wireguard

WireGuard 作为内核模块运行,该模块被编译为 DKMS 模块。成功后,您将看到以下输出:

wireguard:
Running module version sanity check.
 - Original module
   - No original module exists within this kernel
 - Installation
   - Installing to /lib/modules/4.15.0-88-generic/updates/dkms/

depmod...

DKMS: install completed.

当您更新内核时,WireGuard 模块将针对新内核进行编译。

配置 WireGuard#

WireGuard 附带两个名为wg and wg-quick允许您配置和管理 WireGuard 接口。

运行以下命令生成公钥和私钥:

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

这些文件将生成在/etc/wireguard目录。您可以使用以下命令查看文件cat or less。私钥不应与任何人共享。

现在密钥已生成,我们需要配置用于路由 VPN 流量的隧道设备。

可以使用以下命令从命令行设置该设备ip and wg或通过使用文本编辑器创建配置文件。

创建一个新文件,名为wg0.conf并添加以下内容:

sudo nano /etc/wireguard/wg0.conf
/etc/wireguard/wg0.conf
[Interface]
Address = 10.0.0.1/24
SaveConfig = true
ListenPort = 51820
PrivateKey = SERVER_PRIVATE_KEY
PostUp = iptables -A FORWARD -i %i -j ACCEPT; iptables -t nat -A POSTROUTING -o ens3 -j MASQUERADE
PostDown = iptables -D FORWARD -i %i -j ACCEPT; iptables -t nat -D POSTROUTING -o ens3 -j MASQUERADE

该接口可以命名为任何名称,但建议使用类似的名称wg0 or wgvpn0。界面部分的设置含义如下:

  • 地址 - 以逗号分隔的 v4 或 v6 IP 地址列表wg0界面。使用为专用网络保留的 IP 范围(10.0.0.0/8、172.16.0.0/12 或 192.168.0.0/16)。

  • ListenPort - WireGuard 将接受传入连接的端口。

  • PrivateKey - 由生成的私钥wg genkey命令。 (要查看文件的内容,请运行:sudo cat /etc/wireguard/privatekey)

  • SaveConfig - 当设置为 true 时,关闭时将接口的当前状态保存到配置文件中。

  • PostUp - 在启动界面之前执行的命令或脚本。在此示例中,我们使用 iptables 来启用伪装。这将允许流量离开服务器,从而使 VPN 客户端能够访问互联网。

    确保更换ens3 after -A POSTROUTING以匹配您的公共网络接口的名称。您可以通过运行以下命令轻松找到该接口:

    ip -o -4 route show to default | awk '{print $5}'
  • PostDown - 在关闭接口之前执行的命令或脚本。一旦接口关闭,iptables 规则将被删除。

The wg0.conf and privatekey普通用户不应该读取文件。使用chmod将权限设置为600:

sudo chmod 600 /etc/wireguard/{privatekey,wg0.conf}

完成后,带上wg0使用配置文件中指定的属性启动接口:

sudo wg-quick up wg0

该命令将产生类似于以下内容的输出:

[#] ip link add wg0 type wireguard
[#] wg setconf wg0 /dev/fd/63
[#] ip -4 address add 10.0.0.1/24 dev wg0
[#] ip link set mtu 1420 up dev wg0
[#] iptables -A FORWARD -i wg0 -j ACCEPT; iptables -t nat -A POSTROUTING -o ens3 -j MASQUERADE

Run wg show wg0检查接口状态和配置:

sudo wg show wg0
interface: wg0
  public key: r3imyh3MCYggaZACmkx+CxlD6uAmICI8pe/PGq8+qCg=
  private key: (hidden)
  listening port: 51820

你也可以运行ip a show wg0验证接口状态:

ip a show wg0
4: wg0: <POINTOPOINT,NOARP,UP,LOWER_UP> mtu 1420 qdisc noqueue state UNKNOWN group default qlen 1000
    link/none 
    inet 10.0.0.1/24 scope global wg0
       valid_lft forever preferred_lft forever

要在启动时启用 WireGuard 界面,请运行以下命令:

sudo systemctl enable wg-quick@wg0

服务器网络和防火墙配置#

为了使 NAT 发挥作用,我们需要启用 IP 转发。打开/etc/sysctl.conf文件并添加或取消注释以下行:

sudo nano /etc/sysctl.conf
/etc/sysctl.conf
net.ipv4.ip_forward=1

保存文件并应用更改:

sudo sysctl -p
net.ipv4.ip_forward = 1

如果您使用 UFW 来管理您的firewall您需要在端口上打开 UDP 流量51820:

sudo ufw allow 51820/udp

就是这样。充当服务器的 Ubuntu 对等点已设置。

Linux 和 macOS 客户端设置#

所有受支持平台的安装说明可在以下位置找到:https://wireguard.com/install/。在 Linux 系统上,您可以使用分发包管理器安装该包,在 macOS 上,可以使用brew。安装 WireGuard 后,请按照以下步骤配置客户端设备。

设置 Linux 和 macOS 客户端的过程与设置服务器的过程几乎相同。首先生成公钥和私钥:

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

创建文件wg0.conf并添加以下内容:

sudo nano /etc/wireguard/wg0.conf
/etc/wireguard/wg0.conf
[Interface]
PrivateKey = CLIENT_PRIVATE_KEY
Address = 10.0.0.2/24


[Peer]
PublicKey = SERVER_PUBLIC_KEY
Endpoint = SERVER_IP_ADDRESS:51820
AllowedIPs = 0.0.0.0/0

界面部分的设置与设置服务器时的含义相同:

  • 地址 - 以逗号分隔的 v4 或 v6 IP 地址列表wg0界面。
  • PrivateKey - 要查看客户端计算机上文件的内容,请运行:sudo cat /etc/wireguard/privatekey

对等部分包含以下字段:

  • PublicKey - 您想要连接的对等方的公钥。 (服务器的内容/etc/wireguard/publickey file).
  • 端点 - 您要连接的对等点的 IP 或主机名,后跟冒号,然后是远程对等点侦听的端口号。
  • AllowedIPs - 以逗号分隔的 v4 或 v6 IP 地址列表,允许对等点的传入流量以及该对等点的传出流量定向到该地址。我们使用 0.0.0.0/0 是因为我们正在路由流量并希望服务器对等方发送具有任何源 IP 的数据包。

如果您需要配置其他客户端,只需使用不同的私有 IP 地址重复相同的步骤即可。

Windows 客户端设置#

从以下位置下载并安装 Windows msi 软件包WireGuard 网站 .

安装后,打开 WireGuard 应用程序并单击“添加隧道”->“添加空隧道...”,如下图所示:

公钥对将自动创建并显示在屏幕上。

输入隧道名称并编辑配置,如下所示:

[Interface]
PrivateKey = CLIENT_PRIVATE_KEY
Address = 10.0.0.2/24


[Peer]
PublicKey = SERVER_PUBLIC_KEY
Endpoint = SERVER_IP_ADDRESS:51820
AllowedIPs = 0.0.0.0/0

在接口部分添加新行来定义客户端隧道地址。

在对等部分中添加以下字段:

  • PublicKey - Ubuntu 服务器的公钥(/etc/wireguard/publickey file).
  • 端点 - Ubuntu 服务器的 IP 地址,后跟冒号和 WireGuard 端口 (51820)。
  • 允许的IP - 0.0.0.0/0

完成后单击“保存”按钮。

将客户端对等点添加到服务器#

最后一步是将客户端公钥和 IP 地址添加到服务器:

sudo wg set wg0 peer CLIENT_PUBLIC_KEY allowed-ips 10.0.0.2

确保更改CLIENT_PUBLIC_KEY使用您在客户端计算机上生成的公钥(sudo cat /etc/wireguard/publickey)并调整客户端IP地址(如果不同)。 Windows 用户可以从 WireGuard 应用程序复制公钥。

完成后,返回客户端计算机并打开隧道界面。

Linux 和 macOS 客户端#

在 Linux 客户端上运行以下命令打开界面:

sudo wg-quick up wg0

现在您应该连接到 Ubuntu 服务器,并且来自客户端计算机的流量应该通过它进行路由。您可以通过以下方式检查连接:

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: 1 minute, 22 seconds ago
  transfer: 58.43 KiB received, 70.82 KiB sent

您还可以打开浏览器,输入“what is my ip”,您应该会看到您的 Ubuntu 服务器 IP 地址。

要停止隧道挖掘,请降低wg0界面:

sudo wg-quick down wg0

Windows客户端#

如果您在 Windows 上安装了 WireGuard,请单击“激活”按钮。一旦对等点连接,隧道状态将更改为 Active:

结论#

我们向您展示了如何在 Ubuntu 18.04 计算机上安装 WireGuard 并将其配置为 VPN 服务器。此设置允许您通过保持流量数据的私密性来匿名上网。

如果您遇到任何问题,请随时发表评论。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何在 Ubuntu 18.04 上设置 WireGuard VPN 的相关文章

随机推荐

  • keyError:255 (Python连接数据库时)出错的解决办法:

    用Python连接数据库时的出现错误 解决办法 把pymysql包升级一下就好了 如果是用anaconda安装的Python 则在相应的环境中把pymysql 更新 update 一下
  • 如何在 AWS 实例上设置 WHM 和 cPanel

    WHM cPanel 是广泛用于 Linux 托管环境的基于 Web 的系统管理控制面板 要在AWS环境上使用WHM cPanel 我们将面临正常实例的问题 因此 我们更喜欢在aws中使用VPC 虚拟私有云 来安装WHM和cPanel服务器
  • 如何在 Debian 10 上安装 Google Cloud SDK

    谷歌云SDK提供了一组用于管理 Google Cloud Platform GCP 上托管的资源的工具 Cloud SDK 软件开发工具包 提供 gcloud gsutil 和 nd bq 命令 能够通过终端访问 Google Cloud
  • 如何在 Ubuntu 上安装和配置 Dovecot

    Dovecot 是一款开源 IMAP 和 POP3 电子邮件服务器 因其可靠性 可扩展性和易用性而被广泛使用 POP3 邮局协议 3 和 IMAP 互联网消息访问协议 都是用作消息访问代理的协议 这些协议用于从邮件服务器上的用户收件箱中获取
  • Linux /etc/shadow 文件

    基于 Linux 的系统以其强大的安全措施而闻名 可隔离敏感数据以确保最大限度地减少未经授权的访问 其中一项数据就是用户密码 与某些人的想法相反 这些密码不再以纯文本形式存储 甚至不再存储在 etc passwd 文件中 相反 它们以加密方
  • Ubuntu 18.10 发布、功能及更多

    简介 Ubuntu 开发团队现已开始开发 Ubuntu 18 10 的下一个版本 本文将为您提供有关 Ubuntu 18 10 的所有详细信息 Ubuntu 18 10 Cosmic Cuttlefish Release Date Feat
  • 配置 Sendmail 以通过远程 SMTP 服务器进行中继

    Sendmail 是基于 Unix 的系统上最古老且最流行的邮件传输代理 MTA 之一 它具有高度可定制性 这使其成为许多专业人士的首选 但这种灵活性也让它看起来令人畏惧 Sendmail 的一个关键功能是它能够通过远程 SMTP 服务器中
  • 如何通过 Docker 运行“npm start”

    npm 是 JavaScript 编程语言的软件包管理器 npm 使 JavaScript 开发人员可以轻松共享他们编写的代码 npm 还提供了一个命令行界面来管理项目中的依赖项 Docker 是一个容器化平台 允许开发人员将其应用程序和依
  • 如何在 CentOS 8 上安装 Ionic 框架

    Ionic 框架是开源 UI 工具包 用于使用 HTML CSS 和 JavaScript 等核心 Web 技术构建移动和桌面应用程序 Ionic 旨在在所有当前的移动设备和平台上完美地工作和显示 本文将帮助您在 CentOS 8 和 RH
  • 如何在 CentOS 和 RHEL 上设置 PHP eAccelerator

    PHP电子加速器用于通过优化和缓存编译状态来提高 php 脚本的性能 eAccelerator 将编译后的 PHP 脚本存储在共享内存中并直接从中执行代码 eAccelerator 通常可以减少服务器负载并将 PHP 代码的速度提高 1 1
  • 如何在 Ubuntu 18.04 上安装谷歌浏览器

    Google Chrome 是互联网用户最流行的网络浏览器 它适用于最流行的操作系统 如 Windows Linux 和 Android 设备 你也可以安装铬浏览器在你的 Ubuntu 系统上 开发团队使用 Chromium 源代码构建 C
  • 如何在 AWS 实例中获取默认 Windows 密码

    Amazon是领先的云托管提供商 您可以从 AWS 获得任何类型的服务器 从非常小到非常大 如果您已在 AWS EC2 托管帐户中创建了 Windows Server 实例 本文将帮助您了解如何在 AWS 实例中查找 Windows Ser
  • 5 个最佳 WordPress 托管提供商

    1 WP引擎 WP Engine 是适用于大容量网站的最佳且完全托管的 WordPress 托管 如果您的网站有数百万流量 您可以使用 WP Engine 托管 WP Engine 提供稳定 安全的托管 可以容纳您的所有客户 它的成本可能不
  • 如何在 Ubuntu 18.04 上安装 Atom 文本编辑器

    Atom是由GitHub开发的开源跨平台代码编辑器 它有一个内置的包管理器 嵌入Git控制 智能自动完成 语法突出显示和多个窗格 从本质上讲 Atom 是一个基于 Electron 构建的桌面应用程序 使用 HTML JavaScript
  • 如何在 Debian 9 上安装 R

    R 是一种快速发展的开源编程语言和环境 专门从事统计计算和图形表示 它由 R 统计计算基金会支持 主要供统计学家和数据挖掘人员用于开发统计软件和执行数据分析 本教程将引导您了解如何在 Debian 9 系统上安装 R 先决条件 在继续本教程
  • 如何在 Ubuntu 20.04 上安装和配置 Redis

    Redis 是一个开源内存键值数据存储 它可以用作数据库 缓存和消息代理 并支持各种数据结构 例如字符串 哈希 列表 集合等 Redis 通过 Redis Sentinel 提供高可用性 并通过 Redis Cluster 跨多个 Redi
  • Linux 中的 dmesg 命令

    Linux 内核是操作系统的核心 它控制对系统资源 如 CPU I O 设备 物理内存和文件系统 的访问 在引导过程中以及系统运行时 内核将各种消息写入内核环形缓冲区 这些消息包括有关系统操作的各种信息 内核环形缓冲区是物理内存的一部分 用
  • 如何在 CentOS 8 上设置 Nginx 服务器块

    服务器块是一种 Nginx 指令 它定义特定域的设置 允许您在一台服务器上运行多个网站 对于每个网站 您可以设置网站文档根目录 包含网站文件的目录 创建单独的安全策略 使用不同的 SSL 证书等等 本文介绍如何在 CentOS 8 上设置
  • 在 Debian 10 Linux 上使用 Let's Encrypt 保护 Nginx

    Let s Encrypt 是由互联网安全研究小组 ISRG 开发的免费 自动化 开放的证书颁发机构 提供免费的 SSL 证书 Let s Encrypt 颁发的证书受到所有主要浏览器的信任 并且自颁发之日起 90 天内有效 本教程展示了如
  • 如何在 Ubuntu 18.04 上设置 WireGuard VPN

    WireGuard 是一种采用最先进加密技术的现代 VPN 虚拟专用网络 技术 与其他类似解决方案 例如 IPsec 和 相比OpenVPN WireGuard 更快 更容易配置且性能更高 它是跨平台的 几乎可以在任何地方运行 包括 Lin