Машина 1
Машина 2
Вултр вам нуди сјајну приватну мрежну повезаност за сервере који раде на истој локацији. Али понекад желите да два сервера у различитим земљама/центрима података могу да комуницирају на приватан и безбедан начин. Овај водич ће вам показати како да то постигнете уз помоћ ОпенВПН-а. Оперативни системи који се овде користе су Дебиан и ЦентОС, само да вам покажемо две различите конфигурације. Ово се лако може прилагодити за Дебиан -> Дебиан, Убунту -> ФрееБСД и тако даље.
- Машина 1: Дебиан, ће деловати као сервер (Локација: НЛ)
- Машина 2: ЦентОС, ће деловати као клијент (Локација: ФР)
Машина 1
Почните на машини 1 инсталирањем ОпенВПН-а:
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
Бићете упитани за информације. Олакшајте свој живот пружањем информација о вашем серверу, на пример, где се налази и шта је/ће бити ФКДН. Ово је корисно када морате да отклоните проблеме:
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
Још једна неопходна су параметри за размену кључева Диффие-Хеллман. И њих треба генерисати:
./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
Време је да пређете на ССХ-везу вашег другог сервера . Први корак је да инсталирате ОпенВПН ...
yum install openvpn
... и деактивирати firewalld. Замена ће бити обични иптаблес.
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 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