# OpenConnect VPN Server - SSL VPN для Remote Access

> Настройка OpenConnect VPN на VyOS - SSL VPN совместимый с Cisco AnyConnect, RADIUS, 2FA OTP и split-tunneling для облачных сред

Source: https://opennix.org/docs/vyos/vpn/vyos-openconnect/


OpenConnect VPN Server (ocserv) - это современный SSL VPN сервер, полностью совместимый с клиентами Cisco AnyConnect. Он обеспечивает безопасный remote access с использованием SSL/TLS протокола, поддерживает множество методов аутентификации включая двухфакторную (2FA) и идеально подходит для корпоративных сценариев удаленного доступа.

## Обзор

### Ключевые особенности

**Преимущества OpenConnect**:
- Полная совместимость с клиентами Cisco AnyConnect
- SSL/TLS шифрование (работает на порту TCP 443)
- Множественные методы аутентификации (локальная, RADIUS, 2FA)
- Двухфакторная аутентификация с OTP (Time-based One-Time Password)
- DTLS (Datagram TLS) для улучшенной производительности
- HTTP security headers для защиты web интерфейса
- RADIUS accounting для мониторинга сессий
- Identity-based конфигурация (per-user/per-group настройки)
- Работает через любые firewall (TCP 443, HTTPS)
- Кросс-платформенные клиенты (Windows, macOS, Linux, iOS, Android)

**OpenConnect vs другие SSL VPN**:

| Критерий | OpenConnect | OpenVPN | WireGuard |
|----------|-------------|---------|-----------|
| AnyConnect совместимость | Полная | Нет | Нет |
| Производительность | Высокая (DTLS) | Средняя | Очень высокая |
| 2FA встроенная | Да (OTP) | Через плагины | Нет |
| Работа через firewall | Отлично (443/tcp) | Хорошо | Хорошо |
| Enterprise готовность | Отлично | Хорошо | Базовая |
| Простота клиента | Отлично | Хорошо | Отлично |

### Когда использовать OpenConnect

**Идеальные сценарии**:
- Корпоративный remote access VPN для сотрудников
- Замена коммерческого Cisco AnyConnect
- Требуется двухфакторная аутентификация
- Строгие firewall ограничения (только 443/tcp доступен)
- Интеграция с RADIUS для централизованной аутентификации
- Accounting и аудит VPN сессий
- Использование существующих AnyConnect клиентов

**Не рекомендуется когда**:
- Нужна максимальная производительность (используйте WireGuard)
- Site-to-site туннели (используйте IPsec или WireGuard)
- Простые домашние сценарии (OpenVPN или WireGuard проще)

## Архитектура и компоненты

### SSL/TLS и DTLS

OpenConnect использует два протокола:

**TLS (TCP based)**:
- Control channel и data transfer
- Guaranteed delivery
- Работает через любые сети
- Используется для аутентификации

**DTLS (UDP based)**:
- Data transfer (после успешной TLS аутентификации)
- Меньше latency, лучше производительность
- Автоматический fallback на TLS при проблемах с UDP

### Методы аутентификации

OpenConnect поддерживает несколько режимов:

1. **Local Password**: Локальные пользователи с паролями
2. **RADIUS**: Централизованная аутентификация через RADIUS сервер
3. **Password + OTP**: Двухфакторная аутентификация (пароль + одноразовый код)
4. **OTP Only**: Только одноразовые пароли

### SSL Certificate

OpenConnect требует SSL сертификат для работы:

**Варианты сертификатов**:
- Self-signed сертификаты (для тестирования)
- Let's Encrypt (бесплатные, автоматическое обновление)
- Корпоративные CA сертификаты
- Коммерческие SSL сертификаты

### Network Settings

Настройки сети для клиентов:

- **Client IP Pool**: Пул IP адресов для VPN клиентов
- **DNS Servers**: DNS серверы для клиентов
- **Split Tunneling**: Маршрутизация только определенного трафика через VPN
- **Full Tunneling**: Весь трафик клиента через VPN

## Базовая конфигурация

### Подготовка SSL сертификатов

#### Self-signed сертификаты (тестирование)

```bash
# Создание CA
generate pki ca install openconnect-ca common-name "OpenConnect CA"

# Создание серверного сертификата
generate pki certificate sign openconnect-ca install openconnect-server common-name "vpn.company.com"

commit
save
```

#### Let's Encrypt сертификаты (production)

```bash
# Установка Certbot (выполните в operational mode)
sudo apt-get update
sudo apt-get install certbot

# Получение сертификата (требуется DNS A record)
sudo certbot certonly --standalone -d vpn.company.com

# Сертификаты будут в /etc/letsencrypt/live/vpn.company.com/
# fullchain.pem - полный сертификат
# privkey.pem - приватный ключ

# Импорт в VyOS PKI
configure
set pki certificate openconnect-server certificate "$(cat /etc/letsencrypt/live/vpn.company.com/fullchain.pem)"
set pki certificate openconnect-server private key "$(cat /etc/letsencrypt/live/vpn.company.com/privkey.pem)"

commit
save
```

**Автоматическое обновление Let's Encrypt**:
```bash
# Добавьте в cron для автоматического обновления
set system task-scheduler task renew-ssl executable path '/usr/bin/certbot renew --quiet'
set system task-scheduler task renew-ssl interval '7d'

commit
```

### Минимальная конфигурация с локальной аутентификацией

```bash
configure

# SSL сертификаты
set vpn openconnect ssl ca-certificate openconnect-ca
set vpn openconnect ssl certificate openconnect-server

# Локальная аутентификация
set vpn openconnect authentication mode local password
set vpn openconnect authentication local-users username alice password 'SecurePassword123!'
set vpn openconnect authentication local-users username bob password 'AnotherSecure456!'

# Сетевые настройки для клиентов
set vpn openconnect network-settings client-ip-settings subnet 10.100.0.0/24

# DNS серверы для клиентов
set vpn openconnect network-settings name-server 8.8.8.8
set vpn openconnect network-settings name-server 1.1.1.1

commit
save
```

### Проверка базовой конфигурации

```bash
# Проверить что сервис запущен
show vpn openconnect-server sessions

# Системные процессы
show system processes openconnect

# Логи
show log vpn openconnect
```

## Аутентификация

### Локальная аутентификация (Password)

Простейший метод для небольших установок.

