# IPoE Server

> IPoE сервер на VyOS - IP over Ethernet для провайдеров, DHCP, RADIUS аутентификация, управление сессиями и IPv6 поддержка

Source: https://opennix.org/docs/vyos/services/vyos-ipoe-server/


IPoE (IP over Ethernet) Server предоставляет доставку IP-пакетов через Ethernet сети без использования PPPoE для сценариев интернет-провайдеров.

## Обзор

IPoE - это метод предоставления широкополосного доступа, который напрямую инкапсулирует IP датаграммы в Ethernet фреймы согласно RFC 894, без накладных расходов PPPoE.

### Преимущества IPoE

- **Простота**: Прямая инкапсуляция IP в Ethernet
- **Производительность**: Меньше накладных расходов по сравнению с PPPoE
- **Совместимость**: Работает с существующей DHCP инфраструктурой
- **Гибкость**: Поддержка RADIUS и локальной аутентификации
- **Масштабируемость**: Подходит для больших ISP сетей

### Основные возможности

- Локальная и RADIUS аутентификация
- Интеграция с DHCP для выдачи IP-адресов
- Поддержка IPv4 и IPv6
- Управление полосой пропускания
- Accounting через RADIUS
- VLAN-based изоляция клиентов
- Prefix delegation для IPv6
- Динамическая авторизация (CoA/DM)

VyOS использует **accel-ppp** для реализации IPoE сервера.

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

### Минимальная настройка

Простейшая конфигурация с локальной аутентификацией:

```
set service ipoe-server authentication mode 'local'
set service ipoe-server authentication interface eth1.100 mac '00:50:79:66:68:00'
set service ipoe-server gateway-address '192.168.0.1/24'
set service ipoe-server client-ip-pool IPOE-POOL range '192.168.0.2-192.168.0.254'
set service ipoe-server default-pool 'IPOE-POOL'
commit
```

Эта конфигурация:
- Аутентифицирует клиента по MAC-адресу на интерфейсе eth1.100
- Назначает IP из пула 192.168.0.2-254
- Использует 192.168.0.1 как gateway

### Структура конфигурации

```
service ipoe-server
  ├── authentication
  │   ├── mode [local|radius|noauth]
  │   ├── interface <name>
  │   │   └── mac <mac-address>
  │   └── radius
  │       └── server <ip>
  ├── gateway-address <ip/prefix>
  ├── client-ip-pool <name>
  │   └── range <start-stop>
  ├── default-pool <name>
  ├── interface <name>
  │   ├── client-subnet <prefix>
  │   └── vlan <id>
  ├── name-server <ip>
  └── ...
```

## Режимы аутентификации

### Local Authentication

Аутентификация на основе MAC-адресов клиентов.

#### Базовая локальная аутентификация

```
set service ipoe-server authentication mode 'local'
set service ipoe-server authentication interface eth1.100 mac '00:50:79:66:68:00'
set service ipoe-server authentication interface eth1.100 mac '00:50:79:66:68:01'
set service ipoe-server authentication interface eth1.100 mac '00:50:79:66:68:02'
commit
```

#### С разными VLAN

```
# VLAN 100
set service ipoe-server authentication mode 'local'
set service ipoe-server authentication interface eth1.100 mac '00:50:79:66:68:00'

# VLAN 200
set service ipoe-server authentication interface eth1.200 mac '00:50:79:66:68:10'

commit
```

### RADIUS Authentication

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

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

```
set service ipoe-server authentication mode 'radius'
set service ipoe-server authentication radius server 192.168.1.10 key 'secret123'
set service ipoe-server authentication radius source-address '192.168.1.1'
commit
```

#### Множественные RADIUS серверы

```
# Primary RADIUS
set service ipoe-server authentication radius server 192.168.1.10 key 'secret123'
set service ipoe-server authentication radius server 192.168.1.10 priority 1

# Backup RADIUS
set service ipoe-server authentication radius server 192.168.1.11 key 'secret123'
set service ipoe-server authentication radius server 192.168.1.11 priority 2

# Source address для RADIUS запросов
set service ipoe-server authentication radius source-address '192.168.1.1'

commit
```

#### RADIUS Timeout и Retry

