Conectando Várias Zonas Site & Site Com N2N

Você está aqui:
Tempo estimado de leitura: 4 min

N2N é uma aplicação VPN de camada aberta 2/3. Ao contrário de muitos outros programas VPN, o N2N pode conectar computadores localizados atrás de um roteador NAT. Isso oferece uma enorme vantagem de se conectar a um ambiente de nuvem sem depender de protocolos especiais, como o protocolo ESP (usado pelo ipsec). Para conseguir essa conexão, o N2N usa um supernó que pode rotear as informações entre os nós NAT. Essa conexão VPN pode ser usada para conectar várias instâncias do Site & Site entre regiões.

Pré-requisitos

Neste exemplo, usaremos três nós em várias zonas:

  • Paris
  • Miami
  • Sydney

Instalação do software

Os seguintes comandos serão executados em cada instância.

Comece instalando o build-essentialrepo e também libssl-dev, pois estaremos construindo a partir do código-fonte mais novo.

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

Em seguida, baixe o código-fonte do github.

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

Compile todos os binários.

cd n2n 
make
make install

make installcomando terá criado os binários supernodeedgeno /usr/sbindiretório. Termine limpando os arquivos.

rm -rf /tmp/n2n

Instalação – Nó Paris

O primeiro nó será o nosso chamado supernode. Este supernode irá iniciar o serviço supernode que irá escutar na porta UDP 1200. Por padrão, o aplicativo N2N não cria um arquivo de serviço. Então, precisamos fornecer nossos próprios.

Crie o arquivo de serviço ‘n2n_supernode’:

nano /etc/systemd/system/n2n_supernode.service

Adicione o seguinte conteúdo:

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

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

[Install]
WantedBy=multi-user.target

A diretiva ‘-l’ define a porta UDP 1200. Esta é a porta na qual o supernode irá escutar. Para garantir que tudo esteja funcionando, inicie o serviço supernode:

systemctl start n2n_supernode

Verifique o status do supernode.

systemctl status n2n_supernode

Isso mostrará um status semelhante ao seguinte.

● 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

Em seguida, criaremos o serviço de borda. Esse serviço de borda reivindicará um IP privado para comunicação entre as outras arestas em outras zonas do Vultr.

Como no serviço supernode, isso também precisará de seu próprio arquivo de serviço.

nano /etc/systemd/system/n2n_edge.service

Adicione o seguinte conteúdo:

[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

Neste arquivo de serviço, definimos as seguintes opções de linha de comando:

  • -l localhost:1200: Isso irá se conectar ao localhost na porta UDP 1200.
  • -c Vultr: Esta é a comunidade a borda será unir. Todas as arestas dentro da mesma comunidade aparecem na mesma LAN (segmento de rede da camada 2). As bordas que não estão na mesma comunidade não se comunicam umas com as outras.
  • -a 192.168.1.1: O IP atribuído a essa interface. Este é o endereço IP da LAN virtual N2N que está sendo reivindicado.
  • -k mypassword: A senha usada para cada borda. Todas as bordas que se comunicam devem usar o mesmo nome de chave e de comunidade.
  • -f: Desativa o modo daemon e faz com que a borda seja executada em primeiro plano. Isso é necessário para o arquivo de serviço, caso contrário, não systemctlserá iniciado o serviço.

Para garantir que tudo esteja funcionando, inicie o serviço.

systemctl start n2n_edge

Em seguida, consulte o status do serviço.

systemctl status n2n_edge   

A saída será semelhante à seguinte.

● 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

Se verificarmos ‘ifconfig’, você verá o IP virtual do N2N sendo reivindicado pela edge0interface.

ifconfig

A saída será semelhante à seguinte.

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)

Feito isso, ative e crie as regras de firewall. Certifique-se de substituir o texto node_miami_ipe o node_sydney_ipcom o IP público da instância de Sydney e Miami. (Vamos usá-los mais tarde).

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

