SoftEther VPN — продвинутый мультипротокольный VPN-сервер и клиент. SoftEther VPN — проходящий сквозь «огненную стену Vpn client manager не подключается

Существует два способа объединить сети при помощи SoftEther VPN.
1) Соединение мостом, при этом сети объединяются в один сегмент Ethernet. Этот вариант неудобен, т.к. если в обеих сетях есть сервисы, требующие работы в единственном экземпляре, то это приведет к конфликтам (например, DHCP). Кроме того, если узлов в сети много, то произойдет увеличение широковещательного трафика.
2) Второй способ основывается на первом. Но здесь создается виртуальный коммутатор третьего уровня OSI, который управляет трафиком между сетями. Также создается дополнительный виртуальный хаб (концентратор), к которому подключается удаленная сеть. Из минусов: не поддерживаются протоколы динамической маршрутизации, не поддерживается протокол IGMP, на узлах с общими ресурсами необходимо прописывать статические маршруты.

В данной статье рассматривается второй способ.

Преимущество данной схемы в том, что ненужно тратиться на дорогие роутеры с VPN, а параноикам использовать дырявый протокол PPTP. Включил ПК - и связь автоматически поднялась, если на другом конце ПК тоже включен. Производительность связи упирается в скорость вашего интернет-канала (включая производительность маршрутизации роутера) и мощность процессора ПК, т.к. шифрование трафика осуществляется именно им.

Имеем две сети, с центральными узлами в виде маршрутизатора с DHCP сервером и WAN. На ПК в одной сети необходимо установить SoftEther VPN Server, а в другой сети SoftEther VPN Bridge.

Установка VPN сервера на Windows

Установка SoftEther VPN Server достаточно проста. Проиллюстрирую ее картинками с небольшими комментариями. Скачиваем дистрибутив SoftEther VPN Server c официального сайта и запускаем.
Выбираем вариант установки - VPN Server и жмем «Далее».

Затем принимаем условия соглашения и выбираем стандартную установку.

После запуска VPN сервера появится окно администрирования, нажимаем кнопку «Connect». Задаем пароль администратора сервера.

Указываем тип сервера - Site-to-Site VPN Server. (Center)

