Установка и подключение SoftEther VPN на Linux

1. Скачивание подходящего SoftEther VPN-клиента для определенной версии Linux
2. Установка SoftEther VPN-клиента на Linux
3. Настройка SoftEther VPN-клиента на Linux
4. Подключение к SoftEther VPN на Linux и настройка маршрутизации
5. Отключение от SoftEther VPN на Linux
6. Определение IP входящего сервера VPN-цепи в Linux
Команды начинающиеся с приглашения # выполняются от root-пользователя, приглашение $ означает выполнение от обычного пользователя.

1. Скачивание

Скачайте дистирибутив SoftEther VPN-клиента под свою архитектуру с официального сайта, либо с репозитория проекта на GitHub. Например, для Linux x64 скачать SoftEther VPN-клиент через терминал можно следующим образом.
$ wget https://github.com/SoftEtherVPN/SoftEtherVPN_Stable/releases/download/v4.29-9680-rtm/softether-vpnclient-v4.29-9680-rtm-2019.02.28-linux-x64-64bit.tar.gz
Далее следует распаковать скачанный архив, консольная команда для этого будет иметь следующий вид.
$ tar -xvf softether-vpnclient-v4.29-9680-rtm-2019.02.28-linux-x64-64bit.tar.gz
Все действия описанные ниже производятся только в терминале (консоли) Linux.

2. Установка

