Softether vpn gate linux

Softether vpn gate linux

Copy raw contents

Copy raw contents

SoftEther Linux Howto

This how-to is written to support those who wish to connect to a SoftEther VPN established by the Advanced Media Workflow Association (AMWA). This VPN has been established to provide remote connectivity in support of AMWA workshops. The purpose of these workshops is to further the development of technical specifications issues by the AMWA.

This how-to is written as a quick guide for those who want to install and configure the SoftEther VPN Client on a Linux system. Specifically, these instructions were written for an Intel NUC running Kali Linux. These instructions were based upon SoftEther documentation and an article found at https://www.cactusvpn.com/tutorials/how-to-set-up-softether-vpn-client-on-linux/.

  • Download the appropriate version of the VPN client from www.softether.org
  • Run the .install.sh script that is provided with the client
  • Start the VPN Client vpnclient start

Configure a VPN account

The vpncmd utility is used to configure accounts and to connect to a VPN. This utility connects to the VPN client running on your local machine.

Run vpncmd and choose option 2. Press ENTER to connect to the client running on your local machine.

check to test your installation.

NicCreate vpn_se to create a virtual VPN interface on your computer

AccountCreate [accountName] to create your account. You will need the following information:

  • User Name (You will need to contact the AMWA to obtain login credentials)
  • Account Name (this may be any name you choose)
  • VPN server URL (The current AMWA URL is amwa-nmos-vpn.softether.net )
  • port number for the VPN server. In the case of the AMWA VPN it is 443
  • Virtual hub to connect to (For AMWA use NMOS-VPN )
  • Virtual Network Adapter Name (You created this earlier — vpn_se )

Note: during account creation, when asked, Desination VPN Server Host Name and Port Number: , enter the information as follows: amwa-nmos-vpn.softether.net:443

AccountPassword [accountName] to enter your VPN account password. Specify Standard when requested.

Connect to SoftEther VPN

  • Run vpncmd if you have not already done so. Select option 2 and press ENTER to connect to your local VPN Client.
  • AccountConnect [accountName] to connect to the VPN server
  • AccountList shows connection settings. Look for Connected under Status
  • Enter ^D to exit the vpncmd utility

Modify Route Table

Now that you are connected to the VPN and have an IP address, you must modify your IP route table to send traffic through the VPN. There are two procedures below. The first will route ALL traffic from your computer through the VPN, including traffic destined for the Internet. The second will route traffic from your computer throught the VPN and on to the VPN network, but leaves your default route in place so that traffic destined for the Internet still uses your local network interface.

Route ALL traffic from your computer through the VPN

N.B. you will lose connectivity to local devices on your network such as printers. (I am short on time — if anyone using this can submit a PR with commands to restore routing for local devices, please do so.)

  • cat /proc/sys/net/ipv4/ip_forward to check if IP Forwarding is enabled. If ‘1’ is returned then skip the next step

(You may need to sudo su to perform some of the next commands)

  • echo 1 > /proc/sys/net/ipv4/ip_forward
  • dhclient vpn_vpn_se to obtain an IP address from the VPN DHCP server
  • ip a to show the vpn_se interface and the assigned IPv4 address
  • netstat -rn to show the route table prior to modification.

The following assumes that your local network is 192.168.0.0/24 and your default gateway is 192.168.0.1, and that the IP address of the remote VPN server is 15.48.223.55.

  • sudo ip route add 15.48.223.55/32 via 192.168.0.1
  • Delete the old default route. ip route del default via 192.168.0.1 Review the new route table with netstat -rn

Ping google’s nameservers at 8.8.8.8 ping 8.8.8.8 -c4

Check your public IP address wget -qO- http://ipecho.net/plain ; echo

Route only VPN traffic through the VPN interface

  • cat /proc/sys/net/ipv4/ip_forward to check if IP Forwarding is enabled. If ‘1’ is returned then skip the next step

(You may need to sudo su to perform some of the next commands)

echo 1 > /proc/sys/net/ipv4/ip_forward

dhclient vpn_vpn_se to obtain an IP address from the VPN DHCP server

ip a to show the vpn_se interface and the assigned IPv4 address

netstat -rn to show the route table prior to modification The following assumes that your local network is 192.168.0.0/24 and your default gateway is 192.168.0.1, and that the IP address of the remote VPN server is 15.48.223.55.

