# Руководство по утилите управления командной строки

> Справочник по vpncmd - консольная утилита для удаленного администрирования SoftEther VPN Server, Bridge и Client без графического интерфейса

Source: https://opennix.org/docs/softether-vpn/manual/softether-vpn-cli-management/

vpncmd - это мощная утилита командной строки для управления всеми компонентами SoftEther VPN.

## Обзор vpncmd
vpncmd официально известна как "SoftEther VPN Command Line Management Utility". Это кроссплатформенное программное обеспечение, работающее исключительно из командной строки.

Возможности vpncmd: 

- Полное управление VPN Server 
- Настройка VPN Client 
- Управление VPN Bridge 
- Автоматизация через скрипты 
- Удаленное администрирование

## Режимы работы vpncmd
#### Режим управления VPN Server

```shell

# Подключение к локальному серверу
vpncmd localhost /SERVER

# Подключение к удаленному серверу с паролем
vpncmd vpn.company.com:443 /SERVER /PASSWORD:adminpass

# Подключение к конкретному Virtual Hub
vpncmd localhost /SERVER /HUB:MYHUB /PASSWORD:hubpass

```
#### Режим управления VPN Client
```shell

# Подключение к локальному клиенту
vpncmd localhost /CLIENT

# Подключение к удаленному клиенту
vpncmd client.company.com /CLIENT /PASSWORD:clientpass

```
#### Режим управления VPN Bridge

```shell

# Подключение к локальному мосту
vpncmd localhost /BRIDGE

# Подключение к удаленному мосту
vpncmd bridge.company.com /BRIDGE /PASSWORD:bridgepass

```
## Интерактивный и пакетный режимы
#### Интерактивный режим
```shell

# Запуск интерактивного режима
vpncmd

# Выбор режима управления в интерактивном режиме
1. Management of VPN Server or VPN Bridge
2. Management of VPN Client
3. Use of VPN Tools

```
#### Пакетный режим
```shell

# Выполнение одной команды
vpncmd localhost /SERVER /CMD:ServerInfoGet

# Выполнение скрипта команд
vpncmd localhost /SERVER /IN:commands.txt

```
## Команды управления VPN Server
#### Общие команды сервера
```shell

# Информация о сервере
ServerInfoGet

# Статус сервера
ServerStatusGet

# Список портов прослушивания
ListenerList

# Создание порта прослушивания
ListenerCreate 1194 /ENABLE:yes

# Перезагрузка сервера
Flush

```
#### Управление Virtual Hub
```shell

# Список Virtual Hub'ов
HubList

# Создание Virtual Hub
HubCreate NEWHUB /PASSWORD:hubpass

# Удаление Virtual Hub
HubDelete OLDHUB

# Статус Virtual Hub
StatusGet

```

#### Управление пользователями

```shell

# Список пользователей
UserList

# Создание пользователя
UserCreate john /GROUP:employees /REALNAME:"John Smith" /NOTE:"IT Department"

# Удаление пользователя
UserDelete john

# Установка пароля пользователя
UserPasswordSet john /PASSWORD:newpassword

# Информация о пользователе
UserGet john

```
#### Управление группами
```shell

# Список групп
GroupList

# Создание группы
GroupCreate employees /NOTE:"Employee Group"

# Удаление группы
GroupDelete employees

# Настройка политик группы
GroupPolicySet employees /NAME:MaxConnection /VALUE:3
GroupPolicySet employees /NAME:TimeOut /VALUE:300
GroupPolicySet employees /NAME:MaxMac /VALUE:16
GroupPolicySet employees /NAME:MaxIP /VALUE:16
GroupPolicySet employees /NAME:MaxUpload /VALUE:1000000
GroupPolicySet employees /NAME:MaxDownload /VALUE:1000000

```
#### Сертификаты и PKI

```shell

# Создание сертификата
MakeCert /CN:"VPN Server" /SERIAL:1 /EXPIRES:2025-12-31

# Загрузка сертификата из файла
ServerCertSet /LOADCERT:server.crt /LOADKEY:server.key

# Просмотр установленного сертификата
ServerCertGet

# Создание центра сертификации
CaAdd /CN:"Company CA" /SERIAL:1 /EXPIRES:2030-12-31

# Список сертификатов CA
CaList

```

