Forutsetninger
Installasjon av programvaren
Installasjon - Node Paris
Installasjon - Node Miami
Installasjon - Node Sydney
Konklusjon
N2N er en åpen kildekode lag 2/3 VPN-applikasjon. I motsetning til mange andre VPN-programmer, kan N2N koble til datamaskiner som er plassert bak en NAT-ruter. Dette gir en stor fordel å koble til et skymiljø uten å måtte stole på spesielle protokoller som ESP-protokollen (brukt av ipsec). For å oppnå denne forbindelsen bruker N2N en supernode som kan rute informasjonen mellom NAT-styrte noder. Denne VPN-tilkoblingen kan brukes til å koble sammen flere Vultr-forekomster på tvers av regioner.
Forutsetninger
I dette eksemplet vil vi bruke tre noder i flere soner:
Installasjon av programvaren
Følgende kommandoer vil bli utført på hver forekomst.
Start med å installere build-essentialfra repoen og også libssl-dev, da vi skal bygge fra den nyeste kildekoden.
apt-get install -y build-essential libssl-dev
Deretter laster du ned kildekoden fra github.
cd /tmp
git clone https://github.com/ntop/n2n.git
Kompiler alle binærfiler.
cd n2n
make
make install
Den make installkommandoen har opprettet supernodeog edgebinærfiler i /usr/sbinkatalogen. Avslutt med å rydde opp i filene.
rm -rf /tmp/n2n
Installasjon - Node Paris
Den første noden vil være vår såkalte supernode. Denne supernoden vil starte supernodetjenesten som vil lytte på UDP-porten 1200. Som standard oppretter ikke N2N-applikasjonen en tjenestefil. Så vi må skaffe våre egne.
Opprett 'n2n_supernode'-tjenestefilen:
nano /etc/systemd/system/n2n_supernode.service
Legg til følgende innhold:
[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'-direktivet definerer UDP-porten 1200. Dette er porten som supernoden vil lytte til. For å sikre at alt fungerer, start supernode-tjenesten:
systemctl start n2n_supernode
Sjekk statusen til supernoden.
systemctl status n2n_supernode
Dette vil vise en status som ligner på følgende.
● 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
Deretter vil vi lage edge-tjenesten. Denne edge-tjenesten vil kreve en privat IP for kommunikasjon mellom de andre kantene i andre Vultr-soner.
Som med supernodetjenesten, vil denne også trenge sin egen tjenestefil.
nano /etc/systemd/system/n2n_edge.service
Legg til følgende innhold:
[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
I denne tjenestefilen definerte vi følgende kommandolinjealternativer:
-l localhost:1200: Dette vil koble til localhost på UDP-porten 1200.
-c Vultr: Dette er fellesskapet kanten vil bli med i. Alle kanter innenfor samme fellesskap vises på samme LAN (lag 2 nettverkssegment). Kanter som ikke er i samme fellesskap vil ikke kommunisere med hverandre.
-a 192.168.1.1: IP-en som er tilordnet dette grensesnittet. Dette er N2N virtuelle LAN IP-adressen som kreves.
-k mypassword: Passordet som brukes for hver kant. Alle kanter som kommuniserer må bruke samme nøkkel og fellesskapsnavn.
-f: Deaktiverer daemon-modus og får edge til å kjøre i forgrunnen. Dette er nødvendig for tjenestefilen, ellers systemctlvil ikke tjenesten starte.
Start tjenesten for å sikre at alt fungerer.
systemctl start n2n_edge
Spør deretter tjenestestatusen.
systemctl status n2n_edge
Utgangen vil være lik følgende.
● 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
Hvis vi sjekker 'ifconfig', vil du se den virtuelle N2N-IP-en som blir gjort krav på av edge0grensesnittet.
ifconfig
Utgangen vil være lik følgende.
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)
Når dette er gjort, aktiver og lag brannmurreglene. Sørg for å erstatte node_miami_ipog node_sydney_iptekst med den offentlige IP av Sydney og Miami eksempel. (Vi vil bruke disse senere).
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
Den siste tingen å gjøre med denne noden er å aktivere begge tjenestene ved oppstart.
systemctl enable n2n_supernode.service
systemctl enable n2n_edge.service
Installasjon - Node Miami
Miami-noden vil koble til supernoden som for øyeblikket kjører i Paris-sonen. For å oppnå dette trenger vi bare å lage en tjenestefil for edgeapplikasjonen.
Start med å lage en edge-tjenestefil.
nano /etc/systemd/system/n2n_edge.service
Legg til følgende innhold.
[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
Merk : Erstatt node_paris_ipmed den offentlige IP-en til forekomsten som kjører i Paris
Dette vil koble til noden i Paris på UDP-porten 1200, bli med i fellesskapet ' Vultr', kreve IP 192.168.1.2og autentisere med ' mypassword'.
Deretter starter du tjenesten.
systemctl start n2n_edge
Sjekk status for en indikasjon på at tjenesten har startet riktig og kjører.
systemctl status n2n_edge
Deretter må du sørge for at edge0IP-en blir gjort krav på.
ifconfig
Den vil vise 192.168.1.2IP-adressen.
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)
Den neste tingen å gjøre er å aktivere tjenesten ved oppstart.
systemctl enable n2n_edge.service
Aktiver eventuelt brannmuren og legg til SSH-reglene.
ufw allow 22/tcp
ufw enable
Vi vil nå kunne pinge begge kanter som kjører i våre instanser.
I Paris, ping Vultr-forekomsten i Miami
ping 192.168.1.2
I Miami, ping kanten i Paris
ping 192.168.1.1
Installasjon - Node Sydney
Til slutt vil vi legge til vårt siste kontinent til blandingen: Australia. Start på nytt ved å lage en edge-tjeneste, denne edge-tjenesten vil også koble til den forrige konfigurerte supernoden i Paris.
nano /etc/systemd/system/n2n_edge.service
Legg til følgende innhold.
[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
Merk : Erstatt node_paris_ipmed den offentlige IP-en til forekomsten som kjører i Paris.
Dette vil koble til noden i Paris på UDP-porten 1200, bli med i fellesskapet ' Vultr', kreve IP 192.168.1.3og autentisere med ' mypassword'.
systemctl start n2n_edge
Sjekk statusen for å sikre at tjenesten er startet.
systemctl status n2n_edge
Sørg for at edge0IP-en blir gjort krav på.
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)
Igjen, aktiver denne tjenesten ved oppstart.
systemctl enable n2n_edge.service
Aktiver eventuelt brannmuren og legg til SSH-reglene.
ufw allow 22/tcp
ufw enable
Vi vil nå kunne pinge hver Vultr-forekomst fra hver node.
ping 192.168.1.1
ping 192.168.1.2
ping 192.168.1.3
Hvis du vil teste forbindelsen mellom hver nodekant, aktiverer du brannmurreglene på forekomstene av Miami og Paris. Dette vil tillate kommunikasjon mellom kanter.
I Miami, legg til følgende regler. (Sørg for å erstatte node_paris_ipog node_sydney_ipteksten med offentlige IP-adresser i Sydney og Paris tilfeller.)
ufw allow from node_paris_ip to any port 1200
ufw allow from node_sydney_ip to any port 1200
I Sydney, legg til følgende regler.
ufw allow from node_paris_ip to any port 1200
ufw allow from node_miami_ip to any port 1200
Nå kan du slå av eller starte supernoden på nytt. Nettverkstilkoblinger vil fortsatt eksistere. Bare nye kanter vil lide av tilkoblingsproblemer mens supernodetjenesten er nede.
Konklusjon
Vi har konfigurert en VPN-forbindelse mellom flere soner. Dette burde tilby ganske mange nye muligheter for scenarier med høy tilgjengelighet til vårt nylig konfigurerte miljø.