Delete the default route added by the dhclient command you issued earlier. sudo ip route del default via 192.168.0.1

Review the new route table with netstat -rn

Ping google’s nameservers at 8.8.8.8 ping 8.8.8.8 -c4

Ping the remote gateway at 192.168.0.1 ping 192.168.0.1 -c4

Check your public IP address wget -qO- http://ipecho.net/plain ; echo

Route issues on cloud computers

Be aware that the dhclient command will install a deafult route to the gateway received via DHCP over the VPN.
If you are using a cloud Linux instance, you will loose your ssh (or other) Internet connectivity to your cloud Linux instance.

Читайте также:  Europa universalis 4 для mac os

In such as case, you may want to create a script with the following commands:

Where X.Y.Z.J is the IP address of your cloud Linux instance Internet gateway, and eth0 is the Internet facing network interface.

Use netstat -nr to ensure that the desired route to the VPN subnet IPs is properly being routed over the VPN interface vpn_vpn_se .

Disconnect from VPN and restore route table

Источник

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

  • Hostname of IP Address of Destination:
  • Specify Virtual Hub Name:

Скачиваем и устанавливаем SoftEther VPN Server Manager for Windows

С этой страницы выбрав нужную платформу и битность

Выбор SoftEther VPN Server Manager

Устанавливаем данный клиент

Выбираем только компонент SoftEther VPN Server Manager (Admin Tools Only)

Выбор нужного компонента

Запускаем SoftEther VPN Server Manager

Кликаем по кнопке New Setting и заполняем поля:

  • Имя соединения (Setting Name)
  • Адрес (host name)
  • Пароль, который мы установили (Password)

Нажимаем ОК и соединяемся
Попадаем в мастер первоначальной настройки:

Жмем Next получаем окно с предупреждением:

Текущие настройки этого VPN-сервера или VPN-моста будут инициализированы.

Нажимаем Да, и появляется окошко с предложением создать виртуальный хаб (Virtual Hub), задаем ему имя и нажимаем ОК

Следующим окном будет Dynamic DNS Function

Нажимаем Exit и попадаем в настройку IPsec

Включаем lt2tp/IPsec и устанавливаем IPsec Pre-Shared key

Жмем ОК и попадаем в настройку Azure
Я выключаю данную настройку, т.к. имею прямой IP адрес

Нажимаем OK и попадаем в мастер создания пользователя и установки локального моста
Создаем пользователя или пользователей (Create Users)
Локальный бридж не трогаем!
Нажимаем ОК, нажимаем Close на предыдущем мастере.
Попадаем наконец в администрирование VPN сервера:
Где нам доступны для редактирования все настройки VPN сервера.
Кликаем два раза по виртуальному хабу MY_VPN, чтобы попасть в настройки хаба.
Где нас интересует настройка Virtual NAT and Virtual DHCP Server (Secure NAT)
Кто-то должен раздавать адреса VPN клиентам и пробрасывать в локальную сеть.
В обсуждениях SoftEther VPN много жалоб, что Secure NAT требователен к ресурсам.
У меня было две успешные инсталляции с использованием Secure NAT, правда под FreeBSD.
Никаких проблем с ресурсами у меня не было, при чем одна машина VPS (WMVare ESXi) с минимальной конфигурацией.

Включаем Secure NAT

Настраиваем VPN клиент как l2tp/IPsek не забыв указать ключевую фразу

Подключаемся
На этом хотел сказать все:)

Пара слов о безопасности

Во-первых, в windows клиентах (в свойствах сети, IPv4) отключайте функцию «Использовать основной шлюз в удаленной сети».
Чтобы клиентам через VPN отдавались только локальные ресурсы.

Во-вторых, как правило компьютеры удаленных пользователей являются их личным материальном активом:)
Со всем зоопарком программ в том числе и антивирусного ПО.
Если для удаленных пользователей требуется только подключение к терминальному серверу, закройте остальные порты.
В первую очередь закройте SMB протокол.
SoftEther VPN имеет на свой борту firewall, настраивается в настройке Virtual Hub —> Manage Access List

В-третьих, ограничьте пользователя числом одновременных сессий.
Настраивается в политиках учетной записи пользователя.
Будет правильным пользователей закидывать в группы и в группах править политики.