#### Управление доступом
```shell

# Список правил доступа
AccessList

# Добавление правила доступа
AccessAdd /RULENAME:"Allow HTTPS" /PRIORITY:100 /SRC_IP:any /DEST_IP:any /DEST_PORT:443 /PROTOCOL:TCP /ACTION:allow

# Удаление правила доступа
AccessDelete 1

# Включение/отключение правила
AccessEnable 1
AccessDisable 1

```
#### SecureNAT функции
```shell

# Включение SecureNAT
SecureNatEnable

# Отключение SecureNAT
SecureNatDisable

# Статус SecureNAT
SecureNatStatusGet

# Настройка виртуального DHCP сервера
DhcpSet /START:192.168.30.10 /END:192.168.30.200 /MASK:255.255.255.0 /GW:192.168.30.1 /DNS:8.8.8.8 /DNS2:8.8.4.4 /DOMAIN:company.local /LEASE:7200

# Список DHCP таблицы
DhcpTable

# Настройка виртуального NAT
NatEnable
NatDisable
NatStatusGet

# Настройка таблицы NAT
NatSet /MTU:1500 /LOG:yes /SAVE:yes

```
#### Локальные мосты

```shell

# Список локальных мостов
BridgeList

# Создание локального моста
BridgeCreate MYHUB /DEVICE:"Local Area Connection"

# Удаление локального моста
BridgeDelete MYHUB

# Список доступных сетевых устройств
BridgeDeviceList

```
## Команды управления VPN Client
#### Основные команды клиента

```shell

# Переход в режим управления клиентом
vpncmd localhost /CLIENT

# Информация о версии клиента
VersionGet

# Список виртуальных адаптеров
NicList

# Создание виртуального адаптера
NicCreate "My VPN Adapter"

# Удаление виртуального адаптера
NicDelete "My VPN Adapter"

# Включение/отключение адаптера
NicEnable "My VPN Adapter"
NicDisable "My VPN Adapter"

```

#### Управление подключениями

```shell

# Список VPN подключений
AccountList

# Создание нового подключения
AccountCreate "Company VPN" /SERVER:vpn.company.com:443 /HUB:CORPORATE /USERNAME:john /NICNAME:"My VPN Adapter"

# Удаление подключения
AccountDelete "Company VPN"

# Установка пароля
AccountPasswordSet "Company VPN" /PASSWORD:mypassword /TYPE:standard

# Настройка параметров подключения
AccountSet "Company VPN" /SERVER:vpn.company.com:443 /HUB:CORPORATE /USERNAME:john /KEEPALIVE:yes /USECOMPRESS:yes /USEENCRYPT:yes

# Подключение
AccountConnect "Company VPN"

# Отключение
AccountDisconnect "Company VPN"

# Статус подключения
AccountStatusGet "Company VPN"

# Детальная статистика
AccountGet "Company VPN"

```
#### Сертификаты на клиенте

```shell

# Список сертификатов
CertList

# Добавление сертификата
CertAdd /CERTFILE:client.crt /KEYFILE:client.key

# Удаление сертификата
CertDelete 1

# Получение информации о сертификате
CertGet 1

```
#### Настройка прокси
```shell

# Настройка HTTP прокси
AccountProxySet "Company VPN" /TYPE:http /SERVER:proxy.company.com:8080 /USERNAME:proxyuser /PASSWORD:proxypass

# Настройка SOCKS прокси
AccountProxySet "Company VPN" /TYPE:socks /SERVER:socks.company.com:1080

# Отключение прокси
AccountProxyNone "Company VPN"

```
## Команды VPN Bridge
#### Управление мостами
```shell
# Переход в режим управления мостом
vpncmd localhost /BRIDGE

# Список локальных мостов
BridgeList

# Создание моста с физическим адаптером
BridgeCreate BRIDGE1 /DEVICE:"eth0"

# Создание TAP устройства (Linux)
BridgeCreate BRIDGE1 /DEVICE:"tap_softether" /TAP:yes

# Удаление моста
BridgeDelete BRIDGE1

# Список доступных сетевых устройств
BridgeDeviceList
```
#### Каскадные подключения
```shell

# Создание каскадного подключения
CascadeCreate "HQ Connection" /SERVER:hq.company.com:443 /HUB:BRANCH /USERNAME:branch_office

# Установка пароля каскада
CascadePasswordSet "HQ Connection" /PASSWORD:cascadepass /TYPE:standard

# Настройка параметров каскада
CascadeSet "HQ Connection" /SERVER:hq.company.com:443 /HUB:BRANCH /USERNAME:branch_office /KEEPALIVE:yes

# Подключение каскада
CascadeOnline "HQ Connection"

# Отключение каскада
CascadeOffline "HQ Connection"

# Статус каскада
CascadeStatusGet "HQ Connection"

# Список всех каскадов
CascadeList

# Удаление каскада
CascadeDelete "HQ Connection"

```
## VPN инструменты
#### Проверка связности
```shell
# Переход в режим инструментов
vpncmd /TOOLS

# Проверка связности (ping)
Check vpn.company.com

# Трассировка маршрута
TrafficClient vpn.company.com

# Тест производительности
TrafficServer

```
#### Генерация сертификатов
```shell

# Создание самоподписанного сертификата
MakeCert /CN:"Test Certificate" /OU:"IT Department" /O:"Company Inc" /C:"US" /ST:"CA" /L:"San Francisco" /SERIAL:1 /EXPIRES:2025-12-31 /SAVECERT:test.crt /SAVEKEY:test.key

```

