SSTP Client - Secure Socket Tunneling Protocol

SSTP (Secure Socket Tunneling Protocol) - это VPN протокол, который транспортирует PPP трафик через SSL/TLS канал. SSTP использует TCP порт 443 по умолчанию, что позволяет ему проходить через большинство файрволов и прокси-серверов, которые обычно блокируют другие VPN протоколы.

Введение в SSTP

Что такое SSTP?

SSTP - это проприетарный протокол Microsoft, который:

  • Инкапсулирует PPP трафик внутри SSL/TLS соединения
  • Использует TCP порт 443 (стандартный HTTPS порт)
  • Обеспечивает transport-level безопасность
  • Поддерживает key negotiation и шифрование
  • Проверяет целостность трафика
  • Легко проходит через файрволы и NAT

Архитектура SSTP

Компоненты:

  • SSTP Client - инициирует соединение (VyOS router)
  • SSTP Server - принимает соединение (Windows Server, VyOS, другие)
  • SSL/TLS layer - обеспечивает шифрование
  • PPP layer - транспортный протокол
  • HTTP/HTTPS - базовый транспорт

Этапы установки соединения:

  1. TCP handshake на порт 443
  2. TLS handshake - установка SSL сессии
  3. HTTP negotiation - SSTP protocol negotiation
  4. PPP session - установка PPP соединения
  5. Authentication - PAP/CHAP/MS-CHAP
  6. IP configuration - получение IP адреса

Преимущества SSTP

Обход ограничений:

  • Использует порт 443 (HTTPS) - не блокируется файрволами
  • Проходит через HTTP прокси
  • Работает через NAT без дополнительной настройки
  • Выглядит как обычный HTTPS трафик

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

  • SSL/TLS шифрование (AES-256)
  • Certificate-based authentication
  • Защита от MITM атак
  • Проверка целостности данных

Применение:

  • Удаленный доступ через ограничивающие файрволы
  • Корпоративные сети с жесткими политиками
  • Публичные Wi-Fi сети с блокировкой VPN
  • Backup VPN канал (всегда доступный)

Когда использовать SSTP?

Рекомендуется для:

  • Подключение из сетей с ограничивающими файрволами
  • Публичные Wi-Fi с блокировкой VPN портов
  • Корпоративные сети с белым списком портов
  • Backup канал когда IPsec/OpenVPN/WireGuard заблокированы
  • Совместимость с Windows Server SSTP

Применение:

  • Remote access VPN для сотрудников
  • Site-to-Site VPN через ограничивающие ISP
  • Bypass censorship и DPI (Deep Packet Inspection)
  • Резервный VPN канал

Конфигурация SSTP Client

Базовая настройка

configure

# Создать SSTP интерфейс
set interfaces sstpc sstpc0 server 'vpn.example.com'
set interfaces sstpc sstpc0 authentication username 'myuser'
set interfaces sstpc sstpc0 authentication password 'SecretPassword123'

# SSL certificate verification (если self-signed - отключить)
set interfaces sstpc sstpc0 ssl ca-certificate 'VPN-CA'

# Автоматический default route
set interfaces sstpc sstpc0 default-route auto

commit
save

Результат:

  • SSTP соединение к vpn.example.com:443
  • Автоматическое получение IP адреса от сервера
  • Default route через SSTP туннель
  • SSL/TLS шифрование

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

Server

# FQDN сервера
set interfaces sstpc sstpc0 server 'vpn.company.com'

# IP адрес сервера
set interfaces sstpc sstpc0 server '203.0.113.10'

# Сервер с нестандартным портом (если не 443)
# SSTP всегда использует порт 443, изменение не поддерживается

Важно: Сервер должен быть доступен по FQDN или IP на порту 443/TCP.

Authentication

# Username и password
set interfaces sstpc sstpc0 authentication username 'user@domain.com'
set interfaces sstpc sstpc0 authentication password 'MyPassword'

Типы аутентификации:

  • PAP (Password Authentication Protocol) - не рекомендуется
  • CHAP (Challenge Handshake Authentication Protocol)
  • MS-CHAP v2 (Microsoft CHAP) - рекомендуется для Windows Server

VyOS автоматически согласует метод с сервером.

SSL Certificate

# CA certificate для проверки сервера
set interfaces sstpc sstpc0 ssl ca-certificate 'VPN-CA'

