# L2TP/IPsec VPN

> Настройка L2TP/IPsec VPN на VyOS: remote access с встроенными клиентами Windows/macOS/iOS/Android, PSK аутентификация, RADIUS для Yandex Cloud и VK Cloud

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


L2TP (Layer 2 Tunneling Protocol) в сочетании с IPsec обеспечивает удаленный доступ VPN с широкой поддержкой клиентов. L2TP/IPsec встроен в большинство операционных систем (Windows, macOS, iOS, Android), что делает его популярным выбором для remote access VPN без необходимости установки стороннего ПО.

## Обзор

### Что такое L2TP/IPsec

**L2TP (Layer 2 Tunneling Protocol)**:
- Протокол туннелирования на уровне 2 (Data Link)
- Инкапсулирует PPP фреймы
- Не обеспечивает шифрование сам по себе

**IPsec**:
- Обеспечивает шифрование и аутентификацию
- Защищает L2TP трафик
- ESP (Encapsulating Security Payload) mode

**L2TP/IPsec комбинация**:
- L2TP для туннелирования
- IPsec для безопасности
- Стандартизированное решение (RFC 3193)

### Преимущества L2TP/IPsec

**Плюсы**:
- Встроенные клиенты в OS (Windows, macOS, iOS, Android)
- Не требует установки стороннего ПО
- Хорошая совместимость
- Простая конфигурация клиентов
- Подходит для BYOD (Bring Your Own Device)

**Минусы**:
- Медленнее современных VPN (WireGuard, OpenVPN)
- Проблемы с NAT traversal (решается NAT-T)
- Устаревающая технология
- Менее безопасен чем современные альтернативы
- Использует UDP 500, 4500, 1701 (может блокироваться firewall)

### Когда использовать L2TP/IPsec

**Используйте L2TP/IPsec когда**:
- Нельзя устанавливать VPN клиенты
- BYOD сценарии
- Legacy совместимость требуется
- Простота для пользователей критична

**Используйте альтернативы когда**:
- Производительность важна → WireGuard
- Кросс-платформа с производительностью → OpenVPN
- Максимальная безопасность → WireGuard или OpenVPN

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

### Компоненты L2TP/IPsec

1. **L2TP Access Concentrator (LAC)** - VyOS сервер
2. **L2TP Network Server (LNS)** - VyOS сервер (same)
3. **IPsec SA** - Security Association для шифрования
4. **PPP** - Point-to-Point Protocol для аутентификации

### Процесс подключения

1. **IPsec IKE negotiation** (UDP 500)
2. **IPsec ESP tunnel** создается (UDP 4500 с NAT-T)
3. **L2TP tunnel** устанавливается (UDP 1701)
4. **PPP negotiation** - аутентификация (CHAP/PAP)
5. **IP address assignment** - клиент получает IP

### Порты

- **UDP 500** - IKE (Internet Key Exchange)
- **UDP 4500** - IPsec NAT-T (NAT Traversal)
- **UDP 1701** - L2TP
- **ESP (IP Protocol 50)** - IPsec encryption

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

### Простой L2TP/IPsec сервер