A última coisa a fazer com esse nó é habilitar ambos os serviços na inicialização.

systemctl enable n2n_supernode.service
systemctl enable n2n_edge.service

Instalação – Node Miami

O nó de Miami se conectará ao super node que está atualmente em execução na zona de Paris. Para conseguir isso, precisamos apenas criar um arquivo de serviço para o edgeaplicativo.

Comece criando um arquivo de serviço de borda.

nano /etc/systemd/system/n2n_edge.service

Adicione o seguinte conteúdo.

[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

Nota : substitua o node_paris_ipcom o IP público da instância em execução em Paris

Isso se conectará ao nó em Paris na porta UDP 1200, ingressará na comunidade ‘ Vultr‘, solicitará IP 192.168.1.2e autenticará com ‘ mypassword‘.

Em seguida, inicie o serviço.

systemctl start n2n_edge

Verifique o status para obter uma indicação de que o serviço foi iniciado corretamente e está em execução.

systemctl status n2n_edge   

Em seguida, assegure-se de que o edge0IP seja reivindicado.

ifconfig

Ele mostrará o 192.168.1.2endereço IP.

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)

A próxima coisa a fazer é ativar o serviço na inicialização.

systemctl enable n2n_edge.service

Opcionalmente, ative o firewall e adicione as regras do SSH.

ufw allow 22/tcp
ufw enable

Agora poderemos executar ping nas duas bordas em execução em nossas instâncias.

Em Paris, pingue a instância do Vultr em Miami

ping 192.168.1.2

Em Miami, sinta a orla em Paris

ping 192.168.1.1

Instalação – Node Sydney

Finalmente, vamos adicionar nosso último continente ao mix: Austrália. Comece novamente criando um serviço de borda, este serviço de borda também se conectará ao supernode configurado anteriormente em Paris.

nano /etc/systemd/system/n2n_edge.service

Adicione o seguinte conteúdo.

[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

Nota : Substitua o node_paris_ipcom o IP público da instância em execução em Paris.

Isso se conectará ao nó em Paris na porta UDP 1200, ingressará na comunidade ‘ Vultr‘, solicitará IP 192.168.1.3e autenticará com ‘ mypassword‘.

systemctl start n2n_edge

Verifique o status para garantir que o serviço seja iniciado.

systemctl status n2n_edge   

Certifique-se de que o edge0IP seja reivindicado.

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)

Novamente, ative este serviço na inicialização.

systemctl enable n2n_edge.service

Opcionalmente, ative o firewall e adicione as regras do SSH.

ufw allow 22/tcp
ufw enable

Agora poderemos pingar cada instância do Vultr de cada nó.

ping 192.168.1.1
ping 192.168.1.2
ping 192.168.1.3

Se você quiser testar a conexão entre cada borda do nó, ative as regras de firewall nas instâncias de Miami e Paris. Isso permitirá a comunicação entre as bordas.

Em Miami, adicione as seguintes regras. (Certifique-se de substituir o texto node_paris_ipnode_sydney_ipcom os IPs públicos das instâncias de Sydney e Paris.)

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

Em Sydney, adicione as seguintes regras.

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

Agora você pode desligar ou reiniciar o supernode. Conexões de rede continuarão a existir. Somente novas arestas sofrerão problemas de conectividade enquanto o serviço de supernós estiver inativo.

Conclusão

Nós configuramos com sucesso uma conexão VPN entre várias zonas. Isso deve oferecer muitas novas possibilidades para cenários de alta disponibilidade em nosso ambiente recém-configurado.

Esse artigo foi útil?
Não Gostei 0
Visualizações: 44

Ainda não Têm uma Conta?

Então Cadastre-se

Nome de Usuário*
E-mail*
Senha*
Confirmar Senha*

Já têm Uma Conta? Click Aqui.

Já tem uma Conta?

Ainda não tem Conta?