标签 WireGuard 下的文章

Chrome 准备废弃刚刚标准化的 JPEG-XL 图像格式

JPEG-XL 作为一种免版税的下一代有损/无损图像格式,其性能比 JPEG 好得多,因此被人们所看好。JPEG-XL 部分是基于谷歌的 PIK 提案,该文件格式在去年才被标准化。自 Chrome 91 以来,谷歌浏览器通过一个功能标志启用 JPEG-XL 支持,但谷歌正在考虑在 Chrome 110 中废除对该图像的支持。目前还没有公开的评论,说明他们放弃 JPEG-XL 的理由,但是谷歌方面一直在积极推广他们的 WebP 格式。

消息来源:Phoronix
老王点评:看来还是谷歌觉得 JPEG-XL 不够亲儿子。

VMware 为过期版本修补了一个高危漏洞

VMware 修补了一个影响其 VMware Cloud Foundation 和 NSX Manager 产品的高危漏洞,该漏洞允许未经授权的黑客以最高的系统权限执行恶意代码。该漏洞危险等级 9.8/10,存在于其所依赖的 XStream 开源库中,因为危险是如此之高,VMware 不同寻常的为不再支持的版本发布了补丁。

消息来源:Solidot
老王点评:还不错,还会为停止支持的过期产品提供安全补丁。

FreeBSD 再次引入 WireGuard

早在 2020 年,FreeBSD 就引入了 WireGuard,但后来发现其初始实现代码太烂,而在 FreeBSD 13 RC 期间被移除。后来,WireGuard 的上游开发者亲自出手参与了其在 FreeBSD 的实现,经过两年的精细打磨,终于在周五重新进入了 FreeBSD 内核。预计它将出现在 FreeBSD 14 中,之前版本的 FreeBSD 也将会向后移植。

消息来源:Phoronix
老王点评:为 FreeBSD 的精益求精点赞。

使用 OpenWRT 和 Wireguard 在路由器上创建自己的虚拟专用网络。

 title=

通过计算机网络从一个地方到另一个地方可能是一件棘手的事情。除了知道正确的地址和打开正确的端口之外,还有安全问题。 对于 Linux,SSH 是一种流行的默认方式,虽然你可以使用 SSH 做很多事情,但它仍然“只是”一个安全外壳(实际上,这就是 SSH 的含义)。用于加密流量的更广泛的协议是“虚拟专用网络”,它创建了一个独特的两点之间的虚拟的专用网络。有了它,你可以登录到另一个网络上的计算机并使用它的所有服务(文件共享、打印机等等),就像你坐在同一个房间里一样,并且全部的数据都是从点到点加密的。

通常,为了使虚拟专用网络连接成为可能,进入每个网络的网关必须接受虚拟专用网络流量,并且必须侦听目标网络上的某些计算机的虚拟专用网络流量。然而,你可以运行自己的带有虚拟专用网络服务器的路由器固件,使你能够连接到目标网络,而无需担心转发端口或考虑内部拓扑。我最喜欢的固件是 OpenWrt,在本文中我将演示如何设置它,以及如何启用虚拟专用网络。

什么是 OpenWrt?

OpenWrt 是一个使用 Linux 面向嵌入式设备的开源项目。它已经存在超过 15 年,拥有庞大而活跃的社区。

使用 OpenWrt 的方法有很多种,但它的主要用途是在路由器中。它提供了一个具有包管理功能的完全可写的文件系统,并且由于它是开源的,你可以查看和修改代码并为生态系统做出贡献。如果你想对路由器进行更多控制,这就是你想要使用的系统。

OpenWrt 支持很多路由器,包括 思科华硕MikroTikTeltonika NetworksD-LinkTP-linkBuffaloUbiquiti 等知名品牌和 许多其他品牌

Wireguard 是什么?