# Если self-signed сертификат - можно пропустить проверку
# (не рекомендуется в production)
# Просто не указывать ca-certificate

Импорт CA certificate:

# Загрузить CA cert на VyOS
configure
set pki ca VPN-CA certificate 'MIIDXTCCAkWgAwIBAgIJ...'
commit

Или загрузить файл:

# Скопировать файл на VyOS
scp ca.crt vyos@router:/tmp/

# Импортировать
vyos@router# configure
vyos@router# load /config/auth/ca.crt

Default Route

# Автоматически добавить default route через SSTP
set interfaces sstpc sstpc0 default-route auto

# Явно указать default route
set interfaces sstpc sstpc0 default-route force

# Не добавлять default route (split-tunnel)
set interfaces sstpc sstpc0 no-default-route

# Default route с метрикой
set interfaces sstpc sstpc0 default-route-distance 10

Опции:

  • auto - добавить route если SSTP единственное подключение
  • force - всегда добавлять route
  • no-default-route - не добавлять route (split-tunnel)

MTU

# MTU (Maximum Transmission Unit)
set interfaces sstpc sstpc0 mtu 1452

Рекомендации MTU:

  • Ethernet MTU: 1500 bytes
  • SSTP overhead: ~48 bytes (PPP + SSL/TLS + TCP + IP headers)
  • Рекомендуемый MTU: 1452 bytes
  • Для низкоскоростных каналов: 1400 bytes

TCP MSS clamping:

# Установить TCP MSS для предотвращения фрагментации
set interfaces sstpc sstpc0 ip adjust-mss 1412
set interfaces sstpc sstpc0 ipv6 adjust-mss 1392

DNS Configuration

# Получать DNS от SSTP сервера (default)
# (автоматически через PPP negotiation)

# Не использовать DNS от сервера
set interfaces sstpc sstpc0 no-peer-dns

VRF Support

# Поместить SSTP интерфейс в VRF
set interfaces sstpc sstpc0 vrf MANAGEMENT

Use case: Изоляция management трафика через отдельный VPN.

Interface Description

# Добавить описание
set interfaces sstpc sstpc0 description 'Corporate VPN - Main Link'

IP Configuration

# Автоматическое получение IP от сервера (default)
# (через PPP negotiation)

# Статический IP (если сервер требует)
# SSTP обычно использует dynamic IP assignment

Disable Interface

# Временно отключить интерфейс
set interfaces sstpc sstpc0 disable

# Включить обратно
delete interfaces sstpc sstpc0 disable
commit

Source Validation

# Настроить source validation
set interfaces sstpc sstpc0 ip disable-forwarding
set interfaces sstpc sstpc0 ip source-validation strict
set interfaces sstpc sstpc0 ip source-validation loose
set interfaces sstpc sstpc0 ip source-validation disable

Практические сценарии

Сценарий 1: Remote Access VPN через ограничивающий файрвол

Топология:

[User Laptop] ---- [Restrictive Firewall] ---- [Internet] ---- [SSTP Server]
                    (only port 443 allowed)

Задача: Подключиться к корпоративной сети из публичного Wi-Fi, который блокирует все порты кроме 80/443.

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

configure

# SSTP интерфейс
set interfaces sstpc sstpc0 server 'vpn.company.com'
set interfaces sstpc sstpc0 authentication username 'employee@company.com'
set interfaces sstpc sstpc0 authentication password 'StrongPassword!23'
set interfaces sstpc sstpc0 ssl ca-certificate 'COMPANY-CA'
set interfaces sstpc sstpc0 default-route auto
set interfaces sstpc sstpc0 mtu 1452
set interfaces sstpc sstpc0 description 'Corporate VPN'

# LAN интерфейс (для клиентов за VyOS)
set interfaces ethernet eth1 address 192.168.1.1/24

# NAT для LAN через SSTP
set nat source rule 100 outbound-interface name sstpc0
set nat source rule 100 source address 192.168.1.0/24
set nat source rule 100 translation address masquerade

# DHCP для LAN клиентов
set service dhcp-server shared-network-name LAN subnet 192.168.1.0/24 range 0 start 192.168.1.100
set service dhcp-server shared-network-name LAN subnet 192.168.1.0/24 range 0 stop 192.168.1.200
set service dhcp-server shared-network-name LAN subnet 192.168.1.0/24 option default-router 192.168.1.1