```bash
# IPsec конфигурация для L2TP
set vpn ipsec authentication psk l2tp id '203.0.113.1'
set vpn ipsec authentication psk l2tp id '%any'
set vpn ipsec authentication psk l2tp secret 'MyStrongPSK123!'

# IKE group для L2TP
set vpn ipsec ike-group IKE-L2TP key-exchange 'ikev1'
set vpn ipsec ike-group IKE-L2TP lifetime '3600'
set vpn ipsec ike-group IKE-L2TP proposal 1 dh-group '2'
set vpn ipsec ike-group IKE-L2TP proposal 1 encryption 'aes256'
set vpn ipsec ike-group IKE-L2TP proposal 1 hash 'sha1'

# ESP group для L2TP
set vpn ipsec esp-group ESP-L2TP lifetime '3600'
set vpn ipsec esp-group ESP-L2TP mode 'transport'
set vpn ipsec esp-group ESP-L2TP pfs 'disable'
set vpn ipsec esp-group ESP-L2TP proposal 1 encryption 'aes256'
set vpn ipsec esp-group ESP-L2TP proposal 1 hash 'sha1'

# IPsec site-to-site для remote access
set vpn ipsec site-to-site peer l2tp-remote authentication mode 'pre-shared-secret'
set vpn ipsec site-to-site peer l2tp-remote authentication pre-shared-secret 'l2tp'
set vpn ipsec site-to-site peer l2tp-remote connection-type 'respond'
set vpn ipsec site-to-site peer l2tp-remote ike-group 'IKE-L2TP'
set vpn ipsec site-to-site peer l2tp-remote default-esp-group 'ESP-L2TP'
set vpn ipsec site-to-site peer l2tp-remote local-address '203.0.113.1'
set vpn ipsec site-to-site peer l2tp-remote remote-address '0.0.0.0/0'

# L2TP сервер
set vpn l2tp remote-access authentication mode 'local'
set vpn l2tp remote-access authentication local-users username alice password 'AlicePass123!'
set vpn l2tp remote-access authentication local-users username bob password 'BobPass456!'

# Client IP pool
set vpn l2tp remote-access client-ip-pool start '192.168.255.10'
set vpn l2tp remote-access client-ip-pool stop '192.168.255.50'

# Gateway IP
set vpn l2tp remote-access gateway-address '192.168.255.1'

# DNS для клиентов
set vpn l2tp remote-access name-server '8.8.8.8'
set vpn l2tp remote-access name-server '1.1.1.1'

# Firewall для L2TP/IPsec
set firewall ipv4 input filter rule 100 action accept
set firewall ipv4 input filter rule 100 destination port 500,4500,1701
set firewall ipv4 input filter rule 100 protocol udp

set firewall ipv4 input filter rule 101 action accept
set firewall ipv4 input filter rule 101 protocol esp

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

commit
save
```

### Проверка L2TP/IPsec

```bash
# IPsec статус
show vpn ipsec sa

# L2TP сессии
show vpn l2tp remote-access sessions

# Подключенные пользователи
show vpn l2tp remote-access users

# Логи
show log vpn
```

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

### Local authentication

Пользователи хранятся в конфигурации VyOS:

```bash
set vpn l2tp remote-access authentication mode 'local'

# Пользователи
set vpn l2tp remote-access authentication local-users username user1 password 'Pass1!'
set vpn l2tp remote-access authentication local-users username user2 password 'Pass2!'
set vpn l2tp remote-access authentication local-users username user3 password 'Pass3!'

# Статические IP для пользователей
set vpn l2tp remote-access authentication local-users username user1 static-ip '192.168.255.10'
set vpn l2tp remote-access authentication local-users username user2 static-ip '192.168.255.11'

commit
```

### RADIUS authentication

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

```bash
set vpn l2tp remote-access authentication mode 'radius'

# RADIUS серверы
set vpn l2tp remote-access authentication radius server 192.168.1.10 key 'RadiusSecret123!'
set vpn l2tp remote-access authentication radius server 192.168.1.11 key 'RadiusSecret123!'

# Timeout
set vpn l2tp remote-access authentication radius timeout 5

# Accounting
set vpn l2tp remote-access authentication radius acct-timeout 5

commit
```

### Require options

```bash
# Требовать MSCHAP-v2
set vpn l2tp remote-access authentication require 'mschap-v2'

# Или CHAP
set vpn l2tp remote-access authentication require 'chap'

# Запретить слабую аутентификацию
set vpn l2tp remote-access authentication protocols pap disable
set vpn l2tp remote-access authentication protocols chap disable

commit
```

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

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

```bash
# MTU для L2TP
set vpn l2tp remote-access mtu 1400

# MRU (Maximum Receive Unit)
set vpn l2tp remote-access mru 1400

commit
```

**Рекомендация**: MTU 1400 для учета IPsec/L2TP overhead.

### Idle timeout

```bash
# Отключить клиентов при неактивности (секунды)
set vpn l2tp remote-access idle-timeout 3600

commit
```

### WINS server

Для Windows клиентов:

```bash
set vpn l2tp remote-access wins-server 192.168.1.100

commit
```

### LNS (L2TP Network Server) настройки

```bash
# Максимум сессий
set vpn l2tp remote-access maximum-sessions 100

# Listen address
set vpn l2tp remote-access outside-address '203.0.113.1'

commit
```

### PPP options

```bash
# PPP interface prefix
set vpn l2tp remote-access ppp-options interface-cache 10

# LCP echo для keepalive
set vpn l2tp remote-access ppp-options lcp-echo-failure 3
set vpn l2tp remote-access ppp-options lcp-echo-interval 30

# IPv6 support
set vpn l2tp remote-access ppp-options ipv6 'allow'

commit
```

### Client IP pool с multiple ranges

