SoftEther VPN Server — установка и настройка.

softether vpn server linux ubuntu centos

Soft­Eth­er VPN появился в далеком 2003 году в университете японского города Цукуба. Проект был разработан одним из студентов университета Daiyu Nobori, после того как в сети университетского кампуса перестал работать PPTP, хотя по другим данным, это был его дипломный проект.

Время шло, проект развивался, и был выкуплен японской корпорацией Mit­subishi, которая подписала десятилетний контракт на выпуск и распространение программы. Однажды Soft­Eth­er запретили, правительство Японии посчитало его вредоносной программой.

По окончанию действия контракта с Mit­subishi, в январе 2014 года Soft­Eth­er начинает распространяться под свободной GPLv2 лицензией, что делает его доступным для всех желающих.

Soft­Eth­er поддерживает почти все туннельные протоколы (L2TP, L2TP/IPsec, MS-SSTP, EtherIP и т.д.). Также у него есть собственный SSL-VPN протокол неотличимый от обычного HTTPS трафика, тут даже системы DPI (Deep Pack­et Inspec­tion) не помогают, поэтому Soft­Eth­er очень популярен в Китае.

Soft­Eth­er пробивается через файрволы и NAT механизмы применяя технологии TCP NAT tra­ver­sal и TCP hole punch­ing, при этом не забывая маскировать трафик. Данные могут передаваться не только с помощью TCP/UDP протоколов, а также с помощью имитации ICMP (пинг) и DNS запросов.

Soft­Eth­er не требователен к типам виртуализации, в отличии от Open­VPN, которому для работы требуется наличие TUN/TAP устройств в ядре. Поэтому Soft­Eth­er работает на любых VPS/VDS и это еще один плюс в копилку.

Клиентское и серверное ПО существует практически для всех распространенных операционных систем. Процесс компиляции исходного кода при установке в UNIX-системах минимизирован настолько, что с ним легко справится любой пользователь.

ПО Soft­Eth­er состоит из нескольких компонентов:

  • Serv­er - самый полный набор, включает в себя Serv­er, Bridge и VPN Serv­er Man­ag­er (в версии для Win­dows).
  • Bridge - позволяет подключать локальные сети к VPN-тоннелям.
  • VPN Serv­er Man­ag­er - утилита с графическим интерфейсом в системе Win­dows. Используется для администрирования локальных и удаленных VPN-серверов. Является самым удобным средством администрирования и управления. Устанавливается отдельно.
  • vpncmd - утилита администрирования командной строки, как в  терминалах UNIX-систем, так и в командной строке Win­dows. В UNIX-системах ставится вместе с сервером. В Win­dows идет в комплекте с VPN Serv­er Man­ag­er.
  • Client - клиент для подключения к сети VPN.

Установка SoftEther VPN Server

Установим утилиты для компилирования.

Переходим в каталог /usr/local.

Переходим на сайт Soft­Eth­er, выбираем нужное и копируем полученную ссылку.

softether vpn server linux

Скачиваем исходники Soft­Eth­er.

Распаковываем скачанный архив.

Переходим в каталог vpnserv­er.

Компилируем и устанавливаем.

Во время установки будет задан ряд вопросов, отвечать следует положительно.

Находясь внутри каталога vpnserv­er зададим права доступа для файлов.

Проведем проверку системы на совместимость с Soft­Eth­er. Чтобы провести проверку нужно попасть в консоль управления vpncmd.

"All checks passed" означает что тесты пройдены и Soft­eth­er может работать в системе. Для выхода из консоли используют команды: exit, quit или сочетание клавиш Ctrl+C.

Настройка SoftEther в консоли управления

Soft­Eth­er установлен и может работать в системе. Теперь нужно провести начальную настройку, а чтобы провести настройку нужно запустить Soft­Eth­er.

Выполняем команду ./vpnserver start находясь внутри каталога /usr/local/vpnserver.

Входим в консоль управления.

Vpncmd позволяет администрировать не только локальные, но и удаленные сервера. В нашем случае нужно настроить локальный сервер, поэтому в строке Host­name of IP Address of Des­ti­na­tion вводим local­host и нажимаем Enter.

По умолчанию соединение устанавливается на 443 порту. Если вдруг 443 порт занят другой программой, такое бывает если Soft­Eth­er установлен не на чистую систему, то войти в консоль не получится.

В таком случае к значению local­host через двоеточие добавляют нужный порт. Кроме 443-го порта Soft­Eth­er слушает еще три: 992, 1194 и 5555. Можно указать любой из них.

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

Управление сервером осуществляется посредством определенных команд (205 штук). Список команд можно просмотреть через --help. Команды требовательны к регистру.

Установка пароля администратора

Первым делом установим пароль администратора (Server­Pass­word­Set).

Создание виртуального хаба

Виртуальный хаб представляет собой подобие сервера со своими настройками, протоколами VPN, своими пользователями и администраторами, а также со своими настройками безопасности. На одном сервере может быть создано до 4096 виртуальных хабов. Хабы не контактируют друг с другом, за исключением случаев когда их специально объединяют в мосты.