```bash
configure

# Режим локальной аутентификации
set vpn openconnect authentication mode local password

# Добавление пользователей
set vpn openconnect authentication local-users username user1 password 'Pass123!@#'
set vpn openconnect authentication local-users username user2 password 'Secure789$%^'
set vpn openconnect authentication local-users username user3 password 'MyVPN2024&*('

# Опционально: отключить пользователя
set vpn openconnect authentication local-users username user3 disable

commit
save
```

**Рекомендации для паролей**:
- Минимум 12 символов
- Комбинация букв, цифр, специальных символов
- Регулярная смена паролей (каждые 90 дней)

### Двухфакторная аутентификация (2FA OTP)

Значительно повышает безопасность, требуя пароль + одноразовый код.

#### Режим Password + OTP

```bash
configure

# Включение 2FA (пароль + OTP)
set vpn openconnect authentication mode local password-otp

# Пользователи с паролями
set vpn openconnect authentication local-users username alice password 'SecurePass123!'
set vpn openconnect authentication local-users username bob password 'BobPass456!'

# Генерация OTP ключей для пользователей
# Выполните в operational mode:
exit
generate openconnect username alice otp-key hotp-time

# VyOS выведет QR код и ключ вида:
# OTP Key: JBSWY3DPEHPK3PXP
# Используйте QR код в приложении Google Authenticator или Authy
```

**OTP Key для пользователя**:
```bash
configure
# Установка OTP ключа вручную
set vpn openconnect authentication local-users username alice otp JBSWY3DPEHPK3PXP
set vpn openconnect authentication local-users username bob otp KRSXG5CTORHG6YLM

commit
save
```

#### Режим OTP Only

Только одноразовые коды (без паролей).

```bash
configure

# Режим только OTP
set vpn openconnect authentication mode local otp

# OTP ключи пользователей
set vpn openconnect authentication local-users username alice otp JBSWY3DPEHPK3PXP
set vpn openconnect authentication local-users username bob otp KRSXG5CTORHG6YLM

commit
save
```

**Настройка клиентского приложения**:

1. **Google Authenticator** (iOS/Android):
   - Установите приложение
   - Отсканируйте QR код от VyOS
   - Приложение будет генерировать 6-значные коды каждые 30 секунд

2. **Microsoft Authenticator** (iOS/Android):
   - Альтернатива Google Authenticator
   - Те же принципы работы

3. **Authy** (iOS/Android/Desktop):
   - Поддержка cloud backup
   - Синхронизация между устройствами

**Подключение с 2FA**:
```
Username: alice
Password: SecurePass123!123456
          ^^^^^^^^^^^^^^^^ ^^^^^^
          обычный пароль   OTP код

или в режиме password-otp через AnyConnect:
Username: alice
Password: SecurePass123!
Second Password: 123456 (OTP код)
```

### RADIUS аутентификация

Централизованная аутентификация через RADIUS сервер.

```bash
configure

# RADIUS режим
set vpn openconnect authentication mode radius

# Основной RADIUS сервер
set vpn openconnect authentication radius server 192.168.1.10
set vpn openconnect authentication radius server 192.168.1.10 key 'SharedSecret123'
set vpn openconnect authentication radius server 192.168.1.10 port 1812

# Backup RADIUS сервер
set vpn openconnect authentication radius server 192.168.1.11
set vpn openconnect authentication radius server 192.168.1.11 key 'SharedSecret123'
set vpn openconnect authentication radius server 192.168.1.11 port 1812

# Timeout (опционально)
set vpn openconnect authentication radius timeout 5

commit
save
```

**RADIUS атрибуты**:

OpenConnect отправляет:
- `User-Name`: username пользователя
- `User-Password`: пароль
- `NAS-IP-Address`: IP адрес VyOS
- `NAS-Port-Type`: Virtual
- `Service-Type`: Framed-User
- `Framed-Protocol`: PPP

**FreeRADIUS конфигурация** (на RADIUS сервере):

```
# /etc/freeradius/clients.conf
client vyos-vpn {
    ipaddr = 192.168.1.1
    secret = SharedSecret123
    shortname = vyos
}

# /etc/freeradius/users
alice Cleartext-Password := "SecurePassword"
    Reply-Message = "Welcome to VPN"

bob Cleartext-Password := "BobPassword"
```

### RADIUS Accounting

Мониторинг VPN сессий через RADIUS accounting.

```bash
configure

# Включение RADIUS accounting
set vpn openconnect accounting mode radius

# RADIUS accounting сервер
set vpn openconnect accounting radius server 192.168.1.10
set vpn openconnect accounting radius server 192.168.1.10 key 'SharedSecret123'
set vpn openconnect accounting radius server 192.168.1.10 port 1813

# Backup accounting сервер
set vpn openconnect accounting radius server 192.168.1.11
set vpn openconnect accounting radius server 192.168.1.11 key 'SharedSecret123'
set vpn openconnect accounting radius server 192.168.1.11 port 1813

commit
save
```

**RADIUS Accounting сообщения**:

OpenConnect отправляет:
- **Accounting-Start**: При подключении клиента
- **Interim-Update**: Периодически (каждые N минут)
- **Accounting-Stop**: При отключении клиента

**Атрибуты accounting**:
- `Acct-Session-Id`: Уникальный ID сессии
- `Acct-Input-Octets`: Байты входящего трафика
- `Acct-Output-Octets`: Байты исходящего трафика
- `Acct-Session-Time`: Длительность сессии в секундах
- `Framed-IP-Address`: IP адрес VPN клиента

## Сетевые настройки

### Client IP Pool

Пул IP адресов для VPN клиентов.

```bash
configure

# IPv4 subnet для клиентов
set vpn openconnect network-settings client-ip-settings subnet 10.100.0.0/24

# IPv6 subnet (опционально)
set vpn openconnect network-settings client-ipv6-pool prefix 2001:db8:100::/64
set vpn openconnect network-settings client-ipv6-pool mask 96

commit
save
```

**Планирование IP адресов**:
- Используйте приватные диапазоны (10.0.0.0/8, 172.16.0.0/12, 192.168.0.0/16)
- Избегайте пересечения с существующими сетями
- Учитывайте количество одновременных пользователей
- Оставьте запас для роста

### DNS и домены

DNS серверы для VPN клиентов.

```bash
configure

# DNS серверы
set vpn openconnect network-settings name-server 192.168.1.1
set vpn openconnect network-settings name-server 8.8.8.8

# Search domain
set vpn openconnect network-settings client-ip-settings subnet 10.100.0.0/24

commit
save
```

**Варианты DNS**:
- **Внутренний DNS**: Для резолва корпоративных ресурсов
- **Публичные DNS**: Google (8.8.8.8), Cloudflare (1.1.1.1)
- **Фильтрующие DNS**: Cloudflare for Families (1.1.1.3), Quad9 (9.9.9.9)