```bash
# Pool 1
set vpn l2tp remote-access client-ip-pool start '192.168.255.10'
set vpn l2tp remote-access client-ip-pool stop '192.168.255.100'

# VyOS не поддерживает multiple pools напрямую
# Используйте RADIUS для dynamic IP assignment

commit
```

### Compression

```bash
# MPPE encryption (Microsoft Point-to-Point Encryption)
set vpn l2tp remote-access ppp-options mppe 'require-128'

commit
```

## Клиентская конфигурация

### Windows клиент

**Windows 10/11**:

1. Settings → Network & Internet → VPN
2. Add a VPN connection
3. VPN provider: Windows (built-in)
4. Connection name: Company VPN
5. Server name or address: `vpn.company.com` или `203.0.113.1`
6. VPN type: L2TP/IPsec with pre-shared key
7. Pre-shared key: `MyStrongPSK123!`
8. User name: `alice`
9. Password: `AlicePass123!`
10. Save → Connect

**PowerShell**:
```powershell
Add-VpnConnection -Name "Company VPN" `
  -ServerAddress "vpn.company.com" `
  -TunnelType L2tp `
  -EncryptionLevel Required `
  -AuthenticationMethod Chap,MSChapv2 `
  -L2tpPsk "MyStrongPSK123!" `
  -Force `
  -RememberCredential `
  -PassThru
```

### macOS клиент

1. System Preferences → Network
2. Click "+" to add new connection
3. Interface: VPN
4. VPN Type: L2TP over IPSec
5. Service Name: Company VPN
6. Server Address: `vpn.company.com`
7. Account Name: `alice`
8. Authentication Settings:
   - User Authentication: Password
   - Machine Authentication: Shared Secret
   - Shared Secret: `MyStrongPSK123!`
9. Advanced: Send all traffic over VPN (optional)
10. Apply → Connect

### iOS клиент

1. Settings → General → VPN → Add VPN Configuration
2. Type: L2TP
3. Description: Company VPN
4. Server: `vpn.company.com`
5. Account: `alice`
6. Password: `AlicePass123!`
7. Secret: `MyStrongPSK123!`
8. Send All Traffic: On
9. Save → Connect (toggle VPN on)

### Android клиент

1. Settings → Network & Internet → VPN
2. Add VPN
3. Name: Company VPN
4. Type: L2TP/IPSec PSK
5. Server address: `vpn.company.com`
6. IPSec pre-shared key: `MyStrongPSK123!`
7. Username: `alice`
8. Password: `AlicePass123!`
9. Save → Connect

### Linux клиент (NetworkManager)

```bash
# Установка
sudo apt-get install network-manager-l2tp network-manager-l2tp-gnome

# GUI: NetworkManager → Add VPN → L2TP
# Server: vpn.company.com
# Username: alice
# Password: AlicePass123!
# IPSec Settings: Pre-shared key: MyStrongPSK123!
```

**xl2tpd manual**:
```bash
# Установка
sudo apt-get install xl2tpd strongswan

# /etc/ipsec.conf
conn L2TP-PSK
    authby=secret
    pfs=no
    auto=add
    keyingtries=3
    rekey=no
    ikelifetime=8h
    keylife=1h
    type=transport
    left=%defaultroute
    leftprotoport=17/1701
    right=203.0.113.1
    rightprotoport=17/1701

# /etc/ipsec.secrets
: PSK "MyStrongPSK123!"

# /etc/xl2tpd/xl2tpd.conf
[lac company]
lns = 203.0.113.1
ppp debug = yes
pppoptfile = /etc/ppp/options.l2tpd.client
length bit = yes

# /etc/ppp/options.l2tpd.client
ipcp-accept-local
ipcp-accept-remote
refuse-eap
require-chap
noccp
noauth
mtu 1400
mru 1400
defaultroute
usepeerdns
connect-delay 5000
name alice
password AlicePass123!

# Подключение
sudo ipsec up L2TP-PSK
sudo xl2tpd-control connect company
```

## Split tunnel vs Full tunnel

### Full tunnel (весь трафик через VPN)

По умолчанию L2TP push default route:

```bash
# На VyOS (по умолчанию)
# Клиенты автоматически получают default route через VPN

commit
```

**Клиент (Windows)**: "Send all traffic over VPN" включено.

### Split tunnel (только корпоративный трафик)

Для split tunnel нужно настроить клиент вручную.

