Portal:VPN/WireGuard 的安装和配置

跳转到:导航搜索

简介

VPN(虚拟专用网络)是一种扩展您本地私有网络(在家或办公室)到另一个私有网络的方式。在互联网上传输的两个网络中的流量经过加密,因此无法窃听。

最简单的情况下,它使您的台式机、笔记本电脑、平板电脑或智能手机(一个节点网络)可以从任何地方访问家庭或办公室的网络。在这种情况下,WireGuard 为您提供到远程网络的虚拟网络接口。您的设备看起来就像远程网络中的一个本地设备。

两端 WireGuard 和 Firewalld 的配置决定了本地和远程哪些系统可以访问。

  • 示例 1:您所有访问该远程网络的流量,如果已配置,以及互联网的流量,都将通过隧道传输到远程网络中的 WireGuard 服务器。您的本地网络连接上的唯一流量是通过隧道传输的加密流量。即使是服务器名称的 IP 地址请求在本地网络上也是不可见的。
  • 示例 2:只有访问远程网络的流量才会通过加密隧道传输到该网络中的 WireGuard 服务器。访问互联网的流量通过本地网络进行。在这种情况下,您信任本地网络。

关于 WireGuard 的大量信息可以在 WireGuard 网站 上找到。

WireGuard 密切依赖 iptables 或 nftables 才能正常工作。Firewalld 旨在简化这两种工具的使用。您很可能已经使用 Firewalld 来保护您的系统。在此维基页面中,我们仅将 Firewalld 与 WireGuard 结合使用。WireGuard 网站有一个 页面 专门介绍这种组合。它更通用,而我们希望专注于在 openSUSE 中的使用。

Icon-expand.png
本文是一个存根!
需要扩充本文。欢迎您按照风格指南进行编辑。

安装

在 openSUSE 上,您可以使用 YaST 安装 WireGuard 和 Firewalld,但配置必须在终端中完成,因此为什么不也在终端中完成安装呢。您需要以 root 用户身份执行几乎所有配置,因此在终端中以 root 用户身份工作。

zypper install wireguard-tools firewalld

配置

在服务器上

您需要使用以下命令生成公钥和私钥

wg genkey | tee serverprivatekey | wg pubkey > serverpublickey

将客户端上生成的 clientpublickey 复制到您的系统。使用以下 bash 脚本生成文件 /etc/wireguard/wg0.conf

#!/usr/bash
cat <<EOF > /etc/wireguard/wg0.conf
[Interface]
Address = 10.0.0.1/32
ListenPort = 51820
PrivateKey = $(cat serverprivatekey) 

[Peer]
PublicKey = $(cat clientpublickey)
AllowedIPs = 10.0.0.0/24
EOF

在客户端上

您需要使用以下命令生成公钥和私钥

wg genkey | tee clientprivatekey | wg pubkey > clientpublickey

将文件 serverpublickey 复制到客户端。

使用 bash 脚本生成文件 /etc/wireguard/wg0.conf

#!/usr/bash
serverip=<IP_address_of_server>
cat <<EOF > /etc/wireguard/wg0.conf
[Interface]
Address = 10.0.0.2/32
ListenPort = 51820
PrivateKey = $(cat clientprivatekey)
[Peer]
PublicKey = $(cat serverpublickey)
Endpoint = ${serverip}:51820
AllowedIPs = 0.0.0.0/0
EOF

AllowedIPs 行指示客户端生成的任何 IP 数据包(不包括与其它网络设备关联的地址)都将被发送到服务器。这涵盖了示例 1 的情况。

假设服务器侧的 IP 地址范围是 192.168.10.0/24,并将 0.0.0.0/0 替换为此值,意味着客户端生成的任何具有此范围内 IP 地址的数据包都将被发送到服务器。这将限制客户端只能访问远程网络中的系统。任何其它 IP 数据包(不包括 127.0.0.1 或您的网络设备的 IP 地址)都将通过您的网络连接离开您的系统。这涵盖了示例 2。