### Split Tunneling

Маршрутизация только корпоративного трафика через VPN.

```bash
configure

# Split-include: только определенные сети через VPN
set vpn openconnect network-settings split-dns include-domains company.local
set vpn openconnect network-settings split-dns include-domains internal.local

# Маршруты через VPN (пока не поддерживается в VyOS напрямую, используйте identity-based)
# Альтернатива: настройка через опции сервера

commit
save
```

**Split tunneling через custom опции**:
```bash
configure

# Push только определенных маршрутов (для split tunneling)
# Этот функционал доступен через identity-based config или прямые опции ocserv

commit
save
```

### Full Tunneling

Весь трафик клиента через VPN.

По умолчанию OpenConnect настроен на full tunneling. Клиенты получают default route через VPN.

**Для явного указания**:
```bash
configure

# Client IP pool (автоматически включает full tunnel)
set vpn openconnect network-settings client-ip-settings subnet 10.100.0.0/24

# DNS для всех запросов
set vpn openconnect network-settings name-server 192.168.1.1

commit
save
```

**NAT для VPN клиентов** (если нужен доступ в интернет):
```bash
configure

# NAT для VPN клиентов
set nat source rule 100 outbound-interface name eth0
set nat source rule 100 source address 10.100.0.0/24
set nat source rule 100 translation address masquerade

commit
save
```

## Identity-Based конфигурация

Настройки для отдельных пользователей или групп.

### Per-User конфигурация

```bash
configure

# Статический IP для пользователя
set vpn openconnect network-settings client-ip-settings subnet 10.100.0.0/24

# Файл конфигурации для пользователей
# (создается через shell, так как VyOS не имеет прямого CLI)

# Для продвинутой per-user конфигурации используйте файлы в /config/
# Пример будет в разделе "Продвинутые конфигурации"

commit
save
```

### Group-Based конфигурация

```bash
configure

# Группы пользователей настраиваются через RADIUS атрибуты или файлы конфигурации

commit
save
```

## HTTP Security Headers

Защита web интерфейса OpenConnect.

```bash
configure

# HTTP security headers
set vpn openconnect listen-ports 443

commit
save
```

**Security headers** (настраиваются автоматически ocserv):
- `X-Frame-Options: DENY` - Защита от clickjacking
- `X-Content-Type-Options: nosniff` - Защита от MIME type sniffing
- `Strict-Transport-Security` - HSTS для HTTPS
- `Content-Security-Policy` - CSP для защиты от XSS

## Firewall конфигурация

Разрешение трафика для OpenConnect VPN.

```bash
configure

# Входящий трафик на VPN порт
set firewall ipv4 input filter rule 150 action accept
set firewall ipv4 input filter rule 150 destination port 443
set firewall ipv4 input filter rule 150 protocol tcp
set firewall ipv4 input filter rule 150 description 'OpenConnect VPN'

# UDP для DTLS (опционально, но рекомендуется)
set firewall ipv4 input filter rule 151 action accept
set firewall ipv4 input filter rule 151 destination port 443
set firewall ipv4 input filter rule 151 protocol udp
set firewall ipv4 input filter rule 151 description 'OpenConnect DTLS'

# Forward для VPN клиентов
set firewall ipv4 forward filter rule 250 action accept
set firewall ipv4 forward filter rule 250 source address 10.100.0.0/24
set firewall ipv4 forward filter rule 250 description 'OpenConnect clients'

# Опционально: ограничение доступа VPN клиентов
set firewall ipv4 forward filter rule 251 action accept
set firewall ipv4 forward filter rule 251 source address 10.100.0.0/24
set firewall ipv4 forward filter rule 251 destination address 192.168.0.0/16
set firewall ipv4 forward filter rule 251 description 'VPN to corporate network'

commit
save
```

## Примеры конфигураций

### Пример 1: Remote Access VPN для Yandex Cloud

**Сценарий**: Сотрудники компании получают безопасный доступ к ресурсам в Yandex Cloud через OpenConnect VPN с двухфакторной аутентификацией.

**Топология**:
```
Internet
    |
    | (публичный IP)
    |
[VyOS OpenConnect VPN Server]
    | (внутренний IP)
    |
    |--- Yandex Cloud Internal Network (10.0.0.0/16)
          |
          |--- Web Server (10.0.1.10)
          |--- Database Server (10.0.2.20)
          |--- Application Server (10.0.3.30)
```

**Требования**:
- 50 удаленных сотрудников
- Двухфакторная аутентификация (пароль + OTP)
- Split tunneling (только Yandex Cloud трафик через VPN)
- Let's Encrypt SSL сертификат
- RADIUS accounting для аудита

**Конфигурация**:

```bash
configure

# SSL сертификаты (Let's Encrypt)
# Предварительно получите сертификат через Certbot
set pki certificate yc-vpn-server certificate "$(cat /etc/letsencrypt/live/vpn.yandex-cloud.example.com/fullchain.pem)"
set pki certificate yc-vpn-server private key "$(cat /etc/letsencrypt/live/vpn.yandex-cloud.example.com/privkey.pem)"

set vpn openconnect ssl ca-certificate yc-vpn-server
set vpn openconnect ssl certificate yc-vpn-server

# Аутентификация: локальная с 2FA
set vpn openconnect authentication mode local password-otp

# Пользователи с паролями и OTP
set vpn openconnect authentication local-users username admin password 'AdminSecure2024!'
set vpn openconnect authentication local-users username admin otp JBSWY3DPEHPK3PXP

set vpn openconnect authentication local-users username developer1 password 'DevPass123!@#'
set vpn openconnect authentication local-users username developer1 otp KRSXG5CTORHG6YLM

set vpn openconnect authentication local-users username manager1 password 'MgrPass456$%^'
set vpn openconnect authentication local-users username manager1 otp MFRGG2LFNFZXS4TP

# IP pool для клиентов (не пересекается с Yandex Cloud 10.0.0.0/16)
set vpn openconnect network-settings client-ip-settings subnet 10.100.0.0/24

# DNS серверы (внутренний Yandex Cloud DNS + публичный)
set vpn openconnect network-settings name-server 10.0.0.2
set vpn openconnect network-settings name-server 8.8.8.8

# RADIUS accounting (опционально)
set vpn openconnect accounting mode radius
set vpn openconnect accounting radius server 10.0.10.50
set vpn openconnect accounting radius server 10.0.10.50 key 'YandexCloudRADIUS2024'
set vpn openconnect accounting radius server 10.0.10.50 port 1813

# Порт (TCP 443)
set vpn openconnect listen-ports 443

# Firewall: разрешить VPN трафик
set firewall ipv4 input filter rule 150 action accept
set firewall ipv4 input filter rule 150 destination port 443
set firewall ipv4 input filter rule 150 protocol tcp
set firewall ipv4 input filter rule 150 description 'OpenConnect TCP'

set firewall ipv4 input filter rule 151 action accept
set firewall ipv4 input filter rule 151 destination port 443
set firewall ipv4 input filter rule 151 protocol udp
set firewall ipv4 input filter rule 151 description 'OpenConnect DTLS'

# Forward для VPN клиентов к Yandex Cloud сети
set firewall ipv4 forward filter rule 250 action accept
set firewall ipv4 forward filter rule 250 source address 10.100.0.0/24
set firewall ipv4 forward filter rule 250 destination address 10.0.0.0/16
set firewall ipv4 forward filter rule 250 description 'VPN to Yandex Cloud'

# Блокировка VPN client-to-client (безопасность)
set firewall ipv4 forward filter rule 259 action drop
set firewall ipv4 forward filter rule 259 source address 10.100.0.0/24
set firewall ipv4 forward filter rule 259 destination address 10.100.0.0/24

# NAT для интернет доступа VPN клиентов (опционально)
set nat source rule 100 outbound-interface name eth0
set nat source rule 100 source address 10.100.0.0/24
set nat source rule 100 translation address masquerade

commit
save
```

