Всех приветствую. В данном примере настройка сервера выполняется с использованием дистрибутива — Ubuntu Server. Клиент настраивается под Microsoft Windows. В качестве LDAP-сервера используется Microsoft Active Directory.
Статью можно использовать как основу для настройки OpenVPN на любой операционной системе семейства UNIX.
Готовим сервер
Заходим в систему под суперпользователем:
	
	
	
		
Устанавливаем часовой пояс (к примеру московское время) и синхронизируем его с сервером времени:
	
	
	
		
Настраиваем задание в cron для автоматической синхронизации времени каждый день в 00:00:
	
	
	
		
Обновляем пакеты:
	
	
	
		
Устанавливаем OpenVPN и создаем сертификаты
Устанавливаем пакеты openvpn и easy-rsa:
	
	
	
		
Создаем каталог easy-rsa, переходим в него и копируем рабочие файлы:
	
	
		
			
	
	
	
		
		
	
Открываем на редактирование скрипт vars и выставляем подходящие значения для своего сертификата:
	
	
		
			
	
	
	
		
		
	
Запускаем на исполнение отредактированный скрипт:
	
	
	
		
На всякий случай, чистим каталоги от старых сертификатов:
	
	
	
		
Генерируем первый сертификат:
	
	
	
		
На все запросы просто нажимаем Enter, так как мы все настроили в переменных с помощью файла vars.
Создаем ключ для сервера:
	
	
	
		
В конце подтверждаем подписание сертификата ([Y]).
Формируем ключ Diffie–Hellman(key exchange):
	
	
	
		
Теперь создаем ключ для клиента:
	
	
	
		
В конце подтверждаем подписание сертификата ([Y]).
Ну и на последок, TLS-ключ:
	
	
	
		
Копируем каталог с созданными сертификатами и ключами в /etc/openvpn:
	
	
	
		
Настраиваем сервер и клиента
Настройка сервера
Создаем конфигурационный файл и вставляем в него следующее содержимое:
	
	
		
			
	
	
	
		
		
	
*
Создаем каталог для логов и запускаем службу сервера openvpn:
	
	
	
		
Проверить работоспособность службы можно командой:
	
	
	
		
Настройка клиента
Заходим на официальный сайт openvpn и скачиваем клиента для Windows:
		
		
	
	
		 
	
Запускаем скачанный файл и устанавливаем программу, нажимая «Далее».
Переходим в папку C:\Program Files\OpenVPN\config. И копируем в нее файлы ca.crt, client.crt, client.key, dh2048.pem, ta.key из каталога /etc/openvpn/keys на сервере.
** Самый простой способ скопировать файлы с сервера UNIX — воспользоваться программой WinSCP.
У вас, скорее всего, возникнет проблема при открытии папки keys — ошибка permission denied (не хватает прав). Для обхода этой проблемы на сервере Ubuntu скопируйте необходимые ключи во временную папку и предоставьте к ним полный доступ:
	
	
		
			
	
	
	
		
		
	
По завершении копирования не забываем удалить папку /tmp/keys:
	
	
	
		
Теперь возвращаемся к компьютеру с Windows, открываем блокнот от имени администратора и вставляем следующие строки:
	
	
		
			
	
	
	
		
		
	
***
Сохраняем файл с именем config.ovpn в папке C:\Program Files\OpenVPN\config.
Запускаем с рабочего стола программу «OpenVPN GUI» от имени администратора (это важно).
Нажимаем правой кнопкой по появившемуся в трее значку и выбираем «Подключиться»:
Если все настроено правильно, произойдет подключение и значок поменяет цвет с серого на зеленый.
Настраиваем аутентификацию через LDAP
На сервере OpenVPN
Устанавливаем пакет openvpn-auth-ldap:
	
	
	
		
Редактируем конфигурационный файл openvpn (добавляем две строки):
	
	
		
			
	
	
	
		
		
	
В директории /etc/openvpn создаем каталог auth и в нем конфигурационный файл ldap.conf. В последний добавляем следующие строки:
	
	
		
			
	
	
	
		
		
	
****
Перезагружаем демон openvpn:
	
	
	
		
На сервере Active Directory
Запускаем оснастку для управления пользователями и компьютерами.
В контейнере «Users» создаем учетную запись openvpn с паролем openvpn. Никаких дополнительных прав ей не даем.
***** Данные контейнер, имя и пароль используются для примера. Само собой, вы можете использовать любые значения. Только не забывайте также редактировать конфигурационный файл ldap.conf на сервере.
В том же контейнере создаем группу безопасности «VPN users». В нее добавляем учетные записи всех пользователей, которым хотим предоставить возможность подключаться к VPN.
****** Если в компании сложная структура Active Directory с множеством сайтов, возможно, стоит сделать паузу на 15 минут и подождать окончания репликации.
На клиенте Windows
Запускаем блокнот от имени администратора и открываем конфигурационный файл клиента openvpn (C:\Program Files\OpenVPN\config\config.ovpn).
Добавляем в него одну строку:
	
	
	
		
...........
Сохраняем файл и проверяем работоспособность. При включении клиента появится окно для ввода логина и пароля.
Вводим логин и пароль для учетной записи, которую мы добавили в группу «VPN users» — произойдет подключение и значок поменяет цвет с серого на зеленый.
				
			Статью можно использовать как основу для настройки OpenVPN на любой операционной системе семейства UNIX.
