使用N2N连接多个Vultr区域

N2N是一个开源第2/3层VPN应用程序。与许多其他VPN程序不同,N2N可以连接位于NAT路由器后面的计算机。这为连接到云环境提供了巨大的优势,而不必依赖诸如ESP协议(由ipsec使用)之类的特殊协议。为了实现此连接,N2N使用一个超级节点,该超级节点可以在经过NAT的节点之间路由信息。此VPN连接可用于将区域之间的多个Vultr实例连接在一起。

先决条件

在此示例中,我们将在多个区域中使用三个节点:

  • 巴黎
  • 迈阿密
  • 悉尼

安装软件

以下命令将在每个实例上执行。

首先build-essentiallibssl-dev仓库安装,然后从安装,因为我们将从最新的源代码进行构建。

apt-get install -y build-essential libssl-dev

接下来,从github下载源代码。

cd /tmp
git clone https://github.com/ntop/n2n.git

编译所有二进制文件。

cd n2n 
make
make install

make install命令将在目录中创建supernodeedge二进制文件/usr/sbin。通过清理文件来完成。

rm -rf /tmp/n2n

安装-Node Paris

第一个节点将是我们所谓的超级节点。该超级节点将启动将在UDP端口上侦听的超级节点服务1200。默认情况下,N2N应用程序不创建服务文件。因此,我们将需要提供我们自己的。

创建“ n2n_supernode”服务文件:

nano /etc/systemd/system/n2n_supernode.service

添加以下内容:

[Unit]
Description=n2n supernode
Wants=network-online.target
After=network-online.target

[Service]
ExecStart=/usr/sbin/supernode -l 1200

[Install]
WantedBy=multi-user.target

'-l'指令定义UDP端口1200。这是超级节点将在其上侦听的端口。为了确保一切正常,请启动超级节点服务:

systemctl start n2n_supernode

检查超级节点的状态。

systemctl status n2n_supernode

这将显示类似于以下的状态。