Wireguard 是开源的虚拟专用网络软件,它比 OpenVPN 等其他选项更快、更简单且更安全。它使用最先进的密码学:用于对称加密的 ChaCha20;用于密钥协商的 Curve 25519(使用椭圆曲线),和用于散列的 BLAKE2。这些算法的设计方式在嵌入式系统上是高效的。Wireguard 也可用于各种操作系统 平台

先决条件

对于这个项目,你需要:

  • Teltonika RUT955 或支持 OpenWrt 的其他路由器
  • 一个公网 IP 地址,用于从外部网络连接到虚拟专用网络
  • 一部安卓手机

安装 OpenWrt

首先,下载路由器的 OpenWrt 镜像。使用 固件选择器 检查 OpenWrt 是否支持你的路由器并下载固件。输入你的路由器型号,将显示选项:

 title=

使用搜索框右侧的下拉输入选择要下载的固件版本。

下载出厂镜像。

 title=

许多路由器允许你从 Web 界面刷入未经授权的固件,但 Teltonika Networks 不允许。要将 OpenWrt 固件刷入这样的路由器,你需要使用引导加载器。为此,请按照下列步骤操作:

  1. 拔掉路由器的电源线。
  2. 按住重置按钮。
  3. 插入路由器的电源线。
  4. 插入电源线后,继续按住重置按钮 5 到 8 秒。
  5. 将计算机的 IP 地址设置为 192.168.1.15,将网络掩码设置为 255.255.255.0
  6. 使用以太网电缆通过 LAN 端口连接路由器和计算机。
  7. 打开网页浏览器并输入 192.168.1.1:/index.html
  8. 上传并刷写固件。

刷机过程可能占用三分钟。之后,你应该可以通过在浏览器中输入 192.168.1.1 来访问路由器的 Web 界面。 默认情况下没有设置密码

 title=

配置网络连接

网络连接是必要条件。如果你的 Internet 服务提供商(ISP) 使用 DHCP 自动分配你的 IP 地址,你只需将以太网电缆插入路由器的 WAN 端口。

如果你需要手动分配 IP 地址,导航至 “Network → Interfaces”。选择 “Edit” 编辑你的 WAN 接口。从 “Protocol” 字段中,选择 “Static address”,然后选择 “Switch protocol”。

 title=

在 “IPv4 address” 字段中,输入你的路由器地址。设置 “IPv4 netmask” 以匹配你的网络子网;输入你将用于连接到网络的 “IPv4 gateway” 地址; 并在 “Use custom DNS servers” 字段中输入 DNS 服务器的地址。保存配置。

就是这样!你已成功配置 WAN 接口以获得网络连接。

安装必要的包

默认情况下,该固件不包含很多包,但 OpenWrt 有一个包管理器和可选安装的软件包。导航到 “System → Software” 并通过选择 “Update list...” 更新你的包管理器。

 title=

在“Filter”输入中,键入 “Wireguard”,等待系统找到所有包含该关键字的包。找到并安装名为 “luci-app-wireguard” 的包。

 title=

该软件包包括一个用于配置 Wireguard 的 Web 界面,并安装 Wireguard 所必需的所有依赖项。

如果你在安装 Wireguard 软件包之前收到一个软件包丢失的警告并且在存储库中找不到,请忽略它并继续。

接下来,找到并安装名为 “luci-app-ttyd” 的包。这将用于稍后访问终端。

安装这些软件包后,重新启动路由器以使更改生效。

配置 Wireguard 接口

接下来,创建 Wireguard 接口。导航到 “Network → Interfaces” 并选择左下角的 “Add new interface...”。在弹出窗口中,输入你想要的接口名称,从下拉列表中选择 “WireguardVPN”,然后选择右下角的 “Create interface”。

 title=

在新弹出的窗口中,选择 “Generate Key” 为 Wireguard 接口生成私钥。在 “Listen Port” 字段中,输入所需的端口。我将使用默认的 Wireguard 端口,“51820”。在 “IP Addresses” 字段中,分配将用于 Wireguard 接口的 IP 地址。在这个例子中,我使用了 10.0.0.1/24。数字 “24” 表明我的子网的大小。

 title=