**Windows PowerShell**:
```powershell
# После подключения добавить только нужные маршруты
Add-VpnConnectionRoute -ConnectionName "Company VPN" -DestinationPrefix 192.168.0.0/16
Add-VpnConnectionRoute -ConnectionName "Company VPN" -DestinationPrefix 10.0.0.0/8

# Отключить "Send all traffic"
Set-VpnConnection -Name "Company VPN" -SplitTunneling $True
```

**macOS/Linux**: Настроить routing вручную после подключения.

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

### Проверка L2TP сессий

```bash
# Активные сессии
show vpn l2tp remote-access sessions

# Подробности
show vpn l2tp remote-access users

# Статистика
show vpn l2tp remote-access statistics
```

Пример вывода:
```
User      Interface  IP Address       Calling Station  Time
alice     ppp0       192.168.255.10   198.51.100.50    00:15:32
bob       ppp1       192.168.255.11   198.51.100.51    01:23:45
```

### Проверка IPsec

```bash
# IPsec SA
show vpn ipsec sa

# Детали peer
show vpn ipsec sa peer 198.51.100.50
```

### Проверка connectivity

```bash
# Ping клиента
ping 192.168.255.10

# На клиенте ping gateway
ping 192.168.255.1

# Ping через VPN
ping 192.168.1.10  # Internal resource
```

### Логи

```bash
# VPN логи
show log vpn

# Live monitoring
monitor log vpn

# L2TP specific
show log | grep l2tp

# IPsec specific
show log | grep ipsec
```

### tcpdump

```bash
# L2TP трафик (после IPsec decryption)
sudo tcpdump -i ppp0 -n

# IPsec ESP (encrypted)
sudo tcpdump -i eth0 esp -n

# IKE negotiation
sudo tcpdump -i eth0 port 500 -n
```

## Troubleshooting

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

**Проблема**: Подключение зависает или отказывается.

**Причины**:
1. Firewall блокирует порты
2. PSK не совпадает
3. IPsec не устанавливается
4. NAT traversal проблемы

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

# Проверить IPsec SA
show vpn ipsec sa

# Проверить логи
show log vpn | grep error
```

**Решение**:
```bash
# Firewall правила
set firewall ipv4 input filter rule 100 action accept
set firewall ipv4 input filter rule 100 destination port 500,4500,1701
set firewall ipv4 input filter rule 100 protocol udp

set firewall ipv4 input filter rule 101 action accept
set firewall ipv4 input filter rule 101 protocol esp

# Проверить PSK
show vpn ipsec authentication psk

commit
```

### IPsec устанавливается, но L2TP не работает

**Проблема**: IPsec SA показывает UP, но L2TP туннель не создается.

**Причины**:
1. UDP 1701 блокируется
2. L2TP сервис не запущен
3. Аутентификация не проходит

**Диагностика**:
```bash
# Проверить L2TP сервис
systemctl status xl2tpd

# Проверить L2TP порт
netstat -ulnp | grep 1701

# Логи
show log vpn | grep l2tp
```

**Решение**:
```bash
# Перезапустить L2TP
restart vpn l2tp

# Проверить пользователей
show configuration vpn l2tp remote-access authentication local-users
```

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

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

**Причины**:
1. Неправильный username/password
2. Требуется другой auth protocol
3. RADIUS не доступен

**Диагностика**:
```bash
# Проверить пользователей
show configuration vpn l2tp remote-access authentication

# RADIUS test
show vpn l2tp remote-access authentication radius
```

**Решение**:
```bash
# Проверить пароль
show configuration vpn l2tp remote-access authentication local-users username alice

# Разрешить разные auth protocols
delete vpn l2tp remote-access authentication require

commit
```

### Нет доступа к локальной сети

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

**Причины**:
1. Firewall блокирует VPN клиентов
2. NAT не настроен
3. Routing problems

**Диагностика**:
```bash
# Проверить routing
show ip route

# Ping с VPN клиента
# На VyOS:
ping 192.168.255.10  # VPN client

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

**Решение**:
```bash
# Firewall для VPN клиентов
set firewall ipv4 forward filter rule 200 action accept
set firewall ipv4 forward filter rule 200 source address 192.168.255.0/24
set firewall ipv4 forward filter rule 200 destination address 192.168.0.0/16

# NAT
set nat source rule 100 source address 192.168.255.0/24
set nat source rule 100 outbound-interface name eth0
set nat source rule 100 translation address masquerade

commit
```

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

**Проблема**: VPN работает, но медленно.

**Причины**:
1. MTU проблемы (фрагментация)
2. CPU overhead от encryption
3. Network latency