commit
save

Проверка:

# Статус SSTP интерфейса
show interfaces sstpc sstpc0

# Полученный IP адрес
show interfaces sstpc sstpc0 brief

# Default route
show ip route

# Тест connectivity
ping 8.8.8.8 interface sstpc0

Сценарий 2: Site-to-Site VPN через SSTP

Топология:

[Branch Office VyOS] ---- SSTP ---- [HQ SSTP Server]
 192.168.2.0/24                      192.168.1.0/24

Задача: Соединить филиал с головным офисом через SSTP (ISP блокирует IPsec).

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

configure

# WAN интерфейс
set interfaces ethernet eth0 address dhcp
set interfaces ethernet eth0 description 'WAN - ISP'

# SSTP к головному офису
set interfaces sstpc sstpc0 server 'hq-vpn.company.com'
set interfaces sstpc sstpc0 authentication username 'branch-office-1'
set interfaces sstpc sstpc0 authentication password 'BranchPass123!'
set interfaces sstpc sstpc0 ssl ca-certificate 'HQ-VPN-CA'
set interfaces sstpc sstpc0 no-default-route
set interfaces sstpc sstpc0 mtu 1452
set interfaces sstpc sstpc0 description 'VPN to HQ'

# LAN интерфейс
set interfaces ethernet eth1 address 192.168.2.1/24
set interfaces ethernet eth1 description 'Branch LAN'

# Статический маршрут к HQ сети через SSTP
# (предполагая что SSTP server выдает 10.10.0.x адреса)
set protocols static route 192.168.1.0/24 interface sstpc0

# NAT для интернета через WAN
set nat source rule 100 outbound-interface name eth0
set nat source rule 100 source address 192.168.2.0/24
set nat source rule 100 translation address masquerade

# DHCP для LAN
set service dhcp-server shared-network-name LAN subnet 192.168.2.0/24 range 0 start 192.168.2.100
set service dhcp-server shared-network-name LAN subnet 192.168.2.0/24 range 0 stop 192.168.2.200
set service dhcp-server shared-network-name LAN subnet 192.168.2.0/24 option default-router 192.168.2.1

# DNS forwarding
set service dns forwarding listen-address 192.168.2.1
set service dns forwarding allow-from 192.168.2.0/24

commit
save

Проверка:

# SSTP соединение
show interfaces sstpc sstpc0

# Routing table
show ip route

# Ping HQ сети
ping 192.168.1.1 source-address 192.168.2.1

Сценарий 3: Dual VPN (SSTP + WireGuard Failover)

Топология:

                 ┌─ WireGuard (Primary, fast)
[VyOS Router] ───┤
                 └─ SSTP (Backup, always works)

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

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

configure

# Primary VPN: WireGuard
set interfaces wireguard wg0 address 10.10.0.1/30
set interfaces wireguard wg0 port 51820
set interfaces wireguard wg0 private-key 'WIREGUARD_PRIVATE_KEY'
set interfaces wireguard wg0 peer hq public-key 'HQ_PUBLIC_KEY'
set interfaces wireguard wg0 peer hq allowed-ips '10.10.0.2/32'
set interfaces wireguard wg0 peer hq allowed-ips '192.168.1.0/24'
set interfaces wireguard wg0 peer hq address 'vpn.company.com'
set interfaces wireguard wg0 peer hq port 51820
set interfaces wireguard wg0 description 'Primary VPN - WireGuard'

# Backup VPN: SSTP
set interfaces sstpc sstpc0 server 'vpn.company.com'
set interfaces sstpc sstpc0 authentication username 'backup-vpn@company.com'
set interfaces sstpc sstpc0 authentication password 'BackupVPN!Pass'
set interfaces sstpc sstpc0 ssl ca-certificate 'COMPANY-CA'
set interfaces sstpc sstpc0 no-default-route
set interfaces sstpc sstpc0 mtu 1452
set interfaces sstpc sstpc0 description 'Backup VPN - SSTP'

# Статические маршруты с метриками
# WireGuard - lower distance (preferred)
set protocols static route 192.168.1.0/24 interface wg0
set protocols static route 192.168.1.0/24 interface wg0 distance 10