**Генерация OTP ключей для пользователей**:
```bash
# Выполните в operational mode для каждого пользователя
generate openconnect username admin otp-key hotp-time
generate openconnect username developer1 otp-key hotp-time
generate openconnect username manager1 otp-key hotp-time

# Отправьте QR коды пользователям для настройки Google Authenticator
```

**Проверка**:
```bash
# Статус сервера
show vpn openconnect-server sessions

# Логи подключений
show log vpn openconnect

# RADIUS accounting (если настроено)
# Проверьте на RADIUS сервере
```

**Клиентская конфигурация** (Cisco AnyConnect):
```
Server: vpn.yandex-cloud.example.com
Username: developer1
Password: DevPass123!@#123456
          ^^^^^^^^^^^^^^ ^^^^^^
          пароль         OTP код
```

### Пример 2: SSL VPN для VK Cloud

**Сценарий**: OpenConnect VPN для доступа к ресурсам VK Cloud с RADIUS аутентификацией и полным туннелированием (весь трафик через VPN).

**Топология**:
```
Internet
    |
    | (публичный IP)
    |
[VyOS OpenConnect VPN Server] ---- [RADIUS Server]
    |                                  (192.168.10.50)
    | (внутренний IP)
    |
    |--- VK Cloud Network (192.168.0.0/16)
          |
          |--- Application Servers (192.168.10.0/24)
          |--- Database Cluster (192.168.20.0/24)
          |--- Storage (192.168.30.0/24)
```

**Требования**:
- 100 пользователей (RADIUS аутентификация)
- Full tunneling (весь трафик через VPN)
- RADIUS accounting
- Self-signed сертификаты (внутреннее использование)
- DNS фильтрация (Cloudflare for Families)

**Конфигурация**:

```bash
configure

# Генерация self-signed сертификатов
# В operational mode:
exit
generate pki ca install vkcloud-vpn-ca common-name "VK Cloud VPN CA"
generate pki certificate sign vkcloud-vpn-ca install vkcloud-vpn-server common-name "vpn.vkcloud.local"

configure

# SSL конфигурация
set vpn openconnect ssl ca-certificate vkcloud-vpn-ca
set vpn openconnect ssl certificate vkcloud-vpn-server

# RADIUS аутентификация
set vpn openconnect authentication mode radius

# Primary RADIUS сервер
set vpn openconnect authentication radius server 192.168.10.50
set vpn openconnect authentication radius server 192.168.10.50 key 'VKCloudRADIUS2024SecretKey'
set vpn openconnect authentication radius server 192.168.10.50 port 1812

# Backup RADIUS сервер
set vpn openconnect authentication radius server 192.168.10.51
set vpn openconnect authentication radius server 192.168.10.51 key 'VKCloudRADIUS2024SecretKey'
set vpn openconnect authentication radius server 192.168.10.51 port 1812

# RADIUS timeout
set vpn openconnect authentication radius timeout 5

# RADIUS Accounting
set vpn openconnect accounting mode radius
set vpn openconnect accounting radius server 192.168.10.50
set vpn openconnect accounting radius server 192.168.10.50 key 'VKCloudRADIUS2024SecretKey'
set vpn openconnect accounting radius server 192.168.10.50 port 1813

set vpn openconnect accounting radius server 192.168.10.51
set vpn openconnect accounting radius server 192.168.10.51 key 'VKCloudRADIUS2024SecretKey'
set vpn openconnect accounting radius server 192.168.10.51 port 1813

# IP pool для клиентов
set vpn openconnect network-settings client-ip-settings subnet 10.200.0.0/24

# DNS серверы (Cloudflare for Families - фильтрация malware)
set vpn openconnect network-settings name-server 1.1.1.3
set vpn openconnect network-settings name-server 1.0.0.3

# Порт
set vpn openconnect listen-ports 443

# Firewall правила
set firewall ipv4 input filter rule 160 action accept
set firewall ipv4 input filter rule 160 destination port 443
set firewall ipv4 input filter rule 160 protocol tcp
set firewall ipv4 input filter rule 160 description 'OpenConnect SSL VPN'

set firewall ipv4 input filter rule 161 action accept
set firewall ipv4 input filter rule 161 destination port 443
set firewall ipv4 input filter rule 161 protocol udp
set firewall ipv4 input filter rule 161 description 'OpenConnect DTLS'

# Forward для VPN клиентов ко всей VK Cloud сети
set firewall ipv4 forward filter rule 260 action accept
set firewall ipv4 forward filter rule 260 source address 10.200.0.0/24
set firewall ipv4 forward filter rule 260 description 'VPN clients to VK Cloud'

# NAT для full tunneling (интернет через VPN)
set nat source rule 110 outbound-interface name eth0
set nat source rule 110 source address 10.200.0.0/24
set nat source rule 110 translation address masquerade

commit
save
```

**FreeRADIUS конфигурация** (на RADIUS сервере 192.168.10.50):