保存配置并重启接口。

导航到 “Services → Terminal”,登录到 shell,然后输入命令 wg show。你将看到有关 Wiregaurd 接口的一些信息,包括其公钥。复制公钥——稍后你将需要它来创建对等点。

 title=

配置防火墙

导航到 “Network → Firewall” 并选择 “Traffic Rules” 选项卡。在页面底部,选择 “Add”。在弹出窗口的 “Name” 字段中,为你的规则命名,例如 “Allow-wg”。接下来,将 “Destination zone” 从 “Lan” 更改为 “Device”,并将 “Destination port” 设置为 “51820”。

 title=

保存配置。

手机上配置 Wireguard

从 Google Play 在你的手机上安装 Wireguard 应用程序。安装后,打开应用程序并从头开始创建一个新接口。在 “Name” 字段中,输入要用于接口的名称。在 “Private key” 字段中,按右侧的双向箭头图标生成密钥对。你将需要上面的公钥来在你的手机和路由器之间创建一个对等点。在 “Addresses” 字段中,分配你将用于通过虚拟专用网络访问电话的 IP 地址。我将使用 10.0.0.2/24。在 “Listen port” 中,输入端口;我将再次使用默认端口。

 title=

保存配置。

要向配置中添加对等点,请选择 “Add peer”。在 “Public key” 字段中,输入路由器的 Wireguard 公钥。在 “Endpoint” 字段中,输入路由器的公共 IP 地址和端口,以冒号分隔,例如 12.34.56.78:51820。在 “Allowed IP” 字段中,输入要通过 Wireguard 接口访问的 IP 地址。 (你可以输入路由器的虚拟专用网络接口 IP 地址和 LAN 接口地址。)IP 地址必须用逗号分隔。你还可以定义子网的大小。

 title=

保存配置。

配置中还剩下最后一步:在路由器上添加一个对等点。

在路由器上添加一个对等点

导航到 “Network → Interfaces” 并选择你的 Wireguard 接口。转到 “Peers” 选项卡并选择 “Add peer”。在 “Description” 字段中,输入对等方的名称。在 “Public Key” 字段中输入手机的 Wireguard 接口公钥,在 “Allowed IPs” 字段中输入手机的 Wireguard 接口 IP 地址。选中 “Route Allowed IPs” 复选框。

 title=

保存配置并重启接口。

测试配置

在手机上打开 Web 浏览器。在 URL 栏中,输入 IP 地址 10.0.0.1192.168.1.1。你应该能够访问路由器的网站。

 title=

你自己的虚拟专用网络

这些天有很多虚拟专用网络服务商在做广告,但是拥有和控制自己的基础设施还有很多话要说,尤其是当该基础设施仅用于提高安全性时。无需依赖其他人为你提供安全的数据连接。使用 OpenWrt 和 Wireguard,你可以拥有自己的开源虚拟专用网络解决方案。


via: https://opensource.com/article/21/5/open-source-private-vpn

作者:Lukas Janėnas 选题:lujun9972 译者:stevenzdg988 校对:wxy

本文由 LCTT 原创编译,Linux中国 荣誉推出

虚拟私有网络 Virtual Private Networks 应用广泛。如今有各种方案可供使用,用户可通过这些方案访问任意类型的资源,同时保持其机密性与隐私性。

最近,WireGuard 因为其简单性、速度与安全性成为最广泛使用的虚拟私有网络协议之一。WireGuard 最早应用于 Linux 内核,但目前可以用在其他平台,例如 iOS、Android 等。

WireGuard 使用 UDP 作为其传输协议,并在 Critokey Routing(CKR)的基础上建立对等节点之间的通信。每个对等节点(无论是服务器或客户端)都有一对 密钥 key (公钥与私钥),公钥与许可 IP 间建立通信连接。有关 WireGuard 更多信息请访问其 主页