● n2n_supernode.service - n2n supernode
   Loaded: loaded (/etc/systemd/system/n2n_supernode.service; disabled; vendor prese
   Active: active (running) since Wed 2018-08-15 17:07:46 UTC; 5s ago
 Main PID: 4711 (supernode)
    Tasks: 1
   Memory: 80.0K
      CPU: 1ms
   CGroup: /system.slice/n2n_supernode.service
           └─4711 /usr/sbin/supernode -l 1200

接下来,我们将创建边缘服务。此边缘服务将要求使用专用IP,以在其他Vultr区域中的其他边缘之间进行通信。

与超节点服务一样,这也将需要其自己的服务文件。

nano /etc/systemd/system/n2n_edge.service

添加以下内容:

[Unit]
Description=n2n edge
Wants=network-online.target
After=network-online.target n2n_supernode.service

[Service]
ExecStart=/usr/sbin/edge -l localhost:1200 -c Vultr -a 192.168.1.1 -k mypassword -f

[Install]
WantedBy=multi-user.target

在此服务文件中,我们定义了以下命令行选项:

  • -l localhost:1200:这将在UDP端口上连接到localhost 1200
  • -c Vultr:这是边缘将加入的社区。同一社区内的所有边缘都出现在同一LAN(第2层网段)上。不在同一社区中的边缘将不会相互通信。
  • -a 192.168.1.1:分配给该接口的IP。这是所声明的N2N虚拟LAN IP地址。
  • -k mypassword:每个边缘使用的密码。所有通信的边缘都必须使用相同的密钥和社区名称。
  • -f:禁用守护程序模式,并使edge在前台运行。服务文件需要此文件,否则systemctl将不会启动服务。

为确保一切正常,请启动服务。

systemctl start n2n_edge

然后,查询服务状态。

systemctl status n2n_edge   

输出将类似于以下内容。

● n2n_edge.service - n2n edge
   Loaded: loaded (/etc/systemd/system/n2n_edge.service; disabled; vendor preset: en
   Active: active (running) since Wed 2018-08-15 17:10:46 UTC; 3s ago
 Main PID: 4776 (edge)
    Tasks: 1
   Memory: 396.0K
      CPU: 8ms
   CGroup: /system.slice/n2n_edge.service
           └─4776 /usr/sbin/edge -l localhost:1200 -c Vultr -a 192.168.1.1 -k mypass

如果我们选中“ ifconfig”,您将看到edge0接口声明了N2N虚拟IP 。

ifconfig

输出将类似于以下内容。

edge0     Link encap:Ethernet  HWaddr 42:14:55:64:7d:21
          inet addr:192.168.1.1  Bcast:192.168.1.255  Mask:255.255.255.0
          inet6 addr: fe80::4014:55ff:fe64:7d21/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1400  Metric:1
          RX packets:0 errors:0 dropped:0 overruns:0 frame:0
          TX packets:8 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000
          RX bytes:0 (0.0 B)  TX bytes:648 (648.0 B)

完成此操作后,启用并创建防火墙规则。确保用悉尼和迈阿密实例的公共IP 替换node_miami_ipnode_sydney_ip文本。(我们将在以后使用它们)。

ufw allow 22/tcp
ufw allow from node_miami_ip to any port 1200
ufw allow from node_sydney_ip to any port 1200
ufw enable

与该节点有关的最后一件事是在引导时启用这两个服务。

systemctl enable n2n_supernode.service
systemctl enable n2n_edge.service

安装-Node Miami

迈阿密节点将连接到当前在巴黎区域中运行的超级节点。为此,我们只需要为edge应用程序创建一个服务文件即可。

首先创建边缘服务文件。

nano /etc/systemd/system/n2n_edge.service

添加以下内容。

[Unit]
Description=n2n edge
Wants=network-online.target
After=network-online.target

[Service]
ExecStart=/usr/sbin/edge -l node_paris_ip:1200 -c Vultr -a 192.168.1.2 -k mypassword -f

[Install]
WantedBy=multi-user.target

注意将替换为node_paris_ip在巴黎运行的实例的公共IP

这将通过UDP端口连接到巴黎的节点1200,加入社区“ Vultr”,获取IP 192.168.1.2并使用“ mypassword”进行身份验证。

接下来,启动服务。

systemctl start n2n_edge

检查状态以指示服务已正确启动并正在运行。

systemctl status n2n_edge   

接下来,确保edge0IP已获得所有权。

ifconfig

它将显示192.168.1.2IP地址。

edge0     Link encap:Ethernet  HWaddr 42:14:55:64:7d:21
          inet addr:192.168.1.2  Bcast:192.168.1.255  Mask:255.255.255.0
          inet6 addr: fe80::4014:55ff:fe64:7d21/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1400  Metric:1
          RX packets:0 errors:0 dropped:0 overruns:0 frame:0
          TX packets:8 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000
          RX bytes:0 (0.0 B)  TX bytes:648 (648.0 B)

下一步是在启动时启用服务。

systemctl enable n2n_edge.service

(可选)启用防火墙并添加SSH规则。

ufw allow 22/tcp
ufw enable

现在,我们将能够ping通实例中运行的两个边缘。

在巴黎,对迈阿密的Vultr实例执行ping操作

ping 192.168.1.2

在迈阿密,在巴黎探寻优势

ping 192.168.1.1

安装-悉尼节点

最后,我们将最后一个大陆加入澳大利亚。从创建边缘服务开始,该边缘服务还将连接到巴黎之前配置的超级节点。

nano /etc/systemd/system/n2n_edge.service

添加以下内容。

[Unit]
Description=n2n edge
Wants=network-online.target
After=network-online.target

[Service]
ExecStart=/usr/sbin/edge -l node_paris_ip:1200 -c Vultr -a 192.168.1.3 -k mypassword -f

[Install]
WantedBy=multi-user.target

注意将替换为node_paris_ip在巴黎运行的实例的公共IP。

这将通过UDP端口连接到巴黎的节点1200,加入社区“ Vultr”,获取IP 192.168.1.3并使用“ mypassword”进行身份验证。

systemctl start n2n_edge

检查状态以确保服务已启动。

systemctl status n2n_edge   

确保已声明edge0IP。

edge0     Link encap:Ethernet  HWaddr 46:56:b0:e9:8f:8a
          inet addr:192.168.1.3  Bcast:192.168.1.255  Mask:255.255.255.0
        inet6 addr: fe80::4456:b0ff:fee9:8f8a/64 Scope:Link
        UP BROADCAST RUNNING MULTICAST  MTU:1400  Metric:1
        RX packets:0 errors:0 dropped:0 overruns:0 frame:0
        TX packets:8 errors:0 dropped:0 overruns:0 carrier:0
        collisions:0 txqueuelen:1000
        RX bytes:0 (0.0 B)  TX bytes:648 (648.0 B)

同样,在启动时启用此服务。

systemctl enable n2n_edge.service

(可选)启用防火墙并添加SSH规则。

ufw allow 22/tcp
ufw enable

现在,我们将能够从每个节点ping每个Vultr实例。

ping 192.168.1.1
ping 192.168.1.2
ping 192.168.1.3

如果要测试每个节点边缘之间的连接,请在Miami和Paris实例上启用防火墙规则。这将允许边缘之间的通信。

在迈阿密,添加以下规则。(请确保将node_paris_ipnode_sydney_ip文本替换为悉尼和巴黎实例的公共IP。)

ufw allow from node_paris_ip to any port 1200
ufw allow from node_sydney_ip to any port 1200

在悉尼,添加以下规则。

ufw allow from node_paris_ip to any port 1200
ufw allow from node_miami_ip to any port 1200

现在,您可以关闭或重新引导超级节点。网络连接将继续存在。当超节点服务关闭时,只有新的边缘会遇到连接问题。

结论

我们已成功在多个区域之间配置了VPN连接。对于我们新配置的环境,这应该为高可用性方案提供很多新的可能性。



Leave a Comment

如何在CentOS 7上安装Oxwall

如何在CentOS 7上安装Oxwall

Oxwall是一个开源社交网络软件平台,可用于免费构建自定义社交网站(SNS)。在这篇文章中,

如何在Ubuntu 16.10上安装Review Board

如何在Ubuntu 16.10上安装Review Board

使用其他系统?Review Board是一个免费且开源的工具,用于检查源代码,文档,图像等。这是基于网络的软件战

如何在Debian 9 LAMP VPS上安装October 1.0 CMS

如何在Debian 9 LAMP VPS上安装October 1.0 CMS

使用其他系统?October 1.0 CMS是基于Laravel框架构建的简单,可靠,免费和开源的内容管理系统(CMS)

如何使用Ubuntu 15.10在Vultr服务器上安装Xubuntu桌面

如何使用Ubuntu 15.10在Vultr服务器上安装Xubuntu桌面

Xubuntu是XFCE + Ubuntu!XFCE是Ubuntu的轻量级GUI /桌面。Vultr服务器需要其他依赖项,默认情况下未安装这些依赖项。

如何在Debian 9上安装Monica

如何在Debian 9上安装Monica

使用其他系统?Monica是一个开源的个人关系管理系统。可以将其视为CRM(销售团队使用的一种流行工具

如何使用SSL和安全密码保护由Nginx驱动的网站

如何使用SSL和安全密码保护由Nginx驱动的网站

简介SSL(代表安全套接字层)及其后续版本TLS(代表传输层安全性)是需要加密的加密协议。

如何在Fedora 26 LAMP VPS上安装MODX Revolution

如何在Fedora 26 LAMP VPS上安装MODX Revolution

使用其他系统?MODX Revolution是一种快速,灵活,可扩展,免费和开源的企业级内容管理系统(CMS),由

如何在Ubuntu 17.04上安装JuliaLang

如何在Ubuntu 17.04上安装JuliaLang

朱莉娅(Julia)通常称为JuliaLang,是一种用于数值计算的编程语言。Julia的速度和C一样快,但是却不牺牲可读性

在Ubuntu 14.04上安装Ruby on Rails

在Ubuntu 14.04上安装Ruby on Rails

Ruby on Rails(RoR)是用Ruby编程语言编写的框架,可让您将Ruby与HTML,CSS和类似的程序结合使用。

在Fedora 28上安装Anchor CMS

在Fedora 28上安装Anchor CMS

使用其他系统?Anchor是用PHP编写的轻量级开源博客CMS。Anchors源代码托管在GitHub上。本指南将向您展示

将Debian 9升级到Debian 10

将Debian 9升级到Debian 10

简介Debian 10(Buster)是Debian 9(Stretch)的后继产品。它于2019年7月6日发布。在本教程中,我们将升级一个existin

如何管理Linux服务器时区设置

如何管理Linux服务器时区设置

在Linux服务器上正确设置日期和时间非常重要。您的服务器日志和其他重要信息都将反映时区

如何在Ubuntu 16.04上安装Taiga项目管理工具

如何在Ubuntu 16.04上安装Taiga项目管理工具

使用其他系统?Taiga是用于项目管理的免费和开源应用程序。与其他项目管理工具不同,Taiga使用增量

在Ubuntu上配置Nagios:第1部分-Nagios服务器

在Ubuntu上配置Nagios:第1部分-Nagios服务器

本文是有关在Ubuntu 14.04上安装和配置Nagios的2部分系列文章的一部分。第1部分:Nagios服务器第2部分:远程主机概述Nagio

如何访问Vultr VPS

如何访问Vultr VPS

Vultr提供了几种不同的方式来访问VPS以进行配置,安装和使用。访问凭据VPS ar的默认访问凭据

如何在Debian 9上安装Grav CMS

如何在Debian 9上安装Grav CMS

使用其他系统?Grav是用PHP编写的开源平面文件CMS。Grav源代码公开托管在GitHub上。本指南将向您展示如何

如何在Fedora 26 LAMP VPS上安装Pagekit 1.0 CMS

如何在Fedora 26 LAMP VPS上安装Pagekit 1.0 CMS

使用其他系统?Pagekit 1.0 CMS是一个美观,模块化,可扩展,轻量级,免费和开源的内容管理系统(CMS),具有

如何在Ubuntu 16.04 LAMP VPS上安装BigTree CMS

如何在Ubuntu 16.04 LAMP VPS上安装BigTree CMS

使用其他系统?BigTree CMS 4.2是一种快速,轻量级,免费和开源的企业级内容管理系统(CMS),具有广泛的功能。

如何在CentOS 7上设置vsFTPd

如何在CentOS 7上设置vsFTPd

FTP是用于通过Internet传输文件的有用协议,本指南将向您展示如何设置vsFTPd(非常安全的文件传输协议守护程序)o

在Debian / Ubuntu中使用Rsync设置文件镜像

在Debian / Ubuntu中使用Rsync设置文件镜像

简介如果您经营一个重要的网站,则最好将文件镜像到辅助服务器。如果您的主服务器有网络

在Arch Linux上使用Makepkg

在Arch Linux上使用Makepkg

在Arch Linux上使用Makepkg可以避免系统污染,确保仅安装必要的依赖关系。

如何在Ubuntu 16.04上安装OpenSIPS控制面板

如何在Ubuntu 16.04上安装OpenSIPS控制面板

快速学习如何在Ubuntu 16.04上安装OpenSIPS控制面板,为VoIP提供商提供支持的功能。

在Fedora 28上安装Akaunting

在Fedora 28上安装Akaunting

学习如何在Fedora 28上安装Akaunting,一款适合小型企业和自由职业者的开源会计软件。

如何在CentOS 7上安装Mailtrain新闻通讯应用程序

如何在CentOS 7上安装Mailtrain新闻通讯应用程序

使用其他系统?Mailtrain是一个基于Node.js和MySQL / MariaDB构建的开源自托管新闻通讯应用程序。

诊断Minecraft服务器延迟和低TPS

诊断Minecraft服务器延迟和低TPS

了解導致Minecraft延遲的原因和解決方案,包括優化伺服器性能和減少滯後的步驟。

AI 能否應對越來越多的勒索軟件攻擊?

AI 能否應對越來越多的勒索軟件攻擊?

勒索軟件攻擊呈上升趨勢,但人工智能能否幫助應對最新的計算機病毒?AI 是答案嗎?在這裡閱讀知道是 AI 布恩還是禍根

ReactOS:這是 Windows 的未來嗎?

ReactOS:這是 Windows 的未來嗎?

ReactOS,一個開源和免費的操作系統,這裡有最新版本。它能否滿足現代 Windows 用戶的需求並打倒微軟?讓我們更多地了解這種老式但更新的操作系統體驗。

通過 WhatsApp 桌面應用程序 24*7 保持聯繫

通過 WhatsApp 桌面應用程序 24*7 保持聯繫

Whatsapp 終於為 Mac 和 Windows 用戶推出了桌面應用程序。現在您可以輕鬆地從 Windows 或 Mac 訪問 Whatsapp。適用於 Windows 8+ 和 Mac OS 10.9+

人工智能如何將流程自動化提升到新的水平?

人工智能如何將流程自動化提升到新的水平?

閱讀本文以了解人工智能如何在小型公司中變得流行,以及它如何增加使它們成長並為競爭對手提供優勢的可能性。

macOS Catalina 10.15.4 補充更新引發的問題多於解決

macOS Catalina 10.15.4 補充更新引發的問題多於解決

最近,Apple 發布了 macOS Catalina 10.15.4 補充更新以修復問題,但似乎該更新引起了更多問題,導致 mac 機器變磚。閱讀這篇文章以了解更多信息