Vultr vă oferă o conectivitate minunată de rețea privată pentru serverele care rulează în aceeași locație. Dar uneori doriți ca două servere din diferite țări / centre de date să poată comunica în mod privat și sigur. Acest tutorial vă va arăta cum să obțineți asta cu ajutorul OpenVPN. Sistemele de operare utilizate aici sunt Debian și CentOS, doar pentru a vă arăta două configurații diferite. Acesta poate fi adaptat cu ușurință pentru Debian -> Debian, Ubuntu -> FreeBSD ș.a.
- Mașina 1: Debian, va acționa ca server (Locație: NL)
- Mașina 2: CentOS, va acționa ca client (Locație: FR)
Mașină 1
Porniți pe mașina 1 instalând OpenVPN:
apt-get install openvpn
Apoi, copiați exemplul de configurare și instrumentul pentru generarea cheilor easy-rsa, în /etc/openvpn:
cp -r /usr/share/doc/openvpn/examples/easy-rsa/ /usr/share/doc/openvpn/examples/sample-config-files/server.conf.gz /etc/openvpn
Valorile implicite pentru cheile dvs. nu mai sunt exact sigure, pentru a repara acest lucru /etc/openvpn/easy-rsa/2.0/varscu editorul de text preferat și pentru a modifica următoarea linie:
export KEY_SIZE=4096
Apoi, asigurați-vă că valorile sunt încărcate în sesiunea curentă, curățați eventual cheile existente și generați autoritatea de certificare:
cd /etc/openvpn/easy-rsa/2.0
source ./vars
./clean-all
./build-ca
Vi se va solicita informații. Faceți-vă viața mai ușoară, furnizând informații despre serverul dvs., de exemplu, unde se află și care este / va fi FQDN. Acest lucru este util atunci când trebuie să depanați probleme:
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 [[email protected]]:[email protected]
O altă necesitate sunt parametrii pentru schimbul de chei Diffie-Hellman. Acestea trebuie să fie generate și:
./build-dh
Important : build-dhcomanda este un proces relativ complex care poate dura până la zece minute, în funcție de resursele serverului.
Pentru a îmbunătăți în continuare securitatea acestei conexiuni, vom genera un secret static care trebuie distribuit între toți clienții:
mkdir /etc/openvpn/keys
openvpn --genkey --secret /etc/openvpn/keys/ta.key
Acum, puteți genera cheia pentru server:
./build-key-server server1
Această comandă vă va solicita câteva informații:
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 [[email protected]]:[email protected]
Ultimul pas este semnarea cererii de certificat care tocmai a fost generată cu cheia CA:
1 out of 1 certificate requests certified, commit? [y/n]y
Copiați cheile și certificatele necesare într-un folder separat:
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/*
Acum pentru configurare, decuplați-o ...
cd /etc/openvpn
gunzip server.conf.gz
... și deschideți rezultatul server.confcu editorul de text preferat. Configurația ar trebui să arate similar cu aceasta:
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
După repornirea serviciului, ar trebui să urmăriți un pic jurnalul ...
service openvpn restart && tail -f /var/log/syslog
... pentru a vă asigura că totul funcționează. Dacă nu sunt detectate erori, atunci puteți genera cheile pentru al doilea server:
cd /etc/openvpn/easy-rsa/2.0
source ./vars
./build-key server2
Din nou, vi se va solicita informații:
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 [[email protected]]:[email protected]
Acum, trebuie să transferați fișierele necesare pe al doilea server, de preferință criptat:
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
Mașina 2
E timpul să treceți la conexiunea SSH a celui de - al doilea server . Primul pas este instalarea OpenVPN ...
yum install openvpn
... și pentru a dezactiva firewalld. Înlocuirea va fi simplă.
systemctl stop firewalld
systemctl disable firewalld
Despachetați arhiva pe care tocmai ați mutat-o pe server și setați în mod corespunzător permisiunile pe fișiere:
cd /etc/openvpn
mkdir keys
chmod 700 keys
cd keys
tar -xf ~/vpn.tar -C .
chmod 600 *
Creați /etc/openvpn/client.confcu editorul de text preferat. Ar trebui să arate astfel:
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
Ultimul pas este pornirea și activarea serviciului:
systemctl start [email protected]
systemctl enable [email protected]
Dacă totul funcționează, atunci nu ar trebui să aveți nicio problemă să faceți clic pe primul server:
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
Acum aveți o conexiune privată pe Internet!
Dacă trebuie să rezolvați erori, încercați să verificați jurnalele cu următoarea comandă:
journalctl -xn