Консультация № 179874
07.09.2010, 23:28
42.80 руб.
0 5 0
Добрый день ув. эксперты, такая история - у меня установлен OpenVPN Сервер на виртуальном Ubuntu Server - к нему подключается 50 внешних пользователей, все работает (настраивал по подобной инструкции), но хочу переустановить на реальную машину так как скорость и стабильность подключения к ситрикс-серверу поверх шифрованного канала частенько подводит (50-70% подключений срабатывает только со второго раза), поэтому возникло пару вопросов:

1 - смогу ли я перенести настройки (сертификаты) с прежнего сервера на новый дабы не генерировать новые сертификаты для клиентов?
2 - вообще существулет ли способ администрирования соединений опенвпн на сервере? К примеру просмотр текущих соединений типа netstat - с каокго айпи, когда подключился и как надолго - все онлайн а не только через логи, разъединять клиентов, регулировать какие либо параметры? Я не нашел, искал но не нашел. Хотя бы консольный вариант манагера, в идеале Гай конечно. Знаю что у опенвпн есть менеджмент-порт - но приложений для работы через него тоже не знаю (OpenVPN Control - не подключался). На сервере стоит webmin - но у него версия для опервпн от 2007года и то не своя и работает вроде не ахти (в свое время пробовал - точто натсроил сам руками в этом модуле не отображалось). В итоге получаеся покаработаю вслепую - чтото случится по части опенвпн даже не знаю как посомтреть чтобы разобраться.
3 - сейчас у меня авторизация настроена по сертификатам - клиент у кого они настроены автоматом авторизуется, а можно авторизацию сделать еще плюс с помощью пароля? Т.е. если кому то попадут мои ключи - он с любого пк с может подрубиться ко мне, а было бы отлично если б при авторизации (клиент Виндовс OpenVPN 2.1.2) запрашивал еще и пароль, в идеале на какие то конкретные сертификаты или просто по паролю совместно с обычной авторизацией.

Вот такие вот вопросы - прошу если что дать ссылки на материалы где можно об этом почитать.
Заранее Благодарю!

Обсуждение

Неизвестный
08.09.2010, 16:01
общий
1 - Проще всего скопировать содержимое диска виртуальной машины на жесткий диск реальной машины.
Делается примерно так:
1. Если виртуальная машина ставилась на отдельный физический диск, то просто удалить файл /etc/udev/rules.d/70-persistent-net.rules , чтобы на новом железе правильно сконфигурировалась сетевая карта и сервер был доступен по старому ip и переставить диск в новый выделенный сервер.
2. Если использовался preallocated file для хранения образа жесткого диска виртуальной машины и его размер меньше объема жесткого диска выделенного сервера, то достаточно скопировать его командой dd на новый жесткий диск и поставить его в выделенный сервер (и естественно удалить файл /etc/udev/rules.d/70-persistent-net.rules).
3. Если использовался growing file (или как он там правильно называется) или файл образа был разбит на кусочки и его размер меньше объема жесткого диска выделенного сервера, то нужно загрузить виртуальную машину с live носителя (cd/dvd/сеть/флешка/другой образ диска) или подключить ее диск к другой виртуальной машине и аналогично скопировать командой dd на подключенный к виртуальной машине физический диск нового сервера, либо командой nc по сети, предварительно загрузив новый сервер с live носителя.
4. Если жесткий диск физического сервера меньше по объему, чем виртуальный диск виртуального сервера, то все равно можно перенести систему, просто скопировав все файлы через dump/retore или tar (или другим способом, предохраняющим права, даты и ссылки), установить загрузчик, отредактировать/перестроить конфиг загрузчика и отредактировать /etc/fstab.
Перед переносом виртуальную машину нужно естественно остановить. ПРИ РАБОТЕ С КОМАНДОЙ dd БУДЬТЕ ПРЕДЕЛЬНО ВНИМАТЕЛЬНЫ! По возможности запускайте ее из под пользователя, предварительно дав ему право только на чтение исходного диска и чтение/запись целевого. Тогда уменьшится вероятность стереть исходный диск.
Удаляйте после копирования /etc/udev/rules.d/70-persistent-net.rules иначе сервер скорее всего не будет доступен по сети.
2 - да. Читайте man openvpn
Код:
--management IP port [pw-file]
Enable a TCP server on IP:port to handle daemon management functions. pw-file, if specified, is a password file (password on first line) or "stdin" to prompt from standard input. The password provided will set the password which TCP clients will need to provide in order to access management functions.