Готовим сервер
Заходим в систему под суперпользователем:
		Код:
	
	$ sudo su
		Код:
	
	# cp /usr/share/zoneinfo/Europe/Moscow /etc/localtime; ntpdate ru.pool.ntp.org
		Код:
	
	# mkdir -p /var/cron/tabs && echo '0 0 * * * /usr/sbin/ntpdate ru.pool.ntp.org' >> /var/cron/tabs/crontab && crontab /var/cron/tabs/crontab && crontab -l
		Код:
	
	# apt-get update && apt-get upgradeУстанавливаем OpenVPN и создаем сертификаты
Устанавливаем пакеты openvpn и easy-rsa:
		Код:
	
	# apt-get install openvpn easy-rsa -y
		Код:
	
	# mkdir /etc/openvpn/easy-rsa
# cd /etc/openvpn/easy-rsa
# cp -r /usr/share/easy-rsa/* .Открываем на редактирование скрипт vars и выставляем подходящие значения для своего сертификата:
		Код:
	
	# nano ./varsexport KEY_COUNTRY="RU"
export KEY_PROVINCE="Leningrad"
export KEY_CITY="Sankt-Petersburg"
export KEY_ORG="DMOSK COMPANY"
export KEY_EMAIL="[email protected]"
export KEY_CN=DMOSK
export KEY_OU=DMOSK
export KEY_NAME=name-openvpn-server.dmosk.ru
export KEY_ALTNAMES="name-openvpn-server"
#export PKCS11_MODULE_PATH=changeme
#export PKCS11_PIN=1234Запускаем на исполнение отредактированный скрипт:
		Код:
	
	# . ./vars
		Код:
	
	# ./clean-all
		Код:
	
	# ./build-caСоздаем ключ для сервера:
		Код:
	
	# ./build-key-server serverФормируем ключ Diffie–Hellman(key exchange):
		Код:
	
	# ./build-dh
		Код:
	
	# ./build-key clientНу и на последок, TLS-ключ:
		Код:
	
	# openvpn --genkey --secret keys/ta.key
		Код:
	
	# cp -r keys /etc/openvpn/Настраиваем сервер и клиента
Настройка сервера
Создаем конфигурационный файл и вставляем в него следующее содержимое:
		Код:
	
	# nano /etc/openvpn/server.conflocal 192.168.166.155
port 443
proto udp
dev tun
ca keys/ca.crt
cert keys/server.crt
key keys/server.key
dh keys/dh2048.pem
tls-auth keys/ta.key 0
server 172.16.10.0 255.255.255.0
ifconfig-pool-persist ipp.txt
keepalive 10 120
max-clients 32
client-to-client
persist-key
persist-tun
status /var/log/openvpn/openvpn-status.log
log-append /var/log/openvpn/openvpn.log
# 0 is silent, except for fatal errors
# 4 is reasonable for general usage
# 5 and 6 can help to debug connection problems
# 9 is extremely verbose
verb 4
mute 20
daemon
mode server
tls-server
comp-lzo*
	 Для просмотра ссылки необходимо нажать
		Вход или Регистрация
 — IP-адрес, на котором сервер будет устанавливать VPN-соединение. 
	 Для просмотра ссылки необходимо нажать
		Вход или Регистрация
 
	 Для просмотра ссылки необходимо нажать
		Вход или Регистрация
 — адресация для виртуальной сети. 32 — количество клиентов для одновременного подключения.Создаем каталог для логов и запускаем службу сервера openvpn:
		Код:
	
	# mkdir /var/log/openvpn
# service openvpn start
		Код:
	
	# service openvpn statusНастройка клиента
Заходим на официальный сайт openvpn и скачиваем клиента для Windows:
	 Для просмотра ссылки необходимо нажать
		Вход или Регистрация
 
	Запускаем скачанный файл и устанавливаем программу, нажимая «Далее».