# SSTP - higher distance (backup)
set protocols static route 192.168.1.0/24 interface sstpc0
set protocols static route 192.168.1.0/24 interface sstpc0 distance 20

commit
save

Логика failover:

  • WireGuard используется по умолчанию (distance 10)
  • При падении WireGuard трафик автоматически переключается на SSTP (distance 20)
  • SSTP всегда работает т.к. использует порт 443

Проверка:

# Routing table - должно быть два route
show ip route 192.168.1.0/24

# Проверить активный маршрут
show ip route

# Симуляция failover
disconnect interface wg0

# Проверить переключение на SSTP
show ip route 192.168.1.0/24

Сценарий 4: SSTP через HTTP Proxy

Задача: Подключиться к VPN через корпоративный HTTP прокси.

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

configure

# SSTP поддерживает HTTP CONNECT proxy
# Конфигурация proxy в VyOS 1.4/1.5 может потребовать дополнительных настроек

# Базовый SSTP
set interfaces sstpc sstpc0 server 'vpn.company.com'
set interfaces sstpc sstpc0 authentication username 'user@company.com'
set interfaces sstpc sstpc0 authentication password 'Password123'
set interfaces sstpc sstpc0 ssl ca-certificate 'COMPANY-CA'

commit
save

Примечание: VyOS SSTP client может не поддерживать HTTP proxy напрямую. В этом случае используйте:

  • Прямое подключение (если доступно)
  • SSH tunnel через прокси + SSTP поверх
  • Другой VPN протокол (OpenVPN с http-proxy)

Сценарий 5: SSTP в Yandex Cloud

Задача: Подключить VyOS в Yandex Cloud к корпоративному SSTP серверу.

Топология:

[VyOS in Yandex Cloud] ---- [Internet] ---- [Corporate SSTP Server]
   10.128.0.5/24                              vpn.company.ru

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

configure

# WAN интерфейс (Yandex Cloud external IP)
set interfaces ethernet eth0 address 10.128.0.5/24
set interfaces ethernet eth0 description 'Yandex Cloud Network'

# SSTP к корпоративному серверу
set interfaces sstpc sstpc0 server 'vpn.company.ru'
set interfaces sstpc sstpc0 authentication username 'cloud-vyos@company.ru'
set interfaces sstpc sstpc0 authentication password 'CloudVPN!2024'
set interfaces sstpc sstpc0 ssl ca-certificate 'CORP-CA'
set interfaces sstpc sstpc0 no-default-route
set interfaces sstpc sstpc0 mtu 1420
set interfaces sstpc sstpc0 description 'VPN to Corporate Network'

# Маршруты к корпоративным сетям через SSTP
set protocols static route 192.168.0.0/16 interface sstpc0
set protocols static route 10.0.0.0/8 interface sstpc0

# Default route через Yandex Cloud gateway
set protocols static route 0.0.0.0/0 next-hop 10.128.0.1

# Firewall для исходящего SSTP
set firewall ipv4 name YANDEX-OUT default-action accept
set firewall ipv4 name YANDEX-OUT rule 100 action accept
set firewall ipv4 name YANDEX-OUT rule 100 destination port 443
set firewall ipv4 name YANDEX-OUT rule 100 protocol tcp

commit
save

Особенности Yandex Cloud:

  • MTU в Yandex Cloud: 1500, используйте SSTP MTU 1420-1452
  • SSTP работает через Yandex Cloud NAT gateway
  • Не требуется дополнительных security group rules для исходящего порта 443

Проверка:

# SSTP статус
show interfaces sstpc sstpc0

# Ping корпоративной сети
ping 192.168.1.1 interface sstpc0

# Traceroute
traceroute 192.168.1.1

Сценарий 6: SSTP в VK Cloud

Задача: Подключить VyOS в VK Cloud к VPN серверу.

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

configure

# WAN интерфейс (VK Cloud private network)
set interfaces ethernet eth0 address dhcp
set interfaces ethernet eth0 description 'VK Cloud Network'

# SSTP к VPN серверу
set interfaces sstpc sstpc0 server 'vpn.example.ru'
set interfaces sstpc sstpc0 authentication username 'vkcloud-client'
set interfaces sstpc sstpc0 authentication password 'VKCloudVPN!123'
set interfaces sstpc sstpc0 ssl ca-certificate 'VPN-CA'
set interfaces sstpc sstpc0 default-route auto
set interfaces sstpc sstpc0 mtu 1450
set interfaces sstpc sstpc0 description 'VPN Connection'

