RSS
 

Настройка сервера openvpn на linux

31 Июл

VPN-SRVМного статей есть в сети об этом, но я решил написать еще одну. Конечно, можно пользоваться pptp, о котором я уже писал ранее, но в openvpn есть несколько важных преимуществ. Поэтому, он такой популярный. Какие собственно преимущества?

Во-первых, он более защищенный, потому что использует мощные алгоритмы шифрования с открытыми ключами и сертификатами вместо паролей. В pptp используются менее защищенные протоколы шифрования, которые можно сломать при желании. Во-вторых, openvpn работает через http-прокси и фаерволы. Он может работать через любой порт как tcp так и udp. Можно настроить работу сервиса через 443 порт tcp, что позволяет работать через прокси и не дает возможности закрыть этот порт фаерволами. В-третьих, он кроссплатформенный. В-четвертых, он имеет высокую стабильность работы в нестабильном канале Интернета. Это основные преимущества. Хоть openvpn и можно настроить на MS Windows, но мы будем сервер настраивать на Linux, клиент может быть и на Windows. Итак, начнем.

Скачаем rpm пакет с openvpn или поставим с исходников на сайте openvpn. Создадим рабочий каталог для ключей и для скриптов генерации сертификатов:

# mkdir /etc/openvpn/key
# mkdir /etc/openvpn/aesy-rsa

Скопируем с каталога /usr/share/openvpn/easy-rsa все содержимое в созданый каталог /etc/openvpn/aesy-rsa:

# cp -r /urs/share/openvpn/easy-rsa/2.0 /etc/openvpn/easy-rsa

Заходим с каталог и меняем права доступа на скрипты. Устанавливаем права на запуск:

# cd /etc/openvpn/easy-rsa
# chmod +x clean-all
# chmod +x build*

Далее загружаем переменные:

# . ./vars (или source ./vars)

Создаём приватный ключ и сертификат центра сертификации:

# ./build-ca

В /etc/openvpn/easy-rsa/keys создадутся сертификат центра сертификации ca.crt и приватный ключ центра сертификации ca.key. Сертификат центра сертификации находится как на стороне сервера, так и на стороне клиента и учавствует в создании туннеля. Приватный ключ центра сертификации чрезвычайно секретный и не должен попасть в чужие руки. В создании туннеля он не используется.

Генерируем TLS ключ:

# openvpn —genkey —secret /etc/openvpn/easy-rsa/keys/ta.key

Генерируем ключ сервера:

# ./build-key-server server

Создаём параметр DH (Алгоритм Диффи — Хеллмана):

# ./build-dh

Копируем ключи и сертификати в созданый нами ранее каталог:

# cp /etc/openvpn/easy-rsa/keys/ca.crt /etc/openvpn/keys/ca.crt
# cp /etc/openvpn/easy-rsa/keys/server.crt /etc/openvpn/keys/server.crt
# cp /etc/openvpn/easy-rsa/keys/server.key /etc/openvpn/keys/server.key
# cp /etc/openvpn/easy-rsa/keys/dh1024.pem /etc/openvpn/keys/dh1024.pem
# cp /etc/openvpn/easy-rsa/keys/ta.key /etc/openvpn/keys/ta.key

Создаем и редактируем конфиг сервера:

# vi /etc/openvpn/server.conf

port 1194                                                  
; порт для соединения с сервером

proto udp                                                                                        
; протокол для соединения с сервером

dev tun                                                                                              
; виртуальный интерфейс сервера

tls-server                                                                                        
; включить аутентификацию

tls-auth /etc/openvpn/keys/ta.key 0                              
 ; ключ аутентификации

ca /etc/openvpn/keys/ca.crt                                                
; путь к сертификату центра сертификации

cert /etc/openvpn/keys/server.crt                                    
; путь к сертификату сервера

key /etc/openvpn/keys/server.key                                    
; путь к ключу сервера

dh /etc/openvpn/keys/dh1024.pem                                
; путь к параметру dh

server 10.0.0.0 255.255.255.128                                                                   
; сеть, которую будут раздавать dhcp сервера клиентам

push «redirect-gateway def1»                                                
; указывает клиенту, что дефолт будет через vpn-сервер (если необходимо)

push «route 10.10.10.0 255.255.255.0»
; передача клиенту информацию о сети, то что за сервером (если необходимо). Добавляется в таблицу маршрутизации клиента 

push «dhcp-option DNS 10.10.10.10»
; передача dns клиенту (если необходимо)

client-to-client
; разрешить клиентам видеть друг друга (если необходимо)

route 10.10.20.0 255.255.255.0 10.0.0.10
; маршрут для сервера к сетям за клиентом (если необходимо)

keepalive 10 120                                                                        
; интервал пинга 10 и недоступность через 120 секунд

cipher BF-CBC                                                                                
; алгоритм шифрования

comp-lzo                                                                                        
; включить сжатие трафика

max-clients 30                                                                              
; максимальное количество клиентов

persist-key                                                                                    
 ; понижаем привелегии

persist-tun                                                                                    
; понижаем привелегии

status openvpn-status.log                                                    
 ; лог подключений

verb 3                                                                                              
; уровень информативности логов

Настройка сервера завершена. Теперь создадим ключи и файл конфигурации vpn-клиентов.

Генерируем ключи:

# cd /etc/openvpn/easy-rsa
# ./build-key client

Получим следующие ключ и сертификат: client.crt, client.key

Создаем файл конфигурации openvpn.ovpn:

client
tls-client
tls-auth ta.key 1
dev tun
proto udp
tun-mtu 1500
remote 10.0.0.129 1194
nobind
persist-key
persist-tun
ca ca.crt
cert client.crt
key client.key
comp-lzo
cipher BF-CBC
verb 3
mute 20
pull

Параметры клиента похожи на параметры сервера, поэтому не поясняю.

Теперь, если у нас клиент на MS Windows, то копируем ca.crt, client.crt, client.key, ta.key, openvpb.ovpn в каталог C:\Program Files (x86)\OpenVPN\config.

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

# /etc/init.d/openvpn start

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

# chkconfig openvpn on

Из под клиента запускаем openvpn GUI в режиме администратора (чтобы можно было изменять системные параметры, маршруты и т.д.). Он падает в трэй. Можна выставить пароль на подключение (опционально). Правой кнопочкой нажимаем «подключиться». Более подробно можно изучить сервис по материалам с официального сайта openvpn.net

Работаем!

 

Комментарии facebook

Комментарии vkontakte

Нет комментариев

Опубликовано в Linux, Сети

 

Оставить комментарий