```
set service ipoe-server authentication radius server 192.168.1.10 key 'secret123'
set service ipoe-server authentication radius server 192.168.1.10 timeout 5
set service ipoe-server authentication radius server 192.168.1.10 fail-time 30
commit
```

Параметры:
- `timeout` - таймаут запроса в секундах (по умолчанию 3)
- `fail-time` - время в секундах, на которое сервер помечается недоступным после ошибки

#### RADIUS Accounting

```
set service ipoe-server authentication radius server 192.168.1.10 key 'secret123'
set service ipoe-server authentication radius server 192.168.1.10 acct-port 1813
set service ipoe-server authentication radius accounting-interim-interval 300
commit
```

Параметры:
- `acct-port` - порт для accounting (по умолчанию 1813)
- `accounting-interim-interval` - интервал отправки interim-update в секундах

#### Dynamic Authorization Extension (CoA/DM)

```
set service ipoe-server authentication radius dynamic-author server 192.168.1.10 key 'coa-secret'
set service ipoe-server authentication radius dynamic-author server 192.168.1.10 port 3799
commit
```

Позволяет RADIUS серверу:
- Разрывать сессии (Disconnect-Message)
- Изменять параметры сессии на лету (Change-of-Authorization)

### No Authentication Mode

Режим без аутентификации для открытых сетей:

```
set service ipoe-server authentication mode 'noauth'
set service ipoe-server interface eth1
commit
```

**Предупреждение**: Используйте только в контролируемых средах!

## IP Address Pools

### Локальные пулы адресов

#### Простой диапазон

```
set service ipoe-server client-ip-pool POOL1 range '10.0.0.100-10.0.0.200'
set service ipoe-server default-pool 'POOL1'
commit
```

#### Множественные диапазоны

```
set service ipoe-server client-ip-pool POOL1 range '10.0.0.100-10.0.0.150'
set service ipoe-server client-ip-pool POOL1 range '10.0.0.200-10.0.0.250'
set service ipoe-server default-pool 'POOL1'
commit
```

#### Subnet-based pool

```
set service ipoe-server client-ip-pool POOL2 subnet '10.0.1.0/24'
set service ipoe-server default-pool 'POOL2'
commit
```

#### Множественные пулы

```
# Pool для VLAN 100
set service ipoe-server client-ip-pool VLAN100 range '10.0.100.10-10.0.100.254'

# Pool для VLAN 200
set service ipoe-server client-ip-pool VLAN200 range '10.0.200.10-10.0.200.254'

# Default pool
set service ipoe-server default-pool 'VLAN100'

commit
```

### RADIUS IP Allocation

#### Framed-IP-Address

RADIUS возвращает конкретный IP-адрес:

```
# RADIUS attribute
Framed-IP-Address = 10.0.0.100
```

#### Framed-Pool

RADIUS указывает имя пула для выбора IP:

```
# RADIUS attribute
Framed-Pool = "POOL1"

# VyOS configuration
set service ipoe-server client-ip-pool POOL1 range '10.0.1.100-10.0.1.200'
```

#### Framed-IP-Netmask

Маска подсети для клиента:

```
# RADIUS attributes
Framed-IP-Address = 10.0.0.100
Framed-IP-Netmask = 255.255.255.0
```

## Gateway и Network

### Gateway Address

Gateway для клиентов IPoE:

```
set service ipoe-server gateway-address '10.0.0.1/24'
commit
```

Формат: `<IP>/<prefix>` - адрес и маска подсети.

### Interface Configuration

#### Базовый интерфейс

```
set service ipoe-server interface eth1
commit
```

#### С VLAN

```
set service ipoe-server interface eth1
set service ipoe-server interface eth1 vlan 100-200
commit
```

Диапазон VLAN: серверпринимает клиентов на VLAN 100-200.

#### Client Subnet

Ограничение клиентских подсетей:

```
set service ipoe-server interface eth1 client-subnet '10.0.0.0/24'
commit
```

Принимаются только клиенты из указанной подсети.

### Name Servers

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

```
set service ipoe-server name-server '8.8.8.8'
set service ipoe-server name-server '8.8.4.4'
commit
```

Или RADIUS атрибут:
```
# RADIUS DNS attribute
MS-Primary-DNS-Server = 8.8.8.8
MS-Secondary-DNS-Server = 8.8.4.4
```

