Как настроить многопротокольный VPN-сервер с помощью SoftEther
Введение
В этой статье объясняется, как установить и настроить многопротокольный VPN-сервер с помощью пакета SoftEther. Мы включаем и настраиваем OpenVPN и L2TP через серверы IPSec и SSTP VPN в Linux.
Что такое софтэфир
SoftEther VPN — одно из самых мощных и простых в использовании многопротокольных VPN-приложений, созданное хорошими ребятами из Университета Цукуба, Япония. Он работает на Windows, Linux, Mac, FreeBSD и Solaris, является бесплатным и открытым исходным кодом. Вы можете бесплатно использовать SoftEther в личных или коммерческих целях.
Шаг 1: Создайте виртуальный сервер
Во-первых, вам нужно создать дроплет DigitalOcean. Как упоминалось на веб-сайте SoftEther, SoftEther будет работать практически со всеми дистрибутивами Linux с ядром версии 2.4 или выше; однако рекомендуется выбрать один из следующих дистрибутивов: CentOS, Fedora или Red Hat Enterprise Linux.
Лично я пробовал его на Ubuntu, CentOS и Fedora, как на 32-х, так и на 64-битных версиях, и он работал отлично.
Шаг 2: Обновите серверное программное обеспечение
Используя приведенную ниже команду, обновите и обновите пакеты серверного программного обеспечения до последней версии:
Дебиан/Убунту:
apt-get update && apt-get upgrade
ЦенОС/Федора:
yum upgrade
Шаг 3: Скачайте SoftEther
Вы можете загрузить последний пакет сервера SoftEther для Linux с их веб-сайта:
Скачать SoftEther
К сожалению, на данный момент нет возможности получить последнюю версию через менеджеры пакетов (или даже с помощью одного URL-адреса). Поэтому вам нужно просмотреть их веб-сайт с помощью настольного браузера, чтобы загрузить пакет. Есть несколько способов справиться с этим: сначала просмотрите их веб-сайт на своем компьютере, а затем, в зависимости от конфигурации вашего сервера (ОС, x86/x64 и т. д.), найдите ссылку на соответствующий пакет, а затем используйте wget для загрузки. пакет на свой сервер. В качестве альтернативы вы можете использовать веб-браузер на базе терминала, такой как lynx, для просмотра веб-сайта SoftEther и загрузки нужного пакета.
Вот как это сделать с помощью lynx:
Сначала установите lynx на свой сервер:
Дебиан/Убунту:
apt-get install lynx -y
ЦенОС/Федора:
yum install lynx -y
Теперь с помощью приведенной ниже команды просмотрите веб-страницу загрузки SoftEther:
lynx http://www.softether-download.com/files/softether/
Эта страница содержит все доступные версии SoftEther. Выберите нужную версию (в этом руководстве мы используем v2.00-9387-rtm-2013.09.16), а затем нажмите Enter, чтобы перейти по ссылке. Теперь выберите Linux и на следующей странице выберите SoftEther VPN Server. В зависимости от аппаратной архитектуры вашего сервера выберите пакет; 32-битные — Intel x86 и 64-битные — Intel x64 или AMD64 работают для 32-битных или 64-битных дроплетов DigitalOcean. Наконец, загрузите tar-файл со следующей страницы, нажав клавишу «D» на ссылке, и выберите «Сохранить на диск», когда Lynx спросит. После сохранения файла мы можем нажать «Q», чтобы выйти из Lynx и продолжить установку.
Шаг 4: Установите и настройте SoftEther
Теперь нам нужно извлечь пакет, который мы получили со страницы загрузки SoftEther, и скомпилировать его. Пакет, используемый в этом руководстве, называется softether-vpnserver-v2.00-9387-rtm-2013.09.16-linux-x86-32bit.tar.gz, поэтому мы извлечем его с помощью следующей команды:
tar xzvf softether-vpnserver-v2.00-9387-rtm-2013.09.16-linux-x86-32bit.tar.gz
После его распаковки в рабочей папке будет создан каталог с именем vpnserver. Для компиляции SoftEther на вашем сервере должны быть установлены следующие инструменты и пакеты:
make, gccbinutils (gcc), libc (glibc), zlib, openssl, readline и ncurses
Убедитесь, что они установлены. Вы можете установить все пакеты, необходимые для сборки SoftEther, используя следующую команду:
Дебиан/Убунту:
apt-get install build-essential -y
ЦенОС/Федора:
yum groupinstall "Development Tools"
Примечание. В Fedora я обнаружил, что пакет gcc не устанавливается с помощью приведенной выше команды, поэтому вам нужно установить его вручную с помощью yum install gcc.
Теперь, когда у нас установлены все необходимые пакеты, мы можем скомпилировать SoftEther с помощью следующей команды:
Сначала \cd в директорию vpnserver:
cd vpnserver
А теперь запустите make, чтобы скомпилировать SoftEther в исполняемый файл:
make
SoftEther попросит вас прочитать и согласиться с лицензионным соглашением. Выберите 1, чтобы прочитать соглашение, еще раз, чтобы подтвердить прочтение, и, наконец, согласиться с лицензионным соглашением.
SoftEther теперь скомпилирован и преобразован в исполняемые файлы (vpnserver и vpncmd). Если процесс завершается сбоем, проверьте, установлены ли все необходимые пакеты.
Теперь, когда SoftEther скомпилирован, мы можем переместить каталог vpnserver в другое место, здесь мы перемещаем его в usr/local:
cd ..
mv vpnserver /usr/local
cd /usr/local/vpnserver/
А затем измените права доступа к файлам, чтобы защитить их:
chmod 600 *
chmod 700 vpnserver
chmod 700 vpncmd
Если вы хотите, чтобы SoftEther запускался как служба при запуске, создайте файл с именем vpnserver в каталоге /etc/init.d и измените его на следующее:
Сначала создайте и откройте файл с помощью vi
или nano
:
vi /etc/init.d/vpnserver
И вставьте в файл следующее:
#!/bin/sh
# chkconfig: 2345 99 01
# description: SoftEther VPN Server
DAEMON=/usr/local/vpnserver/vpnserver
LOCK=/var/lock/subsys/vpnserver
test -x $DAEMON || exit 0
case "$1" in
start)
$DAEMON start
touch $LOCK
;;
stop)
$DAEMON stop
rm $LOCK
;;
restart)
$DAEMON stop
sleep 3
$DAEMON start
;;
*)
echo "Usage: $0 {start|stop|restart}"
exit 1
esac
exit 0
Наконец, сохраните и закройте файл, нажав esc и набрав: wq, чтобы закрыть vim.
Мы должны создать каталог в /var/lock/subsys, если он не существует:
mkdir /var/lock/subsys
Теперь измените разрешение для сценария запуска и запустите vpnserver с помощью команды ниже:
chmod 755 /etc/init.d/vpnserver && /etc/init.d/vpnserver start
Используйте приведенную ниже команду, чтобы она запускалась при запуске:
Дебиан/Убунту:
update-rc.d vpnserver defaults
ЦенОС/Федора:
chkconfig --add vpnserver
Теперь SoftEther VPN Server установлен и настроен для запуска при запуске. Наконец, мы должны проверить, работает ли VPN-сервер:
cd /usr/local/vpnserver
./vpncmd
Теперь нажмите 3, чтобы выбрать «Использовать инструменты VPN», а затем введите:
check
Если все проверки пройдены, ваш сервер готов стать сервером SoftEther VPN, и вы можете перейти к следующему шагу. Введите «выход», чтобы выйти из VPN Tools.
Существует два способа настройки SoftEther VPN-сервера: вы можете использовать диспетчер серверов на базе Windows для удаленного управления и настройки любого количества SoftEther VPN-серверов; или используйте встроенный инструмент vpncmd для настройки ваших серверов.
Вы можете загрузить SoftEther Server Manager для Windows с их веб-сайта и выполнить настройку с помощью графического интерфейса, который он предоставляет, что является предпочтительным способом, если вы являетесь пользователем Windows.
Здесь мы используем vpncmd для настройки нашего VPN-сервера.
Шаг 5: Изменить пароль администратора
Теперь, когда у вас установлен VPN-сервер SoftEther, вам необходимо назначить пароль администратора для использования с SoftEther. Вы можете сделать это с помощью vpncmd, который является инструментом администрирования SoftEther на основе командной строки:
./vpncmd
Нажмите 1, чтобы выбрать «Управление VPN-сервером или VPN-мостом», затем нажмите Enter, не вводя ничего, чтобы подключиться к серверу localhost, и снова нажмите Enter, ничего не вводя, чтобы подключиться к серверу в режиме администратора сервера.
Затем используйте команду ниже, чтобы изменить пароль администратора:
ServerPasswordSet
Шаг 6: Создайте виртуальный концентратор
Чтобы использовать SoftEther, мы должны сначала создать виртуальный концентратор. Здесь в качестве примера мы создаем концентратор с именем VPN, чтобы сделать это, введите команду ниже в инструменте vpncmd:
HubCreate VPN
Далее вам будет предложено ввести пароль администратора для хаба. Этот пароль будет использоваться всякий раз, когда вы не вошли в систему в режиме администратора сервера и хотите управлять этим конкретным хабом.
Теперь выберите виртуальный концентратор, который вы создали с помощью этой команды:
Hub VPN
Шаг 7. Включите SecureNAT
Существует два способа подключения ваших концентраторов к серверной сети: с помощью подключения через локальный мост или с помощью функции SecureNAT.
Вы можете использовать каждый из них по отдельности, но использование этих двух вместе вызовет проблемы.
Здесь мы используем SecureNAT, который очень прост в настройке и хорошо работает в большинстве ситуаций. Вы также можете использовать локальный мост, но тогда вам также необходимо установить и настроить DHCP-сервер.
SecureNAT представляет собой комбинацию виртуального NAT и функции DHCP-сервера. Вы можете включить SecureNAT с помощью команды ниже:
SecureNatEnable
Шаг 8. Создание пользователей и управление ими
Теперь нам нужно создать пользователей для нашего виртуального концентратора, чтобы использовать VPN. Мы можем создавать пользователей для нашего виртуального концентратора с помощью команды UserCreate и просматривать список текущих пользователей с помощью UserList. Пользователей можно добавлять в группы и даже использовать различные типы режимов аутентификации (в том числе: пароль, сертификат, RADIUS, NTLM и т. д.).
С помощью команды UserCreate мы создаем пользователя с именем «test»:
UserCreate test
Тип аутентификации по умолчанию — пароль, но мы можем изменить его на другой тип, используя команды ниже:
UserNTLMSet
для проверки подлинности домена NT
UserPasswordSet
для аутентификации по паролю
UserAnonymousSet
для анонимной аутентификации
UserRadiusSet
для аутентификации RADIUS
UserCertSet
для индивидуальной аутентификации сертификата
UserSignedSet
для проверки подлинности подписанного сертификата
В этом руководстве мы используем пароль в качестве режима аутентификации для нашего тестового пользователя, поэтому с помощью этой команды установите пароль для тестового пользователя:
UserPasswordSet test
Шаг 9: Настройте L2TP/IPSec
Чтобы включить сервер L2TP/IPsec VPN, вы можете использовать следующую команду:
IPsecEnable
После ввода этой команды вам будет предложено настроить функции L2TP-сервера:
Включить функцию сервера L2TP через IPsec: выберите «Да», чтобы включить L2TP VPN через IPSec с шифрованием с предварительным общим ключом. Теперь вы можете устанавливать VPN-подключения к этому серверу с помощью устройств iPhone, Android, Windows и Mac OS X.
Включить функцию Raw L2TP Server: это включит L2TP VPN для клиентов без шифрования IPSec.
Включить функцию сервера EtherIP/L2TPv3 через IPsec: Маршрутизаторы, совместимые с EtherIP/L2TPv3 через IPsec, могут подключаться к этому серверу, включив эту функцию.
Предварительный общий ключ для IPsec: введите предварительный общий ключ для использования с L2TP VPN.
Виртуальный концентратор по умолчанию в случае пропуска концентратора в имени пользователя: пользователи должны указать виртуальный концентратор, к которому они пытаются подключиться, используя имя пользователя@TargetHubName в качестве имени пользователя при подключении. Этот параметр указывает, какой виртуальный концентратор следует использовать, если пользователь не предоставит такую информацию. В нашем случае введите VPN.
Шаг 10: Настройте SSTP/OpenVPN
SoftEther может клонировать функции Microsoft SSTP VPN Server и OpenVPN Server. Но прежде чем мы включим их, мы должны создать самозаверяющий сертификат SSL для нашего сервера. Вы можете использовать команду openssl или SoftEther для создания SSL-сертификата.
Здесь мы используем команду SoftEther ServerCertRegenerate для создания и регистрации самозаверяющего SSL-сертификата для нашего сервера. Аргумент, передаваемый команде, — CN (общее имя), и в нем должно быть указано ваше имя хоста (FQDN) или IP-адрес:
ServerCertRegenerate [CN]
Примечание 1: SoftEther также поставляется со встроенной функцией динамического DNS, которая может назначить уникальное и постоянное имя хоста для вашего сервера. Вы можете использовать имя хоста, назначенное этой функцией, для создания SSL-сертификата и подключения к вашему серверу.
Примечание 2. Если у вас уже есть сертификат SSL или вы создали его с помощью openssl, его можно добавить на сервер с помощью команды ServerCertSet
.
Теперь, когда мы создали сертификат, мы должны загрузить сертификат нашим клиентам и добавить их в качестве доверенных. С помощью приведенной ниже команды мы сохраняем сертификат сервера в файл с именем cert.cer:
ServerCertGet ~/cert.cer
Теперь вы можете загрузить сертификат в свой клиент с помощью FileZilla или любого другого SFTP-клиента.
Чтобы сделать сертификат доверенным в Windows, его необходимо установить в хранилище доверенных корневых центров сертификации. Вот статья, объясняющая, как это сделать (прочитайте часть Установка цепочки сертификатов):
Установка цепочки сертификатов
Теперь, когда мы создали и зарегистрировали SSL-сертификат для нашего сервера, мы можем включить функцию SSTP с помощью этой команды:
SstpEnable yes
И чтобы включить OpenVPN:
OpenVpnEnable yes /PORTS:1194
Примечание. Порт OpenVPN по умолчанию — 1194, но вы можете изменить его на любой другой, изменив часть команды /PORTS:1194 на нужный порт или порты (да, он поддерживает несколько портов).
После включения OpenVPN вы можете загрузить пример файла конфигурации для клиента OpenVPN. Здесь мы создаем образец файла конфигурации OpenVPN и сохраняем его в my_openvpn_config.zip:
OpenVpnMakeConfig ~/my_openvpn_config.zip
Затем вы можете загрузить его с помощью любого SFTP-клиента, такого как FileZilla, и применить его к своим клиентам OpenVPN.
SoftEther также предоставляет специальное программное обеспечение VPN-клиента для Windows и Linux. Он поддерживает специальный протокол SoftEther, называемый Ethernet через HTTPS или SSL-VPN, который является очень мощным. Он использует протокол HTTPS и порт 443 для установления VPN-туннеля, и, поскольку этот порт хорошо известен, почти все брандмауэры, прокси-серверы и NAT могут передавать пакет. Чтобы использовать протокол SSL-VPN, вы должны загрузить и установить SoftEther VPN Client, который можно получить на их веб-сайте.
Шаг 11: Подключение к SoftEther VPN-серверу (конфигурация клиента)
Поскольку SoftEther — это многопротокольный VPN-сервер, существует множество способов подключиться к нему в качестве клиента. Вы можете выбрать любой протокол для установки безопасного соединения с вашим сервером, включая L2TP, SSTP, OpenVPN и эксклюзивный для SoftEther протокол SSL-VPN.
В зависимости от клиентской операционной системы и конфигурации вы можете использовать любой из упомянутых протоколов. Тем не менее, я предпочитаю использовать SSL-VPN, так как он и безопасен, и быстр, а также, как упоминалось ранее, поскольку он использует общий и хорошо известный порт (443 или https-порт), он может проникнуть через большинство брандмауэров.
Здесь мы используем собственное программное обеспечение VPN-клиента SoftEther для подключения к нашему серверу:
Сначала загрузите VPN-клиент SoftEther для Linux с веб-сайта SoftEther. Мы можем загрузить его с помощью браузера lynx. Введите эту команду, чтобы открыть страницу загрузки SoftEther:
lynx http://www.softether-download.com/files/softether/
Затем, как и при загрузке программного обеспечения сервера, выберите последнюю версию (здесь мы использовали v2.00-9387-rtm-2013.09.16). Теперь выберите Linux и на следующей странице выберите SoftEther VPN Client. Теперь, в зависимости от аппаратной архитектуры вашей системы, выберите пакет (32-битный — Intel x86 и 64-битный — Intel x64 или AMD64 работает для 32-битных или 64-битных дроплетов DigitalOcean). Наконец, загрузите tar-файл со следующей страницы, нажав клавишу «D» на ссылке, и выберите «Сохранить на диск», когда Lynx спросит. После сохранения файла нажмите «Q», чтобы выйти из Lynx.
Извлеките только что загруженный tar-файл с помощью этой команды:
tar xzvf softether-vpnclient-v2.00-9387-rtm-2013.09.16-linux-x86-32bit.tar.gz
Примечание. Замените softether-vpnclient-v2.00-9387-rtm-2013.09.16-linux-x86-32bit.tar.gz
на имя загруженного файла.
Теперь, как и в случае с сервером, нам нужно скомпилировать и сделать vpnclient исполняемым файлом, выполнив следующие команды (убедитесь, что на клиенте установлены инструменты разработки, упомянутые в шаге 4):
cd vpnclient
make
Введите 1 три раза, когда вас попросят прочитать и принять Лицензионное соглашение, а затем переместите файлы в другой каталог и измените разрешения:
cd ..
mv vpnclient /usr/local
cd /usr/local/vpnclient/
chmod 600 *
chmod 700 vpnclient
chmod 700 vpncmd
Затем запустите службу VPN-клиента с помощью этой команды:
./vpnclient start
Для настройки нашего клиента мы будем использовать vpncmd
. Пока вы находитесь в каталоге vpnclient, введите эту команду, чтобы запустить инструмент vpncmd
:
./vpncmd
Выберите 2, чтобы войти в режим управления VPN-клиентом, а затем нажмите Enter, чтобы подключиться к только что установленному локальному VPN-клиенту и управлять им.
SoftEther использует виртуальные адаптеры для установления соединения с нашим VPN-сервером. С помощью этой команды создайте виртуальный адаптер с именем myadapter:
NicCreate myadapter
Теперь с помощью этой команды создайте новое VPN-подключение с именем myconnection:
AccountCreate myconnection
Затем введите IP-адрес и номер порта вашего SoftEther VPN-сервера. Номер порта может быть любым портом, который вы установили для прослушивания на своем сервере. По умолчанию SoftEther прослушивает эти четыре порта: 443, 992, 1194, 5555. Вот пример использования порта 443:
Destination VPN Server Host Name and Port Number: [VPN Server IP Address]:443
Примечание. Вместо IP-адреса вы также можете ввести полное доменное имя вашего сервера (FQDN).
Теперь введите имя виртуального концентратора, к которому вы пытаетесь подключиться на своем сервере. В нашем случае это VPN:
Destination Virtual Hub Name: VPN
Затем введите имя пользователя, которого вы создали на своем сервере. Мы создали пользователя с именем test:
Connecting User Name: test
И, наконец, введите имя только что созданного виртуального концентратора:
Used Virtual Network Adapter Name: myadapter
Теперь наше VPN-соединение создано и готово к подключению. Последний шаг — изменить режим аутентификации на пароль, поскольку именно так мы настроили режим аутентификации нашего пользователя на сервере:
AccountPasswordSet myconnection
При появлении запроса введите стандартный метод аутентификации пароля:
Specify standard or radius: standard
Наконец, мы можем подключить наше соединение — используйте эту команду для этого:
AccountConnect myconnection
Вы можете увидеть статус подключения с помощью этой команды:
AccountStatusGet myconnection
Примечание. Чтобы сделать ваше подключение к серверу более безопасным и предотвратить атаки «человек посередине», лучше всего использовать SSL-сертификат для идентификации вашего сервера. Это можно легко сделать с помощью SoftEther. Для этого сначала вы должны загрузить файл сертификата на свой клиент, как описано в шаге 10, а затем с помощью CertAdd добавить его в доверенные сертификаты вашего клиента. Затем с помощью команды AccountServerCertEnable
включите проверку сертификата для вашего VPN-подключения.
Заканчивать
В этой статье мы рассмотрели процесс настройки SoftEther VPN-сервера с помощью vpncmd — утилиты администрирования командной строки, предоставляемой SoftEther. Все, что здесь сделано, также можно сделать с помощью SoftEther Server Manager для Windows, и настроить SoftEther VPN Server с помощью этого инструмента еще проще. Поэтому я рекомендовал вам использовать его, если у вас есть машина с Windows.
Вот и все. Мы успешно установили и настроили многопротокольный VPN-сервер с использованием SoftEther. Теперь клиенты могут подключаться к нашему серверу по L2TP, IPSec, SSTP, OpenVPN и т.д.