• { it статьи }

Пошаговая настройка vpn сервера и клиента

В данной статье рассматривается процесс установки и настройки openvpn на сервере Centos и клиентах Centos, Windows

OS: Centos 6 (32bit), Windows 8 (64bit)

В качестве vpn-сервера был выбран vpn от Digitalocean

Отличные цены, качество и сообщество. Один из лучших, что пробовал!


Настройка openvpn сервера (Centos 6)

проверяем наличие репозитория epel:

yum repolist

добавляем, если отсутствует:

rpm -Uvh http://dl.fedoraproject.org/pub/epel/6/i386/epel-release-6-8.noarch.rpm

устанавливаем openvpn и набор скриптов easy-rsa:

yum -y install openvpn easy-rsa

добавляем в автозагрузку:

chkconfig openvpn on

проверяем корректность даты и времени сервера:

date

копируем (каталог) скриптов easy-rsa в директорию openvpn сервера:

cp -r /usr/share/easy-rsa/2.0/ /etc/openvpn/

переходим в папку openvpn сервера:

cd /etc/openvpn/

выполняем его первоначальную настройку:

vi ./2.0/vars

редактируем следующие строки:

export KEYCOUNTRY="US" export KEYPROVINCE="CA"
export KEYCITY="SanFrancisco"
export KEYORG="Fort-Funston"
export KEYEMAIL="me@myhost.mydomain"
export KEYOU="MyOrganizationalUnit"
export KEY_NAME="EasyRSA" => ""

создаем файл конфигурации сервера openvpn:

vi /etc/openvpn/server.conf

local ip_вашего_сервера
port 1194
proto tcp
dev tun
ca ca.crt
cert hostname_вашего_сервера.crt
key hostname_вашего_сервера.key
dh dh2048.pem
server 10.10.10.0 255.255.255.0
ifconfig-pool-persist ipp.txt
push "route 0.0.0.0 255.255.255.0"
push "dhcp-option DNS ip_вашего_сервера"
push "redirect-gateway"
client-to-client
keepalive 10 120
comp-lzo
user nobody
group nobody
persist-key
persist-tun
status openvpn-status.log
log /var/log/openvpn.log
verb 3
mute 10

для работы openvpn в качестве шлюза, необходимо изменить настройки: 

vi /etc/sysctl.conf

меняем значение 0 на 1

net.ipv4.ip_forward = 0 > net.ipv4.ip_forward = 1

перезагружаем машину:

reboot

добавим правила маршрутизации:

iptables -t nat -A POSTROUTING -s 10.10.10.0/24 -o eth0 -j MASQUERADE
service iptables save
service iptables restart

переходим в директорию "/etc/openvpn/2.0/

cd /etc/openvpn/2.0/

запускаем по очереди следующие скрипты:

. ./vars

./clean-all - удалит все имеющиеся сертификаты openvpn (если таковые имеются)

* примечание: имя сервера можно посмотреть командой hostname

генерируем ca сертификат:

./build-ca

далее подтверждаем нажимая ENTER, дойдя до пункта CommonName в котором необходимо указать имя нашего сервера

генерируем сертификат сервера:

./build-key-server server где server - имя (hostname) нашего сервера

далее подтверждаем (ENTER) до пункта Sign the certificate

необходимо согласиться набрав "y" далее подтвердить (ENTER)

в следующем пункте 1 out of 1 certificate request certified, commit? также согласиться набрав "y" и подтвердить (ENTER)

генерируем файл dh (тут придется подождать приличное время):

./build-dh

копируем необходимые файлы для работы сервера:

cp /etc/openvpn/2.0/keys/{ca.crt,server.crt,server.key,dh2048.pem} /etc/openvpn/ 

* У Вас может быть файл dh1024.pem - зависит от выбора (по умолчанию в 6.5 Centos - dh2048.pem) если отличается не забудьте изменить имя файла в server.conf

запускаем наш openvpn сервер:

service openvpn start

* если сервер не запустился смотрим лог:

cat /var/log/messages

проверяем наличие интерфейса tun0:

ifconfig

* поднимается после запуска openvpn, через 5-15 секунд

на сервере генерируем сертификаты клиентов => переходим в директорию:

cd /etc/openvpn/2.0

и запускаем скрипт генерации сертификата клиента:

./build-key client

* где client - имя клиента

далее аналогично генерации сертификата сервера подтверждаем "y" на тех же пунктах


Настройка openvpn-клиентов (Centos, Windows)

CENTOS

аналогично проверяем наличие репозитория epel

устанавливаем openvpn:

yum -y install openvpn

проверяем корректность даты и времени клиента:

date

копируем необходимые файлы из директории сервера в директорию клиента /etc/openvpn/

scp root@SERVER_IP:/etc/openvpn/2.0/keys/{ca.crt,client.crt,client.key} /etc/openvpn

* где client - имя указанного Вами клиента при генерации сертификата

создаем файл конфигурации клиента openvpn:

vi /etc/openvpn/client.conf

client
dev tun
proto tcp
remote ip_вашего_сервера 1194
resolv-retry infinite
user nobody
group nobody
persist-key
persist-tun
ca ca.crt
cert client.crt
key client.key
ns-cert-type server
comp-lzo
verb 3

после этого выставим права и пользователя и группу для файлов:

chown openvpn:openvpn -R /etc/openvpn chmod 775 -R /etc/openvpn

запускаем сервис:

Centos 6:

service openvpn start

Centos 7, Fedora 21:

systemctl start openvpn@client.service

где client имя конфигурационного файла (на случай если вы его назвали по-другому)

проверяем наличие интерфейса tun0:

ifconfig

добавляем в автозагрузку, если необходимо:

Centos 6:

chkconfig openvpn on

Centos 7, Fedora 21

systemctl enable openvpn@client.service

WINDOWS

устанавливаем openvpn | зеркало

копируем необходимые файлы (ca.crt,client.crt,client.key) из директории сервера /etc/openvpn/2.0/keys/ в директорию клиента C:\vpn

переходим в директорию C:\vpn и создаем файл конфигурации клиента client-windows.ovpn 

client
dev [tap|tun]
dev-node OVPN
dev tun
proto tcp
remote ip_вашего_сервера 1194
resolv-retry infinite
nobind
persist-key
persist-tun
ca c:\\vpn\\ca.crt
cert c:\\vpn\\client.crt
key c:\\vpn\\client.key
comp-lzo
verb 3

примечание для Windows:

в windows при настройке openvpn в качестве шлюза, может потребоваться указать название интерфейса в скобках "{}" в данном конфиг файле имя интерфейса OVPN (переименовано с "Подключение по локальной сети 2" на OVPN)

т.е. необходимо переименовать вновь созданный сетевой виртуальный адаптер (tap) c Подключение по локальной сети на OVPN

необходимо запустить службу "Маршрутизация и удаленный доступ, если таковая не запущена (по умолчанию - авто)

примечание (для сервера linux)

может понадобиться  при первоначальной генерации сертификатов откатить время на сервере на сутки назад.

может понадобиться создать файл ipp.txt в директории /etc/openvpn/

рекомендации:

для копирования файлов с сервера на клиент из-под ос Windows, рекомендую использовать программу WinSCP | зеркало

Проверим все написанное выше в режиме ctr+c ctr+v

Комментировать

Рубрики