The management interface can also listen on a unix domain socket, for those platforms that support it. To use a unix domain socket, specify the unix socket pathname in place of IP and set port to 'unix'. While the default behavior is to create a unix domain socket that may be connected to by any process, the --management-client-user and --management-client-group directives can be used to restrict access.

The management interface provides a special mode where the TCP management link can operate over the tunnel itself. To enable this mode, set IP = "tunnel". Tunnel mode will cause the management interface to listen for a TCP connection on the local VPN address of the TUN/TAP interface.

While the management port is designed for programmatic control of OpenVPN by other applications, it is possible to telnet to the port, using a telnet client in "raw" mode. Once connected, type "help" for a list of commands.

For detailed documentation on the management interface, see the management-notes.txt file in the management folder of the OpenVPN source distribution.

It is strongly recommended that IP be set to 127.0.0.1 (localhost) to restrict accessibility of the management server to local clients.

То есть можно подключиться telnet'ом и набрать help, чтобы увидеть список команд. Подробности в файле management-notes.txt. GUI клиент для управления не подскажу, но если если умеете программировать, то сможете его сделать для себя в наиболее удобном виде.
Или если по проще, то редактировать конфиг и посылать SIGHUP/ посылать SIGUSR2 и смотреть состояние в логе.
3 - Не уверен на 100%, но можно попробовать дополнительно к сертификатам указать и опцию --secret.
Неизвестный
08.09.2010, 16:03
общий
skatet:
Немного оффтопа.
Проблема стабильности подключений может быть связана с размером MTU туннеля. Стандартно в сетях Ethernet mtu равен 1500. Минус заголовки - получаем полезный размер данных 1472 байта. В случае VPN и прочих соединений использующих GRE инкапсуляцию размер полезных данных уменьшается еще на 4 байта, поэтому не все пакеты проходят.
Проверьте утилитой ping, какой максимальный размера пакета у вас проходит в туннеле. и попробуйте в настройках OpenVPN уменьшить размер. Для оптимальной работы размер mtu туннеля рекомендую поставить 1476 и меньше.
Может и не придется устраивать танцы с бубном по переносу на реальный сервер...
Неизвестный
08.09.2010, 16:18
общий
MrLexus:
Танец там будет только если дефолтное ядро убунту на реальном сервере не грузится (модуль контроллера жесткого диска не добавлен в initrd - перед переносом добавить) или не поддерживает сетевую карту (перед переносом собрать и установить модуль на виртуалке). А так все, как я написал, элементарно: не ошибиться с устройствами при копировании при вводе команды dd и не забыть удалить /etc/udev/rules.d/70-persistent-net.rules , чтобы сохранился настроенный интерфейс eth0.
Неизвестный
08.09.2010, 16:36
общий
vladisslav:
Я не совсем про этот бубен :)
А если после удачного переноса проблема со стабильностью подключения не решиться? Опять доставать бубен, только большего размера? А так я дал направление для размышлений...
Неизвестный
08.09.2010, 16:44
общий
По поводу стабильности стоит посмотреть опции --mssfix и --fragment и еще --replay-window попробовать увеличить относительно дефолтного 64. Еще можно попробовать tcp транспорт, правда несколько увеличатся задержки и нагрузка на сервер, но с 50 клиентами это не актуально.
Форма ответа