Μηχανή 1
Μηχανή 2
Το Vultr σας προσφέρει εκπληκτική συνδεσιμότητα ιδιωτικού δικτύου για διακομιστές που λειτουργούν στην ίδια τοποθεσία. Αλλά μερικές φορές θέλετε δύο διακομιστές σε διαφορετικές χώρες/κέντρα δεδομένων να μπορούν να επικοινωνούν με ιδιωτικό και ασφαλή τρόπο. Αυτό το σεμινάριο θα σας δείξει πώς να το πετύχετε αυτό με τη βοήθεια του OpenVPN. Τα λειτουργικά συστήματα που χρησιμοποιούνται εδώ είναι το Debian και το CentOS, απλώς για να σας δείξουν δύο διαφορετικές διαμορφώσεις. Αυτό μπορεί εύκολα να προσαρμοστεί για Debian -> Debian, Ubuntu -> FreeBSD και ούτω καθεξής.
- Μηχανή 1: Debian, θα λειτουργεί ως διακομιστής (Τοποθεσία: NL)
- Μηχάνημα 2: CentOS, θα ενεργεί ως πελάτης (Τοποθεσία: FR)
Μηχανή 1
Ξεκινήστε στο μηχάνημα 1 εγκαθιστώντας το OpenVPN:
apt-get install openvpn
Στη συνέχεια, αντιγράψτε το παράδειγμα διαμόρφωσης και το εργαλείο για τη δημιουργία κλειδιών, easy-rsa, σε /etc/openvpn:
cp -r /usr/share/doc/openvpn/examples/easy-rsa/ /usr/share/doc/openvpn/examples/sample-config-files/server.conf.gz /etc/openvpn
Οι προεπιλεγμένες τιμές για τα κλειδιά σας δεν είναι πλέον ακριβώς ασφαλείς, για να το διορθώσετε, ανοίξτε /etc/openvpn/easy-rsa/2.0/varsμε το αγαπημένο σας πρόγραμμα επεξεργασίας κειμένου και τροποποιήστε την ακόλουθη γραμμή:
export KEY_SIZE=4096
Στη συνέχεια, βεβαιωθείτε ότι οι τιμές έχουν φορτωθεί στην τρέχουσα συνεδρία σας, καθαρίστε τα υπάρχοντα κλειδιά και δημιουργήστε την αρχή πιστοποιητικού σας:
cd /etc/openvpn/easy-rsa/2.0
source ./vars
./clean-all
./build-ca
Θα σας ζητηθούν πληροφορίες. Κάντε τη ζωή σας πιο εύκολη παρέχοντας πληροφορίες σχετικά με τον διακομιστή σας, για παράδειγμα, πού βρίσκεται και τι είναι/θα είναι το FQDN. Αυτό είναι χρήσιμο όταν πρέπει να διορθώσετε προβλήματα:
Country Name (2 letter code) [US]:NL
State or Province Name (full name) [CA]:-
Locality Name (eg, city) [SanFrancisco]:Vultr Datacenter NL
Organization Name (eg, company) [Fort-Funston]:-
Organizational Unit Name (eg, section) [changeme]:-
Common Name (eg, your name or your server's hostname) [changeme]:yourserver1.yourdomain.tld
Name [changeme]:-
Email Address [mail@host.domain]:youraddress@yourdomain.tld
Μια άλλη αναγκαιότητα είναι οι παράμετροι για την ανταλλαγή κλειδιών Diffie-Hellman. Πρέπει επίσης να δημιουργηθούν:
./build-dh
Σημαντικό : Η build-dhεντολή είναι μια σχετικά περίπλοκη διαδικασία που μπορεί να διαρκέσει έως και δέκα λεπτά, ανάλογα με τους πόρους του διακομιστή σας.
Για να βελτιώσουμε περαιτέρω την ασφάλεια αυτής της σύνδεσης, θα δημιουργήσουμε ένα στατικό μυστικό που πρέπει να διανεμηθεί σε όλους τους πελάτες:
mkdir /etc/openvpn/keys
openvpn --genkey --secret /etc/openvpn/keys/ta.key
Τώρα, μπορείτε να δημιουργήσετε το κλειδί για τον διακομιστή:
./build-key-server server1
Αυτή η εντολή θα σας ζητήσει ορισμένες πληροφορίες:
Country Name (2 letter code) [US]:NL
State or Province Name (full name) [CA]:-
Locality Name (eg, city) [SanFrancisco]:Vultr Datacenter NL
Organization Name (eg, company) [Fort-Funston]:-
Organizational Unit Name (eg, section) [changeme]:-
Common Name (eg, your name or your server's hostname) [server1]:yourserver1.yourdomain.tld
Name [changeme]:-
Email Address [mail@host.domain]:youraddress@yourdomain.tld
Το τελευταίο βήμα είναι να υπογράψετε το αίτημα πιστοποιητικού που μόλις δημιουργήθηκε με το κλειδί της ΑΠ:
1 out of 1 certificate requests certified, commit? [y/n]y
Αντιγράψτε τα απαραίτητα κλειδιά και πιστοποιητικά σε ξεχωριστό φάκελο:
cd /etc/openvpn/easy-rsa/2.0/keys
cp dh4096.pem ca.crt server1.crt server1.key /etc/openvpn/keys/
chmod 700 /etc/openvpn/keys
chmod 600 /etc/openvpn/keys/*
Τώρα για τη διαμόρφωση, αποσυμπιέστε το ...
cd /etc/openvpn
gunzip server.conf.gz
... και ανοίξτε το αποτέλεσμα server.confμε τον αγαπημένο σας επεξεργαστή κειμένου. Η διαμόρφωση πρέπει να μοιάζει με αυτό:
port 1194
proto udp
dev tun
ca keys/ca.crt
cert keys/server1.crt
key keys/server1.key
dh keys/dh4096.pem
server 10.8.100.0 255.255.255.0
ifconfig-pool-persist ipp.txt
# Uncomment this if you have multiple clients
# and want them to be able to see each other
;client-to-client
keepalive 10 120
tls-auth keys/ta.key 0
tls-cipher DHE-RSA-AES256-GCM-SHA384:DHE-RSA-AES256-SHA256:DHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES128-SHA256:DHE-RSA-CAMELLIA256-SHA:DHE-RSA-AES256-SHA:DHE-RSA-CAMELLIA128-SHA:DHE-RSA-AES128-SHA:CAMELLIA256-SHA:AES256-SHA:CAMELLIA128-SHA:AES128-SHA
cipher AES-256-CBC
auth SHA384
comp-lzo
user nobody
group nogroup
persist-key
persist-tun
verb 3
mute 20
Μετά την επανεκκίνηση της υπηρεσίας, θα πρέπει να παρακολουθήσετε λίγο το αρχείο καταγραφής σας ...
service openvpn restart && tail -f /var/log/syslog
... για να βεβαιωθείτε ότι όλα λειτουργούν. Εάν δεν εντοπιστούν σφάλματα, τότε μπορείτε να δημιουργήσετε τα κλειδιά για τον δεύτερο διακομιστή σας:
cd /etc/openvpn/easy-rsa/2.0
source ./vars
./build-key server2
Και πάλι, θα σας ζητηθούν πληροφορίες:
Country Name (2 letter code) [US]:FR
State or Province Name (full name) [CA]:-
Locality Name (eg, city) [SanFrancisco]:Vultr Datacenter FR
Organization Name (eg, company) [Fort-Funston]:-
Organizational Unit Name (eg, section) [changeme]:-
Common Name (eg, your name or your server's hostname)
[server2]:yourserver2.yourdomain.tld
Name [changeme]:-
Email Address [mail@host.domain]:youraddress@yourdomain.tld
Τώρα, πρέπει να μεταφέρετε τα απαραίτητα αρχεία στον δεύτερο διακομιστή σας, κατά προτίμηση κρυπτογραφημένο:
cd /etc/openvpn/easy-rsa/2.0/keys
cp /etc/openvpn/keys/ta.key .
tar -cf vpn.tar ca.crt server2.crt server2.key ta.key
scp vpn.tar yourusername@server2:~/
rm vpn.tar
Μηχανή 2
Ώρα να μεταβείτε στη σύνδεση SSH του δεύτερου διακομιστή σας . Το πρώτο βήμα είναι να εγκαταστήσετε το OpenVPN ...
yum install openvpn
... και για να απενεργοποιήσετε firewalld. Η αντικατάσταση θα είναι απλά iptables.
systemctl stop firewalld
systemctl disable firewalld
Αποσυσκευάστε το αρχείο που μόλις μετακινήσατε στον διακομιστή και ορίστε σωστά τα δικαιώματα στα αρχεία:
cd /etc/openvpn
mkdir keys
chmod 700 keys
cd keys
tar -xf ~/vpn.tar -C .
chmod 600 *
Δημιουργήστε /etc/openvpn/client.confμε τον αγαπημένο σας επεξεργαστή κειμένου. Θα πρέπει να μοιάζει με αυτό:
client
dev tun
proto udp
remote yourserver yourport
resolv-retry infinite
nobind
user nobody
group openvpn
persist-key
persist-tun
ca keys/ca.crt
cert keys/server2.crt
key keys/.key
ns-cert-type server
tls-auth keys/ta.key 1
tls-cipher DHE-RSA-AES256-GCM-SHA384:DHE-RSA-AES256-SHA256:DHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES128-SHA256:DHE-RSA-CAMELLIA256-SHA:DHE-RSA-AES256-SHA:DHE-RSA-CAMELLIA128-SHA:DHE-RSA-AES128-SHA:CAMELLIA256-SHA:AES256-SHA:CAMELLIA128-SHA:AES128-SHA
cipher AES-256-CBC
auth SHA384
remote-cert-tls server
comp-lzo
verb 3
mute 20
Το τελευταίο βήμα είναι να ξεκινήσετε και να ενεργοποιήσετε την υπηρεσία:
systemctl start openvpn@client.service
systemctl enable openvpn@client.service
Εάν όλα λειτουργούν, τότε δεν θα έχετε πρόβλημα να κάνετε ping στον πρώτο διακομιστή:
PING 10.8.100.1 (10.8.100.1) 56(84) bytes of data.
64 bytes from 10.8.100.1: icmp_seq=1 ttl=64 time=17.8 ms
64 bytes from 10.8.100.1: icmp_seq=2 ttl=64 time=17.9 ms
64 bytes from 10.8.100.1: icmp_seq=3 ttl=64 time=17.8 ms
Τώρα έχετε ιδιωτική σύνδεση μέσω Διαδικτύου!
Εάν χρειάζεται να αντιμετωπίσετε τυχόν σφάλματα, δοκιμάστε να ελέγξετε τα αρχεία καταγραφής με την ακόλουθη εντολή:
journalctl -xn