Источник

Настройка 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 для тех, кому лень лопатить много английских букв.

Читайте также:  Какие есть сборки linux

Для начала — установим это чудо. У меня под рукой был 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

# git clone github.com/SoftEtherVPN/SoftEtherVPN.git
# cd SoftEtherVPN\
# ./configure
# make
# checkinstall

— 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:

# vpncmd
vpncmd command — SoftEther VPN Command Line Management Utility
SoftEther VPN Command Line Management Utility (vpncmd command)
Version 4.04 Build 9412 (English)
Compiled 2014/01/15 17:22:14 by yagi at pc25
Copyright (c) SoftEther VPN Project. All Rights Reserved.

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.

VPN Server>hubcreate vpn
HubCreate command — Create New Virtual Hub
Please enter the password. To cancel press the Ctrl+D key.

Можно задать админский пароль для нового хаба, тогда можно будет делегировать администрирование этого хаба другому человеку. А можно для простоты нажать Enter и не делать этого (для этого в дальнейшем есть команда SetHubPassword). После создания хаба мы должны перейти в режим администрирования этого хаба командой Hub vpn. Посмотреть статус хаба можно командой StatusGet. Не буду приводить здесь вывод этой команды, т.к. он длинный и довольно понятный. Хаб можно выключить командой Offline и вернуть обратно командой Online.

Мне понравилась команда SetEnumDeny. Дело в том, что когда в VPN-клиенте вводишь адрес VPN-сервера, он сразу же сдает тебе имена всех виртуальных хабов, зарегенных на сервере, как на картинке. Эта команда запрещает выводить имя данного хаба в списке. Типа небольшой, но бонус к безопасности.

Читайте также:  Виртуальный образ диска linux

Ладно, займемся более интересными вещами. Создаем пользователя командой 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, то выведется список возможных автодополнений:

VPN Server/vpn>secure?
«secure»: The command-name is ambiguous.
The specified command name matches the following multiple commands.
SecureNatDisable — Disable the Virtual NAT and DHCP Server Function (SecureNat Function)
SecureNatEnable — Enable the Virtual NAT and DHCP Server Function (SecureNat Function)
SecureNatHostGet — Get Network Interface Setting of Virtual Host of SecureNAT Function
SecureNatHostSet — Change Network Interface Setting of Virtual Host of SecureNAT Function
SecureNatStatusGet — Get the Operating Status of the Virtual NAT and DHCP Server Function (SecureNat Function)
Please re-specify the command name more strictly.

По умолчанию никакая фильтрация пакетов не применяется, т.е. впн-клиенты могут неограниченно ходить в корпоративную подсеть и пользоваться корпоративным Интернетом, если таковой имеется. При желании можно добавить правила файрволла командой AccessAdd. В качестве критериев файрволла можно указать имя пользователя, MAC и IP адреса источника и назначения, порты, протоколы и флаги TCP. И самое главное, что это работает, я проверял! Учтите еще, что правила фильтрации разных виртуальных хабов никак не влияют друг на друга, что позволяет гибко управлять доступом к корпоративной среде.

В качестве приятного бонуса доступен Dynamic DNS от softether.net. Свой VPN-сервер можно зарегить в DDNS командой DynamicDnsSetHostname, после чего нужно ввести желаемое имя домена 3-го уровня. Получится что-то вроде myvpn.softether.net. Согласитесь, мелочь, а приятно и притом совершенно бесплатно!

Поговорим о протоколах VPN. Я протестил L2TP/IPsec и OpenVPN. Настройка двух, казалось бы, таких разных протоколов оказалась довольно простой. OpenVPN включен изначально на порту 1194 UDP, но чтобы оно заработало нужно в режиме глобального сервера (команда Hub без параметров) ввести IPsecEnable, после чего ответить на ряд вопросов на предмет того, хотим ли мы включить голый L2TP, шифрованный L2TP/IPsec, а также L2TPv3/IPsec. Самые главные вопросы — это Pre-shared key (PSK) для IPsec и Default Hub. С PSK все понятно, это ключ, который необходимо ввести на клиентском устройстве, а вот про Default Hub расскажу поподробнее.

Дело в том, что тот же 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 под гигабит. В общем, надо тестить! На данном этапе мне эта штукенция очень даже нравится.

Источник

Оцените статью