# NAT для внутренних сетей через SSTP
set interfaces ethernet eth1 address 192.168.100.1/24

set nat source rule 100 outbound-interface name sstpc0
set nat source rule 100 source address 192.168.100.0/24
set nat source rule 100 translation address masquerade

commit
save

Особенности VK Cloud:

  • MTU в VK Cloud: 1500, используйте SSTP MTU 1450
  • SSTP работает через VK Cloud NAT
  • Проверьте security groups для порта 443

Сценарий 7: Split-Tunnel SSTP

Задача: Только корпоративный трафик через VPN, интернет напрямую.

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

configure

# SSTP без default route
set interfaces sstpc sstpc0 server 'vpn.company.com'
set interfaces sstpc sstpc0 authentication username 'user@company.com'
set interfaces sstpc sstpc0 authentication password 'Password123'
set interfaces sstpc sstpc0 ssl ca-certificate 'COMPANY-CA'
set interfaces sstpc sstpc0 no-default-route
set interfaces sstpc sstpc0 mtu 1452
set interfaces sstpc sstpc0 description 'Split-Tunnel VPN'

# Только корпоративные сети через SSTP
set protocols static route 192.168.0.0/16 interface sstpc0
set protocols static route 10.0.0.0/8 interface sstpc0

# Интернет через WAN
set interfaces ethernet eth0 address dhcp

# Default route через WAN
set protocols static route 0.0.0.0/0 dhcp-interface eth0

# NAT для интернета через WAN
set nat source rule 100 outbound-interface name eth0
set nat source rule 100 source address 192.168.1.0/24
set nat source rule 100 translation address masquerade

commit
save

Преимущества split-tunnel:

  • Интернет трафик не загружает VPN
  • Быстрее для пользователей
  • Меньше нагрузка на VPN сервер

Мониторинг и отладка

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

# Общая информация
show interfaces sstpc

# Детальная информация конкретного интерфейса
show interfaces sstpc sstpc0

# Brief вывод
show interfaces sstpc sstpc0 brief

# Статистика
show interfaces sstpc sstpc0 statistics

Пример вывода:

sstpc0: <POINTOPOINT,MULTICAST,NOARP,UP,LOWER_UP> mtu 1452
    inet 10.10.0.2 peer 10.10.0.1/32
    RX: bytes    packets  errors  dropped  overrun       mcast
        5242880    4096       0        0        0           0
    TX: bytes    packets  errors  dropped carrier collisions
        2621440    2048       0        0       0           0

Operational Commands

# Connect SSTP соединение
connect interface sstpc0

# Disconnect SSTP соединение
disconnect interface sstpc0

# Проверить log сообщения SSTP
show log | match sstpc

# Проверить authentication log
show log auth | match sstpc

Debugging SSTP

# Логи SSTP в реальном времени
monitor log | match sstpc

# Системные логи
show log tail

# dmesg для kernel-level проблем
show log kernel tail

Debug информация включает:

  • TCP connection establishment
  • TLS handshake
  • HTTP negotiation
  • PPP LCP negotiation
  • Authentication attempts
  • IP address assignment

Packet Capture

# Захват SSTP трафика (TCP port 443)
monitor traffic interface eth0 filter "tcp port 443 and host vpn.company.com"

# Захват трафика на SSTP интерфейсе
monitor traffic interface sstpc0

# Сохранить capture в файл
monitor traffic interface eth0 filter "tcp port 443" save /tmp/sstp-capture.pcap

Анализ в Wireshark:

  • TCP SYN/ACK (3-way handshake)
  • TLS Client/Server Hello
  • TLS Certificate Exchange
  • HTTP SSTP negotiation (после TLS)
  • Encrypted PPP frames (после установки SSTP)

Проверка DNS

# DNS resolution для сервера
nslookup vpn.company.com

# Ping сервера
ping vpn.company.com

# Проверить порт 443
telnet vpn.company.com 443

Мониторинг производительности

# Bandwidth monitoring
monitor bandwidth interface sstpc0

# Real-time traffic statistics
show interfaces sstpc sstpc0 statistics

# Connection uptime
show interfaces sstpc sstpc0 | grep "uptime"

Troubleshooting

Проблема: SSTP не устанавливает соединение