```bash
# /etc/freeradius/3.0/clients.conf
client vkcloud-vpn {
    ipaddr = 192.168.10.1
    secret = VKCloudRADIUS2024SecretKey
    shortname = vyos-vpn
}

# /etc/freeradius/3.0/users
alice Cleartext-Password := "AliceSecure123"
    Reply-Message = "Welcome to VK Cloud VPN, Alice"

bob Cleartext-Password := "BobPassword456"
    Reply-Message = "Welcome to VK Cloud VPN, Bob"

charlie Cleartext-Password := "CharliePass789"
    Reply-Message = "Welcome to VK Cloud VPN, Charlie"
```

**Проверка**:
```bash
# Сессии VPN
show vpn openconnect-server sessions

# Accounting на RADIUS сервере
radclient -x 192.168.10.50:1813 status VKCloudRADIUS2024SecretKey
```

### Пример 3: Enterprise VPN с 2FA для корпоративного доступа

**Сценарий**: Корпоративный OpenConnect VPN с жесткими требованиями безопасности: обязательная 2FA, accounting, ограничение доступа по времени, детальное логирование.

**Требования**:
- Двухфакторная аутентификация (Password + OTP)
- Let's Encrypt SSL сертификаты
- RADIUS accounting для мониторинга
- Split tunneling (только корпоративные ресурсы)
- Ограничение доступа к определенным сегментам сети
- Детальное логирование и аудит

**Конфигурация**:

```bash
configure

# SSL сертификаты (Let's Encrypt)
set pki certificate corporate-vpn certificate "$(cat /etc/letsencrypt/live/vpn.corporation.com/fullchain.pem)"
set pki certificate corporate-vpn private key "$(cat /etc/letsencrypt/live/vpn.corporation.com/privkey.pem)"

set vpn openconnect ssl ca-certificate corporate-vpn
set vpn openconnect ssl certificate corporate-vpn

# 2FA аутентификация (Password + OTP)
set vpn openconnect authentication mode local password-otp

# Административные пользователи
set vpn openconnect authentication local-users username admin password 'Admin2FA2024!@#$'
set vpn openconnect authentication local-users username admin otp JBSWY3DPEHPK3PXP

# IT отдел
set vpn openconnect authentication local-users username it_user1 password 'ITSecure123!@#'
set vpn openconnect authentication local-users username it_user1 otp KRSXG5CTORHG6YLM

set vpn openconnect authentication local-users username it_user2 password 'ITSecure456$%^'
set vpn openconnect authentication local-users username it_user2 otp MFRGG2LFNFZXS4TP

# Финансовый отдел (ограниченный доступ)
set vpn openconnect authentication local-users username finance_user1 password 'FinPass789&*('
set vpn openconnect authentication local-users username finance_user1 otp GEZDGNBVGY3TQOJQ

# IP pool для VPN клиентов
set vpn openconnect network-settings client-ip-settings subnet 10.150.0.0/24

# DNS серверы (внутренний корпоративный)
set vpn openconnect network-settings name-server 192.168.100.10
set vpn openconnect network-settings name-server 192.168.100.11

# RADIUS Accounting
set vpn openconnect accounting mode radius
set vpn openconnect accounting radius server 192.168.100.50
set vpn openconnect accounting radius server 192.168.100.50 key 'CorporateRADIUS2024'
set vpn openconnect accounting radius server 192.168.100.50 port 1813

# Порт
set vpn openconnect listen-ports 443

# Firewall: входящий VPN трафик
set firewall ipv4 input filter rule 170 action accept
set firewall ipv4 input filter rule 170 destination port 443
set firewall ipv4 input filter rule 170 protocol tcp

set firewall ipv4 input filter rule 171 action accept
set firewall ipv4 input filter rule 171 destination port 443
set firewall ipv4 input filter rule 171 protocol udp

# Firewall: VPN клиенты к корпоративным серверам
set firewall ipv4 forward filter rule 270 action accept
set firewall ipv4 forward filter rule 270 source address 10.150.0.0/24
set firewall ipv4 forward filter rule 270 destination address 192.168.100.0/24
set firewall ipv4 forward filter rule 270 description 'VPN to corporate servers'

# Firewall: VPN клиенты к приложениям
set firewall ipv4 forward filter rule 271 action accept
set firewall ipv4 forward filter rule 271 source address 10.150.0.0/24
set firewall ipv4 forward filter rule 271 destination address 192.168.200.0/24
set firewall ipv4 forward filter rule 271 description 'VPN to applications'

# Firewall: ограничение доступа финансового отдела
# (предполагается использование per-user firewall или RADIUS атрибутов)

# Заблокировать все остальное от VPN клиентов
set firewall ipv4 forward filter rule 279 action drop
set firewall ipv4 forward filter rule 279 source address 10.150.0.0/24
set firewall ipv4 forward filter rule 279 description 'Block unauthorized VPN access'

# Логирование
set system syslog global facility all level info

commit
save
```

**Генерация OTP ключей**:
```bash
generate openconnect username admin otp-key hotp-time
generate openconnect username it_user1 otp-key hotp-time
generate openconnect username it_user2 otp-key hotp-time
generate openconnect username finance_user1 otp-key hotp-time
```

**Мониторинг и аудит**:
```bash
# Активные сессии
show vpn openconnect-server sessions

# Логи аутентификации
show log | match openconnect

# RADIUS accounting записи (на RADIUS сервере)
tail -f /var/log/freeradius/radacct/192.168.100.1/detail-*
```

## Клиенты OpenConnect

### Cisco AnyConnect (Windows/macOS)

**Установка**:
1. Скачайте Cisco AnyConnect Secure Mobility Client
2. Установите клиент
3. Запустите приложение

**Подключение**:
```
1. Введите адрес сервера: vpn.company.com
2. Нажмите Connect
3. Введите Username: alice
4. Введите Password:
   - Для password-otp: SecurePass123!123456
     (пароль + 6-значный OTP код)
   - Для otp: 123456 (только OTP код)
5. Подключено
```

**Автоматическая конфигурация** (AnyConnect profile):

Создайте файл `anyconnect-profile.xml`:
```xml
<?xml version="1.0" encoding="UTF-8"?>
<AnyConnectProfile xmlns="http://schemas.xmlsoap.org/encoding/">
  <ServerList>
    <HostEntry>
      <HostName>Corporate VPN</HostName>
      <HostAddress>vpn.company.com</HostAddress>
    </HostEntry>
  </ServerList>
</AnyConnectProfile>
```

Импортируйте профиль в AnyConnect.

### OpenConnect Client (Linux)

