Προαπαιτούμενα
Εγκατάσταση του λογισμικού
Εγκατάσταση - Node Paris
Εγκατάσταση - Node Miami
Εγκατάσταση - Node Sydney
συμπέρασμα
Το N2N είναι μια εφαρμογή VPN επιπέδου 2/3 ανοιχτού κώδικα. Σε αντίθεση με πολλά άλλα προγράμματα VPN, το N2N μπορεί να συνδέσει υπολογιστές που βρίσκονται πίσω από έναν δρομολογητή NAT. Αυτό προσφέρει ένα τεράστιο πλεονέκτημα για τη σύνδεση σε περιβάλλον cloud χωρίς να χρειάζεται να βασίζεστε σε ειδικά πρωτόκολλα όπως το πρωτόκολλο ESP (που χρησιμοποιείται από την ipsec). Για να επιτευχθεί αυτή η σύνδεση, το N2N χρησιμοποιεί έναν υπερκόμβο που μπορεί να δρομολογήσει τις πληροφορίες μεταξύ των NAT'ed κόμβων. Αυτή η σύνδεση VPN μπορεί να χρησιμοποιηθεί για τη σύνδεση πολλαπλών παρουσιών Vultr μεταξύ των περιοχών.
Προαπαιτούμενα
Σε αυτό το παράδειγμα θα χρησιμοποιήσουμε τρεις κόμβους σε πολλαπλές ζώνες:
Εγκατάσταση του λογισμικού
Οι ακόλουθες εντολές θα εκτελεστούν σε κάθε περίπτωση.
Ξεκινήστε εγκαθιστώντας το build-essentialαπό το repo και επίσης libssl-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εντολή θα έχει δημιουργήσει τα supernodeκαι edgeδυαδικά στον /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
Στη συνέχεια θα δημιουργήσουμε την υπηρεσία edge. Αυτή η υπηρεσία άκρων θα διεκδικήσει μια ιδιωτική 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: Αυτό θα συνδεθεί με τον localhost στη θύρα UDP 1200.
-c Vultr: Αυτή είναι η κοινότητα στην οποία θα ενταχθεί η άκρη. Όλες οι ακμές στην ίδια κοινότητα εμφανίζονται στο ίδιο LAN (τμήμα δικτύου επιπέδου 2). Οι άκρες που δεν βρίσκονται στην ίδια κοινότητα δεν θα επικοινωνούν μεταξύ τους.
-a 192.168.1.1: Η IP που έχει εκχωρηθεί σε αυτή τη διεπαφή. Αυτή είναι η διεύθυνση IP εικονικού LAN N2N που διεκδικείται.
-k mypassword: Ο κωδικός πρόσβασης που χρησιμοποιείται για κάθε άκρη. Όλες οι άκρες που επικοινωνούν πρέπει να χρησιμοποιούν το ίδιο κλειδί και το ίδιο όνομα κοινότητας.
-f: Απενεργοποιεί τη λειτουργία daemon και προκαλεί την εκτέλεση του 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', θα δείτε την εικονική IP N2N να διεκδικείται από τη edge0διεπαφή.
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)
Μόλις γίνει αυτό, ενεργοποιήστε και δημιουργήστε τους κανόνες του τείχους προστασίας. Βεβαιωθείτε ότι έχετε αντικαταστήσει το μήνυμα node_miami_ipκαι το node_sydney_ipκείμενο με τη δημόσια 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εφαρμογή.
Ξεκινήστε δημιουργώντας ένα αρχείο υπηρεσίας 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.2διεύθυνση 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)
Το επόμενο πράγμα που πρέπει να κάνετε είναι να ενεργοποιήσετε την υπηρεσία κατά την εκκίνηση.
systemctl enable n2n_edge.service
Προαιρετικά, ενεργοποιήστε το τείχος προστασίας και προσθέστε τους κανόνες SSH.
ufw allow 22/tcp
ufw enable
Τώρα θα μπορούμε να κάνουμε ping και στις δύο άκρες που τρέχουν στις παρουσίες μας.
Στο Παρίσι, κάντε ping στο παράδειγμα του Vultr στο Μαϊάμι
ping 192.168.1.2
Στο Μαϊάμι, ping the edge στο Παρίσι
ping 192.168.1.1
Εγκατάσταση - Node Sydney
Τέλος, θα προσθέσουμε στο μείγμα την τελευταία μας ήπειρο: την Αυστραλία. Ξεκινήστε ξανά δημιουργώντας μια υπηρεσία άκρων, αυτή η υπηρεσία ακμών θα συνδεθεί επίσης με τον προηγούμενο διαμορφωμένο υπερκόμβο στο Παρίσι.
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
Εάν θέλετε να δοκιμάσετε τη σύνδεση μεταξύ κάθε άκρης κόμβου, ενεργοποιήστε τους κανόνες του τείχους προστασίας στις παρουσίες του Μαϊάμι και του Παρισιού. Αυτό θα επιτρέψει την επικοινωνία μεταξύ των άκρων.
Στο Μαϊάμι, προσθέστε τους ακόλουθους κανόνες. (Βεβαιωθείτε ότι έχετε αντικαταστήσει το μήνυμα node_paris_ipκαι το node_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 μεταξύ πολλών ζωνών. Αυτό θα πρέπει να προσφέρει πολλές νέες δυνατότητες για σενάρια υψηλής διαθεσιμότητας στο πρόσφατα διαμορφωμένο περιβάλλον μας.