Симптомы:

  • Интерфейс в состоянии DOWN
  • Нет IP адреса
  • Connection timeout

Диагностика:

# 1. Проверить DNS resolution
nslookup vpn.company.com

# 2. Проверить connectivity к серверу
ping vpn.company.com

# 3. Проверить порт 443
telnet vpn.company.com 443

# 4. Проверить SSTP logs
show log | match sstpc

# 5. Попытка connect
connect interface sstpc0

# 6. Проверить вывод
show log tail

Типичные причины:

  1. Сервер недоступен:
# В логах: "Connection refused" или "Timeout"
# Решение: проверить DNS, firewall, routing
ping vpn.company.com
traceroute vpn.company.com
  1. Неверные credentials:
# В логах: "authentication failed" или "Access denied"
# Решение: проверить username/password
set interfaces sstpc sstpc0 authentication username 'correct-user'
set interfaces sstpc sstpc0 authentication password 'correct-pass'
commit
  1. SSL Certificate проблемы:
# В логах: "certificate verification failed" или "SSL handshake failed"
# Решение: проверить CA certificate

# Импортировать правильный CA cert
set pki ca VPN-CA certificate 'MIID...'
set interfaces sstpc sstpc0 ssl ca-certificate 'VPN-CA'

# Или отключить проверку (только для тестирования)
delete interfaces sstpc sstpc0 ssl ca-certificate
commit
  1. Firewall блокирует порт 443:
# Проверить firewall
show firewall

# Разрешить исходящий порт 443
set firewall ipv4 name WAN-OUT rule 100 action accept
set firewall ipv4 name WAN-OUT rule 100 destination port 443
set firewall ipv4 name WAN-OUT rule 100 protocol tcp
commit

Проблема: Соединение устанавливается, но нет интернета

Диагностика:

# 1. Проверить IP адрес
show interfaces sstpc sstpc0
# Должен быть IP адрес от сервера

# 2. Проверить default route
show ip route 0.0.0.0/0
# Должен указывать на sstpc0 (для full-tunnel)

# 3. Ping gateway SSTP сервера
ping 10.10.0.1 interface sstpc0

# 4. Ping public IP
ping 8.8.8.8 interface sstpc0

# 5. Проверить DNS
nslookup google.com

# 6. Проверить NAT (если используется)
show nat source statistics

Решения:

  1. Нет default route:
set interfaces sstpc sstpc0 default-route force
commit
  1. DNS не работает:
# Использовать DNS от сервера (default)
delete interfaces sstpc sstpc0 no-peer-dns

# Или public DNS
set system name-server 8.8.8.8
set system name-server 8.8.4.4
commit
  1. NAT не настроен (для LAN клиентов):
set nat source rule 100 outbound-interface name sstpc0
set nat source rule 100 source address 192.168.1.0/24
set nat source rule 100 translation address masquerade
commit

Проблема: Частые disconnects/reconnects

Симптомы:

  • SSTP постоянно переподключается
  • В логах: “Connection lost” или “PPP terminated”

Диагностика:

# 1. Проверить uptime
show interfaces sstpc sstpc0 | grep uptime

# 2. Проверить logs
show log | match "sstpc0"

# 3. Статистика errors
show interfaces sstpc sstpc0 statistics

Причины и решения:

  1. Нестабильное интернет соединение:
# Проверить WAN интерфейс
show interfaces ethernet eth0 statistics

# Проверить packet loss
ping 8.8.8.8 count 100

# Решение: исправить проблемы на WAN
  1. MTU problems:
# Packets dropping из-за MTU
# Решение: уменьшить MTU
set interfaces sstpc sstpc0 mtu 1400
set interfaces sstpc sstpc0 ip adjust-mss 1360
commit
  1. Server timeout:
# SSTP server разрывает неактивные соединения
# Решение: отправлять keepalive трафик или проверить настройки сервера
  1. SSL session timeout:
# TLS session expiring
# Решение: проверить настройки SSL на сервере

Проблема: Низкая скорость

Диагностика:

# 1. Bandwidth test через iperf3
# На сервере
iperf3 -s

# На VyOS
iperf3 -c server-ip -i 1 -t 30

# 2. Проверить MTU
ping 8.8.8.8 size 1452 do-not-fragment interface sstpc0

# 3. Проверить CPU usage
show system resources