本文描述了如何在两个对等节点(PeerA 与 PeerB)间设置 WireGuard。两个节点均运行 Fedora Linux 系统,使用 NetworkManager 进行持久性配置。

WireGuard 设置与网络配置

在 PeerA 与 PeerB 之间建立持久性虚拟私有网络连接只需三步:

  1. 安装所需软件包。
  2. 生成 密钥对 key pair
  3. 配置 WireGuard 接口。

安装

在两个对等节点(PeerA 与 PeerB)上安装 wireguard-tools 软件包:

$ sudo -i
# dnf -y install wireguard-tools

这个包可以从 Fedora Linux 更新库中找到。它在 /etc/wireguard/ 中创建一个配置目录。在这里你将创建密钥和接口配置文件。

生成密钥对

现在,使用 wg 工具在每个节点上生成公钥与私钥:

# cd /etc/wireguard
# wg genkey | tee privatekey | wg pubkey > publickey

在 PeerA 上配置 WireGuard 接口

WireGuard 接口命名规则为 wg0wg1 等等。完成下述步骤为 WireGuard 接口创建配置:

  • PeerA 节点上配置想要的 IP 地址与掩码。
  • 该节点监听的 UDP 端口。
  • PeerA 的私钥。
# cat << EOF > /etc/wireguard/wg0.conf
[Interface]
Address = 172.16.1.254/24
SaveConfig = true
ListenPort = 60001
PrivateKey = mAoO2RxlqRvCZZoHhUDiW3+zAazcZoELrYbgl+TpPEc=

[Peer]
PublicKey = IOePXA9igeRqzCSzw4dhpl4+6l/NiQvkDSAnj5LtShw=
AllowedIPs = 172.16.1.2/32
EOF

允许 UDP 流量通过节点监听的端口:

# firewall-cmd --add-port=60001/udp --permanent --zone=public
# firewall-cmd --reload
success

最后,将接口配置文件导入 NetworkManager。这样,WireGuard 接口在重启后将持续存在。

# nmcli con import type wireguard file /etc/wireguard/wg0.conf
Connection 'wg0' (21d939af-9e55-4df2-bacf-a13a4a488377) successfully added.

验证 wg0的状态:

# wg
interface: wg0
  public key: FEPcisOjLaZsJbYSxb0CI5pvbXwIB3BCjMUPxuaLrH8=
  private key: (hidden)
  listening port: 60001

peer: IOePXA9igeRqzCSzw4dhpl4+6l/NiQvkDSAnj5LtShw=
  allowed ips: 172.16.1.2/32

# nmcli -p device show wg0

===============================================================================
                             Device details (wg0)
===============================================================================
GENERAL.DEVICE:                         wg0
-------------------------------------------------------------------------------
GENERAL.TYPE:                           wireguard
-------------------------------------------------------------------------------
GENERAL.HWADDR:                         (unknown)
-------------------------------------------------------------------------------
GENERAL.MTU:                            1420
-------------------------------------------------------------------------------
GENERAL.STATE:                          100 (connected)
-------------------------------------------------------------------------------
GENERAL.CONNECTION:                     wg0
-------------------------------------------------------------------------------
GENERAL.CON-PATH:                       /org/freedesktop/NetworkManager/ActiveC>
-------------------------------------------------------------------------------
IP4.ADDRESS[1]:                         172.16.1.254/24
IP4.GATEWAY:                            --
IP4.ROUTE[1]:                           dst = 172.16.1.0/24, nh = 0.0.0.0, mt =>
-------------------------------------------------------------------------------
IP6.GATEWAY:                            --
-------------------------------------------------------------------------------

上述输出显示接口 wg0 已连接。现在,它可以和虚拟私有网络 IP 地址为 172.16.1.2 的对等节点通信。

在 PeerB 上配置 WireGuard 接口

