Я давно и успешно использую Openvpn для объединения офисов, подключения удаленных сотрудников, да просто для своих личных нужд. Считаю его удобным и функциональным решением задачи объединения сетей. И всегда у меня вставал вопрос на тему, как бы упростить управление сертификатами. Раньше я заходил в консоль, генерировал сертификат, забирал его с сервера тем или иным способом, создавал файл конфига, передавал пользователю. В какой-то момент я решил, что мне это надоело и начал поиск более удобного решения этого вопроса.
Научиться настраивать MikroTik с нуля или систематизировать уже имеющиеся знания можно на углубленном онлайн-курcе по администрированию MikroTik. Автор курcа – сертифицированный тренер MikroTik Дмитрий Скоромнов. Более 40 лабораторных работ по которым дается обратная связь. В три раза больше информации, чем в MTCNA.
Содержание:
К моему удивлению, никаких готовых бесплатных решений на эту тему нет. Мне пришлось долго разбираться, прежде чем нашел более ли менее приемлемый вариант. В конечном итоге я остановился на такой связке - сервер freebsd 10, установленный webmin и модуль OpenVPN-admin. Модуль не особо популярный, сайт разработчика на непонятном языке, документации толком нет. Но я разобрался и настроил. В итоге получил возможность через web-интерфейс:
1. Редактировать настройки сервера.
2. Генерировать сертификаты пользователей.
3. Задавать пользовательские настройки.
4. Выгружать в едином архиве все необходимые сертификаты с уже готовым файлом настроек пользователя.
Приступим к настройке.
Установка openvpn
Итак, у нас имеется:
FreeBSD websrv.local 10.1-RELEASE FreeBSD 10.1-RELEASE #0 r274401
Перво-наперво обновляем порты:
# portsnap fetch update
И устанавливаем openvpn:
# cd /usr/ports/security/openvpn # make install clean
Добавляем openvpn в автозагрузку:
# echo 'openvpn_enable="YES"' >> /etc/rc.conf
Больше пока ничего не делаем.
Установка и настройка webmin
Ставим webmin:
# cd /usr/ports/sysutils/webmin # make install clean
Добавляем webmin в автозагрузку:
# echo 'webmin_enable="YES"' >> /etc/rc.conf
После установки запускаем настройку. Я сразу же меняю стандартный порт webmin на что-то экзотическое. Это пусть и не сильно, но повышает безопасность сервера.
# /usr/local/lib/webmin/setup.sh
Я все настройки оставляю по-умолчанию, только, как уже сказал, меняю порт, например на 11111 и в конце на вопрос:
Use SSL (y/n): y
отвечаю положительно.
После настройки, запускаем webmin:
# /usr/local/etc/rc.d/webmin start
Чтобы зайти в панель управления, вводим в браузере адрес:
https://ip-adress:11111/
Настройка Webmin OpenVPN admin
Теперь скачиваем модуль для webmin
http://www.openit.it/index.php/en/downloads?task=view.download&cid=27
На всякий случай скопирую себе, если ссылка умрет:
//serveradmin.ru/files/openvpn-2.6.wbm.gz
Добавим модуль в webmin. Идем в раздел Webmin -> Webmin Configuration -> Webmin Modules, выбираем
Получаем сообщение о том, что все в порядке:
Сам модуль располагается в разделе Servers -> OpenVPN + CA. Отправляемся туда. Первым делом вы увидите сообщение:
OpenVPN executable not found
The OpenVPN package can be automatically installed by Webmin. Click here to have it downloaded and installed using .Or reconfigure paths using Module Configuration.
Модуль не обнаружил установленный openvpn. Поможем ему это сделать. Создадим папку:
# mkdir /usr/local/etc/openvpn
Снова отправляемся в управление модулем. Нас встречает уже другое сообщение:
openssl.cnf batch file not found
The OpenSSL package can be automatically installed by Webmin. Click here to have it downloaded and installed using .Or reconfigure paths using Module Configuration.
Соглашаемся с предложением установить OpenSSL. Жмем Click here и ждем окончания установки.
Теперь все готово. Можно генерировать корневой сертификат сервера. Идем в Servers -> OpenVPN + CA, заполняем поля формы и жмем Save:
Мы сформировали корневые сертификаты сервера. Проверить их можно в разделе модуля Certification Authority List. Сверху в списке будет единственный наш сервер.
Теперь создадим сервер openvpn. Идем в раздел VPN List и нажимаем New Vpn server. Получаем ошибку:
No server keys configured
Все верно, прежде чем создать рабочий сервер, необходимо сделать для него серверный ключ. Снова идем в раздел Certification Authority List, в строке с нашим сервером, справа, в самом конце нажимаем на ссылку Keys list. Открывается интерфейс создания ключей. Создадим сразу ключ сервера и первого клиента.
Для сервера выбираем в выпадающем списке Server, остальные поля оставляем как есть. Если задать пароль, то при подключении клиента будет выводиться запрос на ввод пароля. Если это не нужно, то поле пароль оставляем пустым:
Создали два сертификата. Теперь идем создавать сервер. В разделе VPN List нажимаем New Vpn server. Тут нам открывается длинная форма для ввода настроек сервера. Я не буду подробно останавливаться на настройках. Это стандартные параметры файла конфигураций openvpn, в интернете много описаний на эту тему. Я приведу скриншоты своих настроек. Обращаю лишь внимание на пункт Encrypt packets with cipher algorithm (option cipher) Я там выбрал AES-128-CBC 128 bit default key (fixed) Это не случайный выбор. С другими значениями у меня были ошибки при подключении клиентов, сейчас я уже не помню какие, но методом проб и ошибок я пришел к этому значению. С ним все нормально работает.
Сохраняем настройки. В списке серверов появился наш сервер:
Дальше добавим клиента. Нажимаем в строке нашего сервера на ссылку Client list и жмем кнопку New Vpn client. Выбираем единственный созданный нами сертификат client1 и заполняем форму с настройками клиента. Там все можно оставить по-умолчанию, кроме одного параметра remote (Remote IP) - тут указываем внешний адрес нашего сервера. В разделе
Если нажать на ссылку Export, скачается архив со всеми необходимыми сертификатами и файлом конфигурации пользователя. Это очень удобно. Этот архив можно в готовом виде передавать клиенту. В нем будет все, что необходимо для подключения. Сохраним его для тестового подключения, к которому у нас все готово. Идем в начальную страницу модуля и жмем кнопку Start VPN. В ответ получаю ошибку:
Command Execution Error /usr/local/etc/rc.d/openvpn start.
Чтобы разобраться в чем проблема, смотрим лог messages. Можно через консоль, можно тут же в webmin. Видим там строки:
websrv root: /usr/local/etc/rc.d/openvpn: WARNING: /usr/local/etc/openvpn/openvpn.conf is not readable. websrv root: /usr/local/etc/rc.d/openvpn: WARNING: failed precmd routine for openvpn
Все ясно. Сервер не стартовал, потому что ищет настройки в файле /usr/local/etc/openvpn/openvpn.conf, а у нас его нет. Вместо него модуль openvpn admin создал файл websrv.local.conf Я не стал разбираться в чем тут дело. Это актуально, если у нас несколько серверов и нужно запускать отдельно каждый из них. А так как у нас он всего один и нам этого достаточно, то я решил просто явно указать через rc.conf файл конфигурации. Делается это так:
# echo 'openvpn_configfile="/usr/local/etc/openvpn/websrv.local.conf"' >> /etc/rc.conf
Пробуем снова запустить сервер через openvpn admin. Сервер успешно стартовал. Поднялся интерфейс tun0 с заданным адресом:
tun0: flags=8051<UP,POINTOPOINT,RUNNING,MULTICAST> metric 0 mtu 1500 options=80000<LINKSTATE> inet6 fe80::20c:29ff:fe19:9976%tun0 prefixlen 64 scopeid 0x3 inet 10.0.0.1 --> 10.0.0.2 netmask 0xffffffff nd6 options=21<PERFORMNUD,AUTO_LINKLOCAL> Opened by PID 66606
В каталоге /usr/local/etc/openvpn/websrv.local созданы 3 папки: bin, ssd, logs. В ssd располагается файл настроек нашего пользователя client1. Его можно править как непосредственно тут, так и через webmin. В папке с логами лежат логи и файл ipp.txt, в котором сохраняются ip адреса, выданные клиентам, с тем, чтобы в случае повторного подключения выдать тот же адрес.
Теперь берем архив с настройками клиента и подключаемся к серверу:
Все в порядке. Через webmin можно отзывать сертификаты и удалять клиентов. Функционал небольшой, но, в принципе, достаточный в повседневной жизни. Теперь не обязательно заходить в консоль и готовить сертификаты с настройками для клиента. Все это можно сделать через web сайт и сразу же отдать файлы пользователю.
Помогла статья? Подписывайся на telegram канал автора
Анонсы всех статей, плюс много другой полезной и интересной информации, которая не попадает на сайт.Дополнительные материалы по Freebsd
Научиться настраивать MikroTik с нуля или систематизировать уже имеющиеся знания можно на углубленном онлайн-курcе по администрированию MikroTik. Автор курcа – сертифицированный тренер MikroTik Дмитрий Скоромнов. Более 40 лабораторных работ по которым дается обратная связь. В три раза больше информации, чем в MTCNA.
Рекомендую полезные материалы по Freebsd: |
Описание установки Freebsd 11 на одиночный диск, либо на софтовый raid1, сделанный средствами zfs, которые поддерживает стандартный установщик.
Базовая настройка Freebsd, которую можно выполнить после установки сервера общего назначения. Представлены некоторые рекомендации по повышению удобства пользования и безопасности.
Описание и нюансы обновления системы Freebsd с помощью утилиты freebsd-update. Показано пошагово на конкретном примере обновления.
Настройка Freebsd шлюза для обеспечения выхода в интернет. Используется ipfw и ядерный нат, dnsmasq в качестве dhcp и dns сервера. Мониторинг сетевой активности с помощью iftop.
Подробная настройка на Freebsd прокси сервера squid + sams2 - панели управления для удобного администрирования.
Настройка максимально быстрого web сервера на базе Freebsd и nginx + php-fpm. Существенный прирост производительности по сравнению с классическим apache.
Настройка web сервера на Freebsd в связке с apache, nginx, php и mysql. Пошаговая установка и настройка каждого компонента.
|
а заполнение поля Additional Configurations в конфиге клиента статическим содержимым кто-нибудь додумался как сделать? а то уж больно лень копипастить каждый раз одно и тоже :)
Добрый день!
Первое - спасибо, очень подробная и понятная инструкция. Настроил строго как у Вас, все работает, но, ровно месяц.
Через месяц, нужно создать любого пользователя и удалить его, после чего работа восстанавливается без перезагрузок каких-либо.
Как починить?
Обновить бы статейку-то)))
А есть на примете хорошие интерфейсы для openvpn? Мне такие не известны. Есть всякие готовые продукты на базе openvpn с управлением через web, но это немного не то. Я имею ввиду pritunl и им подобные.
Я про актуализацию. Плагин уже давно другой версии, у меня по счастью заработало, а вот у коллег может и не взлететь.
Есть хороший продукт vpnface_lite
Не вдаваясь в подробности - на выходе стандартный ovenvpn, и небольшая обвязка к управлению ключами.
https://github.com/abrakadobr/vpnface_lite
Устанавливается одной командой. В веб-интерфейсе - ничего лишнего. Вот прям совсем. =)
Работает "из коробки".
Настройки серверов меняются просто и понятно, хотя и не через веб-интерфейс уже.
Спасибо, посмотрю.
На этапе, когда надо нажать на кнопку New VPN Server ничего не происходит
На этапе создания vpn-сервера при нажатии кнопки New Vpn server ничего не происходит, совсем. Сертификаты все создал.
Да, прошу прощения - Ubuntu Linux 16.04.3 LTS - голый сервер с установленной Webmin и OpenVPNadmin - все последней версии, все пакеты обновлены.
Попробуйте поменять тему Webmin.
Спасибо, помогло!
Там ошибка в коде, похоже. Описал тут: http://forum.ubuntu.ru/index.php?topic=297252
Спасибо!
Разработчики модуля как-то среагировали?
Пока никак. Пока настраивал, сделал еще несколько правок в коде. Например, некорректно настраивался параметр topology (должен был список выбора: subnet, net30, p2p, но почему-то стояло значение 100, которое не сохранялось к тому же). В общем, открытый код рулит :)
Жаль. В принципе да, всё отлично работает. Но была бы подобная программка для создания ключей и настроек серва и клинтов, было бы удобно.
Под Windows подобного нет?
Такого точно нет, но в целом openvpn сервер под windows нормально работает. Можно устанавливать и пользоваться.
доброго времени суток. парни подскажите как в freebsd запустить 2 сервера openvpn? в инете сколько не искал ничего не получается, стартует только 1 и всё (тот что указан в /etc/rc.conf). везде пишут про файл /etc/default/openvpn (там прописать кое что) но нет такого файла.
Я так делал много раз, проблем особых нет. Нужно создать 2 разных конфигурационных файла, создать 2 разных скрипта в /usr/local/etc/rc.d, отредактировать в них все имена и пути под каждый конкретный конфигурационный файл. В rc.conf так же добавить 2 разных названия openvpn, которые указаны в конфиге и в стартовых скриптах. Ну и все. То есть ничего особенного делать не надо. В /etc/defaults я ничего не трогал и не добавлял.
спасибо! то что нужно ). дай Бог здоровья
Добрый вечер!
Продолжаю тему по запуску сервера через webmin+openvpn CA
Zerox, Ваш совет помог команда systemctl start openvpn@server действительно работает(в ssh проверял - успешно и подлючиться смогу тоже), но webmin отказывается нормально команду составлять.
Как я писал по умолчанию у меня в строке запуска вот такое systemctl start openvpn.service {vpn_name} где {vpn_name} имя созданого впн в разделе VPN List. Я изменил на предложеное systemctl start openvpn@, но имя конфигурации вебмин прикрепляет через пробел, то есть не systemctl start openvpn@server выполняет, а systemctl start openvpn@ server.
Где server это имя конфигурационного файла server.conf.
Что в этом случае делать, конечно можно ручками запустить через ssh и так же остановить можно, но мне бы хотелось чтобы в вебмине работало всё как часики.
Плагин для webmin был написан давно. С тех пор на всех современных дистрибутивах systemctl. Я подозреваю, что без правки конфигов, этот модуль не будет нормально работать.
Последний плаги, если нужно кому: http://www.webmin.com/cgi-bin/search_third.cgi?search=openvpn
Здравствуйте! Пытался настроить несколько раз по вашей инструкции на debian 8.5. Ничего не выходит. Не стартует сервер пишет что не найден файл или директория. Команду вызывает systemctl start openvpn.service {vpn_name}, где {vpn_name} имя созданого впн в разделе VPN List. Пытался эту команду вызвать в ssh в ответ что была попытка запустить службу {vpn_name}.service, но не удачно так как нет файла или директории с этим именем.
Как исправить?
Тут не исправить надо, а правильно написать команду запуска. Я точно не помню, но с openvpn постоянно такая ерунда бывает. По-моему, команда на запуск должна быть вида:
systemctl start openvpn@server
Где server это имя конфигурационного файла server.conf.
Кстати, на дебиане я как-то видел такой же модуль, как у меня здесь описан. Но настраивал его не я, просто просили разобраться, как работает.
Спасибо. Буду пробовать! Много информации нашёл именно по вашей команде. Вероятнее всего так оно и есть или на подобие того. Как разберусь опишу результаты. Вдруг кому-то пригодится!
Добрый день!
У вас есть готовый vmdk или vhdx?
Буду очень благодарен если скинете.
Добрый день. Образа нет.