**Решение**:
```bash
# MTU tuning
set vpn l2tp remote-access mtu 1400
set vpn l2tp remote-access mru 1400

# На клиенте (Windows PowerShell):
# netsh interface ipv4 set subinterface "Company VPN" mtu=1400 store=persistent

commit
```

### Behind NAT проблемы

**Проблема**: L2TP не работает когда VyOS за NAT.

**Причины**:
1. NAT-T не работает корректно
2. UDP 4500 проблемы

**Решение**:
```bash
# NAT traversal
set vpn ipsec options nat-traversal enable

# Проверить что используется UDP 4500
sudo tcpdump -i eth0 port 4500 -n

commit
```

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

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

1. **Сильный PSK**:
```bash
# Минимум 20 символов, случайные
set vpn ipsec authentication psk l2tp secret 'xR9mK2nP5qL8vW3tY7zB4cF1gH6jN0sA'
```

2. **Сильные пароли пользователей**:
```bash
# Минимум 12 символов
set vpn l2tp remote-access authentication local-users username alice password 'Str0ng!Pass#2024'
```

3. **RADIUS вместо local auth**:
```bash
set vpn l2tp remote-access authentication mode 'radius'
set vpn l2tp remote-access authentication radius server 192.168.1.10 key 'RadiusSecret'
```

4. **Firewall rate limiting**:
```bash
set firewall ipv4 input filter rule 100 recent count 5
set firewall ipv4 input filter rule 100 recent time minute 1
```

5. **Idle timeout**:
```bash
set vpn l2tp remote-access idle-timeout 1800
```

6. **Логирование**:
```bash
# Включить подробное логирование
set vpn l2tp remote-access ppp-options logging debug

# Monitor
monitor log vpn
```

7. **IKEv2 вместо IKEv1** (если клиенты поддерживают):
```bash
set vpn ipsec ike-group IKE-L2TP key-exchange 'ikev2'
```

8. **Ограничение по IP**:
```bash
# Firewall для specific sources
set firewall ipv4 input filter rule 100 source address 198.51.100.0/24
```

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

### Пример 1: Small office remote access

```bash
# IPsec для L2TP
set vpn ipsec authentication psk l2tp id '203.0.113.1'
set vpn ipsec authentication psk l2tp id '%any'
set vpn ipsec authentication psk l2tp secret 'CompanyVPN2024!Secret'

set vpn ipsec ike-group IKE-L2TP key-exchange 'ikev1'
set vpn ipsec ike-group IKE-L2TP lifetime '3600'
set vpn ipsec ike-group IKE-L2TP proposal 1 dh-group '14'
set vpn ipsec ike-group IKE-L2TP proposal 1 encryption 'aes256'
set vpn ipsec ike-group IKE-L2TP proposal 1 hash 'sha256'

set vpn ipsec esp-group ESP-L2TP lifetime '3600'
set vpn ipsec esp-group ESP-L2TP mode 'transport'
set vpn ipsec esp-group ESP-L2TP pfs 'dh-group14'
set vpn ipsec esp-group ESP-L2TP proposal 1 encryption 'aes256'
set vpn ipsec esp-group ESP-L2TP proposal 1 hash 'sha256'

set vpn ipsec site-to-site peer l2tp-remote authentication mode 'pre-shared-secret'
set vpn ipsec site-to-site peer l2tp-remote authentication pre-shared-secret 'l2tp'
set vpn ipsec site-to-site peer l2tp-remote connection-type 'respond'
set vpn ipsec site-to-site peer l2tp-remote ike-group 'IKE-L2TP'
set vpn ipsec site-to-site peer l2tp-remote default-esp-group 'ESP-L2TP'
set vpn ipsec site-to-site peer l2tp-remote local-address '203.0.113.1'
set vpn ipsec site-to-site peer l2tp-remote remote-address '0.0.0.0/0'

# L2TP server
set vpn l2tp remote-access authentication mode 'local'
set vpn l2tp remote-access authentication local-users username admin password 'AdminPass123!'
set vpn l2tp remote-access authentication local-users username alice password 'AlicePass456!'
set vpn l2tp remote-access authentication local-users username bob password 'BobPass789!'

set vpn l2tp remote-access client-ip-pool start '192.168.255.10'
set vpn l2tp remote-access client-ip-pool stop '192.168.255.50'
set vpn l2tp remote-access gateway-address '192.168.255.1'

set vpn l2tp remote-access name-server '192.168.1.1'
set vpn l2tp remote-access name-server '8.8.8.8'

set vpn l2tp remote-access mtu 1400
set vpn l2tp remote-access idle-timeout 3600

# Firewall
set firewall ipv4 input filter rule 110 action accept
set firewall ipv4 input filter rule 110 destination port 500,4500,1701
set firewall ipv4 input filter rule 110 protocol udp

set firewall ipv4 input filter rule 111 action accept
set firewall ipv4 input filter rule 111 protocol esp

set firewall ipv4 forward filter rule 210 action accept
set firewall ipv4 forward filter rule 210 source address 192.168.255.0/24

# NAT
set nat source rule 110 outbound-interface name eth0
set nat source rule 110 source address 192.168.255.0/24
set nat source rule 110 translation address masquerade

commit
save
```

