使用开源工具创建私有的虚拟专用网络
创始人
2024-03-02 07:38:24
0

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

通过计算机网络从一个地方到另一个地方可能是一件棘手的事情。除了知道正确的地址和打开正确的端口之外,还有安全问题。 对于 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 是否支持你的路由器并下载固件。输入你的路由器型号,将显示选项:

OpenWRT 固件选择器

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

下载出厂镜像。

下载出厂镜像

许多路由器允许你从 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 界面。 默认情况下没有设置密码

OpenWrt 授权

配置网络连接

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

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

手动分配 IP 地址

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

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

安装必要的包

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

OpenWrt 包管理器

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

luci-app-wireguard 包

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

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

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

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

配置 Wireguard 接口

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

创建 Wireguard 接口

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

创建 Wireguard 接口

保存配置并重启接口。

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

Wireguard 公钥

配置防火墙

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

保存配置。

手机上配置 Wireguard

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

保存配置。

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

在 Android 上添加虚拟专用网络对等点

保存配置。

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

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

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

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

保存配置并重启接口。

测试配置

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

从 Android 登录 虚拟专用网络

你自己的虚拟专用网络

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


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

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

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

相关内容

【问题】如何替换OpenW...
如何替换OpenWrt路由器登录logo 思路:首先...
2025-05-28 03:14:22
编译OpenWrt以包含t...
编译OpenWrt以包含tc和netem的方法如下:首先,确保你已...
2024-12-08 10:31:21
编写和编译OpenWrt程...
编写和编译OpenWrt程序可以通过以下步骤来实现:准备开发环境:...
2024-12-05 10:02:58
Azcopy在Linux ...
要在Linux OpenWrt上解决Azcopy函数名错误的问题,...
2024-09-29 10:30:15
Apache2不代理到端口...
要确保Apache2不代理到特定端口(通过WireGuard),您...
2024-09-05 06:01:39
浅谈绿联私有云UGOS P...
前言 关于绿联私有云UGOS系统的窘境: 我也算是一位NAS老玩家...
2024-07-22 04:17:46

热门资讯

Helix:高级 Linux ... 说到 基于终端的文本编辑器,通常 Vim、Emacs 和 Nano 受到了关注。这并不意味着没有其他...
使用 KRAWL 扫描 Kub... 用 KRAWL 脚本来识别 Kubernetes Pod 和容器中的错误。当你使用 Kubernet...
JStock:Linux 上不... 如果你在股票市场做投资,那么你可能非常清楚投资组合管理计划有多重要。管理投资组合的目标是依据你能承受...
通过 SaltStack 管理... 我在搜索Puppet的替代品时,偶然间碰到了Salt。我喜欢puppet,但是我又爱上Salt了:)...
Epic 游戏商店现在可在 S... 现在可以在 Steam Deck 上运行 Epic 游戏商店了,几乎无懈可击! 但是,它是非官方的。...
《Apex 英雄》正式可在 S... 《Apex 英雄》现已通过 Steam Deck 验证,这使其成为支持 Linux 的顶级多人游戏之...
如何在 Github 上创建一... 学习如何复刻一个仓库,进行更改,并要求维护人员审查并合并它。你知道如何使用 git 了,你有一个 G...
2024 开年,LLUG 和你... Hi,Linuxer,2024 新年伊始,不知道你是否已经准备好迎接新的一年~ 2024 年,Lin...
什么是 KDE Connect... 什么是 KDE Connect?它的主要特性是什么?它应该如何安装?本文提供了基本的使用指南。科技日...
Opera 浏览器内置的 VP... 昨天我们报道过 Opera 浏览器内置了 VPN 服务,用户打开它可以防止他们的在线活动被窥视。不过...