Maskin 1
Maskin 2
Vultr tilbyr deg fantastisk privat nettverkstilkobling for servere som kjører på samme sted. Men noen ganger ønsker man at to servere i forskjellige land/datasentre skal kunne kommunisere på en privat og sikker måte. Denne opplæringen vil vise deg hvordan du oppnår det ved hjelp av OpenVPN. Operativsystemene som brukes her er Debian og CentOS, bare for å vise deg to forskjellige konfigurasjoner. Dette kan enkelt tilpasses for Debian -> Debian, Ubuntu -> FreeBSD og så videre.
- Maskin 1: Debian, vil fungere som server (sted: NL)
- Maskin 2: CentOS, vil fungere som klient (sted: FR)
Maskin 1
Start på maskin 1 ved å installere OpenVPN:
apt-get install openvpn
Kopier deretter eksempelkonfigurasjonen og verktøyet for å generere nøkler, easy-rsa, til /etc/openvpn:
cp -r /usr/share/doc/openvpn/examples/easy-rsa/ /usr/share/doc/openvpn/examples/sample-config-files/server.conf.gz /etc/openvpn
Standardverdiene for nøklene dine er ikke akkurat trygge lenger, for å fikse dette åpnes /etc/openvpn/easy-rsa/2.0/varsmed favoritttekstredigeringsprogrammet og endre følgende linje:
export KEY_SIZE=4096
Deretter må du sørge for at verdiene lastes inn i den nåværende økten, rydde opp i eksisterende nøkler og generere sertifiseringsinstansen din:
cd /etc/openvpn/easy-rsa/2.0
source ./vars
./clean-all
./build-ca
Du vil bli bedt om informasjon. Gjør livet ditt enklere ved å oppgi informasjon om serveren din, for eksempel hvor den er plassert og hva FQDN er/vil være. Dette er nyttig når du skal feilsøke problemer:
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
En annen nødvendighet er parametere for Diffie-Hellman nøkkelutveksling. Disse må også genereres:
./build-dh
Viktig : build-dhKommandoen er en relativt kompleks prosess som kan ta opptil ti minutter, avhengig av serverens ressurser.
For å forbedre sikkerheten til denne forbindelsen ytterligere, vil vi generere en statisk hemmelighet som må distribueres blant alle klienter:
mkdir /etc/openvpn/keys
openvpn --genkey --secret /etc/openvpn/keys/ta.key
Nå kan du generere nøkkelen for serveren:
./build-key-server server1
Denne kommandoen vil be om informasjon:
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
Det siste trinnet er å signere sertifikatforespørselen som nettopp ble generert med CAs nøkkel:
1 out of 1 certificate requests certified, commit? [y/n]y
Kopier de nødvendige nøklene og sertifikatene til en egen mappe:
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/*
Nå for konfigurasjonen, pakk den ut ...
cd /etc/openvpn
gunzip server.conf.gz
... og åpne resultatet server.confmed din favoritt tekstredigerer. Konfigurasjonen skal se slik ut:
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
Etter å ha startet tjenesten på nytt bør du se loggen din litt ...
service openvpn restart && tail -f /var/log/syslog
... for å sikre at alt fungerer. Hvis ingen feil oppdages, kan du generere nøklene for den andre serveren:
cd /etc/openvpn/easy-rsa/2.0
source ./vars
./build-key server2
Igjen vil du bli bedt om informasjon:
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
Nå må du overføre de nødvendige filene til den andre serveren din, helst kryptert:
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
Maskin 2
På tide å bytte til SSH-tilkoblingen til din andre server . Det første trinnet er å installere OpenVPN ...
yum install openvpn
... og for å deaktivere firewalld. Erstatningen vil være vanlige iptables.
systemctl stop firewalld
systemctl disable firewalld
Pakk ut arkivet som du nettopp har flyttet til serveren, og angi rettigheter for filene:
cd /etc/openvpn
mkdir keys
chmod 700 keys
cd keys
tar -xf ~/vpn.tar -C .
chmod 600 *
Lag /etc/openvpn/client.confmed din favoritt tekstredigerer. Det skal se slik ut:
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
Det siste trinnet er å starte og aktivere tjenesten:
systemctl start openvpn@client.service
systemctl enable openvpn@client.service
Hvis alt fungerer, bør du ikke ha noe problem med å pinge den første serveren:
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
Du har nå en privat tilkobling over Internett!
Hvis du trenger å feilsøke noen feil, prøv å sjekke loggene med følgende kommando:
journalctl -xn