# 4. Interface statistics
show interfaces sstpc sstpc0 statistics

Решения:

  1. MTU fragmentation:
# Path MTU Discovery
# Уменьшить MTU
set interfaces sstpc sstpc0 mtu 1400
set interfaces sstpc sstpc0 ip adjust-mss 1360
commit
  1. TCP over TCP problem:
# SSTP использует TCP (PPP over SSL over TCP)
# TCP-over-TCP может вызывать проблемы производительности
# Решение: использовать UDP-based VPN (WireGuard, OpenVPN UDP) для лучшей производительности
  1. Server overload:
# Сервер перегружен
# Решение: проверить load на сервере, добавить capacity

Проблема: SSL Certificate errors

Симптомы:

  • “certificate verification failed”
  • “SSL handshake error”

Диагностика:

# 1. Проверить сертификат сервера
openssl s_client -connect vpn.company.com:443 -showcerts

# 2. Проверить CA certificate в VyOS
show pki ca VPN-CA

# 3. Проверить logs
show log | match "ssl"

Решения:

# 1. Импортировать правильный CA cert
# Получить CA cert от администратора сервера
set pki ca VPN-CA certificate 'MIIDXTCCAkWgAwIBAgIJ...'
set interfaces sstpc sstpc0 ssl ca-certificate 'VPN-CA'
commit

# 2. Для self-signed сертификата (только testing)
delete interfaces sstpc sstpc0 ssl ca-certificate
commit

# 3. Проверить hostname в сертификате
# FQDN в server должен совпадать с CN в сертификате
set interfaces sstpc sstpc0 server 'vpn.company.com'  # не IP адрес
commit

Security Best Practices

1. Использование сертификатов

# Всегда проверяйте SSL сертификат в production
set interfaces sstpc sstpc0 ssl ca-certificate 'TRUSTED-CA'

# Не отключайте проверку сертификата без веской причины

2. Защита credentials

# Используйте сильные пароли
set interfaces sstpc sstpc0 authentication password 'ComplexP@ssw0rd!2024'

# Ограничить доступ к конфигурации
set system login user admin authentication plaintext-password 'AdminPassword'
set system login user admin level admin

3. Firewall на интерфейсе

# Создать firewall для SSTP интерфейса
set firewall ipv4 name SSTP-IN default-action drop
set firewall ipv4 name SSTP-IN rule 10 action accept
set firewall ipv4 name SSTP-IN rule 10 state established
set firewall ipv4 name SSTP-IN rule 10 state related

set firewall ipv4 name SSTP-IN rule 20 action drop
set firewall ipv4 name SSTP-IN rule 20 state invalid

# Применить к SSTP интерфейсу
set interfaces sstpc sstpc0 firewall in name SSTP-IN

commit

4. Ограничение трафика

# Rate limiting для защиты от abuse
set firewall ipv4 name SSTP-IN rule 5 action accept
set firewall ipv4 name SSTP-IN rule 5 protocol icmp
set firewall ipv4 name SSTP-IN rule 5 limit rate 10/second

commit

5. Мониторинг соединений

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

# Отправка логов на syslog сервер
set system syslog host 192.168.1.100 facility all level warning

commit

6. Split-tunnel для безопасности

# Используйте split-tunnel когда возможно
# Только корпоративный трафик через VPN
set interfaces sstpc sstpc0 no-default-route
set protocols static route 192.168.0.0/16 interface sstpc0

# Интернет через локальное соединение

Performance Tuning

1. MTU Optimization

# Оптимальный MTU для SSTP
set interfaces sstpc sstpc0 mtu 1452

# TCP MSS clamping
set interfaces sstpc sstpc0 ip adjust-mss 1412
set interfaces sstpc sstpc0 ipv6 adjust-mss 1392

commit

2. QoS для критичного трафика

# Priority queueing для VoIP через SSTP
set traffic-policy shaper SSTP-QOS bandwidth 100mbit
set traffic-policy shaper SSTP-QOS class 10 match VoIP ip protocol udp
set traffic-policy shaper SSTP-QOS class 10 match VoIP ip source port 5060-5090
set traffic-policy shaper SSTP-QOS class 10 bandwidth 10%
set traffic-policy shaper SSTP-QOS class 10 priority 7