Затем идет настройка функции dynamic DNS, жмем Exit. Позже её можно отключить, изменив в файле конфигурации строку на: “declare DDnsClient { bool Disabled true “ .

Далее необходимо указать физическую сетевую карту для соединения виртуального хаба с локальной сетью. Соединение осуществляется на канальном уровне OSI, поэтому виртуальный хаб не получает никакого IP адреса в сети. Однако некоторые роутеры могут заметить в локальной сети появление IP адреса подсети 172.31.0.0/16. Этот адрес используется для отслеживания соответствия ARP записей IP адресам или чего-то подобного.

Далее предлагается настроить доступ по L2TP и включить Azure VPN. Пропустим эти шаги, т.к. в этой схеме они не участвуют. Azure VPN можно отключить, если у вас белый IP. Если адрес серый, то не отключайте и используйте доменный адрес Azure VPN вместо IP.

Настройка VPN сервера

По окончании первичной настройки попадаем в окно администрирования сервера. Первым делом, удалим ненужные порты (все, кроме 5555 - он используется для подключения к панели администрирования). Задаем какой-нибудь нестандартный TCP порт для прослушивания, например, 7710. Если у Вас нет белого IP адреса, то для использования Azure VPN необходимо слушать 443 порт.
Теперь необходимо создать второй виртуальный хаб, к которому будет подключаться удаленная сеть. Чтобы создать второй хаб, кликаем кнопку «Create a Virtual Hub». Назовем его, например, по номеру удаленной сети - 12. В этом виртуальном хабе создавать Local Bridge ненужно.

Далее, выбираем 12 хаб и нажимаем «Mange Virtual Hub», затем «Manage Users» создаем пользователя для удаленной сети. Назовем его «Network 12», вместо пароля будем использовать самоподписанный сертификат с тайным ключом.

Кликаем «Create Certificate» и заполняем строчку “Common name”.

Выбираем формат сертификата - X509 (сертификат отдельно, тайный ключ отдельно).

Сохраненный сертификат и тайный ключ необходимо будет загрузить в клиент SoftEther VPN Bridge.
Далее необходимо открыть порт в роутере - тот самый, который слушает сервер, и настроить трансляцию порта на ПК с сервером. Подробнее о том, как открывать порты, можно прочитать в этой статье. .
Например, в pfSense правило для открытия порта выглядит примерно так. pfSense - при создании правила для NAT, автоматически создает правило и для Firewall. Другие роутеры могут этого не делать, поэтому надо создавать оба правила ручками.

Также, в межсетевом экране на обоих роутерах необходимо разрешить прохождение трафика между сетями. Для разрешения прохождения любого трафика правило будет выглядеть так:

Если на компьютерах включен брандмауэр, то там тоже необходимо разрешить прохождение трафика для нужной сети.
Далее необходимо создать виртуальный роутер. Кликаем кнопку «Layer 3 Switch Settings», создаем новый виртуальный роутер и кликаем кнопку «Edit». Затем, необходимо создать виртуальные интерфейсы для каждого хаба. Для хаба с именем 10 создаем интерфейс с адресом 192.168.10.100, для хаба с именем 12 - 192.168.12.100. Адреса можно придумать свои, главное, чтобы они не были заняты и принадлежали каждый к своей подсети. Разработчики уверяют, что маршруты добавлять необязательно, но лучше на всякий случай добавить. Для запуска роутера нажимаем кнопку «Start».

Настройка VPN клиента

Запускаем установку SoftEther VPN Server, при этом выбираем вариант установки SoftEther VPN Bridge. Жмем все время «Далее», затем задаем пароль администратора.

На этом шаге указываем сетевую карту для создания моста с локальной сетью.

После этого попадаем в панель управления SoftEther VPN Bridge. Как видим, многие функции в этом режиме отключены.

Далее необходимо создать каскадное подключение к серверу SoftEther VPN. Нажимаем «Mange Virtual Hub» затем «Mange Cascade Connection» и заполняем данные для подключения.
Settings name - имя подключения.
Host Name - белый IP адрес или доменное имя DDNS роутера сети, где установлен сервер. Если у вас нет белого IP адреса, то используем службу Azure VPN и пишем доменное имя, полученное в этой службе (vpn123456789.vpnazure.net). Думаю, понятно, что без белого IP адреса открывать порты на роутере ненужно.
Port Number - порт, который слушает сервер.
Virtual Hub Name - имя виртуального хаба на сервере.
User Authentication Settings - настройки аутентификации пользователя. Поскольку мы решили использовать вместо пароля самоподписанный сертификат, то выбираем строчку «Client Certificate Authentication». Пишем имя пользователя (в примере это - Network 12). Кликаем «Specify Client Certificate», загружаем сертификат и тайный ключ шифрования.

Теперь необходимо настроить параметры соединения - кликаем “Advanced Settings”. Здесь необходимо задать количество TCP соединений, для широкополосного соединения рекомендуется 8.

Настройка маршрутизации

Настройка заключается в прописывании статических маршрутов в роутерах обеих подсетей.
На роутере 192.168.10.1 (см. схему) прописываем маршрут до сети 192.168.12.0. Выглядеть он будет так: 192.168.12.0 маска 255.255.255.0 шлюз 192.168.10.100.
На роутере 192.168.12.1 прописываем маршрут до сети 192.168.10.0: 192.168.10.0 маска 255.255.255.0 шлюз 192.168.12.100.
Для надежности перезагружаем оба ПК и роутера.

Доступ к общим папкам через SoftEther VPN

После произведенных выше настроек все компьютеры в сети должны нормально «пинговать» друг друга (если не запрещено брандмауэром). Однако, получить доступ к общим папкам Windows невозможно. Эта проблема решается прописыванием статических маршрутов непосредственно на компьютерах с общими ресурсами. Запускаем командную строку Windows от имени администратора и пишем команду:
для компьютеров, находящихся в сети 192.168.10.0:
route -p add 192.168.12.0 mask 255.255.255.0 192.168.10.100
для компьютеров, находящихся в сети 192.168.12.0:
route -p add 192.168.10.0 mask 255.255.255.0 192.168.12.100
На этом настройка завершена. Для анализа маршрута трафика советую пользоваться командной строкой Windows, командой pathping .

Вопросы задаем в комментариях.

Как скоро я смогу вас заинтересовать, если скажу, что в этой статье речь пойдет о VPN-сервере, который может поднимать L2TP/IPsec, OpenVPN, MS-SSTP, L2TPv3, EtherIP-серверы, а также имеет свой собственный протокол «SSL-VPN», который неотличим от обычного HTTPS-трафика (чего не скажешь про OpenVPN handshake, например), может работать не только через TCP/UDP, но и через ICMP (подобно pingtunnel, hanstunnel) и DNS (подобно iodine), работает быстрее (по заверению разработчиков) текущих имплементаций, строит L2 и L3 туннели, имеет встроенный DHCP-сервер, поддерживает как kernel-mode, так и user-mode NAT, IPv6, шейпинг, QoS, кластеризацию, load balancing и fault tolerance, может быть запущен под Windows, Linux, Mac OS, FreeBSD и Solaris и является Open-Source проектом под GPLv2?

То-то и оно. Такое пропустить нельзя.

Uh-oh, что же это за штука?
Скорее всего, вы раньше не слышали об этом проекте. Дело в том, что Daiyu Nobori (登 大遊) начал его разрабатывать, как только пошел в Тсукубский университет, и PPTP не заработал из сети кампуса. В 2003, когда ему было 18 лет, он выпустил первую версию SoftEther, и на него наехало правительство Японии, которое считало, что этот проект можно расценивать чуть ли ни как вредоносное ПО, т.к. оно позволяет обходить файрволлы (OpenVPN в то время еще только появлялся), а также может «навредить имиджу других VPN-продуктов» и запретило распространять программу. Он попытался объясниться, но т.к. из-за этого его могли, возможно, отчислить из университета, сильно он не настаивал и убрал программу из свободного доступа. Проходит некоторое время, и Mitsubishi Materials Corporation предлагает купить у него SoftEther 1.0 и подписать контракт на 10 лет (апрель 2004-апрель 2014), который дает корпорации право на продажу SoftEther и запрещает Daiyu Nobori продавать программу и/или основанные на ней, но в марте 2013 он начинает распространять SoftEther бесплатно, и вот только совсем недавно (4 января 2014) ее удалось открыть под GPLv2. К большому сожалению, сейчас еще пока остаются некоторые проблемы с копирайтом, поэтому в SoftEther до апреля 2014, вероятно, нельзя будет увидеть некоторые важные функции: аутентификация Radius / Active Directory, аутентификация по RSA-ключам, защита от DoS, Source IP ACL, Syslog transfer и Deep-inspect packet logging.
Описание
Чуть более подробно про возможности сервера:
  • Множество виртуальных хабов. Т.е. не каждый экземпляр сервера обслуживает только своих клиентов, а все в пределе одного сервера.
  • Remote-Access (клиент-к-LAN) и Site-to-Site (объединение двух и более LAN в одну) туннелей.
  • Поддержка L2TP/IPsec, OpenVPN, MS-SSTP, L2TPv3, EtherIP и своего протокола
  • VPN через ICMP и через DNS (только через свой протокол)
  • Dynamic DNS и NAT Traversal через бесплатный релей (да-да, можно поднять VPN сервер с серым IP! )
  • Логгирование
  • Встроенный firewall
  • Поддержка IPv6 в L3-режиме (ну и в L2, конечно, тоже)
  • Шейпинг трафика по группам пользователей либо по конкретным пользователям
  • SecureNAT (user-space NAT и DHCP-сервер). Удобно на не-серверных Windows
  • Поддержка VLAN
  • Поддержка QoS с автоматической приоритезацией

ПО состоит из сервера, бридж-сервера, клиента, GUI (только Windows) и CUI утилит администрирования. Клиент нужен для подключения одного компьютера к LAN (Remote Access VPN), а бридж-сервер для соединения двух или более сетей (Site-to-Site VPN). К сожалению, CUI пока не очень хорошо задокументирован и запустить сервер только из CUI мне не удалось, пришлось воспользоваться Windows-версией сервера и GUI-утилитой. Нужно заметить, что GUI-утилита умеет работать не только с локальным сервером, т.е. можно запустить сам сервер на Linux, а администрировать его через GUI-утилиту под Windows. В GUI есть только основные настройки, для изменения продвинутых настроек придется лезть в конфиг или использовать CUI.

Вот вам несколько скриншотов GUI, чтобы было представление, что умеет сервер и как все легко настраивается.

Окно управления сервером

Окно управления хабом

Редактирование пользователя

ACL c возможностью симулировать packet loss и jitter

Security Policy для пользователя

Настройка SecureNAT

Настройка L2TP/IPSec

Настройка OpenVPN и SSTP

Защита данных сегодня волнует все больше людей. Тенденции не только не радуют, они просто ужасают - следить за нами начинают даже телевизоры. Самый верный способ - всегда предполагать, что нас кто-то слушает, и превентивно обороняться. Можно поднимать SSH-туннели и SOCKS’ифицировать через них нужный трафик, можно везде, где получится, использовать HTTPS, устанавливая для этого плагины. Однако наиболее подходящей для этого технологией был, есть и еще долгое время будет VPN.

Где взять VPN, чтобы безопасно подключаться с различных устройств «на ходу» и в публичных местах? Простой и быстрый способ - воспользоваться одним из многочисленных сервисов. Но с точки зрения безопасности этот метод вызывает вопросы. Добровольно пускать свой трафик через «дядю», да еще и приплачивать за это не слишком секурно. Да и с анонимностью не так все хорошо, крупный сервис сдаст тебя с потрохами по первому запросу, достаточно вспомнить историю HideMyAss и LulzSec. Мелкие мутные конторы невозбранно могут снифать тебя сами. Проверить внутреннюю кухню VPN-сервиса невозможно, и полагаться на заверения, что никаких логов не ведется, наивно.

Что остается бедному параноику? Поднимать VPN-сервер самостоятельно, благо не так уж и много для этого нужно. Наиболее подходящей реализацией для собственного сервера до недавнего времени был OpenVPN. Ощутимым его минусом является довольно сложная настройка и недружелюбность к обычному пользователю. Установить и настроить его самому под силу лишь искушенному в сетевых делах человеку. Наличие в Сети большого количества step-by-step мануалов не сильно помогает ситуации. Кроме того, OpenVPN требует наличия на сервере доступа к TUN/TAP-устройствам, поэтому для него подходят не все VDS/VPS-хостинги. Однако с недавнего времени под лицензией GPLv2 открылся мощный мультипротокольный VPN-сервер - SoftEther VPN. На первый, да и на второй взгляд этот сервер поражает возможностями.

Он имеет собственный протокол SSL-VPN, который неотличим от обычного HTTPS-трафика (трафик OpenVPN все же возможно выделить при помощи DPI). Заявлена поддержка L2TP/IPsec, MS-SSTP, OpenVPN, L2TPv3 и EtherIP, причем для L2TP указана строгая совместимость со встроенными клиентами в iOS и Android. Сам сервер имеет версии под Windows, Linux, OS X, FreeBSD и Solaris и, как утверждается на сайте, является оптимальной альтернативой OpenVPN, причем работает быстрее его.

Полный список всех вкусностей можно найти на официальном сайте . Отмечу лишь основные фишки. VPN-сервер может целиком управляться через весьма продуманный графический интерфейс, причем делать это можно удаленно. Да-да, теперь возможно распихать серверную часть по вдскам на линуксе и удаленно рулить ими из няшной GUI-версии для Windows. SoftEther VPN имеет встроенный NAT и DHCP-сервер, то есть под Linux и FreeBSD больше не нужно возиться с настройками iptables и natd. На мой взгляд, еще никогда создание собственной VPN-сети не было таким легкореализуемым. Собственный протокол SSL-VPN может работать через TCP, причем поддерживаются множественные TCP-сессии, UDP и даже ICMP.

Пробуем

Рассмотрим эту прелесть с практической точки зрения. Для установки нам понадобится дедик или VDS/VPS, SoftEther VPN не требует для работы TUN/TAP-устройств, поэтому подойдут даже хилые варианты с любым типом виртуализации. Установка серверной части довольна проста. На странице www.softether-download.com выбираем дистрибутив SoftEther VPN Server под нужную операционную систему и архитектуру (в *nix архитектуру ОС можно узнать по команде uname -m). Для примера рассмотрим Linux, как самый частый вариант на VDS. Скачиваем дистрибутив на сервер любым доступным способом, после чего распаковываем и устанавливаем:

Tar xzvf softether-vpnserver-v4.05-9416.tar.gz && cd vpnserver && make

Нас попросят подтвердить, что мы прочли License Agreement и с ним согласны. После чего наш SoftEther VPN Server будет установлен в этом каталоге и готов к запуску. В документации опционально советуют переместить его в /usr/local/vpnserver , однако никакой разницы нет, запускать его можно хоть из /var/tmp . Чуешь, куда клоню? 🙂 Запускаем

./vpnserver start

Все, наш собственный VPN-сервер готов и по умолчанию ожидает нашего подключения на портах 443, 992, 1194 и 5555. Управлять сервером можно через его конфигурационный файл или, что намного удобнее, с помощью утилит управления. Подключиться к нему для управления можно с помощью консольной утилиты vpncmd, находящейся в этом же каталоге, либо с помощью GUI для Windows, называющегося SoftEther VPN Server Manager for Windows. Он входит в состав SoftEther VPN Server для Windows, но можно установить его отдельно путем выбора нужных галочек в инсталляторе или же скачать отдельный ZIP-архив со страницы загрузки. Рассмотрим его, как наиболее дружелюбный.


Для подключения в Server Manager указываем хост и порт (любой из слушаемых) нашего сервера. При первом подключении нас попросят установить администраторский пароль. Задаем свой пароль и приступаем к настройке. Имеет смысл отредактировать список портов, дабы явно не палить присутствие VPN на сервере. Я оставляю только 443, а ты выбери себе по вкусу. SoftEther VPN поддерживает так называемые виртуальные хабы (Virtual Hubs), по сути отдельные виртуальные VPN-серверы, каждый со своими администраторами, VPN-пользователями, настройками и ACL-политиками. Создаем такой хаб, если его не было по умолчанию, и переходим в его настройки, где нам нужно создать пользователя в Manage Users . SoftEther VPN поддерживает различные методы аутентификации, включая авторизацию по сертификату, RADIUS и NT Domain. Нам для начала достаточно обычной Password Authentication, поэтому просто задаем логин и пароль пользователя. Также можно заглянуть в Security Policy , где можно ограничить юзеру ширину канала и запретить прочие радости.


Для того чтобы у подключившихся к VPN пользователей был доступ в интернет, задействуем NAT. Все настройки находятся по соответствующей кнопке в контексте хаба, нам достаточно просто включить NAT, оставив все остальное по дефолту. На этом этапе уже можно подключаться к серверу с помощью клиента SoftEther VPN, который работает по собственному протоколу SSL-VPN, настройка тривиальна и затруднений не вызовет. Для подключения по L2TP и L2TP/IPsec нужно задействовать их на сервере, соответствующие опции находятся в IPsec / L2TP Settings . Аналогично включается и поддержка OpenVPN-клиентов, причем в этом случае SoftEther даже предложит сгенерировать конфигурационный файл.ovpn для OpenVPN.


Вот теперь можно подключаться к VPN как с настольных операционных систем, так и с мобильных девайсов, инструкции по настройке подключения можно найти в сети, они ничем не отличаются от обычных. На сайте www.softether.org тоже доступны мануалы с иллюстрациями. Самое время ощущать себя гордым владельцем VPN-сервера или даже, купив с десяток серверов в разных странах, открывать собственный VPN-сервис:).

