Requisits previs
Instal·lació del programari
Instal·lació - Node París
Instal·lació - Node Miami
Instal·lació - Node Sydney
Conclusió
N2N és una aplicació VPN de capa 2/3 de codi obert. A diferència de molts altres programes VPN, N2N pot connectar ordinadors que es troben darrere d'un encaminador NAT. Això ofereix un gran avantatge per connectar-se a un entorn de núvol sense haver de dependre de protocols especials com el protocol ESP (utilitzat per ipsec). Per aconseguir aquesta connexió, N2N utilitza un supernode que pot encaminar la informació entre nodes NAT. Aquesta connexió VPN es pot utilitzar per connectar diverses instàncies de Vultr entre regions juntes.
Requisits previs
- Tres instàncies del servidor Ubuntu 16.04 LTS x64. (Qualsevol mida funcionarà)
- Un usuari sudo (o compte root) .
En aquest exemple farem servir tres nodes en diverses zones:
Instal·lació del programari
Les ordres següents s'executaran a cada instància.
Comenceu instal·lant build-essentialdes del repo i també libssl-dev, ja que construirem des del codi font més recent.
apt-get install -y build-essential libssl-dev
A continuació, descarregueu el codi font de github.
cd /tmp
git clone https://github.com/ntop/n2n.git
Compileu tots els binaris.
cd n2n
make
make install
L' make installordre haurà creat els binaris supernodei edgeal /usr/sbindirectori. Acabeu netejant els fitxers.
rm -rf /tmp/n2n
Instal·lació - Node París
El primer node serà el nostre anomenat supernode. Aquest supernode iniciarà el servei de supernode que escoltarà al port UDP 1200. Per defecte, l'aplicació N2N no crea un fitxer de servei. Per tant, haurem d'aportar el nostre.
Creeu el fitxer de servei "n2n_supernode":
nano /etc/systemd/system/n2n_supernode.service
Afegiu el contingut següent:
[Unit]
Description=n2n supernode
Wants=network-online.target
After=network-online.target
[Service]
ExecStart=/usr/sbin/supernode -l 1200
[Install]
WantedBy=multi-user.target
La directiva '-l' defineix el port UDP 1200. Aquest és el port on escoltarà el supernode. Per assegurar-vos que tot funciona, inicieu el servei de supernode:
systemctl start n2n_supernode
Comproveu l'estat del supernode.
systemctl status n2n_supernode
Això mostrarà un estat similar al següent.
● 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
A continuació, crearem el servei Edge. Aquest servei perifèric reclamarà una IP privada per a la comunicació entre les altres vores d'altres zones Vultr.
Igual que amb el servei de supernode, aquest també necessitarà el seu propi fitxer de servei.
nano /etc/systemd/system/n2n_edge.service
Afegiu el contingut següent:
[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
En aquest fitxer de servei hem definit les opcions de línia d'ordres següents:
-l localhost:1200: Això es connectarà a localhost al port UDP 1200.
-c Vultr: Aquesta és la comunitat a la qual s'unirà l'edge. Totes les vores de la mateixa comunitat apareixen a la mateixa LAN (segment de xarxa de capa 2). Les vores que no es troben a la mateixa comunitat no es comunicaran entre elles.
-a 192.168.1.1: La IP assignada a aquesta interfície. Aquesta és l'adreça IP de la LAN virtual N2N que es reclama.
-k mypassword: la contrasenya utilitzada per a cada vora. Totes les vores que es comuniquen han d'utilitzar la mateixa clau i nom de comunitat.
-f: desactiva el mode dimoni i fa que l'edge s'executi en primer pla. Això és necessari per al fitxer de servei, en cas contrari systemctlno s'iniciarà el servei.
Per assegurar-vos que tot funciona, inicieu el servei.
systemctl start n2n_edge
A continuació, consulteu l'estat del servei.
systemctl status n2n_edge
La sortida serà similar a la següent.
● 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
Si marquem 'ifconfig', veureu que la edge0interfície reclama la IP virtual N2N .
ifconfig
La sortida serà similar a la següent.
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)
Un cop fet això, habiliteu i creeu les regles del tallafoc. Assegureu-vos de substituir el text node_miami_ipi node_sydney_ipper la IP pública de la instància de Sydney i Miami. (Aquests els utilitzarem més endavant).
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
L'últim que cal fer amb aquest node és habilitar els dos serveis a l'arrencada.
systemctl enable n2n_supernode.service
systemctl enable n2n_edge.service
Instal·lació - Node Miami
El node de Miami es connectarà al supernode que s'està executant actualment a la zona de París. Per aconseguir-ho només hem de crear un fitxer de servei per a l' edgeaplicació.
Comenceu creant un fitxer de servei perifèric.
nano /etc/systemd/system/n2n_edge.service
Afegeix el següent contingut.
[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 : substituïu la node_paris_ipIP pública de la instància que s'executa a París
Això es connectarà al node de París al port UDP 1200, s'unirà a la comunitat ' Vultr', reclamarà la IP 192.168.1.2i s'autenticarà amb ' mypassword'.
A continuació, inicieu el servei.
systemctl start n2n_edge
Comproveu l'estat per a una indicació que el servei s'ha iniciat correctament i s'està executant.
systemctl status n2n_edge
A continuació, assegureu-vos que la edge0IP es reclama.
ifconfig
Mostrarà l' 192.168.1.2adreça 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)
El següent que cal fer és habilitar el servei a l'arrencada.
systemctl enable n2n_edge.service
Opcionalment, activeu el tallafoc i afegiu les regles SSH.
ufw allow 22/tcp
ufw enable
Ara podrem fer ping a les dues vores en execució a les nostres instàncies.
A París, feu ping a la instància Vultr a Miami
ping 192.168.1.2
A Miami, ping a la vora a París
ping 192.168.1.1
Instal·lació - Node Sydney
Finalment, afegirem a la barreja el nostre últim continent: Austràlia. Comenceu de nou creant un servei perifèric, aquest servei perifèric també es connectarà al supernode configurat anteriorment a París.
nano /etc/systemd/system/n2n_edge.service
Afegeix el següent contingut.
[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 : substituïu la node_paris_ipIP pública de la instància que s'executa a París.
Això es connectarà al node de París al port UDP 1200, s'unirà a la comunitat ' Vultr', reclamarà la IP 192.168.1.3i s'autenticarà amb ' mypassword'.
systemctl start n2n_edge
Comproveu l'estat per assegurar-vos que el servei s'ha iniciat.
systemctl status n2n_edge
Assegureu-vos que la edge0IP es reclama.
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)
De nou, activeu aquest servei a l'arrencada.
systemctl enable n2n_edge.service
Opcionalment, activeu el tallafoc i afegiu les regles SSH.
ufw allow 22/tcp
ufw enable
Ara podrem fer ping a cada instància de Vultr des de cada node.
ping 192.168.1.1
ping 192.168.1.2
ping 192.168.1.3
Si voleu provar la connexió entre cada vora de node, activeu les regles del tallafoc a les instàncies de Miami i París. Això permetrà la comunicació entre les vores.
A Miami, afegiu les regles següents. (Assegureu-vos de substituir el text node_paris_ipi node_sydney_ipper les IP públiques de les instàncies de Sydney i París.)
ufw allow from node_paris_ip to any port 1200
ufw allow from node_sydney_ip to any port 1200
A Sydney, afegiu les regles següents.
ufw allow from node_paris_ip to any port 1200
ufw allow from node_miami_ip to any port 1200
Ara podeu apagar o reiniciar el supernode. Les connexions de xarxa continuaran existint. Només les vores noves patiran problemes de connectivitat mentre el servei de supernode estigui inactiu.
Conclusió
Hem configurat correctament una connexió VPN entre diverses zones. Això hauria d'oferir un munt de possibilitats noves per a escenaris d'alta disponibilitat al nostre entorn recentment configurat.