现在可以在第二个对等节点上创建 wg0 接口的配置文件了。确保你已经完成以下步骤:

  • PeerB 节点上设置 IP 地址与掩码。
  • PeerB 的私钥。
  • PeerA 的公钥。
  • PeerA 的 IP 地址或主机名、监听 WireGuard 流量的 UDP 端口。
# cat << EOF > /etc/wireguard/wg0.conf
[Interface]
Address = 172.16.1.2
SaveConfig = true
PrivateKey = UBiF85o7937fBK84c2qLFQwEr6eDhLSJsb5SAq1lF3c=

[Peer]
PublicKey = FEPcisOjLaZsJbYSxb0CI5pvbXwIB3BCjMUPxuaLrH8=
AllowedIPs = 172.16.1.254/32
Endpoint = peera.example.com:60001
EOF

最后一步是将接口配置文件导入 NetworkManager。如上所述,这一步是重启后保持 WireGuard 接口持续存在的关键。

# nmcli con import type wireguard file /etc/wireguard/wg0.conf
Connection 'wg0' (39bdaba7-8d91-4334-bc8f-85fa978777d8) successfully added.

验证 wg0 的状态:

# wg
interface: wg0
  public key: IOePXA9igeRqzCSzw4dhpl4+6l/NiQvkDSAnj5LtShw=
  private key: (hidden)
  listening port: 47749

peer: FEPcisOjLaZsJbYSxb0CI5pvbXwIB3BCjMUPxuaLrH8=
  endpoint: 192.168.124.230:60001
  allowed ips: 172.16.1.254/32

# nmcli -p device show wg0

===============================================================================
                             Device details (wg0)
===============================================================================
GENERAL.DEVICE:                         wg0
-------------------------------------------------------------------------------
GENERAL.TYPE:                           wireguard
-------------------------------------------------------------------------------
GENERAL.HWADDR:                         (unknown)
-------------------------------------------------------------------------------
GENERAL.MTU:                            1420
-------------------------------------------------------------------------------
GENERAL.STATE:                          100 (connected)
-------------------------------------------------------------------------------
GENERAL.CONNECTION:                     wg0
-------------------------------------------------------------------------------
GENERAL.CON-PATH:                       /org/freedesktop/NetworkManager/ActiveC>
-------------------------------------------------------------------------------
IP4.ADDRESS[1]:                         172.16.1.2/32
IP4.GATEWAY:                            --
-------------------------------------------------------------------------------
IP6.GATEWAY:                            --
-------------------------------------------------------------------------------

上述输出显示接口 wg0 已连接。现在,它可以和虚拟私有网络 IP 地址为 172.16.1.254 的对等节点通信。

验证节点间通信

完成上述步骤后,两个对等节点可以通过虚拟私有网络连接相互通信,以下是 ICMP 测试结果:

[root@peerb ~]# ping 172.16.1.254 -c 4
PING 172.16.1.254 (172.16.1.254) 56(84) bytes of data.
64 bytes from 172.16.1.254: icmp_seq=1 ttl=64 time=0.566 ms
64 bytes from 172.16.1.254: icmp_seq=2 ttl=64 time=1.33 ms
64 bytes from 172.16.1.254: icmp_seq=3 ttl=64 time=1.67 ms
64 bytes from 172.16.1.254: icmp_seq=4 ttl=64 time=1.47 ms

在这种情况下,如果你在 PeerA 端口 60001 上捕获 UDP 通信,则将看到依赖 WireGuard 协议的通信过程和加密的数据:

捕获依赖 WireGuard 协议的节点间 UDP 流量

总结

虚拟私有网络很常见。在用于部署虚拟私有网络的各种协议和工具中,WireGuard 是一种简单、轻巧和安全的选择。它可以在对等节点之间基于 CryptoKey 路由建立安全的点对点连接,过程非常简单。此外,NetworkManager 支持 WireGuard 接口,允许重启后进行持久配置。