**Установка**:
```bash
# Ubuntu/Debian
sudo apt-get install openconnect network-manager-openconnect-gnome

# Fedora/RHEL
sudo dnf install openconnect NetworkManager-openconnect-gnome

# Arch Linux
sudo pacman -S openconnect networkmanager-openconnect
```

**Подключение через CLI**:
```bash
# Базовое подключение
sudo openconnect vpn.company.com

# С username
sudo openconnect -u alice vpn.company.com

# С сохранением пароля в файле (небезопасно!)
echo "SecurePass123!123456" | sudo openconnect -u alice --passwd-on-stdin vpn.company.com

# С кастомными опциями
sudo openconnect -u alice --authgroup=default vpn.company.com
```

**Подключение через Network Manager** (GUI):
1. Settings -> Network
2. Add VPN -> Cisco AnyConnect Compatible VPN (openconnect)
3. Gateway: vpn.company.com
4. Username: alice
5. Save -> Connect
6. Введите пароль + OTP при запросе

**Скрипт автоматического подключения**:
```bash
#!/bin/bash
# /usr/local/bin/vpn-connect.sh

USERNAME="alice"
SERVER="vpn.company.com"

# OTP код будет запрошен интерактивно
echo "Enter password + OTP (e.g., SecurePass123!123456):"
sudo openconnect -u "$USERNAME" "$SERVER"
```

### OpenConnect Client (macOS)

**Установка через Homebrew**:
```bash
brew install openconnect

# GUI клиент (опционально)
brew install --cask openconnect-gui
```

**Подключение**:
```bash
# CLI
sudo openconnect -u alice vpn.company.com

# OpenConnect GUI
# Запустите приложение OpenConnect GUI
# Введите vpn.company.com и учетные данные
```

### Mobile клиенты

**iOS**:
- **Cisco AnyConnect**: Официальный клиент (App Store)
- **OpenConnect**: Open-source клиент (ограниченный функционал)

**Android**:
- **Cisco AnyConnect**: Официальный клиент (Google Play)
- **OpenConnect for Android**: Open-source альтернатива

**Настройка на мобильных**:
1. Установите приложение
2. Добавьте VPN соединение
3. Server: vpn.company.com
4. Username: alice
5. Password: SecurePass123!123456
6. Connect

## Продвинутые конфигурации

### Кастомный порт (не 443)

Если порт 443 занят (например, HTTPS сервисом).

```bash
configure

# Использовать порт 8443 вместо 443
set vpn openconnect listen-ports 8443

# Firewall
set firewall ipv4 input filter rule 152 action accept
set firewall ipv4 input filter rule 152 destination port 8443
set firewall ipv4 input filter rule 152 protocol tcp

commit
save
```

**Клиент подключается**:
```
Server: vpn.company.com:8443
```

### Несколько IP pools

Разные IP пулы для разных групп пользователей (требуется identity-based конфигурация через файлы).

```bash
# Основной пул (по умолчанию)
set vpn openconnect network-settings client-ip-settings subnet 10.100.0.0/24

# Дополнительные пулы настраиваются через /config/openconnect/ файлы
# (VyOS пока не имеет CLI для этого)
```

### MTU и MSS настройки

Оптимизация для сетей с нестандартным MTU.

```bash
configure

# MTU настройка (через прямые опции ocserv, если поддерживается)
# По умолчанию OpenConnect использует MTU discovery

commit
save
```

### Compression

OpenConnect поддерживает LZS compression.

```bash
# Compression включен по умолчанию
# Для отключения потребуется изменение конфигурационного файла ocserv напрямую
```

### IPv6 Support

Поддержка IPv6 для VPN клиентов.

```bash
configure

# IPv6 pool для клиентов
set vpn openconnect network-settings client-ipv6-pool prefix 2001:db8:100::/64
set vpn openconnect network-settings client-ipv6-pool mask 96

# IPv6 DNS
# (настраивается через основные name-server если они поддерживают IPv6)

commit
save
```

### Timeouts и Keepalive

Настройка таймаутов для сессий.

```bash
configure

# Idle timeout (автоматическое отключение после бездействия)
# Настраивается через конфигурационный файл ocserv

# DPD (Dead Peer Detection) включен по умолчанию

commit
save
```

### Per-User static IP

Статические IP адреса для определенных пользователей.

```bash
# Через identity-based конфигурацию в /config/openconnect/
# Создайте файл /config/openconnect/config-per-user/alice

# Содержимое файла (пример):
# ipv4-network = 10.100.0.10/32
# routes = 192.168.1.0/24, 10.0.0.0/8
```

## Мониторинг и диагностика

### Проверка статуса сервера

```bash
# Активные VPN сессии
show vpn openconnect-server sessions

# Детальная информация о сессиях
show vpn openconnect-server sessions detail
```

**Пример вывода**:
```
Username    Remote IP       VPN IP        Connected Since  RX/TX Bytes
--------    ---------       ------        ---------------  -----------
alice       203.0.113.50    10.100.0.10   Jan 15 09:30:21  125M / 89M
bob         198.51.100.25   10.100.0.11   Jan 15 11:15:45  45M / 23M
charlie     192.0.2.100     10.100.0.12   Jan 15 13:22:10  12M / 5M
```

### Логи

```bash
# Общий лог OpenConnect
show log vpn openconnect

# Последние 50 строк
show log tail 50 | match openconnect

# Поиск ошибок
show log | match "openconnect.*error"

# Поиск аутентификации
show log | match "openconnect.*auth"

# Live лог
monitor log | match openconnect
```

### Системные процессы

```bash
# Процессы ocserv
show system processes openconnect

# Использование ресурсов
show system resources
```

### Network статистика

```bash
# Интерфейсы OpenConnect
show interfaces

# Детальная статистика
show interfaces detail | match vpns

# Routing table (VPN маршруты)
show ip route
```

### RADIUS статус

```bash
# Проверка связности с RADIUS сервером
# (выполните на VyOS)
ping 192.168.1.10

# Проверка RADIUS порта (на клиенте)
nc -zv 192.168.1.10 1812

# RADIUS accounting логи (на RADIUS сервере)
tail -f /var/log/freeradius/radius.log
```

## Troubleshooting

### Клиент не может подключиться

**Проблема**: "Connection failed" или "Connection timeout".

**Диагностика**:
```bash
# Проверить firewall
show firewall ipv4 input filter

# Проверить что порт открыт
sudo netstat -tlnp | grep 443

# Проверить логи
show log | match openconnect | tail 20

# Проверить SSL сертификаты
show pki certificate openconnect-server
```