set traffic-policy shaper SSTP-QOS default bandwidth 90%
set traffic-policy shaper SSTP-QOS default priority 1

set interfaces sstpc sstpc0 traffic-policy out SSTP-QOS
commit

3. Connection Optimization

# Использовать DNS от сервера для быстрого resolution
delete interfaces sstpc sstpc0 no-peer-dns

# Оптимизировать TCP параметры (системный уровень)
# Требует shell access

Сравнение SSTP с другими VPN

ХарактеристикаSSTPIPsecOpenVPNWireGuard
Firewall bypassОтлично (443)Плохо (UDP 500/4500)Хорошо (настраиваемый)Средне (UDP)
ПроизводительностьСреднеХорошоУдовлетворительноОтлично
БезопасностьОтлично (SSL/TLS)ОтличноХорошоОтлично
СовместимостьWindows nativeОтличноОтличноХорошо
NAT traversalОтличноСложноОтличноОтлично
Setup ComplexityСредняяСложноСреднеПростая
TCP overheadВысокий (TCP over TCP)НизкийСредний (UDP mode)Низкий

Когда выбрать SSTP:

  • Нужен bypass строгих файрволов (только 443 разрешен)
  • Windows Server infrastructure
  • Публичные Wi-Fi с блокировкой VPN
  • Резервный канал когда другие VPN заблокированы

Когда НЕ выбирать SSTP:

  • Нужна максимальная производительность (выбрать WireGuard)
  • Высокая latency критична (TCP-over-TCP проблема)
  • Non-Windows environment (выбрать OpenVPN/WireGuard)

Best Practices

1. Naming Convention

# Используйте понятные имена
set interfaces sstpc sstpc0 description 'Corporate VPN - Primary'
set interfaces sstpc sstpc1 description 'Backup VPN - Secondary'

2. MTU Configuration

# Всегда настраивайте MTU и MSS
set interfaces sstpc sstpc0 mtu 1452
set interfaces sstpc sstpc0 ip adjust-mss 1412

# Тест оптимального MTU
ping 8.8.8.8 size 1452 do-not-fragment interface sstpc0

3. Monitoring и Alerting

# Syslog для tracking events
set system syslog global facility all level info
set system syslog host 192.168.1.100 facility all level warning

# SNMP monitoring
set service snmp community public authorization ro
set service snmp community public network 192.168.1.0/24

4. Backup Configuration

# Регулярный backup конфигурации
show configuration commands | save /config/backup-$(date +%Y%m%d).conf

# Script для automated backup

5. Certificate Management

# Регулярно обновляйте CA certificates
# Проверяйте expiration dates
show pki ca VPN-CA

# Имейте backup CA certs

6. Documentation

# Документируйте все в description
set interfaces sstpc sstpc0 description 'Corporate SSTP - vpn.company.com - Port 443'

Миграция с VyOS 1.4 на 1.5

SSTP конфигурация совместима между версиями:

VyOS 1.4:

set interfaces sstpc sstpc0 server 'vpn.example.com'
set interfaces sstpc sstpc0 authentication username 'user'
set interfaces sstpc sstpc0 authentication password 'pass'

VyOS 1.5:

set interfaces sstpc sstpc0 server 'vpn.example.com'
set interfaces sstpc sstpc0 authentication username 'user'
set interfaces sstpc sstpc0 authentication password 'pass'

Изменения: Синтаксис остается тем же, миграция прозрачная.

Заключение

SSTP предоставляет надежное VPN решение для сценариев с ограничивающими файрволами:

Преимущества:

  • Bypass файрволов через порт 443
  • SSL/TLS шифрование
  • Работа через HTTP прокси
  • Windows Server совместимость
  • Простая настройка

Применение:

  • Remote access VPN через ограничивающие сети
  • Backup VPN канал (всегда доступный)
  • Site-to-Site через ISP с блокировками
  • Корпоративные сети с жесткими политиками

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

  • Правильная настройка MTU (1452) и MSS clamping
  • SSL certificate verification в production
  • Firewall rules для защиты
  • Monitoring и logging
  • Split-tunnel когда возможно
  • Резервирование через dual VPN

SSTP в VyOS обеспечивает надежное VPN соединение в самых ограничивающих сетевых средах, являясь отличным дополнением к IPsec, OpenVPN и WireGuard для комплексной VPN стратегии.

Дополнительные ресурсы