По умолчанию на сервере уже есть дефолтный хаб (DEFAULT), удалим его (Hub­Delete) и создадим свой. Во время выполнения будет запрошено имя хаба для удаления.

Создадим новый виртуальный хаб (HubCre­ate). Зададим имя нового хаба и пароль.

Список доступных хабов можно просмотреть командой Hub­List. Команда показывает не только хабы, но и их статистику.

Настроим созданный хаб (Hub). Через пробел указываем имя хаба для настройки.

Консоль управления хабом.

Создадим пользователя (User­Cre­ate). Группу, полное имя и описание заполняем по желанию (можно пропустить нажав Enter).

Зададим пароль пользователя (User­Pass­word­Set).

Создание локального моста

Поскольку Local Bridge работает совместно с TAP устройством, то данный шаг могут пропустить те пользователи, чьи VPS/VDS не поддерживают драйвера TUN/TAP. Такие пользователи в дальнейшем будут использовать режим Secure­NAT.

Использование Secure­NAT рассмотрим немного позже, а пока создадим Local Bridge, те кто пропускает переходят сразу к автозапуску.

Для создания Local Bridge используется команда Bridge­Cre­ate, синтаксис выглядит следующим образом.

Например так.

Список и статус мостов можно просмотреть командой Bridge­list. Если в статусе висит значение Oper­at­ing, это значит что все в порядке и мост готов к работе.

После того как Local Bridge создан, в системе должен появиться интерфейс tap_vpn.

Как можно видеть tap интерфейс пока еще не имеет IPv4 адреса, это нормально, адрес зададим позже.

Если Cen­tOS ругается на отсутствие ifcon­fig, то нужно поставить. В Debian/Ubuntu пакет присутствует по умолчанию.

Автозапуск VPN Server

Запускать сервер вручную неудобно. Напишем скрипт для автозапуска сервера.

Создаем скрипт (vpnserv­er) в каталоге /etc/init.d.

Скрипт автозапуска для CentOS

Содержимое скрипта для Cen­tOS.

Права доступа на файл скрипта.

Добавим скрипт в автозапуск.

Запустим vpnserv­er с помощью sys­tem­ctl.

Проверим как работает.

Скрипт автозапуска для Ubuntu/Debian

Содержимое скрипта для Ubuntu/Debian.

Права доступа на файл скрипта.

Добавим скрипт в автозапуск.

Запустим vpnserv­er с помощью sys­tem­ctl.

Проверим как работает.

Теперь vpnserv­er будет стартовать самостоятельно после включения или перезагрузки системы и управляться стандартными sys­tem­ctl-командами.

Сетевые режимы SoftEther VPN Server

У Soft­Eth­er есть два механизма передачи трафика: Secure­NAT и Local Bridge.

SecureNAT

Secure­NAT - собственная технология Soft­Eth­er, создающая закрытую сеть и состоящая из двух частей: виртуального NAT и виртуального DHCP-сервера.

securenat softether vpn server linuxSecure­NAT не требователен к типу виртуализации VPS/VDS серверов, так как работает без TUN/TAP. Для Secure­NAT не нужна настройка ipt­a­bles или другого фаервола, кроме открытия порта на котором будут приниматься соединения от клиентов.

Маршрутизация трафика осуществляется не затрагивая ядра системы. Все процессы полностью виртуализированы. Отсюда возникают минусы режима, повышенная нагрузка на процессор и потеря в скорости, если сравнивать с Local Bridge.

Пользователю нужно только включить режим, подключить клиент, после чего можно начинать пользоваться VPN.

Активация режима SecureNAT

Чтобы включить режим Secure­NAT перейдем в консоль управления хабом и выполним команду Secure­NatEn­able.

Узнать текущий статус можно командой Secure­Nat­Sta­tus­Get.

Команда показывает количество сессий, подключенных клиентов и текущий статус Secure­NAT. Значения "Yes" говорят что режим Secure­NAT сейчас активен.

Как я уже писал выше, Secure­NAT не требует настройки фаервола для маршрутизации трафика. Достаточно просто открыть порт, на котором vpnserv­er будет принимать входящие соединения от клиентов.

Добавим правило ipt­a­bles открывающее 443 порт (или любой другой).

Можно устанавливать клиент, подключаться к серверу, и начинать использовать VPN или немного почитать про сетевые настройки Secure­NAT.

Обзор сетевых настроек SecureNAT

Предупреждаю, не стоит менять дефолтные настройки, если не знаете что делаете. Там без вас уже все настроено. В противном случае вас могут ожидать неприятные последствия.

Текущие сетевые настройки можно узнать командой Secure­NatHost­Get.

По умолчанию Secure­NAT использует подсеть 192.168.30.0/24.

Данная подсеть не относится только к Secure­NAT, она также используется и в режиме Local Bridge. Это собственная подсеть виртуального хаба. Так что если возникнет необходимость в изменении подсети для моста, то это делается здесь.

Адрес подсети можно изменить командой Secure­NatHost­Set.

Теперь мы используем подсеть 192.168.100.0/24.