## IPv6 Support

### IPv6 Pool Configuration

#### Базовый IPv6 pool

```
set service ipoe-server client-ipv6-pool POOL-V6 prefix '2001:db8:1::/48' mask '64'
set service ipoe-server client-ipv6-pool POOL-V6 delegate '2001:db8:2::/48' delegation-prefix '56'
commit
```

Параметры:
- `prefix` - пул адресов для назначения клиентам
- `mask` - длина префикса для каждого клиента
- `delegate` - пул для prefix delegation
- `delegation-prefix` - длина делегируемого префикса

#### Пример использования

```
# IPv6 address pool
set service ipoe-server client-ipv6-pool IPV6-POOL prefix '2001:db8:100::/48' mask '64'

# IPv6 prefix delegation pool
set service ipoe-server client-ipv6-pool IPV6-POOL delegate '2001:db8:200::/48' delegation-prefix '56'

# Name servers
set service ipoe-server name-server '2001:4860:4860::8888'
set service ipoe-server name-server '2001:4860:4860::8844'

commit
```

### RADIUS IPv6 Attributes

RADIUS атрибуты для IPv6:

```
# IPv6 address
Framed-IPv6-Address = 2001:db8:100::1

# IPv6 pool
Stateful-IPv6-Address-Pool = "IPV6-POOL"

# Delegated prefix pool
Delegated-IPv6-Prefix-Pool = "IPV6-DELEGATION-POOL"

# Delegated prefix
Delegated-IPv6-Prefix = 2001:db8:200::/56
```

## Rate Limiting

### Per-Session Rate Limiting

#### Через RADIUS

RADIUS атрибуты для ограничения скорости:

```
# Download speed (from server to client)
Filter-Id = "rate-limit=100M"

# Or vendor-specific attributes
Cisco-AVPair = "rate-limit input 100000000"
Cisco-AVPair = "rate-limit output 10000000"
```

#### Локальная настройка

```
set service ipoe-server shaper fwmark 1 bandwidth '100mbit'
commit
```

### Traffic Shaping

```
# Rate limit configuration
set service ipoe-server shaper fwmark 1 bandwidth '50mbit'
set service ipoe-server shaper fwmark 2 bandwidth '100mbit'

commit
```

## DHCP Integration

### DHCP Modes

IPoE может работать в нескольких режимах DHCP:

#### Mode: DHCP

IPoE сервер выступает как DHCP сервер:

```
set service ipoe-server dhcp-mode 'dhcp'
set service ipoe-server gateway-address '10.0.0.1/24'
set service ipoe-server client-ip-pool POOL1 range '10.0.0.100-10.0.0.200'
commit
```

#### Mode: RADIUS-based

IP назначается через RADIUS:

```
set service ipoe-server dhcp-mode 'radius'
set service ipoe-server authentication mode 'radius'
set service ipoe-server authentication radius server 192.168.1.10 key 'secret'
commit
```

### DHCP Relay Mode

Перенаправление DHCP запросов на внешний сервер:

```
set service ipoe-server dhcp-relay server 192.168.1.100
set service ipoe-server interface eth1
commit
```

## Session Management

### Session Limits

#### Max Sessions per MAC

Ограничение количества сессий на MAC-адрес:

```
set service ipoe-server max-sessions-per-mac 1
commit
```

#### Session Timeout

Таймауты сессий:

```
set service ipoe-server session-timeout 3600
commit
```

Значение в секундах. 0 = без таймаута.

### RADIUS Session Control

RADIUS атрибуты для управления сессией:

```
# Session timeout
Session-Timeout = 3600

# Idle timeout
Idle-Timeout = 600

# Max sessions
Max-Sessions = 1
```

## Advanced Features

### Scripting Hooks

Выполнение скриптов при событиях:

```
set service ipoe-server extended-scripts on-change '/config/scripts/ipoe-change.sh'
set service ipoe-server extended-scripts on-down '/config/scripts/ipoe-down.sh'
set service ipoe-server extended-scripts on-up '/config/scripts/ipoe-up.sh'
commit
```

События:
- `on-up` - когда сессия поднимается
- `on-down` - когда сессия падает
- `on-change` - когда параметры сессии изменяются