Для установки перейдите в директорию распакованного на предыдущем шаге архива VPN-клиента.
$ cd vpnclient
В директории будет находиться скрипт (.install.sh) для установки VPN-клиента, который и надо будет запустить. Название файла-скрипта начинается с точки (.), поэтому графический менеджер файлов вероятнее всего не увидит его. Для того чтобы убедиться, что скрипт действительно присутствует в директории выполните команду ls -lah.
$ ls -lah
итого 1,4M
drwxrwxr-x. 4 user user 4,0K фев 28 12:41 .
drwxr-xr-x. 3 user user 4,0K июн 26 03:10 ..
-rwxrwxr-x. 1 user user 82 фев 28 12:41 Authors.txt
drwxrwxr-x. 2 user user 4,0K фев 28 12:41 code
-rwxrwxr-x. 1 user user 1,3M фев 28 12:41 hamcore.se2
-rwxrwxr-x. 1 user user 1,5K фев 28 12:41 .install.sh
drwxrwxr-x. 2 user user 4,0K фев 28 12:41 lib
-rwxrwxr-x. 1 user user 3,1K фев 28 12:41 Makefile
-rwxrwxr-x. 1 user user 31K фев 28 12:41 ReadMeFirst_Important_Notices_cn.txt
-rwxrwxr-x. 1 user user 36K фев 28 12:41 ReadMeFirst_Important_Notices_en.txt
-rwxrwxr-x. 1 user user 50K фев 28 12:41 ReadMeFirst_Important_Notices_ja.txt
-rwxrwxr-x. 1 user user 3,6K фев 28 12:41 ReadMeFirst_License.txt
Убедившись, что скрипт присутствует, запустите его. На вопросы про лицензию следует отвечать утвердительно (1. Yes).
$ ./.install.sh
--------------------------------------------------------------------
SoftEther VPN Client (Ver 4.29, Build 9680, Intel x64 / AMD64) for Linux Install Utility
Copyright (c) SoftEther Project at University of Tsukuba, Japan. All Rights Reserved.
--------------------------------------------------------------------
Do you want to read the License Agreement for this software ?
1. Yes
2. No
Please choose one of above number:
1
Copyright (c) all contributors on SoftEther VPN project in GitHub.
Copyright (c) Daiyuu Nobori, SoftEther Project at University of Tsukuba, and SoftEther Corporation.
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and limitations under the License.
DISCLAIMER
==========
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
THIS SOFTWARE IS DEVELOPED IN JAPAN, AND DISTRIBUTED FROM JAPAN, UNDER JAPANESE LAWS. YOU MUST AGREE IN ADVANCE TO USE, COPY, MODIFY, MERGE, PUBLISH, DISTRIBUTE, SUBLICENSE, AND/OR SELL COPIES OF THIS SOFTWARE, THAT ANY JURIDICAL DISPUTES WHICH ARE CONCERNED TO THIS SOFTWARE OR ITS CONTENTS, AGAINST US (SOFTETHER PROJECT, SOFTETHER CORPORATION, DAIYUU NOBORI OR OTHER SUPPLIERS), OR ANY JURIDICAL DISPUTES AGAINST US WHICH ARE CAUSED BY ANY KIND OF USING, COPYING, MODIFYING, MERGING, PUBLISHING, DISTRIBUTING, SUBLICENSING, AND/OR SELLING COPIES OF THIS SOFTWARE SHALL BE REGARDED AS BE CONSTRUED AND CONTROLLED BY JAPANESE LAWS, AND YOU MUST FURTHER CONSENT TO EXCLUSIVE JURISDICTION AND VENUE IN THE COURTS SITTING IN TOKYO, JAPAN. YOU MUST WAIVE ALL DEFENSES OF LACK OF PERSONAL JURISDICTION AND FORUM NON CONVENIENS. PROCESS MAY BE SERVED ON EITHER PARTY IN THE MANNER AUTHORIZED BY APPLICABLE LAW OR COURT RULE.
USE ONLY IN JAPAN. DO NOT USE THIS SOFTWARE IN ANOTHER COUNTRY UNLESS YOU HAVE A CONFIRMATION THAT THIS SOFTWARE DOES NOT VIOLATE ANY CRIMINAL LAWS OR CIVIL RIGHTS IN THAT PARTICULAR COUNTRY. USING THIS SOFTWARE IN OTHER COUNTRIES IS COMPLETELY AT YOUR OWN RISK. THE SOFTETHER VPN PROJECT HAS DEVELOPED AND DISTRIBUTED THIS SOFTWARE TO COMPLY ONLY WITH THE JAPANESE LAWS AND EXISTING CIVIL RIGHTS INCLUDING PATENTS WHICH ARE SUBJECTS APPLY IN JAPAN. OTHER COUNTRIES' LAWS OR CIVIL RIGHTS ARE NONE OF OUR CONCERNS NOR RESPONSIBILITIES. WE HAVE NEVER INVESTIGATED ANY CRIMINAL REGULATIONS, CIVIL LAWS OR INTELLECTUAL PROPERTY RIGHTS INCLUDING PATENTS IN ANY OF OTHER 200+ COUNTRIES AND TERRITORIES. BY NATURE, THERE ARE 200+ REGIONS IN THE WORLD, WITH DIFFERENT LAWS. IT IS IMPOSSIBLE TO VERIFY EVERY COUNTRIES' LAWS, REGULATIONS AND CIVIL RIGHTS TO MAKE THE SOFTWARE COMPLY WITH ALL COUNTRIES' LAWS BY THE PROJECT. EVEN IF YOU WILL BE SUED BY A PRIVATE ENTITY OR BE DAMAGED BY A PUBLIC SERVANT IN YOUR COUNTRY, THE DEVELOPERS OF THIS SOFTWARE WILL NEVER BE LIABLE TO RECOVER OR COMPENSATE SUCH DAMAGES, CRIMINAL OR CIVIL
RESPONSIBILITIES. NOTE THAT THIS LINE IS NOT LICENSE RESTRICTION BUT JUST A STATEMENT FOR WARNING AND DISCLAIMER.
READ AND UNDERSTAND THE 'src/WARNING.TXT' FILE BEFORE USING THIS SOFTWARE. SOME SOFTWARE PROGRAMS FROM THIRD PARTIES ARE INCLUDED ON THIS SOFTWARE WITH LICENSE CONDITIONS WHICH ARE DESCRIBED ON THE 'src/THIRD_PARTY.TXT' FILE.
Did you read and understand the License Agreement ?
(If you couldn't read above text, Please read 'ReadMeFirst_License.txt'
file with any text editor.)
1. Yes
2. No
Please choose one of above number:
1
Did you agree the License Agreement ?
1. Agree
2. Do Not Agree
Please choose one of above number:
1
Preparing SoftEther VPN Client...
ranlib lib/libcharset.a
ranlib lib/libcrypto.a
ranlib lib/libedit.a
ranlib lib/libiconv.a
ranlib lib/libintelaes.a
ranlib lib/libncurses.a
ranlib lib/libssl.a
ranlib lib/libz.a
ranlib code/vpnclient.a
gcc code/vpnclient.a -no-pie -O2 -fsigned-char -pthread -m64 -lm -ldl -lrt -lpthread -L./ lib/libssl.a lib/libcrypto.a lib/libiconv.a lib/libcharset.a lib/libedit.a lib/libncurses.a lib/libz.a lib/libintelaes.a -o vpnclient
ranlib code/vpncmd.a
gcc code/vpncmd.a -no-pie -O2 -fsigned-char -pthread -m64 -lm -ldl -lrt -lpthread -L./ lib/libssl.a lib/libcrypto.a lib/libiconv.a lib/libcharset.a lib/libedit.a lib/libncurses.a lib/libz.a lib/libintelaes.a -o vpncmd
--------------------------------------------------------------------
The preparation of SoftEther VPN Client is completed !
*** How to switch the display language of the SoftEther VPN Client Service ***
SoftEther VPN Client supports the following languages:
- Japanese
- English
- Simplified Chinese
You can choose your prefered language of SoftEther VPN Client at any time.
To switch the current language, open and edit the 'lang.config' file.
*** How to start the SoftEther VPN Client Service ***
Please execute './vpnclient start' to run the SoftEther VPN Client Background Service.
And please execute './vpncmd' to run the SoftEther VPN Command-Line Utility to configure SoftEther VPN Client.
Of course, you can use the VPN Server Manager GUI Application for Windows / Mac OS X on the other Windows / Mac OS X computers in order to configure the SoftEther VPN Client remotely.
*** For Windows users ***
You can download the SoftEther VPN Server Manager for Windows
from the http://www.softether-download.com/ web site.
This manager application helps you to completely and easily manage the VPN server services running in remote hosts.
*** For Mac OS X users ***
In April 2016 we released the SoftEther VPN Server Manager for Mac OS X.
You can download it from the http://www.softether-download.com/ web site.
VPN Server Manager for Mac OS X works perfectly as same as the traditional Windows versions. It helps you to completely and easily manage the VPN server services running in remote hosts.
--------------------------------------------------------------------
Все действия описанные ниже необходимо производить с root-правами.
Для получения root-прав воспользуйтесь командами sudo или su. Например, в десктопных Debian-based дистрибутивах (Ubuntu, Linux Mint и т.д.) для входа под root введите sudo su. В RedHat-based дистрибутивах (RHEL, Fedora, CentOS и т.д.), а также серверных версиях ветки Debian используйте команду su.

