OpenVPN: создание сервера на Windows
На момент написания статьи доступная версия 2.3.2. Качаем отсюда Windows installer 32-х или 64-х битную версию под разрядность вашей операционной системы.
Установка.
При установке обязательно отметьте все пункты птичками, на предложение установить драйвер отвечаем утвердительно. В системе появится новый виртуальный сетевой адаптер.
Создание сертификатов и ключей.
Когда-то этот пункт меня останавливал, мол ну их эти ключи, пойду поищу что попроще. Но, увы, ничего лучшего не нашел. Итак, переходим в C:\Program files\OpenVPN\easy-rsa, запускаем init-config.bat, появится vars.bat, открываем его в блокноте. Нас интересуют строчки в самом низу, их нужно заполнить как угодно. Например:
set KEY_COUNTRY=RU
set KEY_PROVINCE=Baldur
set KEY_CITY=Piter
set KEY_ORG=OpenVPN
set KEY_EMAIL=my@sobaka.ru
set KEY_CN=server
set KEY_NAME=server
set KEY_OU=ouou
Там где написано server не трогаем. Сохранили.
Теперь открываем openssl-1.0.0.cnf и ищем строчку default_days 365, ставим 3650. Это продлит жизнь наших сертификатов на 10 лет. Сохраняем. Далее открываем командную строку в пуск-стандартные-командная строка (на Windows Vista/7/8 от имени администратора), пишем последовательно:
cd C:\OpenVPN\easy-rsa
vars
clean-all
В ответ должно написать два раза «Скопировано файлов: 1». Значит, все окей. В этом же окне набираем:
build-dh
Создаст ключ Диффи-Хельмана.
build-ca
Создаст основной сертификат.
Будут заданы вопросы, просто нажимаем Enter пока не увидите путь C:\Program files\OpenVPN\easy-rsa. Далее набираем:
build-key-server server
На вопросы также жмем Enter, только не торопитесь! В конце будут два вопроса: «Sign the certificate?» и «1 out of 1 certificate requests certified, commit?», на оба вопроса отвечаем Y. Теперь создадим сертификат клиента:
build-key client
Тут нужно быть вниметельней, при вопросе Common Name (eg, your name or your server’s hostname) нужно ввести client. В конце также два раза Y. Для каждого клиента нужно создавать новый сертификат, только с другим именем, например, build-key client1 и также указывать его в common name. Если все сделали правильно, можете выдохнуть! Самое сложное позади. В папке C:\Program Files\OpenVPN\easy-rsa\keys забираем: ca.crt, dh1024.pem, server.crt, server.key и кладем их в C:\Program Files\OpenVPN\config.
Создаем конфиги.
Переходим в C:\Program Files\OpenVPN\config, создаем текстовой документ, вставляем:
# Поднимаем L3-туннель
dev tun
# Протокол
proto udp
# Порт который слушает впн
port 12345
# Ключи и сертификаты
ca ca.crt
cert server.crt
key server.key
dh dh1024.pem
# Грубо говоря экономим адреса
topology subnet
# Пул адресов
server 10.8.0.0 255.255.255.0
# Метод шифрования
cipher AES-128-CBC
# Сжатие
comp-lzo
# Немного улучшит пинг
mssfix
# Время жизни клиентов, если не откликнулся — отключает
keepalive 10 120
# Уровень отладки
verb 3
Сохраняем файл как server.ovpn. Это наш конфиг сервера. Теперь пробуем запустить сервер. На рабочем столе будет ярлык OpenVPN Gui. После запуска в трее появится красный значок. Кликаем по нему дважды, если загорелся зеленым, значит, все хорошо, если нет, тогда смотрим лог в папке log.
Теперь конфиг клиента:
client
dev tun
proto udp
# Адрес и порт сервера
remote адрес 12345
# Ключи должны лежать в папке с конфигом
ca ca.crt
cert client.crt
key client.key
cipher AES-128-CBC
nobind
comp-lzo
persist-key
persist-tun
verb 3
Сохраняем как client.ovpn. Создаем любую папку и кладем туда конфиг client.ovpn и сертификаты ca.crt, client.crt, client.key которые лежат в C:\Program files\OpenVPN\easy-rsa. Сам клиент для Windows качаем здесь. На клиентской машине устанавливаем, переносим папку с конфигом и сертификатом и запускаем client.ovpn. Если подключились, пробуем в командной строке набрать ping 10.8.0.1. Пакеты пошли? Поздравляю! Сервер готов! Теперь идем в панель управления-администрирование-службы, ищем там OpenVPN, дважды щелкаем и выставляем автоматически. Теперь сервер будет сам стартовать после перезагрузки.
Дорабатываем конфиг или каждому свое.
Теперь я расскажу как раздавать интернет и другие мелочи связанные с настройкой. Начнем с мелочей. Все манипуляции будем проводить с конфигом сервера.
Если хотите, чтобы клиенты «видели» друг друга т.е. могли обмениваться информацией, тогда в конфиг впишите
client-to-client.
Если нужно, чтобы клиентам выдавались статические адреса, тогда в папке config создайте файл ip.txt и впишите в конфиг
ifconfig-pool-persist ip.txt
Неохота создавать каждому сертификаты? Тогда пишем duplicate-cn, но учтите, с этой опцией не работает ifconfig-pool-persist.
Теперь о конфиге клиента. Можно не передавать файлы сертификатов, а вписать сразу в конфиг, только делать это лучше не с блокнота, а с AkelPad’а или Notepad++ например. Открываем ca.crt и выделяем от ——BEGIN CERTIFICATE—— до ——END CERTIFICATE——. В конфиге будет выглядеть так:
——BEGIN CERTIFICATE——
сертификат
——END CERTIFICATE——
——BEGIN CERTIFICATE——
сертификат
——END CERTIFICATE——
——BEGIN PRIVATE KEY——
ключ
——END PRIVATE KEY——
Раздаем интернет
Для этого в конфиг сервера вписываем:
push «redirect-gateway def1»
push «dhcp-option DNS 8.8.8.8»
push «dhcp-option DNS 8.8.4.4»
DNS-адреса подставляем те, что даны в настройках. Посмотреть можно зайдя в панель управления-сетевые подключения, дважды кликнув на адаптере который смотрит в интернет. Для Win7 Панель управления-Сеть и Интернет-Центр управления сетями и общим доступом-изменение параметров адаптера. Далее, заходим в свойства этого же адаптера, вкладка доступ, ставим птичку напротив «Разрешить другим пользователям сети. » и в выпадающем списке, если есть, выбираем виртуальный адаптер vpn. Затем заходим в свойства адаптера vpn, свойства ipv4 и выставляем получение ip и dns автоматически. Спасибо за внимание!
Установка и настройка OpenVPN на Centos для раздачи интернета
Вот и настало время, когда терпения уже не хватает… Сижу в офисе, получаю инет через прокси. Админы режут всё что можно и неможно. Всё ближе и ближе я был к тому, что бы поднять свою VPN до сервера, который арендую в Питере и получать инет именно с него.
До этого я поднимал http туннель с помощью putty. Но этого было мало, т.к. не все программы могут работать через прокси. А ставить различные Proxifier и FreeCap мне не интересно. Слишком много хлама.
Цель поставлена. Начинаем анализ. Какую же технологию выбрать для поднятия VPN от моего офисного компа, который находится «за проксёй» до виртуального сервера с CentOS…? Выбор не велик. Это OpenVPN. Он умеет работать через http proxy.
Робота начинается с установки OpenVPN на сервер под управлением CentOS (в моем случае это 5-й цент). Т.к. в стандартном репозитарии пакет openvpn отсутствует, то необходимо сначала подключить нужные репозитарии. Теперь можно приступить к установке:
[admin@anart.ru /]# yum install openvpn
После установки необходимо создать главный конфигурационный файл openvpn сервера server.conf и положить файл в /etc/openvpn:
[admin@anart.ru /]# touch /etc/openvpn/server.conf
команда touch создаст пустой файл server.conf. А если файл существовал ранее, то ничего не произойдет.
Так же создадим файл, в который openvpn будет записывать выдаваемые клиентам ip адреса
[admin@anart.ru /]# touch /etc/openvpn/ipp.txt
А для логов нужно создать каталог:
[admin@anart.ru /]# mkdir /var/log/openvpn
Теперь приступим к правке файла /etc/openvpn/server.conf . Его можно править любым встроенным редактором, например vi , nano , mcedit или же через SFTP на своей машине любимым редактором. Ниже представляю мой конфигурационный файл с реально работающего сервера, который мне дает интернет через VPN:
# Какой интерфейс слушать? local X.X.X.X #(ip адрес интерфейса, который смотрит в интернет. Это скорее всего eth0) # Какой порт слушать? port 443 #(Наша «прокся» пускает по 80-му и 443-му портам.) # На каком протоколе будем работать? proto tcp-server # В каком режиме работать? Мостом (tap) или маршрутизация (tun) #dev tun0 dev tap0 # (на tun я так и не смог поднять сеть) # Разрешить аутентификацию по паролю #auth-user-pass # Пути к корневому сертефикату, сертификату и закрытому ключу. ca /etc/openvpn/keys/ca.crt cert /etc/openvpn/keys/server.crt key /etc/openvpn/keys/server.key # Параметры Диффи-Хелмана dh /etc/openvpn/keys/dh1024.pem # Отключить проверку пользовательских сертификатов # client-cert-not-required # username-as-common-name # Настройка режима сервера и ИП адресов для выдачи клиентам. Сервер возьмет себе 10.8.0.1 #server 10.8.0.0 255.255.255.0 mode server ifconfig 10.8.0.1 255.255.255.0 ifconfig-pool 10.8.0.2 10.8.0.10 daemon # Разрешаем использовать TLS tls-server # Разрешить клиентам доступ VPN клиентам между друг другом? #client-to-client # Сопоставления клиент виртуальный IP-адрес # хранятся в этом файле. Если OpenVPN упадет или # будет перезапущен, повторно подключающимся клиентам могут быть назначены # из пула такие же виртуальные IP-адреса, которые были назначены им в прошлый раз. ifconfig-pool-persist /etc/openvpn/ipp.txt # Передача клиенту параметров маршрутизации, где X.X.X.X - IP адрес вашего eth0, что смотрит в интернет push "route X.X.X.X 255.255.255.0" # Передаем клиенту настройку шлюза push "route-gateway 10.8.0.1" # Некоторые Windows-специфичные сетевые настройки # могут быть переданы клиентам, такие как адреса DNS- # или WINS-серверов. ПРЕДОСТЕРЕЖЕНИЕ: # http://openvpn.net/faq.html#dhcpcaveats push "dhcp-option DNS 8.8.8.8" # Я взял публичные Гугловские ДНСы push "dhcp-option DNS 8.8.4.4" # Говорим клиентам поменять шлюз по умолчанию на VPN интерфейс. push "redirect-gateway" # Проверка соединения keepalive 10 120 # Для большей безопасности и защиты от ДОС и флуда выдаем клиентам ta.key. На сервере 0, на клиентах 1. tls-auth /usr/share/openvpn/keys/ta.key 0 # Допустимые алгоритмы шифра. Надо прописывать так же и на клиенте. cipher DES-CBC3-SHA cipher BF-CBC cipher AES-256-CBC #cipher ECDHE-RSA-AES256 #cipher ECDHE-ECDSA-AES256 #cipher DHE-RSA-AES256 #cipher DHE-DSS-AES256-SHSHA # Включить сжатие. Если да, то надо прописывать и на клиенте. comp-lzo # Максимальное количество одновременно подключенных клиентов max-clients 5 # От какого пользователя и группы работать серверу? user openvpn group openvpn # persist-опции скажут OpenVPN при перезагрузке воздержаться от доступа к определенным ресурсам, # т.к. они могут быть недоступны из-за понижения привелегий. persist-key persist-tun # Файл состояния текущих соединений. Перезаписывается раз в минуту. status /var/log/openvpn-status.log # Куда писать логи? log-append /var/log/openvpn.log # Уровень детализации лога verb 3 # Не записывать больше повторяющихся сообщений сразу mute 20
На этом конфигурирование закончено. Теперь приступаем к генерации ключей и сертефикатов безопасности. Генерируем ключи и сертификаты для сервера и для каждого пользователя. Скрипты для генерации находятся в /usr/share/openvpn/easy-rsa/2.0 . Перейдем туда:
[admin@anart.ru /]# cd /usr/share/openvpn/easy-rsa/2.0
Если каталог не существует, устанавливаем easy-rsa
[admin@anart.ru /]# yum install easy-rsa