### SNMP Support

```
set service ipoe-server snmp master-agent
set service ipoe-server snmp description 'IPoE Server'
commit
```

### Log Level

```
set service ipoe-server log level 'info'
commit
```

Уровни: `error`, `warn`, `info`, `debug`, `debug2`

### Thread Count

Количество рабочих потоков:

```
set service ipoe-server thread-count 4
commit
```

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

### ISP Basic Setup

Базовая конфигурация для интернет-провайдера:

```
# Authentication
set service ipoe-server authentication mode 'radius'
set service ipoe-server authentication radius server 192.168.1.10 key 'RadiusSecret123'
set service ipoe-server authentication radius source-address '192.168.1.1'

# IP pools
set service ipoe-server client-ip-pool SUBSCRIBERS range '10.100.0.1-10.100.255.254'
set service ipoe-server default-pool 'SUBSCRIBERS'

# Gateway
set service ipoe-server gateway-address '10.100.0.1/16'

# DNS
set service ipoe-server name-server '8.8.8.8'
set service ipoe-server name-server '8.8.4.4'

# Interface
set service ipoe-server interface eth2

# RADIUS accounting
set service ipoe-server authentication radius accounting-interim-interval 600

commit
```

### Multi-VLAN ISP

Конфигурация с несколькими VLAN для разных групп абонентов:

```
# RADIUS authentication
set service ipoe-server authentication mode 'radius'
set service ipoe-server authentication radius server 192.168.1.10 key 'secret'
set service ipoe-server authentication radius server 192.168.1.11 key 'secret'
set service ipoe-server authentication radius source-address '192.168.1.1'

# IP pools for different VLANs
set service ipoe-server client-ip-pool RESIDENTIAL range '10.1.0.1-10.1.255.254'
set service ipoe-server client-ip-pool BUSINESS range '10.2.0.1-10.2.255.254'
set service ipoe-server client-ip-pool GUEST range '10.3.0.1-10.3.255.254'

# Default pool
set service ipoe-server default-pool 'RESIDENTIAL'

# Gateway addresses
set service ipoe-server gateway-address '10.1.0.1/16'

# Interface with VLANs
set service ipoe-server interface eth2 vlan 100-300

# DNS servers
set service ipoe-server name-server '8.8.8.8'
set service ipoe-server name-server '1.1.1.1'

# Session limits
set service ipoe-server max-sessions-per-mac 2

# Logging
set service ipoe-server log level 'info'

commit
```

### IPv6 Enabled ISP

Полнофункциональная конфигурация с IPv6:

```
# Authentication
set service ipoe-server authentication mode 'radius'
set service ipoe-server authentication radius server 192.168.1.10 key 'secret'

# IPv4 pool
set service ipoe-server client-ip-pool IPV4-POOL range '10.0.0.1-10.0.255.254'
set service ipoe-server default-pool 'IPV4-POOL'
set service ipoe-server gateway-address '10.0.0.1/16'

# IPv6 pools
set service ipoe-server client-ipv6-pool IPV6-POOL prefix '2001:db8:1::/48' mask '64'
set service ipoe-server client-ipv6-pool IPV6-POOL delegate '2001:db8:2::/48' delegation-prefix '56'

# DNS servers (IPv4 and IPv6)
set service ipoe-server name-server '8.8.8.8'
set service ipoe-server name-server '2001:4860:4860::8888'

# Interface
set service ipoe-server interface eth2

# RADIUS accounting
set service ipoe-server authentication radius accounting-interim-interval 300

# Dynamic authorization
set service ipoe-server authentication radius dynamic-author server 192.168.1.10 key 'coa-secret'
set service ipoe-server authentication radius dynamic-author server 192.168.1.10 port 3799

commit
```

### Local Authentication

Конфигурация с локальной аутентификацией для небольшого количества клиентов:

```
# Local authentication
set service ipoe-server authentication mode 'local'
set service ipoe-server authentication interface eth2.100 mac '00:11:22:33:44:01'
set service ipoe-server authentication interface eth2.100 mac '00:11:22:33:44:02'
set service ipoe-server authentication interface eth2.100 mac '00:11:22:33:44:03'

# IP pool
set service ipoe-server client-ip-pool LOCAL-POOL range '192.168.100.10-192.168.100.50'
set service ipoe-server default-pool 'LOCAL-POOL'

# Gateway
set service ipoe-server gateway-address '192.168.100.1/24'

# DNS
set service ipoe-server name-server '192.168.100.1'

commit
```