3. Настройка

Далее следует запустить VPN-клиент.
# ./vpnclient start
The SoftEther VPN Client service has been started.
После успешного запуска VPN-клиента, можно перейти к импорту конфигураций. Для этого скачайте архив со всеми конфигурациями и распакуйте его.
# unzip all.zip
Не обязательно скачивать архив со всеми конфигурациями SoftEther VPN, возможно также выбрать и скачать конкретные конфиги (Single-цепи и Double-цепи).
Далее импортируйте один или несколько выбранных вами конфигураций. Например, для импорта конфигурации цепи DoubleSSL_PL1_RU1 введите следующую команду.
# ./vpncmd localhost /CLIENT /CMD AccountImport DoubleSSL_PL1_RU1.vpn
Посмотреть все импортированные конфигурации (аккаунты) и их статус можно командой ниже.
./vpncmd localhost /CLIENT /CMD AccountList
После успешного импорта конфигурации следует задать имя пользователя и пароль, который будет использоваться при авторизации VPN-сервером. В примере ниже urusername и urpassword следует заменить на, соответственно, ваше имя пользователя и ваш пароль.
Имя пользователя и пароль полностью совпадают с именем пользователя и паролем от Кабинета DeepWebVPN.
# ./vpncmd localhost /CLIENT /CMD AccountUsernameSet double-ssl-pl1-ru1 /USERNAME:urusername
# ./vpncmd localhost /CLIENT /CMD AccountPassword double-ssl-pl1-ru1 /PASSWORD:urpassword /TYPE:radius
Заново использовав эти команды с новым именем пользователя и/или паролем можно изменить имя пользователя или пароль для соответствующей VPN-цепи.

4. Подключение и настройка маршрутизации

