Вступление
В этой записке написано про установку OpenVPN Server на Windows 2008 x64.
VPN сети стали де-факто для создания защищенных каналов связи, которые объединяют удаленные офисы в одну общею сеть.
Безопасность передачи данных через сеть VPN и метод аутентификации через ключи, делает такой способ связи привлекательным. VPN соединения позволяют создавать подключения с приемлемой аутентификацией и шифрованием передаваемых данных. Многие системные администраторы открывают порты непосредственно на сервере или делают проброс с роутера до конечного сервера чтобы подключится к нему например используя тот же RDP (Remote Desktop Client). Этот способ подключения считается небезопасным.
Чтобы соединение с сервером сделать более безопасным, желательно для этого использовать VPN подключение до сервера.
Если вдруг у вас не получается установить OpenVPN, попробуйте Softether VPN https://www.softether.org/
Краткое содержание:
1. Немного о IP адресе сервера
2. Закачка установочного файла OpenVPN Server
3. Установка OpenVPN
4. Подготавливаем каталоги для конфигурационных файлов
5. Устанавливаем зависимости
6. Создаем серверный ключ
7. Настраиваем сервер OpenVPN
8. Создаем клиентский ключ
9. Запускаем службу OpenVPN
10. Настройка клиентского подключения на Windows XP
11. Включаем роутинг (forwarding) на сервере
1. Немного о IP адресе сервера
Для сервера OpenVPN нужен статический белый адрес. А для клиентов которые будут подключатся к серверу удаленно сойдет любой динамический который они получают от своего роутера по DHCP.
В этой записке сервер имеет IP адрес - 111.111.111.111
Порт подключения - 1194
Обязательно исправьте IP сервера на свой в конфиге клиента.
IP Адреса – компьютер и сеть |
Описание |
111.111.111.111 |
Это IP адрес внешней карты WAN сервера. Он должен быть белым статическим (реальным). |
10.168.111.0 / 255.255.255.0 |
Виртуальная подсеть. Из этой сети будут выдаваться IP адреса клиентским компьютерам, которые будут подключаться к серверу VPN (OpenVPN). Желательно чтобы адрес сети не пересекался с адресом реальной локальной сети. |
10.168.111.1 |
Виртуальный IP адрес сервера VPN |
192.168.1.0 / 255.255.255.0 |
Локальная подсеть. Это адрес локальной сети, которая расположена за VPN сервером. Узнать адрес можно взяв его с адаптер LAN. |
192.168.1.2 |
IP адрес локального интерфейса сервера |
1194 |
Порт, по которому идет VPN соединение. Указывают в конфигурационном файле на сервере и клиенте. Откройте доступ в фаерволе по этому порту. |
Итак, начнем нашу установку с самого главного - закачаем установочный файл на сервер.
2. Закачка установочного файла OpenVPN Server
Пройдите по ссылке: http://openvpn.net/index.php/open-source/downloads.html
Откроется окно:
или сразу пройдите по ссылке:
http://swupdate.openvpn.org/community/releases/openvpn-install-2.3.2-I003-x86_64.exe
Щелкаем ссылку обведенную красной линией, так как у меня операционная система 64-битная, я выбрал этот установщик.
Если у вас x32 система, выбираем ссылку чуть выше или эту:
http://swupdate.openvpn.org/community/releases/openvpn-install-2.3.2-I003-i686.exe
3. Установка OpenVPN
Запускаем файлик openvpn-install-2.3.2-I003-x86_64.exe
Жмем кнопку - NEXT
Жмем кнопку - I Agree
Ставим галки на выделенных пунктах. Галки должны стоят на всех пунктах.
Каталог где расположится OpenVPN.
Процесс установки...
После установки жмем кнопку Next, а потом FINISH.
Поздравляю! Вы только что установили OpenVPN.
Для удобства переименуем названия сетевых адаптеров:
ДО -
ПОСЛЕ -
По Ethernet интерфейсу с именем WAN - мы получаем Интернет.
Все, теперь мы имеем установленный OpenVPN сервер в каталоге:
c:\Program Files\OpenVPN\
4. Подготавливаем каталог для конфигурационного файла клиентских настроек
Создадим каталог:
C:\Program Files\OpenVPN\config\ccd
В этой папке у нас будут хранится индивидуальные настройки для каждого клиентского подключения, виртуальный статический IP адрес, маска и т.д.
Используется когда прописывают клиентам статические IP адреса.
5. Устанавливаем зависимости
Качаем и устанавливаем библиотеки Microsoft Visual C++ 2008 x64:
http://www.microsoft.com/en-us/download/details.aspx?id=15336
Если у вас система Windows x32, качаем и устанавливаем соответствующею библиотеку MS VC++ 2008 x32:
http://www.microsoft.com/en-us/download/details.aspx?id=29
Качаем и устанавливаем библиотеки OpenSSL for Windows:
http://slproweb.com/download/Win32OpenSSL-1_0_2a.exe
Во время установки соглашаемся на все настройки которые вам зададут. Все должно быть по умолчанию, в конце когда появится кнопка FINISH, уберите одну галку.
Так же на этом сервере есть другие программы, полный список смотрите по этой ссылке http://slproweb.com/products/Win32OpenSSL.html, но нам эти проги не нужны.
6. Создаем серверный ключ
Щелкаем внизу главное меню ПУСК -> Вводим в строке поиска - cmd.exe
Делаем ключи, вводим последовательно в черном окне следующие команды:
cd c:\Program files\openvpn\easy-rsa
copy vars.bat.sample vars.bat
copy openssl-1.0.0.cnf openssl.cnf
vars
clean-all
build-ca
build-key-server vpnserver
build-dh
После ввода команды - build-key-server vpnserver, вам зададут вопросы среди которых будет вопросик:
Подписывать ли сертификат?
Это будет выглядеть примерно так:
Sign the certificate? [y/n]:y
1 out of 1 certificate requests certified, commit? [y/n]y
Здесь надо согласится, нажать - y (yes), это обязательно.
После этих операций у нас появится каталог:
C:\Program Files\OpenVPN\easy-rsa\keys\
В нем будет готовый серверный ключ.
7. Настраиваем сервер OpenVPN
Создаем файл - c:\Program files\OpenVPN\config\server.ovpn
port 1194proto udpdev tun#route-method exeroute-delay 10tls-serverserver 10.168.111.0 255.255.255.0keepalive 10 120persist-keypersist-tunduplicate-cnstatus openvpn-status.logclient-config-dir "C:\\Program Files\\OpenVPN\\config\\ccd"push "route 192.168.1.0 255.255.255.0"ca "C:\\Program Files\\OpenVPN\\easy-rsa\\keys\\ca.crt"cert "C:\\Program Files\\OpenVPN\\easy-rsa\\keys\\vpnserver.crt"key "C:\\Program Files\\OpenVPN\\easy-rsa\\keys\\vpnserver.key"dh "C:\\Program Files\\OpenVPN\\easy-rsa\\keys\\dh1024.pem"tun-mtu 18000mssfix
Здесь у нас указаны сети:
10.168.111.0 255.255.255.0 - Виртуальная под сеть, когда клиенты буду подключатся к OpenVPN серверу, они будут получать IP адрес этой сети.
192.168.1.0 255.255.255.0 - Локальная сеть в которой у нас установлен VPN сервер. Чтобы подключенные клиенты видели локальную сеть мы прописали маршрут с виртуальной сети в локальную.
На сервере проверьте свой фаервол на наличие открытого порта 1194. Иначе подключение само собой не пройдет!
8. Создаем клиентский ключ
Щелкаем внизу главное меню ПУСК -> Вводим в строке поиска - cmd.exe
Делаем ключи, вводим последовательно в черном окне следующие команды:
cd c:\program files\OpenVPN\easy-rsa
build-key client01
WARNING: can't open config file: /etc/ssl/openssl.cnf
Loading 'screen' into random state - done
Generating a 1024 bit RSA private key
......................++++++
........++++++
writing new private key to 'keys\client02.key'
-----
You are about to be asked to enter information that will be incorporated
into your certificate request.
What you are about to enter is what is called a Distinguished Name or a DN.
There are quite a few fields but you can leave some blank
For some fields there will be a default value,
If you enter '.', the field will be left blank.
-----
Country Name (2 letter code) [US]:KZ
State or Province Name (full name) [CA]:ALM
Locality Name (eg, city) [SanFrancisco]:Almaty
Organization Name (eg, company) [OpenVPN]:Company.ru
Organizational Unit Name (eg, section) [changeme]:
Common Name (eg, your name or your server's hostname) [changeme]:
Name [changeme]:
Email Address [mail@host.domain]:
Please enter the following 'extra' attributes
to be sent with your certificate request
A challenge password []:
An optional company name []:
WARNING: can't open config file: /etc/ssl/openssl.cnf
Using configuration from openssl-1.0.0.cnf
Loading 'screen' into random state - done
Check that the request matches the signature
Signature ok
The Subject's Distinguished Name is as follows
countryName :PRINTABLE:'KZ'
stateOrProvinceName :PRINTABLE:'ALM'
localityName :PRINTABLE:'Almaty'
organizationName :PRINTABLE:'Company.ru'
organizationalUnitName:PRINTABLE:'changeme'
commonName :PRINTABLE:'changeme'
name :PRINTABLE:'changeme'
emailAddress :IA5STRING:'mail@host.domain'
Certificate is to be certified until Jan 12 13:39:00 2024 GMT (3650 days)
Sign the certificate? [y/n]:y
1 out of 1 certificate requests certified, commit? [y/n]y
Write out database with 1 new entries
Data Base Updated
Первый ключ сделан на один компьютер, аналогично создаем ключ для второго компьютера:
cd c:\program files\OpenVPN\easy-rsa
build-key client02
Примечание: Чтобы постоянно не вводить данные при генерации нового ключа, можно отключить параметр уникальности данных в файле C:\Program Files\OpenVPN\easy-rsa\keys\index.txt.attr
unique_subject = no
При этом если создавать ключи с одинаковыми параметрами, у вас выпадет ошибка:
failed to update database
TXT_DB
error number 2
9. Запускаем службу OpenVPN
Сперва поставим в автоматический запуск службу OpenVPN, для этого проделываем следующее:
Щелкам главное меню ПУСК -> Вводим - services.msc
И нажимаем ENTER
Находим службу OpenVPN и щелкаем на ней два раза. Откроется окно которое внизу:
Устанавливаем тип запуска АВТОМАТИЧЕСКИЙ, как на картинке.
Нажмите кнопку START для запуска службы и ОК, чтобы сохранить настройки.
10. Настройка клиентского подключения на Windows XP
Для этого сделайте следующее:
1. Скачайте OpenVPN клиент с официального сайта:
Пройдите по ссылке: http://openvpn.net/index.php/open-source/downloads.html
Закачайте 32-bit или 64-bit версию OpenVPN, при установке все оставляете по умолчанию, соглашаясь на все вопросы.
2. Создайте папку на рабочем столе, дайте ей имя, например "Connect"
3. Потом положите в эту папку файлы ca.crt, client01.crt, client01.key которые лежат в директории вашего сервера c:\program files\OpenVPN\easy-rsa\keys\
4. Создайте текстовый файл с именем "connect.ovpn" в папке "Connect" которая на рабочем столе...
5. Далее откройте этот файл в блокноте, и вставьте в него следующий текст:
client
tls-client
verb 3
dev tun
proto udp
route-delay 10
remote 111.111.111.111 1194
nobind
persist-key
persist-tun
ca ca.crt
cert client01.crt
key client01.key
keepalive 10 120
route-method exe
route-delay 2
Находим строку строку с remote 111.111.111.111 1194 , меняем IP адрес и порт, все остальное оставляем по умолчанию. Напомню что тут надо вводить статический IP белый IP адрес вашего сервера, на котором мы производили настройки сервера OpenVPN.
Сохраните файл.
6. После щелкните на этом файле правой кнопкой мыши, при этом выйдет контекстное меню "Start OVPN on this config file", шелкние эту надпись.
7. Все, теперь вы соединены с удаленным офисом !!!
8. Проверьте доступность удаленных хостов командой ping <ip адрес>, если все хорошо переходим к следующему шагу
9. Осталось проверить терминальное подключение к серверу, для этого запустите "Подключение к удаленному рабочему столу" которое находится в меню Пуск -> Все программы -> Стандартные -> Подключение к удаленному рабочему столу
10. В открывшемся окне, введите IP адрес сервера
11. Если все прошло хорошо, поздравляю!
Для Windows Vista, Windows 7 запускать клиента надо с админскими правами через батник:
"c:\program files\openvpn\bin\openvpn.exe" c:\vpn\client1.ovpn
pause
Если Вам надоело постоянно кликать по файлу "connect.ovpn", можно процесс подключения автоматизировать, для этого просто положите содержимое папки "Connect" в каталог "C:\Program Files (x86)\OpenVPN\config". После чего соединение по VPN будет происходить автоматически при загрузке службы "openvpn". Кстати в оснастке "Службы" не забудьте включить авто запуск сервиса "openvpn".
11. Включаем "роутинг" на сервере
Чтобы увидеть локальную сеть за сервером, надо включить маршрутизацию через наш openvpn. В Linux операционной системе это называется "Forwarding", который включается в файле /etc/sysctl.conf - параметр inet.ipv4.ip_forward = 1.
В Windows операционных системах аналогичное включается через реестр.
Запускаем редактор реестра regedit.exe на сервере где установлен OpenVPN, открываем ветку реестра:
HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\Tcpip\Parameters
Находим параметр и меняем значение:
IpEnableRouter типа REG_DWORD значение 1
Не забываем перезагрузить сервер, чтобы настройки вступили в силу!