Stroj 1
Stroj 2
Vultr vam nudi izvrsnu privatnu mrežnu povezanost za poslužitelje koji rade na istoj lokaciji. Ali ponekad želite da dva poslužitelja u različitim zemljama/podatkovnim centrima mogu komunicirati na privatan i siguran način. Ovaj vodič će vam pokazati kako to postići uz pomoć OpenVPN-a. Operacijski sustavi koji se ovdje koriste su Debian i CentOS, samo da vam pokažemo dvije različite konfiguracije. Ovo se lako može prilagoditi za Debian -> Debian, Ubuntu -> FreeBSD i tako dalje.
- Stroj 1: Debian, djelovat će kao poslužitelj (Lokacija: NL)
- Stroj 2: CentOS, djelovat će kao klijent (Lokacija: FR)
Stroj 1
Počnite na stroju 1 instaliranjem OpenVPN-a:
apt-get install openvpn
Zatim kopirajte primjer konfiguracije i alat za generiranje ključeva, easy-rsa, na /etc/openvpn:
cp -r /usr/share/doc/openvpn/examples/easy-rsa/ /usr/share/doc/openvpn/examples/sample-config-files/server.conf.gz /etc/openvpn
Zadane vrijednosti za vaše ključeve više nisu baš sigurne, da biste to popravili otvorite /etc/openvpn/easy-rsa/2.0/varssvojim omiljenim uređivačem teksta i izmijenite sljedeći redak:
export KEY_SIZE=4096
Zatim provjerite jesu li vrijednosti učitane u vašu trenutnu sesiju, očistite eventualno postojeće ključeve i generirajte svoje certifikacijsko tijelo:
cd /etc/openvpn/easy-rsa/2.0
source ./vars
./clean-all
./build-ca
Od vas će se tražiti informacije. Olakšajte si život pružanjem informacija o svom poslužitelju, na primjer, gdje se nalazi i što je/će biti FQDN. Ovo je korisno kada morate otkloniti 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 [mail@host.domain]:youraddress@yourdomain.tld
Još jedna potreba su parametri za razmjenu ključeva Diffie-Hellman. I njih je potrebno generirati:
./build-dh
Važno : build-dhNaredba je relativno složen proces koji može potrajati i do deset minuta, ovisno o resursima vašeg poslužitelja.
Kako bismo dodatno poboljšali sigurnost ove veze, generirat ćemo statičku tajnu koja se mora distribuirati među svim klijentima:
mkdir /etc/openvpn/keys
openvpn --genkey --secret /etc/openvpn/keys/ta.key
Sada možete generirati ključ za poslužitelj:
./build-key-server server1
Ova naredba traži neke informacije:
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
Posljednji korak je potpisivanje zahtjeva za certifikatom koji je upravo generiran ključem CA:
1 out of 1 certificate requests certified, commit? [y/n]y
Kopirajte potrebne ključeve i certifikate u zasebnu mapu:
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/*
Sada za konfiguraciju, raspakirajte je...
cd /etc/openvpn
gunzip server.conf.gz
... i otvorite rezultat server.confsvojim omiljenim uređivačem teksta. Konfiguracija bi trebala izgledati slično ovome:
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
Nakon ponovnog pokretanja usluge trebali biste malo pripaziti na svoj zapisnik...
service openvpn restart && tail -f /var/log/syslog
... kako bi bili sigurni da sve radi. Ako se pogreške ne otkriju, tada možete generirati ključeve za svoj drugi poslužitelj:
cd /etc/openvpn/easy-rsa/2.0
source ./vars
./build-key server2
Opet, od vas će se tražiti informacije:
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
Sada morate prenijeti potrebne datoteke na svoj drugi poslužitelj, po mogućnosti šifrirane:
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
Stroj 2
Vrijeme je za prebacivanje na SSH-vezu vašeg drugog poslužitelja . Prvi korak je instalirati OpenVPN...
yum install openvpn
... i deaktivirati firewalld. Zamjena će biti obični iptables.
systemctl stop firewalld
systemctl disable firewalld
Raspakirajte arhivu koju ste upravo premjestili na poslužitelj i ispravno postavite dopuštenja za datoteke:
cd /etc/openvpn
mkdir keys
chmod 700 keys
cd keys
tar -xf ~/vpn.tar -C .
chmod 600 *
Kreirajte /etc/openvpn/client.confsa svojim omiljenim uređivačem teksta. Trebalo bi izgledati ovako:
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
Posljednji korak je pokretanje i omogućavanje usluge:
systemctl start openvpn@client.service
systemctl enable openvpn@client.service
Ako sve radi, onda ne biste trebali imati problema s pingiranjem prvog poslužitelja:
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
Sada imate privatnu vezu preko Interneta!
Ako trebate otkloniti bilo kakve pogreške, pokušajte provjeriti zapisnike sljedećom naredbom:
journalctl -xn