NAS + SoftetherVPN = универсальный VPN сервер

    Думаю не ошибусь, если предположу, что у любого пользователя периодически возникает необходимость получить доступ к какому-либо сетевому ресурсу (IP-камере, сетевому накопителю, компьютеру, холодильнику и т.п.) внутри домашней или офисной сети через Интернет. Ну и само собой этот доступ должен быть:
    А) универсальный, т. е. с любого компьютера или гаджета;
    Б) защищенный от несанкционированного доступа нежелательных лиц.

    Вариантов достаточно много, но некоторые недоступны по причине недостаточной квалификации пользователя, некоторые не соответствуют приведенным двум пунктам, некоторые выходят слишком дорого… В общем перечислять «НО» можно долго.

    Наиболее подходящей для требуемого технологией был, есть и еще долгое время будет VPN. Но с VPN тоже возникает много вопросов: криптоустойчивость, взломозащищенность, мультиплатформенность клиентов, хватит ли вам знаний для установки и настройки серверной части и т. д.



    Недавно меня познакомили с поистине волшебным ПО под названием Softether VPN. Чем же он так волшебен? Вот часть того, что он умеет:
    • Множество виртуальных хабов. Т.е. внутри одного VPN сервера может быть более одного виртуального VPN сервера со своими правилами и правами доступа;
    • Remote-Access (клиент-к-LAN) и Site-to-Site (объединение двух и более LAN в одну) туннелей;
    • Поддержка L2TP over IPsec, IPSec, OpenVPN, MS-SSTP, L2TPv3, EtherIP (бридж) и своего собственного SSL-VPN протокола;
    • VPN через ICMP или через DNS (только через свой протокол), что позволяет обойти защиту даже самых «стойких» фаерволов;
    • Подробное логгирование;
    • Встроенный firewall для каждого виртуального хаба в отдельности;
    • Поддержка IPv6 в L3-режиме (ну и в L2, конечно, тоже);
    • Шейпинг трафика по группам пользователей либо по конкретным пользователям;
    • SecureNAT (user-space NAT и DHCP-сервер). Удобно на не-серверных Windows;
    • Поддержка VLAN;
    • Поддержка QoS с автоматической приоритезацией;
    • Ну и то, что умеют единицы VPN серверов — Dynamic DNS и NAT Traversal через бесплатный релей.



    Последний пункт будет особенно интересен многим пользователям домашних сетей. К примеру вам повезло с провайдером, который на соединение бесплатно выдает «белый» (маршрутизируемый IP адрес, т.е. доступный из любой точки Интернета), но не фиксированный, а динамический. В этом случае вы можете использовать любой VPN сервер, но нужно знать какой IP адрес вам выдал на данный момент провайдер. Это не проблема, решается через использование служб Dynamic DNS. Но большинство таких служб на сегодня платные. А как приятно слово «шара»! Softether VPN имеет собственную службу Dynamic DNS и при этом совершенно бесплатно. Вариант второй – вам не повезло с провайдером и он по какой-то причине не может выдать вам «белый» IP адрес, даже динамический, или вас просто жаба давит, платить за «белый» IP адрес. В этом случае доступ к своей домашней сети вы не сможете получить никакими простыми штатными средствами. Softether VPN решает и эту проблему, используя функцию «NAT Traversal через бесплатный релей». Т.е. вы получаете доступ к своему VPN серверу через сервер-посредник. Это конечно в какой-то мере нарушает требования безопасности, но с таким же успехом провайдер может перехватить ваш трафик и попытаться вскрыть содержимое. Тут уже все зависит от уровня вашей паранойи ;) Можно использовать многокилобайтные ключи, что снизит вероятность «вскрытия» фактически до нуля, но при этом в разы увеличит нагрузку на процессоры сервера и клиента и, как следствие, возможное снижение скорости в туннеле. Тут уже решать самому пользователю.

    Ну теперь вернемся к тому, о чем я собственно хотел написать. Есть такие замечательные NAS компании D-Link – DNS-320L, DNS-325, DNS-327L, DNS-345 и DNS-340L. Конечно найдется много «доброжелателей», которые скажут «D-Link» и «замечательные» не согласуется. Я не буду вступать в подобные обсуждения, т.к. они всегда заканчиваются одинаково – каждый остается при своем мнении. Скажу только, что идеала просто не существует, у каждого есть свои плюсы и свои минусы. Главное из моего личного опыта – NAS D-Link полностью отвечают своей стоимости, в отличии от NAS некоторых других производителей, цена которых неоправданно завышена.

    И так, имеем NAS D-Link, одной из выше перечисленных моделей. Идем на сайт с Адд-Онами и скачиваем Softether VPN под свою модель http://dlink.vtverdohleb.org.ua/Add-On/#SoftetherVPN.

    Далее установим Add-On на свой NAS и запустим его.





    Веб интерфейс у SoftetherVPN есть, но он мало функционален, может использоваться разве что для получения статистической информации. Настройку сервера лучше производить с помощью “SoftetherVPN Server Manager for Windows”



    Брать тут http://www.softether-download.com/



    Возможна настройка с помощью утилиты vpncmd, входящей в пакет Адд-Она, но для этого требуются хотя бы базовые знания линукса и установка Адд-Она utelnetd или sshd. Про настройку через vpncmd рекомендую прочитать тут http://habrahabr.ru/post/211136/



    Интерфейс “SoftetherVPN Server Manager for Windows” неплохо описан тут http://habrahabr.ru/post/208782/



    Если вы предполагаете использовать VPN протокол L2TP over IPSec, нужно добавить пользователя и ввести парольную фразу для IPSec. Нажмите кнопку “IPSec / L2TP Settings”, включите «Enable L2TP…» и введите Pre-Shared Key. После этого зайдите в раздел «Manage Virtual Hub» и нажмите «Manage Users».





    Создаем пользователя, вводим пароль, «Auth Type» выбираем «Password Authentication» и нажимаем ОК. После этого перейдите в «Virtual NAT and Virtual DHCP Server (Secure NAT)», нажмите «SecureNAT Configuration», включите галки «Use Virtual NAT Function» и «Use Virtual NAT DHCP Server Function» и ОК. После этого нужно активировать эти функции кнопкой «Enable SecureNAT».



    Если у вас «белый» IP адрес, нужно на маршрутизаторе «настроить проброс» портов для L2TP и IPSec. Как это делается – читаете руководство пользователя для вашего маршрутизатора. Например так «Часто задаваемые вопросы и ответы». Порты 1701, 500 и 4500, протокол UDP. DDNS имя можно использовать то, которое сгенерировал Softether VPN или задать свое – раздел «Dynamic DNS Setting».



    Если же у вас «серый» IP адрес, перейдите в раздел «VPN Azure Setting» и активируйте эту службу.



    Соответственно из Интернета в первом случае вы будете подключаться к «ваше_имя.softether.net», во втором случае «ваше_имя.vpnazure.net».



    Примеры настройки клиента под Android, Linux, МАС, Windows.

    Не менее интересен для более продвинутых пользователей будет протокол OpenVPN. Но об этом в следующей статье. Хотя настройку OpenVPN клиента я уже рассматривал в статье «Один из простых вариантов защиты VoIP», но там как клиенты рассмотрены только маршрутизатор D-Link серии DSR и смартфон с Android.



    Интерфейс о-о-очень подробно описан на сайте http://www.softether.org/. Правда на английском, но при наличии разнообразных онлайн-переводчиков, думаю любой сможет разобраться.

    Если, все же, возникнут вопросы по работе, обращайтесь.
    Share post

    Comments 19

      0
      Под qnap есть пакеты готовые? Или ipkg хотя бы?
        0
        У меня нет. Под FFP и Optware пока не встречал.
        0
        Если плотно разбирали проект, подскажите не появилась ли поддержка radius accounting, я месяца 4 назад ковырял — это была основная причина, почему отказался от повсеместного внедрения, отличный удобный продукт, но из за отсутствия аккаунтинга не подходит для корпоративной среды, хотя может что-то поменялось.
          0
          судя по гитхабу, три месяца назад добавили
            0
            Есть раздел «Authentication Server Setting (Use external RADIUS...)», но я это дело лично не проверял
              0
              Раздел есть, но был без поддержки аккаунтинга, то-есть авторизироваться по радиусу можно, но пользователь должен быть предварительно создан на сервере, так что управлять с единого биллинга было неудобно. Вот vortex выше говорит, что недавно поддержку добавили, надо посмотреть.
                0
                а, ну если в этом смысле, то понятно. Как я сказал, с радиусом вообще не проверял. Задача была — домашние пользователи, а им радиус уж точно не в тему ;)
                  +1
                  Сейчас просто надо создать пользователя "*" в самом SoftEther, у этого пользователя активизировать Radius authentication, и все пользователи из радиуса смогут авторизироваться. (В доках более детально про это есть.)
                    0
                    Да похоже в доке уже появилось, раньше не было, спасибо попробую еще раз на стенде поднять и проверить сколько сессий одновременно выдержит, хочется попробовать в качестве браса, а то accel достал своими глюками, а для mpd нужна фря, что выбивает машины с ним из общей стройной картины с единообразием.
              0
              Не так давно поставил. Правда не на d-link а просто на компьютер. Не нашел возможность установить статический IP адрес внутри сети VPN. Плохо искал или там такого действительно нет?
              p.s.Проблему решил установив большой срок аренды IP
                0
                В Softether такой функции нет, если сделать как тут, то можно добавить статические dhcp в dnsmasq.conf.
                  0
                  Да, это не плохая идея, насчет dnsmasq, нужно будет в следующую версию аддона добавить. Спасибо за идею.
                0
                Главное не используйте встроенный в SoftEther Virtual Nat +DHCP. Его надо выключить и поставить вручеую dnsmasq. После этого у клиентов раза в 2 вырастает скорость. Связано это с тем, что Virtual nat есть намного бульше ресурсов процессора. Я замерял скорость до и после, действительно с dnsmasq быстрее.
                Вот хорошая инструкция.
                • UFO just landed and posted this here
                    0
                    Вы ещё не использовали IPoverICMP и IPoverDNS.
                    Это очень весело, зато часто проходит любую корпоративную защиту.
                    0
                    Как советует товарищ Makenmake, выключите SecureNAT. По крайнему минимуму объясните что эта настройка значит, она убивает очень много производительности. У вас в статье она просто указана между делом, и человек не читающий доки SoftEther (а ведь это его собственная функция, которой в других серверах обычно нету) может подумать что это неважная деталь а потом удивляться почему сервер работает так медленно.
                    В двух словах SecureNAT это реализация части сетевого стека внутри SoftEther, вместо того чтобы пускать пакеты через реализацию ОС в ядре, некоторые уровни он реализует в юзерленде, в связи с чем утверждают что это намного более безопасно (при нормальных настройках iptables и стабильной ОС спорный вопрос), но сильно бьёт по производительности.
                      0
                      Полностью с Вами и Makenmake согласен, НО:
                      1. Вы видимо имели ввиду «Use Virtual NAT Function», а не SecureNAT целиком. Чем «Use Virtual DHCP Server Function» может давить проц?
                      2. Одна из основных причин, почему SoftetherVPN, а не что-нибудь другое — Azure Cloud. А он больших скоростей сам по себе не выдает, во всяком случае дает скорость ниже, чем позволяет проц NAS с включенным «Use Virtual NAT Function». Так что «удивляться почему сервер работает так медленно» если кто и будет, вопрос не в SecureNAT.
                      3. Для получения адресов от dnsmasq или основного роутера в сетке — нужно создавать Бридж. Это писалось именно как пошаговая инструкция для домашнего пользователя, а для них лишние непонятные слова — только расстройство ;)
                      Т.е. я стремился к описанию не самого оптимального, а самого простого варианта.
                        0
                        Да, имелось в виду конечно Use Virtual NAT. В документах эти понятия иногда используются одинаково, поэтому небольшая путаница.
                        Virtual DHCP действительно вряд ли может создавать какую-то сильную нагрузку, да и отдельно радует то что он вообще может использоваться сам по себе, без NAT.
                      0
                      О, мои корявые скриншоты!

                      Кстати, SoftEther использовали террористы в аниме Zankyou no Terror

                      image

                      image

                      Ну и главный недостаток SoftEther так и не исправили — невозможность использования X.509 в любом протоколе, кроме своего.

                      Only users with full accounts can post comments. Log in, please.