На сервере установлен и настроен VPN через программное обеспечение SoftEter VPN Server, настроены клиенты с доступом по сертификату, встала задача настроить доступ клиента из Linux для проброса SMB в Nextcloud
Все документацию по приведенным ниже командам можно найти тут:
https://www.softether.org/4-docs/1-manual/6._Command_Line_Management_Utility_Manual/
Скачиваем SoftEteh VPN for Linux, распаковываем загруженный файл (tar.gz).
Извлечение произвел в домашний каталог ( /root/vpnclient
)
1. Установка
Открываем терминал (Ctrl+Alt+T) и вводим команды:
cd ./vpnclient
Переходи в домашний каталог и вводим “make” принимаем лицензионные соглашения: 1
После завершения команды “make” запускаем установленный VPN клиент из того же каталога:
sudo ./vpnclient start
2. Первоначальная настройка vpn client
Чтобы перейти к конфигурированию клиентской части переходим в командную строку VPN-клиента:
sudo ./vpncmd
Перед настройкой проверим готовность клиента:
Выбираем “3” чтобы попасть в раздел Use of VPN Tools (certificate creation and Network Traffic Speed Test Tool
Выполняем команду “check“
Если все тесты пройдены без ошибок, можно переходит дальше, выход из vpncmd Ctrl+C.
После выхода, опять выполняем команду: “sudo ./vpncmd” выбираем пункт “2” (Management of VPN Client)
Программа запросит IP адрес хоста, нажимаем “Enter” (по умолчанию подключается к “localhost”).
2.1 Создание и настройка VPN адаптера, и аккаунта для подключение к VPN сети
- Создайте виртуальный интерфейс для подключения к VPN-серверу:
– NicCreate vpn (где “vpn” это имя виртуального адаптера), другие команды (NicDelete – удалить адаптер, NicList – список адаптеров)
- Создайте учетную запись VPN-клиента с помощью следующей команды
– AccountCreate NameConnect /SERVER:<IPSERVER>:5555 /HUB:<NAMEVIRTUALHUB> /USERNAME:<username> /NICNAME:<name nic adaptera>
– ПРИМЕР: AccountCreate Terminal /server:91.91.91.91:5555 /HUB:VPN /USERNAME:Clickup /NICNAME:VPN
(где “NameConnect” это просто имя подключения), другие команды (AccountDelete – удалить, AccountList – список)
- Настройка учетной записи по вашим данным для подключения по аналогии как в Windows клиенте:
Если вы получите сообщение “The command completed successfully”, то все сделано верно, c помощью AccountList можно посмотреть созданное подключение.
ВАЖНО! Варианты аутентификации на сервере.
В некоторых случаях необходимо указать тип аутентификации пользователя и указать необходимые параметры. Чтобы изменить эту информацию, вы можете использовать такие команды, как AccountAnonymousSet, AccountPasswordSet, AccountCertSet и AccountSecureCertSet.
AccountAnonymousSet – анонимная аутентификация
AccountPasswordSet– аутентификация по пользователю и паролю
AccountCertSet – аутентификация по пользовательскому сертификату
AccountSecureCertSet– аутентификация пользователя по смарт-картам
В нашем случае аутентификация будет происходить по пользовательскому сертификату AccountCertSet, для этого выполняем команду:
– AccountSecureCertSet [имя] [/ CERTNAME: путь до сертификата] [/ KEYNAME: путь до ключа]
– ПРИМЕР: AccountCertSet Terminal /LOADCERT:/home/clickup/Serv/Terminal.cer /LOADKEY:/home/clickup/Serv/Terminal.key
После выполнения у вас запросит пароль для сертификата (если он установлен).
Подключение готово, можно посмотреть список подключений выполнив команду AccountList, в статусе подключение будет видно его текущее состояние (offline, connected).
Чтобы подключиться необходимо выполнить команду:
– AccountConnect Terminal (где Terminal это имя созданного аккаунта для подключения)
После чего статус должен измениться на Connected.
AccountStartupSet Terminal (Для того чтоб после перезагрузки Connect производился я автоматически_)
Если все сделано верно то вы подключитесь к VPN сети со своими учетными данными.
AccountList (Проверяем)
На сервере VPN вы сможете увидеть активное подключение, работающее пока по Ipv6.
В CentOS нужно вручную создать виртуальный интерфейс: /etc/sysconfig/network-scripts/ifcfg-vpn_vpn
DEVICE=vpn_vpn
BOOTPROTO=none
IPADDR=192.168.159.120
ONBOOT=yes
DEVICE=vpn_vpn
BOOTPROTO=dhsp
ONBOOT=yes
systemctl restart network
3. Получение IP адреса для виртуального адаптера и настройка маршрутизации.
Прежде чем начать необходимо проверить включен ли “ip forward” (маршрутизация), выполняем команду:
cat /proc/sys/net/ipv4/ip_forward если после выполнения возврат “1”, то все включено, если “0” то выполняем команду:
sudo nano /etc/sysctl.conf (переходим к редактированию файла конфига), находим строку net.ipv4.ip_forward=1 и раскомментируем ее, сохраняем файл.
и проверяем cat /proc/sys/net/ipv4/ip_forward команда должна вернуть “1”.
Получение IP адреса от сервера.
В терминале выполняем команду:
- sudo dhclient <virtual_network_adapter_name>
– Пример: sudo dhclient vpn_vpn
VPN-сервер должен выдать вам IP-адрес для вашего виртуального адаптера (если на сервере не отключен DHCP). Данный способ у меня не сработал в centos 7 - Хостинг провайдер: https://ihc.ru/
Либо IP адрес можно прописать вручную выполнив команду для OS Debian, Ubunta
sudo nano /etc/network/interfaces
Для OS Centos я прописал вот такие настройки:
sudo nano /etc/sysconfig/network-scripts/ifcfg-vpn_vpn
Автозапуск SoftEther VPN Client
[root@Client home/vpnclient]# mkdir /usr/bin/vpnclient
[root@Client home/vpnclient]# cp vpn* /usr/bin/vpnclient/
[root@Client home/vpnclient]# cp hamcore.se2 /usr/bin/vpnclient/
[root@Client home/vpnclient]# nano /etc/init.d/vpnclient
#!/bin/sh
# chkconfig: 2345 99 01
# description: SoftEther VPN Client
DAEMON=/usr/bin/vpnclient/vpnclient
LOCK=/var/lock/subsys/vpnclient
test -x $DAEMON || exit 0
case "$1" in
start)
$DAEMON start
touch $LOCK
systemctl restart network
;;
stop)
$DAEMON stop
rm $LOCK
;;
restart)
$DAEMON stop
sleep 3
$DAEMON start
;;
*)
echo "Usage: $0 {start|stop|restart}"
exit 1
esac
exit 0
Запустите демон и убедитесь, что он запустится после перезагрузки
[root@Client home/vpnclient]# chmod 755 /etc/init.d/vpnclient
[root@Client home/vpnclient]# service vpnclient start
SoftEther VPN Client Service Started.
[root@Client home/vpnclient]# chkconfig --add vpnclient
Возможно вам не нужно будет делать все что ниже. Попробуйте пропинговать куда или откуда вы хотели гонят трафик.
Завершающем шагом будет указание статических маршрутов, выполняем команду, чтобы увидеть таблицу маршрутизации:
sudo netstat -rn
ip route
Количество маршрутов зависит от сложности построения сети и как далеко необходимо пробиться в нашем случае схема была следующая:
Команда трассировки: sudo traceroute -I 10.10.10.1 (параметр -I “icmp” отправлять пакеты из Linux, которые понимает Windows)
Поэтому в нашем случае достаточно 2 маршрутов.
sudo ip route add 10.10.10.0/24 dev vpn_vpn
sudo ip route add 192.168.100.0/24 via 10.10.10.1
Возможно, вам понадобится больше маршрутов.
Доступ был получен во внутреннюю сеть. Папки проброшены через SMB