#### Диагностические инструменты
```shell

# Информация о сетевых интерфейсах
Win32_GetWinVer

# Проверка OpenSSL
OpenSslVersion

# Проверка IPv6
IPsecIkeClientGet

```
## Автоматизация и скриптинг
#### Создание скриптов команд
Создайте текстовый файл setup.txt со списком команд:

```text

# Скрипт настройки VPN сервера
ServerPasswordSet mypassword
ListenerCreate 443
ListenerCreate 992
ListenerCreate 1194
ListenerCreate 5555

HubCreate CORPORATE /PASSWORD:hubpass
Hub CORPORATE
UserCreate john /GROUP:employees /REALNAME:"John Smith"
UserPasswordSet john /PASSWORD:userpass
SecureNatEnable
```
Выполните скрипт:
```shell

vpncmd localhost /SERVER /IN:setup.txt

```
#### Переменные среды и параметризация

Используйте переменные среды для параметризации скриптов:

```shell

# Установка переменных
export VPN_SERVER="vpn.company.com"
export VPN_PASSWORD="secretpass"

# Использование в командах
vpncmd $VPN_SERVER /SERVER /PASSWORD:$VPN_PASSWORD /CMD:ServerStatusGet

```
## Логирование и отладка
#### Включение подробного логирования
```shell

# Включение логирования сессий
LogEnable session /SWITCH:yes

# Включение логирования пакетов
LogEnable packet /SWITCH:yes

# Включение логирования безопасности
LogEnable security /SWITCH:yes

# Просмотр настроек логирования
LogList

# Отключение логирования
LogDisable session

```
#### Экспорт конфигурации
```shell

# Экспорт конфигурации сервера
ConfigGet /SAVEFILE:server_config.txt

# Импорт конфигурации
ConfigSet /IN:server_config.txt

```
## Распространенные сценарии использования

#### Быстрая настройка простого VPN сервера

```shell

#!/bin/bash
# Скрипт быстрой настройки

vpncmd localhost /SERVER <<EOF
ServerPasswordSet adminpassword
ListenerCreate 443
HubCreate VPN /PASSWORD:hubpass
Hub VPN
UserCreate testuser /REALNAME:"Test User"
UserPasswordSet testuser /PASSWORD:testpass
SecureNatEnable
exit
EOF
```
#### Массовое создание пользователей

```shell
#!/bin/bash
# Создание пользователей из CSV файла

while IFS=, read -r username realname password group; do
    vpncmd localhost /SERVER /HUB:CORPORATE <<EOF
UserCreate "$username" /GROUP:"$group" /REALNAME:"$realname"
UserPasswordSet "$username" /PASSWORD:"$password"
EOF
done < users.csv
```
#### Мониторинг подключений
```shell
#!/bin/bash
# Скрипт мониторинга активных сессий

vpncmd localhost /SERVER /HUB:CORPORATE /CMD:SessionList | \
grep "Session Name" | \
wc -l | \
xargs echo "Active sessions:"
```