Нетрадиционный VPN

Иногда бывает, что прямое соединение между клиентом и VPN-сервером затруднено или невозможно по каким-то причинам (локальная сеть, выход из которой строго файрволится на граничном роутере, или же сервер не имеет внешнего IP и находится за NAT или имеет динамический адрес). Распространенный случай - мы установили дома VPN-сервер и хотим попадать домой по защищенному каналу, но вот беда, домашний провайдер не выдает нам валидного айпишника. Да мало ли по каким причинам может не быть прямой видимости до сервера. И тут SoftEther VPN есть что показать нам. Собственный протокол SSL-VPN обладает рядом интересных техник для преодоления сетевых барьеров. Причем они не потребуют от нас никаких усилий, все работает буквально на автомате. Помимо обычной поддержки SOCKS/proxy, которой уже не удивить после OpenVPN, SoftEther VPN умеет:

  • DDNS сервис;
  • NAT Traversal;
  • VPN over ICMP;
  • VPN over DNS;
  • VPN Azure Cloud.

Если сервер не имеет постоянного айпи или мы просто хотим удобства, SoftEther VPN любезно предоставит нам домен третьего уровня в домене *.softether.net . Не нужно даже регистрироваться, все, что требуется, - это выбрать себе поддомен по вкусу, а работать и обновляться он будет самостоятельно. Функции пробива NAT, ICMP- и DNS-туннелирования пока плохо документированы и никак не настраиваются. Поэтому, чтобы убедиться в их работе, может понадобиться Wireshark. Однако и по дефолту все работает более чем прекрасно. Техника обхода NAT Traversal успешно пробила мой файрвол на роутере, на котором я для теста правилом заблокировал исходящие пакеты к VPN-серверу, и не менее успешно сумела соединиться с VPN-сервером, который был размещен за Full-Cone NAT. Проблема соединения с домашним сервером для меня решена навсегда:). Стоит учитывать, что для NAT Traversal требуется третий хост, который пока что предоставляет SoftEther VPN.

Влиять на то, какая техника будет использована, в текущей версии нельзя. SoftEther VPN Client пробует их поочередно, если прямое соединение «в лоб» не удалось. Пробуются соединения на 137-й и 53-й порт сервера, задействуется NAT Traversal, посылаются ICMP-пакеты. Для VPN over ICMP используются ICMP ECHO, или, проще говоря, обычный пинг.

Заключение

SoftEther VPN очень динамично развивается, и к тому времени, как ты будешь читать эту статью, функционал может стать еще более вкусным. Столь мощного и одновременно с этим дружественного опенсорсного решения доселе еще не было. Проект однозначно заслуживает внимания.