使用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

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 機器變磚。閱讀這篇文章以了解更多信息

大數據的13個商業數據提取工具

大數據的13個商業數據提取工具

大數據的13個商業數據提取工具

什麼是日誌文件系統,它是如何工作的?

什麼是日誌文件系統,它是如何工作的?

我們的計算機以稱為日誌文件系統的有組織的方式存儲所有數據。這是一種有效的方法,可以讓計算機在您點擊搜索時立即搜索和顯示文件。 https://wethegeek.com/?p=94116&preview=true

技術奇點:人類文明的遙遠未來?

技術奇點:人類文明的遙遠未來?

隨著科學的快速發展,接管了我們的大量工作,我們陷入無法解釋的奇點的風險也在增加。閱讀,奇點對我們意味著什麼。

洞察 26 種大數據分析技術:第 1 部分

洞察 26 種大數據分析技術:第 1 部分

洞察 26 種大數據分析技術:第 1 部分

2021 年人工智能對醫療保健的影響

2021 年人工智能對醫療保健的影響

過去幾十年,醫療保健領域的人工智能取得了巨大飛躍。因此,醫療保健中人工智能的未來仍在日益增長。