Переходим в папку C:\Program Files\OpenVPN\config. И копируем в нее файлы ca.crt, client.crt, client.key, dh2048.pem, ta.key из каталога /etc/openvpn/keys на сервере.
** Самый простой способ скопировать файлы с сервера UNIX — воспользоваться программой WinSCP.
У вас, скорее всего, возникнет проблема при открытии папки keys — ошибка permission denied (не хватает прав). Для обхода этой проблемы на сервере Ubuntu скопируйте необходимые ключи во временную папку и предоставьте к ним полный доступ:
		Код:
	
	# mkdir /tmp/keys
# cd /etc/openvpn/keys
# cp ca.crt client.crt client.key dh2048.pem ta.key /tmp/keys
# chmod -R 777 /tmp/keysПо завершении копирования не забываем удалить папку /tmp/keys:
		Код:
	
	# rm -R /tmp/keysТеперь возвращаемся к компьютеру с Windows, открываем блокнот от имени администратора и вставляем следующие строки:
		Код:
	
	client
resolv-retry infinite
nobind
remote 192.168.166.155 443
proto udp
dev tun
comp-lzo
ca ca.crt
cert client.crt
key client.key
dh dh2048.pem
tls-client
tls-auth ta.key 1
float
keepalive 10 120
persist-key
persist-tun
verb 0***
	 Для просмотра ссылки необходимо нажать
		Вход или Регистрация
 — IP-адрес сервера VPN.Сохраняем файл с именем config.ovpn в папке C:\Program Files\OpenVPN\config.
Запускаем с рабочего стола программу «OpenVPN GUI» от имени администратора (это важно).
Нажимаем правой кнопкой по появившемуся в трее значку и выбираем «Подключиться»:
Если все настроено правильно, произойдет подключение и значок поменяет цвет с серого на зеленый.
Настраиваем аутентификацию через LDAP
На сервере OpenVPN
Устанавливаем пакет openvpn-auth-ldap:
		Код:
	
	# apt-get install openvpn-auth-ldap -yРедактируем конфигурационный файл openvpn (добавляем две строки):
		Код:
	
	# nano /etc/openvpn/server.confusername-as-common-name
plugin /usr/lib/openvpn/openvpn-auth-ldap.so /etc/openvpn/auth/ldap.confВ директории /etc/openvpn создаем каталог auth и в нем конфигурационный файл ldap.conf. В последний добавляем следующие строки:
		Код:
	
	# mkdir /etc/openvpn/auth && nano /etc/openvpn/auth/ldap.conf
URL ldap://dc1.dmosk.local
BindDN CN=openvpn,CN=Users,DC=dmosk,DC=local
Password openvpn
Timeout 15
TLSEnable no
BaseDN "DC=dmosk,DC=local"
SearchFilter "(&(sAMAccountName=%u)(memberOf=CN=VPN users,CN=Users,DC=dmosk,DC=local))"****
	 Для просмотра ссылки необходимо нажать
		Вход или Регистрация
 — контроллер домена. CN=openvpn,CN=Users,DC=dmosk,DC=local — учетная запись для связывания с контроллером домена. openvpn — пароль для учетной записи openvpn. DC=dmosk,DC=local — корень в домене, с которого начнется поиск учетной записи для аутентификации. CN=VPN users,CN=Users,DC=dmosk,DC=local — группа безопасности, в которую должна входить учетная запись для успешной аутентификации.Перезагружаем демон openvpn:
		Код:
	
	# service openvpn restartНа сервере Active Directory
Запускаем оснастку для управления пользователями и компьютерами.
В контейнере «Users» создаем учетную запись openvpn с паролем openvpn. Никаких дополнительных прав ей не даем.
***** Данные контейнер, имя и пароль используются для примера. Само собой, вы можете использовать любые значения. Только не забывайте также редактировать конфигурационный файл ldap.conf на сервере.
В том же контейнере создаем группу безопасности «VPN users». В нее добавляем учетные записи всех пользователей, которым хотим предоставить возможность подключаться к VPN.
****** Если в компании сложная структура Active Directory с множеством сайтов, возможно, стоит сделать паузу на 15 минут и подождать окончания репликации.
На клиенте Windows
Запускаем блокнот от имени администратора и открываем конфигурационный файл клиента openvpn (C:\Program Files\OpenVPN\config\config.ovpn).
Добавляем в него одну строку:
		Код:
	
	auth-user-pass...........
Сохраняем файл и проверяем работоспособность. При включении клиента появится окно для ввода логина и пароля.
Вводим логин и пароль для учетной записи, которую мы добавили в группу «VPN users» — произойдет подключение и значок поменяет цвет с серого на зеленый.
	 Для просмотра ссылки необходимо нажать
		Вход или Регистрация
 
					


 
 
 
 
 
 
 
 
 
 

 
		
 
			




 
		 
		 
 
		 
                                 
                                 
                                 
 
		 
 
		 
 
		 
	 
	 
	 
	