virtual hub name что это
Настройка VPN-сервера SoftEtherVPN под Linux
Как уже писалось на хабре, буквально в начале января сего года под лицензию GPL2 перешел очень интересный и, в своем роде, уникальный проект — SoftEther VPN. Написали его студенты японского University of Tsukuba. Данный продукт позиционирует себя как VPN-сервер с поддержкой огромного количества туннельных протоколов: L2TP, L2TP/IPsec, L2TPv3/IPsec, MS-SSTP, EtherIP/IPsec, OpenVPN, SSL-VPN (собственной разработки), L2VPN, а также такие хитрые штуки как туннелирование через ICMP и DNS. Поддерживает туннелирование как на третьем, так и на втором уровне, умеет VLAN и IPv6. Работает практически на всех известных платформах (даже ARM и MIPS) и к тому же не требует рутовых прав. С полной спецификацией можно ознакомиться вот тут. Если честно, когда я увидел список возможностей этой проги — я просто не поверил своим глазам и подумал: «Если ЭТО работает, то я ДОЛЖЕН это потестить!»
Эта статья будет описывать процесс установки и настройки SoftEther VPN Server под Линукс. В следующей статье постараюсь нарисовать красивые сравнительные графики производительности.
Данная софтина обладает на редкость приятным интерфейсом под Винду, однако под Линуксом вся настройка осуществляется через CLI. Мануал безусловно хорош, но мне например показался чересчур подробным, и к тому же с перекосом в сторону графического интерфейса и излишне красочных японских картинок. Поэтому решил выложить основные команды CLI для тех, кому лень лопатить много английских букв.
Для начала — установим это чудо. У меня под рукой был VPS с 64-битным Дебиан 7 на борту, поэтому выбор был очевиден. Сразу предупреждаю: устанавливать нужно только с GitHub’a (на текущий момент версия релиза 4.04 build 9412)! На оффициальном сайте можно скачать исходники под разные платформы, однако засада в том, что makefile’ы там сгенерированы каким-то садистки-западлистским способом, и на выходе вы получаете всего два файла — сам бинарник сервера и его CLI-шка. Никакого копирования в /usr/bin/ и прочих цивилизованных вещей там не прописано. В отличие от этого, makefile на Гитхабе ведет себя гораздо более дружелюбно (хотя инит-скрипт все равно не делает, зараза).
Прежде чем поставить прогу, рекомендую сходить сюда и узнать, что ей нужно для установки. Мне, например, понадобилось поставить ряд библиотек (потом их можно снести):
# apt-get install libreadline-dev libssl-dev libncurses5-dev zlib1g-dev
— Installation completed successfully.
Execute ‘vpnserver start’ to run the SoftEther VPN Server background service.
Execute ‘vpnbridge start’ to run the SoftEther VPN Bridge background service.
Execute ‘vpnclient start’ to run the SoftEther VPN Client background service.
Execute ‘vpncmd’ to run SoftEther VPN Command-Line Utility to configure VPN Server, VPN Bridge or VPN Client.
———————————————————————
Отсюда можно логически понять, как это волшебство запускается и останавливается. Можно оставить и так, а можно взять с офф. сайта простенький init-скрипт, который будет более привычным нам способом делать то же самое.
Итак, VPN-сервер установлен и его можно запустить:
# vpnserver start
SoftEther VPN Server Service Started.
Приступаем к конфигурированию. Вообще, мануал предлагает нам два способа это сделать: через его собственную командную строку vpncmd или через конфигурационный файл vpn_server.config, причем огромное предпочтение отдается первому способу. Операции с конфигурационным файлом производитель считает рискованным занятием и всячески пытается нас от этого отговорить. Дело в том, что сервер непрерывно читает этот файл и любые изменения в нем мгновенно отражаются на работе сервера. Единственный случай, когда настройка из конфиг-файла оправдана — это когда VPN-сервер выключен. Не знаю, зачем так сделано, но автору, в любом случае, виднее. Да и вообще, у проги хорошая CLI, после работы с которой о существовании конфиг-файла просто забываешь за ненадобностью.
Кстати, сразу после установки обратил внимание, что прога зачем-то стукнулась по адресу 130.158.6.77:80. Оказалось в этом нет ничего подозрительного, просто таким образом сервер посылает keepalive-пакеты на свой сайт (keepalive.softether.org:80), чтобы не рвались по таймауту разные PPP-сессии. Сразу после установки я эту функцию отключил командой KeepDisable.
Итак, сразу после запуска VPN-сервер уже работает и принимает подключения на порты TCP 443 (SSL VPN), 992, 1194 (OpenVPN) и 5555 (номера портов можно поменять командами ListenerCreate и ListenerDelete), однако чтобы начать использовать его необходимо сделать ряд простых настроек. Заходим в CLI командой vpncmd:
By using vpncmd program, the following can be achieved.
1. Management of VPN Server or VPN Bridge
2. Management of VPN Client
3. Use of VPN Tools (certificate creation and Network Traffic Speed Test Tool)
Выбор 1 перенесет нас в режим редактирования сервера, выбор 2 — в режим редактирования свойств клиента, а выбор 3 — режим тестирования и создания сертификатов сервера. Выбираем 1, сервер предложит ввести айпи адрес сервера, к которому мы хотим подключиться (Hostname of IP Address of Destination:), просто нажимаем Enter, т.к. собираемся редактировать локальный сервер. В третий и последний раз прога спросит нас имя виртуального хаба (Specify Virtual Hub Name:), с которым мы будем работать. Мы пока что не собираемся работать с виртуальными хабами, поэтому снова нажимаем Enter и попадаем в командную строку самого сервера.
Необходимо пояснить, что такое виртуальные хабы в терминологии разработчика. Виртуальный хаб — это некая довольно самостоятельная инстанция VPN-сервера, обладающая собственным набором настроек виртуальных интерфейсов, политик безопасности и протоколов VPN. Всего можно создать до 4096 виртуальных хабов, при этом они никак не будут пересекаться друг с другом ни на 2-ом, ни на 3-ем уровне — то есть будут полностью изолированы друг от друга. Каждый виртуальный хаб работает со своим набором пользователей и ничего не знает про пользователей другого виртуального хаба, хоть они и находятся на одном физическом сервере. С другой стороны, если мы захотим, мы можем настроить их взаимодействие друг с другом, в терминологии автора это называется Virtual bridge/router. Таким образом, виртуальный хаб — это и есть то, с чем мы будем работать после указания определенных глобальных настроек сервера.
После входа в vpncmd перед нами возникнет приглашение:
Connection has been established with VPN Server «localhost» (port 443).
You have administrator privileges for the entire VPN Server.
Можно задать админский пароль для нового хаба, тогда можно будет делегировать администрирование этого хаба другому человеку. А можно для простоты нажать Enter и не делать этого (для этого в дальнейшем есть команда SetHubPassword). После создания хаба мы должны перейти в режим администрирования этого хаба командой Hub vpn. Посмотреть статус хаба можно командой StatusGet. Не буду приводить здесь вывод этой команды, т.к. он длинный и довольно понятный. Хаб можно выключить командой Offline и вернуть обратно командой Online.
Мне понравилась команда SetEnumDeny. Дело в том, что когда в VPN-клиенте вводишь адрес VPN-сервера, он сразу же сдает тебе имена всех виртуальных хабов, зарегенных на сервере, как на картинке. Эта команда запрещает выводить имя данного хаба в списке. Типа небольшой, но бонус к безопасности.
Ладно, займемся более интересными вещами. Создаем пользователя командой UserCreate и задаем ему пароль при помощи UserPasswordSet. Команды очень простые, достаточно минимального знания английского, чтобы понять диалоговые сообщения сервера. На данном этапе для простоты не будем возиться с сертификатами, а доверимся самоподписанному сертификату сервера, который он сгенерил на этапе установки.
Вот в принципе и все, минимальная установка завершена и мы можем прицепиться к нашему серверу, указав его IP-адрес и любой из портов списка ListenerList. Автор рекомендует порт 5555, поскольку данный порт не требует рутовых прав в системе. Окно VPN клиента я уже приводил выше, там все интуитивно понятно и очень красиво. Аутентификация проходит и устанавливается VPN-туннель. Однако, в таком виде пользы от туннеля мало, т.к. он позволяет обращаться только к самому серверу и больше никуда.
Допустим, наша задача более широка, и мы хотим использовать VPN-сервер для доступа в корпоративную сеть. Для этого нам понадобиться настроить NAT. Делается это довольно просто командой SecureNATEnable. Автоматом вместе с NAT включается и DHCP.
Вообще, SecureNAT — это довольно интересная технология от авторов SoftEtherVPN. Как мы знаем, трансляция сетевых адресов в *NIX-системах осуществляется в ядре, соответственно для настройки NAT нужно иметь права суперпользователя. Создатели SoftEtherVPN решили, что это слишком излишне и написали свой собственный кастомный стек TCP/IP для того, чтобы фильтрация и натирование осуществлялось в userspace. Прикольная задумка, не знаю стоило ли оно того, но работает — это факт!
Сменить адрес интерфейса SecureNAT’a можно командой SecureNatHostSet (по умолчанию 192.168.30.1/24), а диапазон выдаваемых адресов и другие опции DHCP (например, основной шлюз и DNS-сервера) — командой DhcpSet. Не правда ли, дружелюбная CLI? Например если ввести «secure?» и нажать Enter, то выведется список возможных автодополнений:
По умолчанию никакая фильтрация пакетов не применяется, т.е. впн-клиенты могут неограниченно ходить в корпоративную подсеть и пользоваться корпоративным Интернетом, если таковой имеется. При желании можно добавить правила файрволла командой AccessAdd. В качестве критериев файрволла можно указать имя пользователя, MAC и IP адреса источника и назначения, порты, протоколы и флаги TCP. И самое главное, что это работает, я проверял! Учтите еще, что правила фильтрации разных виртуальных хабов никак не влияют друг на друга, что позволяет гибко управлять доступом к корпоративной среде.
В качестве приятного бонуса доступен Dynamic DNS от softether.net. Свой VPN-сервер можно зарегить в DDNS командой DynamicDnsSetHostname, после чего нужно ввести желаемое имя домена 3-го уровня. Получится что-то вроде myvpn.softether.net. Согласитесь, мелочь, а приятно и притом совершенно бесплатно!
Дело в том, что тот же OpenVPN работает не через IPsec, но наследует политику учетных записей из IPsec. Поэтому при попытке коннекта по протоколу OpenVPN будет запрошено имя пользователя и пароль. Имя пользователя обязательно нужно вводить в формате «пользователь@хаб», но если мы указываем, какой хаб использовать по умолчанию, то «@хаб» можно опустить.
Сгенерировать конфиг-файл для OpenVPN можно командой OpenVpnMakeConfig, после чего указать местоположение, куда сохранить сгенереный файл. Этот файл можно тут же скормить OpenVPN клиенту и коннект пойдет. Файл предоставляется сразу в двух вариантах — Layer2VPN и Layer3VPN, то бишь VPN-сервер как свич, и VPN-сервер как роутер. И то, и другое прекрасно работает. Удобно!
Настройка L2TP/IPsec оказалась вообще тривиальной: на сервере после команды IPsecEnable ничего менять уже не надо, а в настройках например виндового встроенного VPN-клиента нужно указать протокол «L2TP IPsec VPN», в дополнительных параметрах указать предварительный ключ (PSK), который мы уже устанавливали, ну и, само собой, ввести учетные данные в формате, о котором я упоминал выше.
Аналогичным образом все настраивается на Андроиде. Было проверено на 4.2.1, все работает с использованием только стандартных инструментов.
Вывод: SoftEtherVPN — очень мощное и, самое главное, удобное средство построения VPN-туннелей. Конечно, я протестировал далеко не все возможности, но в большинстве случаев хватает и тех, что я написал. В ближайшем будущем постараюсь выложить сравнительные тесты производительности, а также тесты таких смешных штук как VPN over ICMP и DNS. С протоколами SSL VPN и MS SSTP пока связываться не хочу, т.к. неохота возиться с сертификатами, к тому же надо еще посмотреть на такие фичи проги, как Load Balancing aka кластеризация, отказоустойчивость, авторизация из RADIUS и AD и Layer2 VPN, включая VLAN-транкинг!
Так что, мне кажется, софтина стоит, как минимум, того, чтобы приглядеться к ней повнимательнее. Производитель позиционирует свой продукт, как во всем превосходящий OpenVPN, даже обещает throughput под гигабит. В общем, надо тестить! На данном этапе мне эта штукенция очень даже нравится.
UBUNTU: Устанавливаем VPN сервер SoftEther
Создаем свой VPN сервер на основе SoftEther
В рамках данного блога была заметка об установке SoftEther VPN на FreeBSD.
Я решил, что будет интересно описать установку данного продукта в Ubuntu.
Пару слов о программе
SoftEther — это открытый и свободно распространяемый продукт (под лицензией Apache 2.0).
Написан студентом японского университета Цукубы в рамках академического проекта.
Проект является мультиплатформенным решением (MacOS, Linux, Windows и BSD).
По мимо этого, решение является мультипротокольным VPN сервером (l2tp, ipsec, openvpn)
Мы рассмотрим установку и первичную настройку VPN сервера с протоколом l2tp/ipsec.
Плюс данного протокола является нативная поддержка операционных систем Windows.
Задача
Предоставить удаленным пользователям защищенный доступ к серверу терминалов организации.
Сервер имеет прямой IP адрес.
В этой заметке останется за кадром использование Microsoft Azur для организации VPN сервера за NAT.
Схема сети
Установку мы будем делать терминале, настройку SoftEther VPN с помощью его клиента в Windows.
Установка
Обновляем репозитории и устанавливаем компиляторы
Получение дистрибутива
В отличии от FreeBSD, где SoftEther доступен в портах и пакеджах, в Ubuntu в стандартных репозиторях его нет:)
Поэтому выбираем платформу на этой странице и копируем ссылку на дистрибутив.
Скачиваем, разархивируем и компилируем
В момент компиляции принимаем три раза условия, введя цифру 1
Переносим скомпилированный SoftEther, назначаем права на его файлы
Создаем автозапуск через systemctl
Разрешаем запуск сервиса
Запускаем
Проверим:
Создаем административный пароль
Выбираем Management of VPN Server or VPN Bridge, введя цифру 1 и нажав два раз Enter
Скачиваем и устанавливаем SoftEther VPN Server Manager for Windows
С этой страницы выбрав нужную платформу и битность
Устанавливаем данный клиент
Выбираем только компонент SoftEther VPN Server Manager (Admin Tools Only)
Запускаем SoftEther VPN Server Manager
Кликаем по кнопке New Setting и заполняем поля:
Нажимаем ОК и соединяемся
Попадаем в мастер первоначальной настройки:
Жмем Next получаем окно с предупреждением:
Нажимаем Да, и появляется окошко с предложением создать виртуальный хаб (Virtual Hub), задаем ему имя и нажимаем ОК
Нажимаем Exit и попадаем в настройку IPsec
Включаем lt2tp/IPsec и устанавливаем IPsec Pre-Shared key
Настраиваем VPN клиент как l2tp/IPsek не забыв указать ключевую фразу
Пара слов о безопасности
В-третьих, ограничьте пользователя числом одновременных сессий.
Настраивается в политиках учетной записи пользователя.
Будет правильным пользователей закидывать в группы и в группах править политики.
Практический пример создания виртуальной частной сети на базе SoftEther VPN
SoftEther VPN – одно из самых простых и эффективных решений для создания виртуальных частных сетей ( V irtual P rivate N etwork, VPN). Это бесплатный продукт с открытым исходным кодом, разработанный как академический исследовательский проект в Японском университете Цукуба (University of Tsukuba, Japan).
Основные особенности SoftEther VPN:
— Свободное и с открытым исходным кодом программное обеспечение
— Возможность создания VPN-подключений с использованием большого количества распространенных стандартных протоколов (HTTPS, DNS, ICMP), что обеспечивает легкий обход брандмауэров.
— Возможность создания Ethernet-мостов (L2) и IP-маршрутизация (L3) через VPN.
— Встроенный динамический DNS.
— AES 256-битное и RSA 4096-битное шифрование.
— Наличие необходимых функций безопасности, таких как протоколирование и брандмауэр внутри VPN туннеля.
— VPN сервер может работать на платформах Windows, Linux, FreeBSD, Solaris и Mac OS X.
— Поддержка клиентов Windows, Linux, Mac, Android, iPhone, iPad и Windows Mobile.
— Поддержка большинства стандартных протоколов VPN (OpenVPN, IPsec, L2TP, MS-SSTP, EtherIP), что позволяет использовать устройства iPhone, iPad, Android, Windows Mobile, компьютеры под управлением Mac OSX и Windows без установки клиентской части SoftEther VPN.
— Простота и удобность настройки сервера и клиента.
— Контроль доступа клиентов к VPN и возможность их аутентификации по паролю или индивидуальному сертификату.
— Ведение журналов, параметры которых можно настроить под свои потребности.
Пример создания виртуальной частной сети на базе SoftEther VPN.
Клиентские компьютеры PC1-PC4, после подключения через Интернет к серверу SoftEther VPN становятся участниками виртуальной локальной сети точно так же, как если бы они были подключены к одному и тому же сетевому коммутатору. Например, рабочие станции (PC1, PC2, PC4), территориально находящиеся в разных регионах могут использовать ресурсы сервера (PC3) точно так же, как и в обычной локальной сети.
Установка и настройка SoftEther VPN сервера
Установка сервера должна выполняться под учетной записью с правами администратора ( Запуск от имени Администратора).
На следующем шаге необходимо принять лицензионное соглашение:
SoftEher VPN распространяется под лицензией Apache 2.0
Папку для установки программы оставляем по умолчанию:
После чего можно запустить установку программы нажатием кнопки Далее
Ход установки отображается на экране:
В некоторых версиях SoftEther VPN Server процесс установки может отличаться, однако, принципиального значения это не имеет.
После успешного завершения, по умолчанию включен режим запуска средства управления сервером – Start the SoftEther VPN Server Manager:
Средство настройки и управления сервером позволяет управлять не только локальным сервером, но и серверами, развернутыми на других компьютерах при наличии соответствующих прав по отношению к ним:
На следующем шаге необходимо выбрать режимы использования SoftEther VPN Server:
Если на данном компьютере ранее был установлен SostEther VPN Server, то его настройки остаются после удаления программы и будут применены к вновь установленному серверу. Настройки хранятся в файле vpn_server.config каталога, куда устанавливается программа ( C:\Program Files\SoftEther VPN Server ). Если необходимо установить и настроить сервер ”с нуля”, то после деинсталляции программы нужно удалить и каталог, куда она была установлена.
При первой установке режима работы сервера VPN потребуется инициализация его настроек:
После нажатия кнопки ”Да”, отобразится запрос имени виртуального концентратора (хаба):
Виртуальный концентратор (хаб, Virtual Hub) функционирует аналогично реальному и обеспечивает связь всех подключенных к серверу клиентов между собой. Для географически разнесенных клиентов обеспечивается использование протоколов общего доступа, баз данных, игровых серверов и т.п. точно так же, как будто бы они находятся в единой локальной сети. Другими словами, сервер SoftEher VPN создает виртуальные проводные соединения и виртуальные концентраторы для всех подключенных к нему клиентов. Концентраторов может быть несколько и их имена должны различаться.
На следующем шаге можно и, как правило, даже нужно, настроить динамический DNS для данного VPN сервера.
Даже если сервер имеет статический IP, обращаться к нему удобнее по имени, особенно, если сервер размещается на компьютере с динамическим IP (стандартное подключение для домашнего Интернет). Независимо от смены IP, клиенты смогут подключаться к серверу по имени, заданному в настройках. Имя проверяется на уникальность и имеет вид выбранное_имя.softether.net
На следующем шаге можно выполнить настройки, обеспечивающие подключение по стандартным протоколам VPN без использования клиентского приложения SoftEther VPN Client:
Виртуальный концентратор (Virtual Hub) может принимать подключения клиентов по протоколам стандартных VPN, в том числе и устаревших. Данные настройки можно изменить в любой момент времени и использовать по необходимости. Для решения вышеозначенной задачи – не требуется.
VPN Azure — это облачная служба, которая позволяет создать виртуальную частную сеть без Softether VPN сервера с маршрутизируемым (”белым” IP-адресом). Установка специального программного обеспечения на клиентских компьютерах не требуется, поскольку VPN Azure прекрасно работает с встроенным SSTP VPN клиентом Windows Vista и старше. Для Windows XP и более ранних версий придется установить SoftEther VPN Client. Для решения вышеозначенной задачи создания виртуальной частной сети использование данной технологии не является оптимальным.
Кнопка Manage Users позволяет создавать, удалять и изменять настройки пользователей VPN сервера. Для создания пользователя, например с именем User1 с доступом к серверу по паролю, нажать кнопку New
User Name – User1, обязательное имя пользователя.
Для подключения к серверу с использованием индивидуального сертификата создаем пользователя, например с именем User2 :
Значения остаются по умолчанию. В этом случае создается самоподписанный сертификат, которого вполне достаточно для определения достоверности пользователя, подключающегося к серверу VPN. После нажатия Ok будет предложено сохранить созданный сертификат:
Сетевые настройки сервера и клиентов SoftEther VPN
При подключении к порту 5555 на интерфейсе глобальной сети Интернет (WAN, c ”белым” IP) будет выполнено перенаправление подключения на порт 5555 сервера SoftEther VPN с адресом 192.168.1.111.
Для небольших организаций, которым требуется обеспечение дистанционной работы сотрудников, в качестве бюджетного варианта можно воспользоваться развертыванием SoftEther VPN Server на арендуемом VPS/VDS – сервере с приемлемой пропускной способностью.
Установка и настройка клиентов SoftEther VPN
Установка клиента производится с параметрами по умолчанию. После установки и запуска SoftEther VPN Client Manager, нужно создать виртуальный сетевой адаптер и новое VPN-подключение. Можно сразу нажать кнопку добавления нового подключения – Add VPN Connection и необходимые элементы будут созданы в процессе добавления.
Возможно создание до 127 виртуальных адаптеров, имена которых должны отличаться. Создание адаптера занимает некоторое время и завершается его появлением в нижней половине окна:
При создании нового подключения можно воспользоваться комбинацией клавиш Ctrl+N
Имя подключения выбирается произвольно. В поле Host Name задается имя SoftEther VPN Server, заданное в настройках динамического DNS или его IP-адрес. В поле Virtual Hub Name необходимо указать имя виртуального концентратора сервера, по умолчанию – VPN. В разделе Virtual Adapter to Use выбрать виртуальный адаптер, который будет использоваться в данном подключении.
В разделе User Authentication Setting Необходимо выбрать тип проверки подлинности ( Auth Type ):
— Standard Password Authentication – проверка по паролю. Например, для созданного на сервере пользователя User1.
— Client Certificate Authentication – проверка с использованием индивидуального сертификата. Например, для созданного на сервере пользователя User2
После создания соединения можно выполнить подключение к серверу через выбор пункта Connect контекстного меню, вызываемого правой кнопкой мышки на выбранном подключении. Результат подключения отображается в информационном сообщении:
Подключение к SoftEther VPN Server установлено, получен IP-адрес 172.30.100.100.
Для того, чтобы выбранное подключение устанавливалось автоматически при каждой перезагрузке компьютера, нужно установить режим Set As Startup Connection через контекстное меню, вызываемое правой кнопкой мышки.