Для подключения к VPN-цепи необходимо использовать следующую команду.
# ./vpncmd localhost /CLIENT /CMD AccountConnect double-ssl-pl1-ru1
Через несколько секунд следует проверить успешно ли завершилось подключение к VPN-цепи, успешное соединение изменит статус на Connected.
# ./vpncmd localhost /CLIENT /CMD AccountList
vpncmd command - SoftEther VPN Command Line Management Utility
SoftEther VPN Command Line Management Utility (vpncmd command)
Version 4.29 Build 9680 (English)
Compiled 2019/02/28 19:22:54 by yagi at pc33
Copyright (c) SoftEther VPN Project. All Rights Reserved.
Connected to VPN Client "localhost".
VPN Client>AccountList
AccountList command - Get List of VPN Connection Settings
Item |Value
----------------------------+---------------------------------------------------
VPN Connection Setting Name |double-ssl-pl1-ru1
Status |Connected
VPN Server Hostname |XX.XX.XX.XX/tcp:443 (Direct TCP/IP Connection)
Virtual Hub |double-ssl-pl1-ru1
Virtual Network Adapter Name|VPN
The command completed successfully.
В случае успешного подключения следующим шагом предстоит настроить маршрутизацию. Сперва следует включить IP forward следующими командами.
# echo 1 > /proc/sys/net/ipv4/ip_forward
# echo net.ipv4.ip_forward=1 >> /etc/sysctl.conf && sysctl -p
Далее задайте IP-адрес VPN-соединению.
# dhclient vpn_vpn
Теперь необходимо узнать текущий шлюз по умолчанию (в примере ниже он на второй строке и равен 192.168.0.1). Текущий шлюз по умолчанию обычно принадлежит интерфейсу соединения с внешней сетью (интернетом), в примере это wlan0.
# netstat -rn
Kernel IP routing table
Destination Gateway Genmask Flags MSS Window irtt Iface
0.0.0.0 192.168.244.1 0.0.0.0 UG 0 0 0 vpn_vpn
0.0.0.0 192.168.0.1 0.0.0.0 UG 0 0 0 wlan0
192.168.0.0 0.0.0.0 255.255.255.0 U 0 0 0 wlan0
192.168.244.0 0.0.0.0 255.255.255.0 U 0 0 0 vpn_vpn
Добавьте новое правило маршрутизации, где замените XX.XX.XX.XX на IP-адрес первого сервера в VPN-цепи (см. п. 6), а 192.168.0.1 это текущий шлюз по умолчанию.
# ip route add XX.XX.XX.XX via 192.168.0.1
Убедитесь, что в правилах маршрутизации присутствует default via 192.168.234.1 dev vpn_vpn для Single-цепи или default via 192.168.244.1 dev vpn_vpn для Double-цепи (данный пример Double-цепь).
# ip route show
default via 192.168.244.1 dev vpn_vpn
default via 192.168.0.1 dev wlan0 proto dhcp metric 600
XX.XX.XX.XX via 192.168.0.1 dev wlan0
192.168.244.0/24 dev vpn_vpn proto kernel scope link src 192.168.244.22
Важно помнить, что для Single-цепи шлюз 192.168.234.1, для Double-цепи 192.168.244.1. В примере выше отображено правило для Double-цепи.
Если таковое правило отсутствует, то добавьте его.
# ip route add default via 192.168.244.1 dev vpn_vpn
Теперь следует удалить старый шлюз.
# ip route del default via 192.168.0.1
После успешного подключения не забудьте настроить DNS.

5. Отключение

Для отключения достаточно выключить VPN-клиент следующей командой.
# ./vpnclient stop
Затем удалите правило маршрутизации через VPN-сервер и верните удаленный на предыдущем шаге старый шлюз по умолчанию (192.168.0.1 в примере ниже). Не забудьте заменить XX.XX.XX.XX на IP-адрес первого сервера в VPN-цепи (см. п. 6).
# ip route del XX.XX.XX.XX
# ip route add default via 192.168.0.1

6. Определение IP-адреса входящего сервера VPN-цепи

Для определения адреса входящего VPN-сервера откройте SoftEther-конфиг как текстовый файл в терминале (утилитой cat) или через любой текстовый редактор. В строке параметра string Hostname будет содержаться домен, который указывает на IP-адрес входящего сервера VPN-цепи.
# cat DoubleSSL_PL1_RU1.vpn | grep Hostname
string Hostname the-sample.ip.of-warsaw-server.pl1.random-domain.com/tcp
В примере выше домен, указывающий на сервер PL1, имеет вид the-sample.ip.of-warsaw-server.pl1.random-domain.com. Если подставить этот домен в качестве аргумента утилите ping, в терминале отобразится IP-адрес куда домен припаркован. Этот IP и будет являться искомым адресом.
# ping the-sample.ip.of-warsaw-server.pl1.random-domain.com
PING the-sample.ip.of-warsaw-server.pl1.random-domain.com (XX.XX.XX.XX): 56 data bytes