## Операционные команды

### Просмотр сессий

Все активные сессии:
```
show ipoe-server sessions
```

Вывод:
```
interface | username      | ip           | ip6                  | calling-sid       | rate-limit    | state
----------+---------------+--------------+----------------------+-------------------+---------------+--------
eth2.100  | user1         | 10.0.0.10    | 2001:db8:1::10/64    | 00:11:22:33:44:01 | 100000/10000  | active
eth2.200  | user2         | 10.0.0.11    |                      | 00:11:22:33:44:02 |               | active
```

Фильтрация по интерфейсу:
```
show ipoe-server sessions interface eth2.100
```

Фильтрация по username:
```
show ipoe-server sessions username user1
```

### Статистика

Общая статистика сервера:
```
show ipoe-server statistics
```

Вывод:
```
uptime: 5d 12h 34m
cpu: 15%
mem(rss/virt): 45/128 MB
core:
  mempool_allocated: 1024
  mempool_available: 512
  thread_count: 4
  thread_active: 2
sessions:
  starting: 0
  active: 25
  finishing: 0
ipoe:
  sessions:
    starting: 0
    active: 25
    finishing: 0
```

### Разрыв сессий

Разорвать сессию по username:
```
clear ipoe-server sessions username user1
```

Разорвать сессию по IP:
```
clear ipoe-server sessions ip 10.0.0.10
```

Разорвать сессию по MAC:
```
clear ipoe-server sessions calling-sid 00:11:22:33:44:01
```

Разорвать сессию по интерфейсу:
```
clear ipoe-server sessions interface eth2.100
```

### Логи

Просмотр логов IPoE:
```
show log ipoe-server
```

Мониторинг в реальном времени:
```
monitor log | grep ipoe
```

Просмотр специфичных событий:
```
show log ipoe-server | grep "session started"
show log ipoe-server | grep "session terminated"
```

### Перезапуск сервиса

```
restart ipoe-server
```

**Внимание**: Перезапуск разорвет все активные сессии!

## RADIUS Attributes Reference

### Authentication Attributes

**Access-Request**:
- `User-Name` - username клиента (обычно MAC-адрес)
- `User-Password` - пароль (если используется)
- `Calling-Station-Id` - MAC-адрес клиента
- `Called-Station-Id` - идентификатор сервера
- `NAS-IP-Address` - IP адрес NAS (VyOS)
- `NAS-Identifier` - идентификатор NAS
- `NAS-Port-Type` - Ethernet (15)

**Access-Accept**:
- `Framed-IP-Address` - назначаемый IP
- `Framed-IP-Netmask` - маска подсети
- `Framed-Pool` - имя IP пула
- `Framed-Route` - статические маршруты
- `Session-Timeout` - таймаут сессии
- `Idle-Timeout` - idle таймаут
- `Filter-Id` - rate-limit параметры

### Accounting Attributes

**Accounting-Request (Start)**:
- `Acct-Status-Type` - Start
- `User-Name` - username
- `Acct-Session-Id` - ID сессии
- `Framed-IP-Address` - IP клиента
- `NAS-IP-Address` - IP NAS

**Accounting-Request (Interim-Update)**:
- `Acct-Status-Type` - Interim-Update
- `Acct-Session-Time` - время сессии в секундах
- `Acct-Input-Octets` - байт получено
- `Acct-Output-Octets` - байт отправлено
- `Acct-Input-Packets` - пакетов получено
- `Acct-Output-Packets` - пакетов отправлено
- `Acct-Input-Gigawords` - гигаворды входящих
- `Acct-Output-Gigawords` - гигаворды исходящих

**Accounting-Request (Stop)**:
- `Acct-Status-Type` - Stop
- `Acct-Terminate-Cause` - причина завершения
- `Acct-Session-Time` - общее время сессии
- Все счетчики трафика

### Dynamic Authorization

**CoA-Request**:
- Change session parameters on the fly
- `Filter-Id` - изменить rate-limit