**Решение**:
1. Убедитесь что firewall правила разрешают TCP 443:
   ```bash
   set firewall ipv4 input filter rule 150 action accept
   set firewall ipv4 input filter rule 150 destination port 443
   set firewall ipv4 input filter rule 150 protocol tcp
   commit
   ```

2. Проверьте SSL сертификат (не истек ли):
   ```bash
   show pki certificate openconnect-server
   # Проверьте поле "Valid until"
   ```

3. Проверьте что OpenConnect сервис запущен:
   ```bash
   show vpn openconnect-server sessions
   ```

### Аутентификация не проходит

**Проблема**: "Authentication failed" или "Invalid username/password".

**Диагностика**:
```bash
# Проверить пользователей
show configuration commands | match openconnect.*username

# Проверить OTP ключи
show configuration commands | match openconnect.*otp

# Логи аутентификации
show log | match "auth.*failed"
```

**Решение для локальной аутентификации**:
```bash
# Сброс пароля пользователя
configure
set vpn openconnect authentication local-users username alice password 'NewSecurePass123!'
commit
```

**Решение для RADIUS**:
```bash
# Проверить связность с RADIUS
ping 192.168.1.10

# Проверить RADIUS shared secret
show configuration commands | match radius.*key

# Тест RADIUS (с RADIUS сервера)
radtest alice SecurePassword 192.168.1.1 0 SharedSecret123
```

**Решение для 2FA OTP**:
```bash
# Пересоздать OTP ключ
exit
generate openconnect username alice otp-key hotp-time

# Обновить ключ в конфигурации
configure
set vpn openconnect authentication local-users username alice otp НОВЫЙ_КЛЮЧ
commit
```

### Подключился но нет связности

**Проблема**: VPN подключен, клиент получил IP, но нет доступа к внутренней сети.

**Диагностика**:
```bash
# Проверить что клиент получил IP
show vpn openconnect-server sessions

# Проверить routing
show ip route

# Проверить firewall forward
show firewall ipv4 forward filter

# Ping с VyOS к клиенту
ping 10.100.0.10 source-address 192.168.1.1
```

**Решение**:
```bash
configure

# Добавить firewall forward правила
set firewall ipv4 forward filter rule 250 action accept
set firewall ipv4 forward filter rule 250 source address 10.100.0.0/24
set firewall ipv4 forward filter rule 250 description 'VPN clients'

# Проверить NAT (если нужен интернет доступ)
set nat source rule 100 outbound-interface name eth0
set nat source rule 100 source address 10.100.0.0/24
set nat source rule 100 translation address masquerade

commit
```

### DNS не работает

**Проблема**: Клиенты не могут резолвить имена.

**Решение**:
```bash
configure

# Проверить DNS серверы
show configuration commands | match openconnect.*name-server

# Добавить публичные DNS
set vpn openconnect network-settings name-server 8.8.8.8
set vpn openconnect network-settings name-server 1.1.1.1

commit
```

### Низкая производительность

**Проблема**: Медленная скорость через VPN.

**Диагностика**:
```bash
# Проверить CPU/Memory
show system resources

# Network статистика
show interfaces statistics
```

**Решение**:
```bash
# MTU оптимизация (на клиенте)
# В AnyConnect: Settings -> Preferences -> MTU = 1400

# Проверить что DTLS работает (UDP 443 открыт)
set firewall ipv4 input filter rule 151 action accept
set firewall ipv4 input filter rule 151 destination port 443
set firewall ipv4 input filter rule 151 protocol udp
commit

# Hardware offload (если поддерживается)
set system acceleration options
```

### RADIUS timeout

**Проблема**: "RADIUS server timeout" в логах.

**Решение**:
```bash
configure

# Увеличить timeout
set vpn openconnect authentication radius timeout 10

# Добавить backup RADIUS сервер
set vpn openconnect authentication radius server 192.168.1.11
set vpn openconnect authentication radius server 192.168.1.11 key 'SharedSecret'
set vpn openconnect authentication radius server 192.168.1.11 port 1812

commit
```

### SSL Certificate errors

**Проблема**: "SSL certificate verification failed" на клиенте.

**Решение для self-signed сертификатов**:
```
# На клиенте отключите проверку сертификата:
# OpenConnect CLI:
sudo openconnect --no-cert-check vpn.company.com

# AnyConnect:
# Settings -> Preferences -> Untrusted Server Warning -> Unblock
```