### Пример 2: Enterprise с RADIUS

```bash
# IPsec (same as above)
# ...

# L2TP с RADIUS
set vpn l2tp remote-access authentication mode 'radius'
set vpn l2tp remote-access authentication radius server 192.168.1.10 key 'RadiusSecret123!'
set vpn l2tp remote-access authentication radius server 192.168.1.11 key 'RadiusSecret123!'
set vpn l2tp remote-access authentication radius timeout 5
set vpn l2tp remote-access authentication radius acct-timeout 5

# Require strong auth
set vpn l2tp remote-access authentication require 'mschap-v2'

# IP pool
set vpn l2tp remote-access client-ip-pool start '10.99.0.10'
set vpn l2tp remote-access client-ip-pool stop '10.99.0.250'
set vpn l2tp remote-access gateway-address '10.99.0.1'

# DNS
set vpn l2tp remote-access name-server '192.168.1.1'
set vpn l2tp remote-access dns-suffix 'company.local'

# WINS для Windows
set vpn l2tp remote-access wins-server '192.168.1.100'

# Performance tuning
set vpn l2tp remote-access mtu 1400
set vpn l2tp remote-access maximum-sessions 200

# PPP keepalive
set vpn l2tp remote-access ppp-options lcp-echo-failure 3
set vpn l2tp remote-access ppp-options lcp-echo-interval 30

commit
save
```

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

1. **Сильные credentials**:
   - PSK: 20+ символов, случайные
   - Passwords: 12+ символов, complexity rules

2. **RADIUS для enterprise**:
   - Централизованная аутентификация
   - Accounting и audit
   - Интеграция с AD/LDAP

3. **MTU optimization**:
   - MTU 1400 для L2TP/IPsec
   - MSS clamping для TCP

4. **Firewall protection**:
   - Rate limiting на VPN портах
   - Geo-blocking если применимо
   - Логирование подключений

5. **Monitoring**:
   - Отслеживать активные сессии
   - Алерты на failed authentications
   - Bandwidth monitoring

6. **Idle timeout**:
   - Disconnect неактивных пользователей
   - Освобождение IP адресов

7. **Split tunnel**:
   - Экономия bandwidth
   - Уменьшение latency для non-corporate трафика

8. **Backup VPN**:
   - Альтернативный VPN метод (OpenVPN, WireGuard)
   - Different ports/protocols

9. **Documentation**:
   - Инструкции для пользователей
   - Supported platforms
   - Troubleshooting guide

10. **Regular updates**:
    - Rotation PSK регулярно
    - Update user passwords
    - Review access lists

## Альтернативы L2TP/IPsec

### Когда рассмотреть альтернативы

**WireGuard**:
- Значительно быстрее
- Современная криптография
- Простая конфигурация
- Требует клиент

**OpenVPN**:
- Более гибкий
- Лучшая производительность
- Работает через HTTP proxy
- Требует клиент

**IKEv2/IPsec**:
- Современнее чем L2TP
- Лучше для мобильных (reconnect)
- Встроен в iOS/macOS
- Сложнее конфигурация

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

L2TP/IPsec обеспечивает простое и совместимое remote access VPN решение для VyOS. Основные преимущества:

- **Встроенные клиенты** в большинстве OS
- **Простота для пользователей** - не нужно устанавливать ПО
- **BYOD friendly** - работает на личных устройствах
- **Проверенная технология** - стандартизировано и широко поддерживается

Используйте L2TP/IPsec когда:
- Нужна максимальная совместимость
- Пользователи не могут устанавливать ПО
- BYOD scenario
- Legacy поддержка требуется

Для новых deployments рассмотрите WireGuard (производительность) или OpenVPN (гибкость), но L2TP/IPsec остается надежным выбором для широкой совместимости и простоты использования.