**Disconnect-Request (DM)**:
- Разорвать сессию
- `User-Name` или `Acct-Session-Id`

### IPv6 Attributes

- `Framed-IPv6-Address` - IPv6 адрес клиента
- `Framed-IPv6-Prefix` - IPv6 префикс
- `Delegated-IPv6-Prefix` - делегированный IPv6 префикс
- `Stateful-IPv6-Address-Pool` - имя IPv6 address pool
- `Delegated-IPv6-Prefix-Pool` - имя IPv6 delegation pool

### Vendor-Specific Attributes

Cisco:
```
Cisco-AVPair = "ip:addr-pool=POOL1"
Cisco-AVPair = "rate-limit input 100000000"
Cisco-AVPair = "rate-limit output 10000000"
```

Microsoft:
```
MS-Primary-DNS-Server = 8.8.8.8
MS-Secondary-DNS-Server = 8.8.4.4
```

## Файлы и директории

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

VyOS генерирует конфигурацию accel-ppp из CLI:
- `/run/accel-pppd/ipoe.conf` - runtime конфигурация

### Логи

- `/var/log/accel-ppp/ipoe.log` - основной лог файл
- Также в syslog: `/var/log/messages`

### PID файл

- `/var/run/accel-pppd.ipoe.pid` - PID процесса

## Устранение неполадок

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

**Проверьте конфигурацию**:
```
show service ipoe-server
show configuration service ipoe-server
```

**Проверьте статус сервиса**:
```
show ipoe-server statistics
```

Если сервис не работает:
```
restart ipoe-server
```

**Проверьте логи**:
```
show log ipoe-server | grep error
show log ipoe-server | grep denied
```

**Проверьте интерфейсы**:
```
show interfaces
show interfaces ethernet eth2 vif
```

### Проблемы с RADIUS

**Проверьте подключение к RADIUS**:
```
show log ipoe-server | grep radius
```

Типичные ошибки:
- `RADIUS timeout` - сервер недоступен или неправильный адрес
- `Access-Reject` - неправильные credentials или MAC не авторизован
- `Invalid response` - неправильный shared secret

**Проверьте RADIUS конфигурацию**:
```
show service ipoe-server authentication radius
```

**Тест подключения**:
```
ping 192.168.1.10
```

**Используйте tcpdump для отладки RADIUS**:
```
sudo tcpdump -i any -n port 1812 or port 1813
```

### Сессии не поднимаются

**Проверьте authentication**:
```
show log ipoe-server | grep auth
```

**Проверьте IP pools**:
```
show service ipoe-server client-ip-pool
```

Убедитесь что:
- Пулы содержат свободные адреса
- Default pool указан правильно
- RADIUS возвращает валидный pool name (если используется)

**Проверьте активные сессии**:
```
show ipoe-server sessions
```

### Проблемы с IP адресацией

**Проверьте gateway**:
```
show service ipoe-server gateway-address
```

**Проверьте routing**:
```
show ip route
```

Убедитесь что маршруты для клиентских подсетей настроены корректно.

**На клиенте проверьте**:
```bash
ip addr
ip route
ping <gateway>
```

### Performance Issues

**Проверьте загрузку CPU**:
```
show system cpu
```

**Проверьте статистику**:
```
show ipoe-server statistics
```

**Увеличьте thread count если нужно**:
```
set service ipoe-server thread-count 8
commit
```

**Проверьте сетевые интерфейсы**:
```
show interfaces counters
show interfaces ethernet eth2 statistics
```

Ищите errors, drops, overruns.

### Rate Limiting не работает

**Проверьте RADIUS атрибуты**:
```
show log ipoe-server | grep "rate-limit"
```

**Проверьте shaper конфигурацию**:
```
show service ipoe-server shaper
```

**Проверьте tc (traffic control)**:
```
sudo tc -s qdisc show dev <interface>
```

### Логирование и отладка

**Включите debug logging**:
```
set service ipoe-server log level 'debug'
commit
```

**Мониторинг в реальном времени**:
```
monitor log | grep ipoe
```

**Специфичная отладка**:
```
show log ipoe-server | grep "session started"
show log ipoe-server | grep "session terminated"
show log ipoe-server | grep "authentication failed"
```

**Отладка DHCP**:
```
show log ipoe-server | grep dhcp
```

