如何在 Linux 上配置点对点 VPN如何在 Linux 上配置点对点 VPN如何在 Linux 上配置点对点 VPN如何在 Linux 上配置点对点 VPN
  • 文章
  • 正则表达式
    • 工具
  • 登录
找到的结果: {phrase} (显示: {results_count} 共: {results_count_total})
显示: {results_count} 共: {results_count_total}

加载更多搜索结果...

搜索范围
模糊匹配
搜索标题
搜索内容
发表 admin at 2025年2月28日
类别
  • 未分类
标签

如何在 Linux 上配置点对点 VPN

传统的 VPN(例如 OpenVPN、OpenSwan、PPTP)由 VPN 服务器和连接到该服务器的一个或多个 VPN 客户端组成。当任意两个 VPN 客户端相互通信时,VPN 服务器需要在它们之间中继 VPN 流量。这种中心辐射型 VPN 拓扑的问题是,随着连接客户端数量的增加,VPN 服务器很容易成为性能瓶颈。从某种意义上说,集中式 VPN 服务器也是单点故障,如果 VPN 服务器出现故障,任何 VPN 客户端都无法再访问整个 VPN。

点对点 VPN(或 P2P VPN)是一种替代 VPN 模型,可以解决基于传统服务器-客户端的 VPN 的这些问题。在 P2P VPN 中,不再有集中式 VPN 服务器。任何具有公共 IP 地址的节点都可以将其他节点引导到 VPN 中。连接到 VPN 后,每个节点都可以直接与 VPN 中的任何其他节点通信,而无需通过中间服务器节点。当任一节点出现故障时,VPN 中的其他节点不会受到影响。在这种设置中,节点间延迟/带宽和 VPN 可扩展性自然会得到改善,如果您想使用 VPN 进行多人游戏或在许多朋友之间共享文件,这是理想的选择。

P2P VPN 有多种开源实现,例如 Tinc、peerVPN 和 n2n。在本教程中,我将演示如何在 Linux 上使用 n2n 配置点对点 VPN。

n2n 是一款开源 (GPLv3) 软件,允许您在用户之间构建加密的第 2/3 层点对点 VPN。 n2n 创建的 VPN 是NAT 友好的,这意味着位于不同 NAT 路由器后面的两个用户可以通过 VPN 直接相互通信。 n2n 支持对称 NAT 类型,这是限制最严格的 NAT 形式。为此,n2n 的 VPN 流量采用 UDP 封装。

n2n VPN 由两种节点组成:边缘节点和超级节点。边缘节点是连接到 VPN 的计算机,可能来自 NAT 路由器后面。超级节点是具有可公开访问的 IP 地址的计算机,有助于 NAT 边缘的初始信令。要在用户之间创建P2P VPN,我们至少需要一个超级节点。

准备

在本教程中,我将使用三个节点设置 P2P VPN:一个超级节点和两个边缘节点。唯一的要求是边缘节点能够 ping 通超级节点的 IP 地址。边缘节点是否位于 NAT 路由器后面并不重要。

在 Linux 上安装 n2n

使用n2n构建P2P VPN,需要在每个边缘节点以及超级节点上安装n2n。

由于其依赖性要求极低,n2n 可以在大多数 Linux 平台上轻松构建。

对于 Debian、Ubuntu 或 Linux Mint:

要在基于 Debian 的系统上安装 n2n:


$ sudo apt-get install subversion build-essential libssl-dev
$ svn co https://svn.ntop.org/svn/ntop/trunk/n2n
$ cd n2n/n2n_v2
$ make
$ sudo make install

对于 Fedora、CentOS 或 RHEL:

要在基于 Red Hat 的系统上安装 n2n:


$ sudo yum install subversion gcc-c++ openssl-devel
$ svn co https://svn.ntop.org/svn/ntop/trunk/n2n
$ cd n2n/n2n_v2
$ make
$ sudo make install

使用 n2n 配置 P2P VPN

如前所述,我们需要设置至少一个超级节点作为初始引导服务器。我们假设超级节点的IP地址是1.1.1.1。

配置超级节点

在作为超级节点的计算机上,运行以下命令。 “-l ”指定超级节点的监听端口。运行超级节点不需要root权限。


$ supernode -l 5000

配置边缘节点

在每个边缘节点上,使用以下命令连接到 P2P VPN。 edge 守护进程将在后台运行。

边缘节点#1:


$ sudo edge -d edge0 -a 10.0.0.10 -c mynetwork -u 1000 -g 1000 -k password -l 1.1.1.1:5000 -m ae:e0:4f:e7:47:5b

边缘节点#2:


$ sudo edge -d edge0 -a 10.0.0.11 -c mynetwork -u 1000 -g 1000 -k password -l 1.1.1.1:5000 -m ae:e0:4f:e7:47:5c

以下是一些关于命令行的解释。

  • “-d ”选项指定由 edge 命令创建的 TAP 接口的名称。

  • “-a ”选项定义(静态)分配给 TAP 接口的 VPN IP 地址。如果要使用 DHCP,则需要在其中一个边缘节点上设置 DHCP 服务器,并使用“-a dhcp:0.0.0.0”选项。

  • “-c ”选项指定VPN组的名称(长度最多16字节)。此选项用于在同一组节点之间创建多个 VPN。

  • -u 和 -g 选项用于在创建 TAP 接口后删除 root 权限。 edge 守护进程将作为指定的用户/组 ID 运行。

  • “-k ”选项指定要使用的twofish 加密密钥字符串。如果您想在命令行中隐藏密钥字符串,可以在 N2N_KEY 环境变量中定义该密钥。

  • “-l ”选项指定超级节点的监听IP地址和端口号。为了实现冗余,您最多可以指定两个不同的超级节点(例如,“-l ”、“-l ”)。

  • “-m ”为 TAP 接口分配静态 MAC 地址。如果没有这个,edge命令将随机生成一个MAC地址。事实上,强烈建议对 VPN 接口的静态 MAC 地址进行硬编码。否则,如果您在节点上重新启动 edge 守护进程,其他对等点的 ARP 缓存将因新生成的 MAC 地址而受到污染,并且在被污染的 ARP 条目被逐出之前,它们不会向该节点发送流量。

此时,您应该能够使用 VPN IP 地址从一个边缘节点 ping 到另一边缘节点。

故障排除

1. 调用 edge 守护程序时出现以下错误。


n2n[4405]: ERROR: ioctl() [Operation not permitted][-1]

请注意,edge 守护进程在创建 TAP 接口时需要超级用户权限。因此请确保使用 root 权限或为 edge 命令设置 SUID。之后您可以随时使用 -u 和 -g 选项来删除 root 权限。

结论

n2n 对您来说是一个非常实用的免费 VPN 解决方案。您可以从自己的家庭网络或从云托管获取可公开寻址的 VPS 实例轻松配置超级节点。您可以使用 n2n 在您的朋友之间设置您自己的低延迟、高带宽、可扩展的 P2P VPN,而不是将敏感凭据和加密密钥交给第三方 VPN 提供商。

您对 n2n 有何看法?在评论中分享你的意见。

©2015-2025 艾丽卡 support@alaica.com