**Решение для production** (используйте Let's Encrypt):
```bash
# Получите действительный сертификат
sudo certbot certonly --standalone -d vpn.company.com

# Импортируйте в VyOS
configure
set pki certificate openconnect-server certificate "$(cat /etc/letsencrypt/live/vpn.company.com/fullchain.pem)"
set pki certificate openconnect-server private key "$(cat /etc/letsencrypt/live/vpn.company.com/privkey.pem)"
commit
```

## Безопасность

### Рекомендации по безопасности

1. **Используйте сильные пароли**:
   - Минимум 12 символов
   - Комбинация букв, цифр, специальных символов
   - Регулярная смена паролей

2. **Обязательная 2FA для production**:
   ```bash
   set vpn openconnect authentication mode local password-otp
   ```

3. **Используйте Let's Encrypt сертификаты**:
   - Автоматическое обновление
   - Доверенные клиентами
   - Бесплатные

4. **RADIUS для централизованной аутентификации**:
   - Единая база пользователей
   - Accounting и аудит
   - Возможность интеграции с AD/LDAP

5. **Firewall ограничения**:
   ```bash
   # Rate limiting для VPN порта
   set firewall ipv4 input filter rule 150 recent count 10
   set firewall ipv4 input filter rule 150 recent time minute 1
   ```

6. **Логирование всех подключений**:
   ```bash
   set system syslog global facility all level info
   ```

7. **Регулярные обновления**:
   ```bash
   # Обновление VyOS
   add system image latest
   ```

8. **IP whitelist** (если возможно):
   ```bash
   # Разрешить VPN только с определенных IP
   set firewall ipv4 input filter rule 150 source address 203.0.113.0/24
   ```

### Защита от атак

**DDoS защита**:
```bash
configure

# Connection rate limiting
set firewall ipv4 input filter rule 150 recent count 5
set firewall ipv4 input filter rule 150 recent time second 10

# SYN flood защита
set firewall ipv4 input filter rule 149 action drop
set firewall ipv4 input filter rule 149 protocol tcp
set firewall ipv4 input filter rule 149 tcp flags syn
set firewall ipv4 input filter rule 149 recent count 20
set firewall ipv4 input filter rule 149 recent time second 1

commit
```

**Brute-force защита** (через fail2ban на VyOS):

```bash
# Установка fail2ban (operational mode)
sudo apt-get install fail2ban

# Конфигурация fail2ban для OpenConnect
# /etc/fail2ban/jail.local
[openconnect]
enabled = true
port = 443
filter = openconnect
logpath = /var/log/messages
maxretry = 5
bantime = 3600
findtime = 600
```

### Аудит и compliance

**Логирование для compliance**:
```bash
configure

# Syslog на удаленный сервер
set system syslog host 192.168.1.100 facility all level info
set system syslog host 192.168.1.100 port 514

# RADIUS accounting для аудита
set vpn openconnect accounting mode radius
set vpn openconnect accounting radius server 192.168.1.50
set vpn openconnect accounting radius server 192.168.1.50 key 'AuditSecret'
set vpn openconnect accounting radius server 192.168.1.50 port 1813

commit
```

**Регулярный аудит пользователей**:
```bash
# Список активных пользователей
show configuration commands | match openconnect.*username

# История подключений (из логов)
show log | match "openconnect.*connected"
```

## Интеграция с другими сервисами

### OpenConnect + LDAP/Active Directory

Интеграция через RADIUS как proxy к AD.

**FreeRADIUS с LDAP** (на RADIUS сервере):
```
# /etc/freeradius/3.0/mods-enabled/ldap
ldap {
    server = "ldap.company.com"
    identity = "cn=radius,dc=company,dc=com"
    password = "RadiusLDAPPassword"
    base_dn = "ou=users,dc=company,dc=com"

    filter = "(uid=%{%{Stripped-User-Name}:-%{User-Name}})"

    user {
        base_dn = "${..base_dn}"
        filter = "(uid=%{%{Stripped-User-Name}:-%{User-Name}})"
    }
}
```

**VyOS конфигурация**:
```bash
configure
set vpn openconnect authentication mode radius
set vpn openconnect authentication radius server 192.168.1.10 key 'Secret'
commit
```

### OpenConnect + Monitoring

Мониторинг VPN через Prometheus/Grafana.

**Node Exporter на VyOS**:
```bash
# Установка node_exporter
sudo apt-get install prometheus-node-exporter

# Firewall для Prometheus
set firewall ipv4 input filter rule 180 action accept
set firewall ipv4 input filter rule 180 source address 192.168.1.200
set firewall ipv4 input filter rule 180 destination port 9100
set firewall ipv4 input filter rule 180 protocol tcp
```

**Custom метрики OpenConnect**:
```bash
#!/bin/bash
# /usr/local/bin/openconnect_exporter.sh

# Количество активных сессий
SESSIONS=$(occtl show users | grep -c "Username:")
echo "openconnect_sessions $SESSIONS"

# Вывод метрик
```

### OpenConnect + Backup VPN

OpenConnect как backup для IPsec.

```bash
configure

# Primary: IPsec
set vpn ipsec...

# Backup: OpenConnect
set vpn openconnect...

# Routing с приоритетами (через dynamic routing или мониторинг скриптами)

commit
```

## Лучшие практики

1. **Всегда используйте 2FA** для production окружений
2. **Let's Encrypt сертификаты** вместо self-signed
3. **RADIUS accounting** для аудита и compliance
4. **Split tunneling** когда full tunnel не требуется (экономия bandwidth)
5. **Firewall правила** для ограничения доступа VPN клиентов
6. **Rate limiting** на VPN порту для защиты от DDoS
7. **Регулярный аудит** пользователей и сессий
8. **Backup конфигурации** перед изменениями
9. **Мониторинг** активных сессий и ресурсов
10. **Документирование** доступов и конфигураций
11. **Регулярные обновления** VyOS и OpenConnect
12. **Тестирование** перед применением в production
13. **Disaster recovery план** для VPN сервиса
14. **Ротация OTP ключей** при смене сотрудников
15. **Логирование на удаленный syslog** для сохранности аудита

## Миграция с других VPN

### С Cisco AnyConnect на OpenConnect

**Преимущества миграции**:
- Open-source решение (без лицензий)
- Полная совместимость с существующими клиентами
- Больше гибкости в конфигурации
- Меньше стоимость владения

**План миграции**:
1. Настройте OpenConnect параллельно с Cisco AnyConnect
2. Используйте тот же пул IP адресов (или новый, если возможно)
3. Мигрируйте пользователей поэтапно (по отделам)
4. Тестовый период (оба VPN работают)
5. Полная миграция после успешных тестов
6. Отключение Cisco AnyConnect

### С OpenVPN на OpenConnect

**Причины миграции**:
- Нужна совместимость с AnyConnect клиентами
- Требуется встроенная 2FA (OTP)
- Проще для пользователей (Cisco AnyConnect знаком многим)

**План**:
1. Установите OpenConnect на новом порту (или новом сервере)
2. Создайте тех же пользователей
3. Выдайте инструкции по подключению
4. Grace period (оба VPN работают)
5. Миграция пользователей
6. Отключение OpenVPN

## Заключение

OpenConnect VPN Server - это мощное, безопасное и гибкое решение для корпоративного remote access VPN, особенно подходящее для:

- **Enterprise окружений** с требованиями к безопасности и аудиту
- **Замены коммерческого Cisco AnyConnect** на open-source решение
- **Двухфакторной аутентификации** для критичных доступов
- **Интеграции с RADIUS/LDAP/AD** для централизованного управления пользователями
- **Строгих firewall ограничений** (работа только на TCP 443)
- **Кросс-платформенных клиентов** с единым интерфейсом

VyOS обеспечивает полную поддержку OpenConnect со всеми enterprise функциями: локальная аутентификация, RADIUS, 2FA OTP, SSL сертификаты, RADIUS accounting, и identity-based конфигурация.

Для максимальной производительности site-to-site туннелей рассмотрите **WireGuard** или **IPsec**, а для простых remote access сценариев - **OpenVPN**. OpenConnect идеален когда требуется баланс между безопасностью, совместимостью и enterprise функциями.

## Похожие материалы

- [WireGuard на VyOS](/docs/vyos/vpn/vyos-wireguard/) - современный высокопроизводительный VPN
- [IPsec на VyOS](/docs/vyos/vpn/vyos-ipsec/) - site-to-site VPN корпоративного уровня
- [OpenVPN на VyOS](/docs/vyos/vpn/vyos-openvpn/) - SSL VPN с TLS для remote access
- [L2TP/IPsec на VyOS](/docs/vyos/vpn/vyos-l2tp/) - VPN для клиентов Windows и macOS