Клиент подключающийся к хабу получает ip-адрес из диапазона его подсети. Раздачей адресов управляет виртуальный DHCP-сервер. Просмотреть текущие настройки DHCP можно командой DhcpGet.

Изменим текущие настройки под новую 192.168.100.0/24 подсеть (DhcpSet).

Я задал диапазон выдаваемых адресов с 192.168.100.10 по 192.168.100.100, маску подсети, шлюз и DNS-сервера. Lease Lim­it (срок аренды) оставил по умолчанию.

Новые настройки DHCP теперь выглядят так.

Если сейчас подключиться к VPN, открыть командную строку Win­dows и выполнить команду ipcon­fig, то можно увидеть следующую картину.

Компьютер теперь имеет адрес 192.168.100.10, шлюзом выступает 192.168.100.1, сеть называется "myvpn". Как и было задано при настройке.

DHCP-сервер можно отключить, команда DhcpDis­able.

Если забыть включить DHCP, то адреса клиентам выдаваться не будут, но клиент все равно будет подключен к серверу. При этом трафик будет идти с вашего основного адреса. Невнимательный пользователь будет уверен что скрывает свой IP, но на самом деле это не так. По умолчанию DHCP включен всегда и лучше его не трогать.

Отключение SecureNAT

Для выключения Secure­NAT команда Secure­Nat­Dis­able.

Отключенный Secure­NAT.

Local Bridge

Local Bridge полностью отличается от Secure­NAT. Этому режиму требуется поддержка TUN/TAP устройств, поэтому его можно использовать не на всех VPS/VDS, а только на имеющих возможность их загрузки. Кроме того, вся настройка Local Bridge, от начала и до конца, делается ручками.

Плюсами Local Bridge являются более высокая скорость, надежность и безопасность.

Local Bridge соединяет хаб с физическим или tap-адаптером. Маршрутизация трафика происходит в ядре системы с помощью netfilter/iptables.

DHCP для Local Bridge

Local Bridge не имеет своего DHCP сервера, поэтому приходится устанавливать еще и DHCP сервера. В Cen­tOS устанавливают dhcp, в Ubuntu/Debian устанавливают isc-dhcp-serv­er.

Установим dhcp для Cen­tOS.

Установим isc-dhcp-serv­er для Ubuntu/Debian.

Отредактируем файл настроек dhcp-сервера, он одинаков везде.

Содержимое файла dhcpd.conf.

Если вы прочитали про сетевые настройки Secure­NAT, то скорее всего поняли откуда я взял значения для dhcp-сервера, так как подсеть одинакова для обоих режимов.

Исходя из адреса дефолтной подсети (192.168.30.0/24), я задал следующие значения:

  • domain-name - имя сети, может быть любым.
  • domain-name-servers - адреса DNS, можно указать адрес шлюза или прямой адрес предпочитаемого сервера. (192.168.30.1)
  • default-lease-time - срок аренды ip-адреса клиентом, если клиент самостоятельно не указывает срок аренды адреса.
  • max-lease-time - максимальный срок аренды адреса клиентом.
  • sub­net - адрес подсети (192.168.30.0)
  • net­mask - маска подсети (255.255.255.0)
  • range - диапазон адресов для выдачи (от 192.168.30.10 и до 192.168.30.200)
  • option routers - шлюз (192.168.30.1)

Значения "lease-time" задаются в секундах, я задал 12 и 24 часа соответственно. Если выставить маленькие значения, то по истечению срока соединение будет разрываться, что не есть хорошо при длительной работе.

Сделаем интерфейс tap_vpn шлюзом подсети, назначив ему адрес 192.168.30.1

Проверим интерфейс.

Запустим dhcp-сервер.

Проверим как работает в Cen­tOS (sys­tem­ctl sta­tus dhcpd)

Проверим как работает в Debian/Ubuntu (sys­tem­ctl sta­tus isc-dhcp-serv­er)

Автозапуск DHCP при старте vpnserver

Сделаем загрузку DHCP сервера зависящей от загрузки vpnserv­er. Во первых, чтобы не назначать адрес tap-интерфейса вручную, а, во вторых, чтобы не запускать вручную dhcp-сервер после каждой перезагрузки или включения машины.

Для этого добавим две команды непосредственно в скрипт автозапуска vpnserv­er.

Отредактируем скрипт /etc/init.d/vpnserver.

Приводим содержимое скрипта к следующему виду в Cen­tOS.

Приводим содержимое скрипта к следующему виду в Ubuntu/Debian.

Выполняем sys­tem­ctl dae­mon-reload, чтобы принять изменения в скриптах.

Перезагружаем vpnserv­er или систему.

Сразу после загрузки/перезагрузки проверяем интерфейс и dhcp.

Форвардинг пакетов и iptables

Включим форвардинг пакетов и добавим правила для маршрутизации трафика.

Форвардинг пакетов.

Правила ipt­a­bles.

Если все сделано правильно, можно подключаться и начинать пользоваться собственным VPN. Установка и настройка на этом завершены.

Ответить:

Please enter your comment!
Please enter your name here