## Интеграция с RADIUS сервером

### FreeRADIUS Configuration

Пример конфигурации FreeRADIUS для VyOS IPoE:

**clients.conf**:
```
client vyos-ipoe {
    ipaddr = 192.168.1.1
    secret = secret123
    shortname = vyos-ipoe
    nas_type = other
}
```

**users** (или SQL database):
```
# User with specific IP
user1 Cleartext-Password := "password"
    Framed-IP-Address = 10.0.0.100,
    Framed-IP-Netmask = 255.255.255.0,
    Session-Timeout = 3600

# User with pool
user2 Cleartext-Password := "password"
    Framed-Pool = "POOL1",
    Filter-Id = "rate-limit=100M"

# MAC-based auth
00:11:22:33:44:01 Cleartext-Password := "00:11:22:33:44:01"
    Framed-Pool = "RESIDENTIAL",
    Session-Timeout = 86400
```

### RADIUS Testing

Тест с radtest:
```bash
radtest user1 password 192.168.1.10 0 secret123
```

Тест MAC authentication:
```bash
echo "User-Name = '00:11:22:33:44:01'" | radclient 192.168.1.10 auth secret123
```

## Best Practices

### 1. Планирование IP адресации

- Резервируйте достаточно адресов в пулах
- Используйте отдельные пулы для разных типов клиентов
- Документируйте назначение каждого пула
- Избегайте перекрытия пулов

### 2. RADIUS резервирование

```
set service ipoe-server authentication radius server 192.168.1.10 priority 1
set service ipoe-server authentication radius server 192.168.1.11 priority 2
```

Всегда настраивайте backup RADIUS сервер.

### 3. Accounting и мониторинг

```
set service ipoe-server authentication radius accounting-interim-interval 300
```

Регулярные interim updates для точного биллинга.

### 4. Security

- Используйте сильные RADIUS shared secrets
- Ограничьте доступ к RADIUS портам через firewall
- Используйте VLAN изоляцию для клиентов
- Регулярно проверяйте логи на подозрительную активность

### 5. Масштабируемость

```
set service ipoe-server thread-count 4
```

Настройте количество потоков в зависимости от количества ядер CPU.

### 6. Логирование

```
set service ipoe-server log level 'info'
```

Используйте `info` для production, `debug` только для troubleshooting.

### 7. Session Management

```
set service ipoe-server max-sessions-per-mac 1
```

Предотвращает злоупотребление одним аккаунтом.

### 8. Резервное копирование

Регулярно сохраняйте конфигурацию:
```
save
```

Храните резервные копии:
```
save /config/backup/ipoe-config-$(date +%Y%m%d).boot
```

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

Регулярно проверяйте:
```
show ipoe-server statistics
show system cpu
show system memory
```

### 10. Тестирование перед deployment

- Тестируйте на небольшом количестве клиентов
- Проверьте все сценарии (подключение, отключение, переподключение)
- Верифицируйте accounting данные
- Нагрузочное тестирование

## Migration с PPPoE на IPoE

### Преимущества миграции

- Уменьшение накладных расходов (MTU issues)
- Упрощение конфигурации клиентов
- Лучшая производительность
- Совместимость с современными устройствами

### План миграции

1. **Подготовка**:
   - Обновите RADIUS схему если нужно
   - Подготовьте новые IP пулы
   - Обучите поддержку

2. **Параллельный запуск**:
   - Запустите IPoE на отдельных VLAN
   - Постепенно мигрируйте клиентов
   - Мониторьте проблемы

3. **Переход**:
   - Информируйте клиентов
   - Предоставьте инструкции по настройке
   - Поддержка во время миграции

4. **Завершение**:
   - Отключите PPPoE после полной миграции
   - Очистите старые конфигурации

## Следующие шаги

- [PPPoE Server](/docs/vyos/services/vyos-pppoe-server/) - альтернатива IPoE
- [DHCP Server](/docs/vyos/services/vyos-dhcp/) - интеграция DHCP
- [RADIUS](https://freeradius.org/) - настройка RADIUS сервера
- [IPv6](/docs/vyos/system/vyos-ipv6/) - расширенная IPv6 конфигурация
- [QoS](/docs/vyos/qos/) - управление трафиком