via: https://fedoramagazine.org/configure-wireguard-vpns-with-networkmanager/

作者:Maurizio Garcia 选题:lujun9972 译者:DCOLIVERSUN 校对:wxy

本文由 LCTT 原创编译,Linux中国 荣誉推出

从普通的 Linux 用户到 Linux 创建者 Linus Torvalds,每个人都对 WireGuard 很感兴趣。什么是 WireGuard,它为何如此特别?

什么是 WireGuard?

WireGuard 是一个易于配置、快速且安全的开源 VPN,它利用了最新的加密技术。目的是提供一种更快、更简单、更精简的通用 VPN,它可以轻松地在树莓派这类低端设备到高端服务器上部署。

IPsec 和 OpenVPN 等大多数其他解决方案是几十年前开发的。安全研究人员和内核开发人员 Jason Donenfeld 意识到它们速度慢且难以正确配置和管理。

这让他创建了一个新的开源 VPN 协议和解决方案,它更加快速、安全、易于部署和管理。

WireGuard 最初是为 Linux 开发的,但现在可用于 Windows、macOS、BSD、iOS 和 Android。它仍在活跃开发中。

为什么 WireGuard 如此受欢迎?

除了可以跨平台之外,WireGuard 的最大优点之一就是易于部署。配置和部署 WireGuard 就像配置和使用 SSH 一样容易。

看看 WireGuard 设置指南。安装 WireGuard、生成公钥和私钥(像 SSH 一样),设置防火墙规则并启动服务。现在将它和 OpenVPN 设置指南进行比较——有太多要做的了。

WireGuard 的另一个好处是它有一个仅 4000 行代码的精简代码库。将它与 OpenVPN(另一个流行的开源 VPN)的 100,000 行代码相比。显然,调试 WireGuard 更加容易。

不要因其简单而小看它。WireGuard 支持所有最新的加密技术,例如 Noise 协议框架Curve25519ChaCha20Poly1305BLAKE2SipHash24HKDF 和安全受信任结构。

由于 WireGuard 运行在内核空间,因此可以高速提供安全的网络。

这些是 WireGuard 越来越受欢迎的一些原因。Linux 创造者 Linus Torvalds 非常喜欢 WireGuard,以至于将其合并到 Linux Kernel 5.6 中:

我能否再次声明对它的爱,并希望它能很快合并?也许代码不是完美的,但我不在乎,与 OpenVPN 和 IPSec 的恐怖相比,这是一件艺术品。

Linus Torvalds

如果 WireGuard 已经可用,那么将其包含在 Linux 内核中有什么大惊小怪的?

这可能会让新的 Linux 用户感到困惑。你知道可以在 Linux 上安装和配置 WireGuard VPN 服务器,但同时也会看到 Linux Kernel 5.6 将包含 WireGuard 的消息。让我向您解释。

目前,你可以将 WireGuard 作为内核模块安装在 Linux 中。而诸如 VLC、GIMP 等常规应用安装在 Linux 内核之上(在 用户空间中),而不是内部。

当将 WireGuard 安装为内核模块时,基本上需要你自行修改 Linux 内核并向其添加代码。从 5.6 内核开始,你无需手动添加内核模块。默认情况下它将包含在内核中。

在 5.6 内核中包含 WireGuard 很有可能扩展 WireGuard 的采用,从而改变当前的 VPN 场景

总结

WireGuard 之所以受欢迎是有充分理由的。诸如 Mullvad VPN 之类的一些流行的关注隐私的 VPN 已经在使用 WireGuard,并且在不久的将来,采用率可能还会增长。

希望你对 WireGuard 有所了解。与往常一样,欢迎提供反馈。


via: https://itsfoss.com/wireguard/

作者:Abhishek Prakash 选题:lujun9972 译者:geekpi 校对:wxy

本文由 LCTT 原创编译,Linux中国 荣誉推出