PPPoE - Point-to-Point Protocol over Ethernet

PPPoE (Point-to-Point Protocol over Ethernet) - это сетевой протокол для инкапсуляции PPP фреймов внутри Ethernet фреймов. PPPoE широко используется DSL провайдерами и интернет-провайдерами для предоставления услуг широкополосного доступа с аутентификацией, шифрованием и управлением соединением.

Введение в PPPoE

Что такое PPPoE?

PPPoE - это протокол, который:

  • Инкапсулирует PPP фреймы в Ethernet фреймы
  • Обеспечивает аутентификацию пользователя (PAP, CHAP, MS-CHAP, MS-CHAPv2)
  • Управляет установкой и разрывом соединения
  • Поддерживает динамическое назначение IP адресов
  • Используется для DSL, FTTH, кабельных модемов

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

Компоненты:

  • PPPoE Client - инициирует соединение (VyOS router)
  • PPPoE Server - принимает соединение (ISP equipment)
  • Access Concentrator (AC) - сервер провайдера
  • DSL/Ethernet Modem - физическое устройство

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

  1. Discovery Stage - поиск Access Concentrator
    • PADI (Active Discovery Initiation)
    • PADO (Active Discovery Offer)
    • PADR (Active Discovery Request)
    • PADS (Active Discovery Session-confirmation)
  2. PPP Session Stage - установка PPP сессии
    • LCP (Link Control Protocol)
    • Authentication (PAP/CHAP)
    • NCP (Network Control Protocol)
    • IP configuration

Режимы работы

Режим 1: Домашние пользователи (Transparent Mode)

[Computer] ---- [DSL Modem with PPPoE] ---- [ISP]
                     (auto-connect)
  • Модем автоматически устанавливает PPPoE соединение
  • Получает приватный IP адрес (RFC 1918)
  • Возможен double NAT

Режим 2: Роутер VyOS (Bridge Mode)

[LAN] ---- [VyOS Router] ---- [DSL Modem Bridge] ---- [ISP]
                PPPoE Client
  • VyOS инициирует PPPoE соединение
  • Модем работает в режиме моста
  • Полный контроль над сетевой конфигурацией
  • Один уровень NAT

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

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

  • Подключение к DSL провайдеру
  • FTTH (Fiber to the Home) соединения
  • Кабельные модемы с PPPoE
  • Любое подключение требующее ISP аутентификацию
  • Соединения с динамическим IP от провайдера

Применение:

  • Домашний интернет через DSL/FTTH
  • Офисное подключение к провайдеру
  • Резервное подключение через DSL
  • Тестирование PPPoE инфраструктуры

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

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

configure

# Создать PPPoE интерфейс
set interfaces pppoe pppoe0 source-interface eth0
set interfaces pppoe pppoe0 authentication username 'myuser@isp.ru'
set interfaces pppoe pppoe0 authentication password 'SecretPassword123'

# Использовать default route от ISP
set interfaces pppoe pppoe0 default-route auto

commit
save

Результат:

  • PPPoE соединение через eth0
  • Автоматическое получение IP адреса от ISP
  • Default route указывает на PPPoE интерфейс

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

Source Interface

# Физический интерфейс для PPPoE
set interfaces pppoe pppoe0 source-interface eth0

# PPPoE через VLAN интерфейс
set interfaces ethernet eth0 vif 100
set interfaces pppoe pppoe0 source-interface eth0.100

Важно: Source interface должен быть:

  • Физическим Ethernet интерфейсом
  • VLAN sub-interface
  • Bond интерфейсом
  • В состоянии UP

Authentication

# Username и password от ISP
set interfaces pppoe pppoe0 authentication username 'user@provider.com'
set interfaces pppoe pppoe0 authentication password 'MyPassword'

# Plaintext password (не рекомендуется в production)
set interfaces pppoe pppoe0 authentication plaintext-password 'MyPassword'

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

  • PAP (Password Authentication Protocol) - пароль в открытом виде
  • CHAP (Challenge Handshake Authentication Protocol) - хеш пароля
  • MS-CHAP, MS-CHAPv2 - Microsoft variants

VyOS автоматически согласует метод аутентификации с ISP.

IP Address Configuration

# Автоматическое получение IP от ISP (default)
set interfaces pppoe pppoe0

# Статический IP (если ISP предоставляет)
set interfaces pppoe pppoe0 address 203.0.113.10/32

# IPv6 через DHCPv6
set interfaces pppoe pppoe0 ipv6 address autoconf
set interfaces pppoe pppoe0 dhcpv6-options pd 0 interface eth1 address 1
set interfaces pppoe pppoe0 dhcpv6-options pd 0 length 56

Default Route

# Автоматически добавить default route через PPPoE
set interfaces pppoe pppoe0 default-route auto

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

# Не добавлять default route
set interfaces pppoe pppoe0 default-route none

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

Опции:

  • auto - добавить route если PPPoE - единственное подключение
  • force - всегда добавлять route
  • none - не добавлять route

MTU и MRU

# MTU (Maximum Transmission Unit)
set interfaces pppoe pppoe0 mtu 1492

# MRU (Maximum Receive Unit)
set interfaces pppoe pppoe0 mru 1492

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

  • Ethernet MTU: 1500 bytes
  • PPPoE overhead: 8 bytes (PPPoE header + PPP header)
  • Рекомендуемый MTU: 1492 bytes
  • Некоторые ISP требуют MTU 1480-1490

Автоматический TCP MSS clamping:

# Установить TCP MSS для предотвращения фрагментации
set interfaces pppoe pppoe0 ip adjust-mss 1452
set interfaces pppoe pppoe0 ipv6 adjust-mss 1432

Connect on Demand

# Устанавливать соединение по требованию (при трафике)
set interfaces pppoe pppoe0 connect-on-demand

# Idle timeout - разорвать соединение после N секунд простоя
set interfaces pppoe pppoe0 idle-timeout 300

# Holdoff time - пауза перед повторным подключением
set interfaces pppoe pppoe0 holdoff 30

Use case: Экономия трафика, платные соединения

Service Name

# Указать конкретный service name (если ISP требует)
set interfaces pppoe pppoe0 service-name 'MY-SERVICE'

# Использовать любой доступный service
# (default behavior - не указывать service-name)

Access Concentrator

# Подключаться к конкретному AC (если несколько доступно)
set interfaces pppoe pppoe0 access-concentrator 'BRAS-01'

Interface Description

# Добавить описание
set interfaces pppoe pppoe0 description 'ISP Connection - Main Link'

Host-uniq Tag

# Уникальный тег для сессии (hex)
set interfaces pppoe pppoe0 host-uniq '0x12345678'

Назначение: Идентификация сессии на стороне клиента

Local and Remote IP

# Локальный IP адрес (обычно получается автоматически)
set interfaces pppoe pppoe0 local-address 192.168.100.1

# IP адрес удаленной стороны (ISP gateway)
set interfaces pppoe pppoe0 remote-address 192.168.100.254

Примечание: Обычно не требуется - IP адреса согласуются автоматически

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

Сценарий 1: Базовое DSL подключение

Топология:

[LAN 192.168.1.0/24] ---- [VyOS eth1] [VyOS eth0] ---- [DSL Modem Bridge] ---- [ISP]
                                           PPPoE

Задача: Настроить интернет-подключение через DSL провайдера

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

configure

# WAN интерфейс (к DSL модему)
set interfaces ethernet eth0 description 'DSL Modem'

# PPPoE соединение
set interfaces pppoe pppoe0 source-interface eth0
set interfaces pppoe pppoe0 authentication username 'user@dsl-provider.ru'
set interfaces pppoe pppoe0 authentication password 'MySecretPass'
set interfaces pppoe pppoe0 default-route auto
set interfaces pppoe pppoe0 mtu 1492
set interfaces pppoe pppoe0 description 'ISP Connection'

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

# NAT для выхода в интернет
set nat source rule 100 outbound-interface name pppoe0
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
set service dhcp-server shared-network-name LAN subnet 192.168.1.0/24 option name-server 8.8.8.8
set service dhcp-server shared-network-name LAN subnet 192.168.1.0/24 option name-server 8.8.4.4

# DNS forwarding
set service dns forwarding listen-address 192.168.1.1
set service dns forwarding allow-from 192.168.1.0/24

commit
save

Проверка:

# Статус PPPoE интерфейса
show interfaces pppoe pppoe0

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

# Default route
show ip route

# Тест connectivity
ping 8.8.8.8 interface pppoe0

Сценарий 2: PPPoE через VLAN

Топология:

[VyOS] ---- eth0.100 (VLAN 100) ---- [Switch] ---- [ISP with VLAN tagging]

Задача: ISP требует VLAN 100 для PPPoE соединения

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

configure

# Создать VLAN интерфейс
set interfaces ethernet eth0 vif 100 description 'ISP VLAN'

# PPPoE через VLAN
set interfaces pppoe pppoe0 source-interface eth0.100
set interfaces pppoe pppoe0 authentication username 'customer@fiber-isp.ru'
set interfaces pppoe pppoe0 authentication password 'FiberPass123'
set interfaces pppoe pppoe0 default-route auto
set interfaces pppoe pppoe0 mtu 1492
set interfaces pppoe pppoe0 description 'Fiber ISP Connection'

# Service name если требуется
set interfaces pppoe pppoe0 service-name 'FIBER-100M'

commit
save

Проверка VLAN:

# Проверить VLAN интерфейс
show interfaces ethernet eth0 vif 100

# Проверить PPPoE
show interfaces pppoe pppoe0

Сценарий 3: Dual PPPoE (два провайдера)

Топология:

                  ┌─ eth0 ── PPPoE0 ── [ISP-A Primary]
[VyOS Router] ────┤
                  └─ eth1 ── PPPoE1 ── [ISP-B Backup]

Задача: Резервирование через два DSL провайдера с failover

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

configure

# Основной ISP (eth0)
set interfaces pppoe pppoe0 source-interface eth0
set interfaces pppoe pppoe0 authentication username 'user@isp-a.ru'
set interfaces pppoe pppoe0 authentication password 'PasswordA'
set interfaces pppoe pppoe0 default-route-distance 10
set interfaces pppoe pppoe0 mtu 1492
set interfaces pppoe pppoe0 description 'ISP-A Primary'

# Резервный ISP (eth1)
set interfaces pppoe pppoe1 source-interface eth1
set interfaces pppoe pppoe1 authentication username 'user@isp-b.ru'
set interfaces pppoe pppoe1 authentication password 'PasswordB'
set interfaces pppoe pppoe1 default-route-distance 20
set interfaces pppoe pppoe1 mtu 1492
set interfaces pppoe pppoe1 description 'ISP-B Backup'

# NAT через оба интерфейса
set nat source rule 100 outbound-interface name pppoe0
set nat source rule 100 source address 192.168.1.0/24
set nat source rule 100 translation address masquerade

set nat source rule 110 outbound-interface name pppoe1
set nat source rule 110 source address 192.168.1.0/24
set nat source rule 110 translation address masquerade

commit
save

Логика failover:

  • Primary route через pppoe0 (distance 10)
  • Backup route через pppoe1 (distance 20)
  • При падении pppoe0 автоматический переход на pppoe1

Проверка:

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

# Тест failover
# 1. Disconnect pppoe0
disconnect interface pppoe0

# 2. Проверить активный route
show ip route 0.0.0.0/0

# 3. Reconnect
connect interface pppoe0

Сценарий 4: PPPoE с IPv6 и DHCPv6-PD

Задача: Получить IPv6 prefix от ISP и раздать в LAN

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

configure

# PPPoE с IPv4 и IPv6
set interfaces pppoe pppoe0 source-interface eth0
set interfaces pppoe pppoe0 authentication username 'user@ipv6-isp.ru'
set interfaces pppoe pppoe0 authentication password 'IPv6Password'
set interfaces pppoe pppoe0 default-route auto
set interfaces pppoe pppoe0 mtu 1492

# IPv6 autoconfig
set interfaces pppoe pppoe0 ipv6 address autoconf

# DHCPv6 Prefix Delegation
set interfaces pppoe pppoe0 dhcpv6-options pd 0 length 56
set interfaces pppoe pppoe0 dhcpv6-options pd 0 interface eth1 address 1
set interfaces pppoe pppoe0 dhcpv6-options pd 0 interface eth1 sla-id 1

# LAN интерфейс с IPv6
set interfaces ethernet eth1 address 192.168.1.1/24

# IPv6 Router Advertisement для LAN
set service router-advert interface eth1 prefix ::/64

commit
save

Объяснение DHCPv6-PD:

  • pd 0 - prefix delegation ID
  • length 56 - запросить /56 prefix от ISP
  • interface eth1 - назначить subnet на eth1
  • address 1 - использовать ::1 как адрес роутера
  • sla-id 1 - subnet ID из делегированного prefix

Проверка IPv6:

# IPv6 адрес PPPoE
show ipv6 interface pppoe0

# Делегированный prefix
show dhcpv6 client leases

# IPv6 routing
show ipv6 route

# Ping IPv6
ping 2001:4860:4860::8888 interface pppoe0

Сценарий 5: Connect on Demand с Idle Timeout

Задача: Платное PPPoE соединение, подключаться только при необходимости

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

configure

# PPPoE с on-demand режимом
set interfaces pppoe pppoe0 source-interface eth0
set interfaces pppoe pppoe0 authentication username 'user@metered-isp.ru'
set interfaces pppoe pppoe0 authentication password 'MeteredPassword'
set interfaces pppoe pppoe0 default-route auto
set interfaces pppoe pppoe0 mtu 1492

# Connect on demand
set interfaces pppoe pppoe0 connect-on-demand

# Idle timeout 5 минут
set interfaces pppoe pppoe0 idle-timeout 300

# Holdoff 30 секунд перед reconnect
set interfaces pppoe pppoe0 holdoff 30

commit
save

Поведение:

  1. Соединение устанавливается при появлении трафика
  2. После 300 секунд без трафика - disconnect
  3. Пауза 30 секунд перед следующим connect
  4. Повторный connect при новом трафике

Тестирование:

# Проверить статус (должен быть down если idle)
show interfaces pppoe pppoe0

# Инициировать трафик
ping 8.8.8.8

# Проверить соединение (должно установиться)
show interfaces pppoe pppoe0

# Ждать 5 минут без трафика - disconnect

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

Задача: Использовать VyOS в VK Cloud для тестирования PPPoE сервера

Топология:

[VK Cloud VyOS Client] ---- [Private Network] ---- [VyOS PPPoE Server]

Client конфигурация:

configure

# PPPoE client в облаке
set interfaces pppoe pppoe0 source-interface eth1
set interfaces pppoe pppoe0 authentication username 'testuser'
set interfaces pppoe pppoe0 authentication password 'TestPass123'
set interfaces pppoe pppoe0 default-route none
set interfaces pppoe pppoe0 mtu 1450
set interfaces pppoe pppoe0 description 'VK Cloud PPPoE Test'

commit
save

Примечание для VK Cloud:

  • MTU в VK Cloud: 1500, использовать PPPoE MTU 1450
  • PPPoE работает в private networks
  • Для production используйте VPC peering вместо PPPoE

Сценарий 7: Российские провайдеры DSL

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

configure

# Ростелеком / МТС / Билайн DSL
set interfaces pppoe pppoe0 source-interface eth0
set interfaces pppoe pppoe0 authentication username 'login@provider'
set interfaces pppoe pppoe0 authentication password 'password'
set interfaces pppoe pppoe0 default-route auto
set interfaces pppoe pppoe0 mtu 1492

# Некоторые провайдеры требуют service-name
# set interfaces pppoe pppoe0 service-name 'Internet'

# LAN сеть
set interfaces ethernet eth1 address 192.168.0.1/24

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

# DNS от провайдера (автоматически через PPPoE)
set system name-server pppoe0

# DHCP для LAN
set service dhcp-server shared-network-name LAN subnet 192.168.0.0/24 range 0 start 192.168.0.100
set service dhcp-server shared-network-name LAN subnet 192.168.0.0/24 range 0 stop 192.168.0.200
set service dhcp-server shared-network-name LAN subnet 192.168.0.0/24 option default-router 192.168.0.1

commit
save

Особенности российских провайдеров:

  • Часто используется MTU 1492
  • Username формат: login@provider или login
  • Некоторые требуют VLAN tagging
  • IPTV может требовать отдельный VLAN

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

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

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

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

# Brief вывод
show interfaces pppoe pppoe0 brief

# Статистика
show interfaces pppoe pppoe0 statistics

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

pppoe0: <POINTOPOINT,MULTICAST,NOARP,UP,LOWER_UP> mtu 1492
    inet 203.0.113.45 peer 203.0.113.1/32
    RX: bytes    packets  errors  dropped  overrun       mcast
        10485760    8192       0        0        0           0
    TX: bytes    packets  errors  dropped carrier collisions
         5242880    4096       0        0       0           0

Operational Commands

# Disconnect PPPoE соединение
disconnect interface pppoe0

# Connect PPPoE соединение
connect interface pppoe0

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

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

Debugging PPPoE

# Включить debug для PPPoE
debug pppoe interface pppoe0

# Просмотр debug вывода
show log tail

# Выключить debug
no debug pppoe interface pppoe0

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

  • Discovery packets (PADI, PADO, PADR, PADS)
  • LCP negotiation
  • Authentication attempts
  • IP address assignment
  • Keepalive packets

Packet Capture

# Захват PPPoE трафика на source интерфейсе
monitor traffic interface eth0 filter "pppoe"

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

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

Анализ в Wireshark:

  • PPPoE Discovery packets (0x8863)
  • PPPoE Session packets (0x8864)
  • LCP/CHAP/PAP frames
  • IP packets внутри PPPoE

Проверка DNS

# DNS servers полученные от ISP
show interfaces pppoe pppoe0 | grep "name-server"

# Тест DNS resolution
nslookup google.com

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

# Bandwidth monitoring
monitor bandwidth interface pppoe0

# Real-time traffic statistics
show interfaces pppoe pppoe0 statistics

# Connection uptime
show interfaces pppoe pppoe0 | grep "uptime"

Troubleshooting

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

Симптомы:

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

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

# 1. Проверить source interface
show interfaces ethernet eth0

# Должен быть UP
# Если DOWN - проверить физическое подключение

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

# 3. Включить debug
debug pppoe interface pppoe0

# 4. Попытка connect
connect interface pppoe0

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

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

  1. Source interface DOWN:
# Проверить link
show interfaces ethernet eth0
# Решение: проверить кабель, DSL модем
  1. Неверные credentials:
# В логах: "authentication failed"
# Решение: проверить username/password
set interfaces pppoe pppoe0 authentication username 'correct-user'
set interfaces pppoe pppoe0 authentication password 'correct-pass'
commit
  1. DSL модем не в bridge mode:
# Модем сам устанавливает PPPoE
# Решение: перевести модем в bridge mode (router mode -> bridge mode)
  1. VLAN требуется:
# ISP требует VLAN tagging
# Решение: использовать VLAN интерфейс
set interfaces ethernet eth0 vif 100
set interfaces pppoe pppoe0 source-interface eth0.100
commit

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

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

# 1. Проверить IP адрес
show interfaces pppoe pppoe0
# Должен быть публичный IP или carrier-grade NAT IP (100.64.0.0/10)

# 2. Проверить default route
show ip route 0.0.0.0/0
# Должен указывать на pppoe0

# 3. Ping gateway ISP
ping 203.0.113.1 interface pppoe0

# 4. Ping public IP
ping 8.8.8.8 interface pppoe0

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

# 6. Проверить NAT
show nat source statistics

Решения:

  1. Нет default route:
set interfaces pppoe pppoe0 default-route force
commit
  1. DNS не работает:
# Использовать DNS от ISP
set system name-server pppoe0

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

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

Симптомы:

  • PPPoE постоянно переподключается
  • В логах: “LCP terminated”

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

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

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

# 3. Статистика errors
show interfaces pppoe pppoe0 statistics

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

  1. Проблемы DSL line:
# Плохое качество линии, интерференция
# Решение: проверить DSL модем статистику, SNR, attenuation
# Контакт провайдера для проверки линии
  1. MTU problems:
# Packets dropping из-за MTU
# Решение: уменьшить MTU
set interfaces pppoe pppoe0 mtu 1480
set interfaces pppoe pppoe0 ip adjust-mss 1440
commit
  1. ISP keepalive timeout:
# ISP разрывает соединение из-за отсутствия трафика
# Если idle-timeout включен - отключить
delete interfaces pppoe pppoe0 idle-timeout
delete interfaces pppoe pppoe0 connect-on-demand
commit
  1. Duplicate MAC addresses:
# Проверить нет ли другого устройства с таким же MAC на source interface
show interfaces ethernet eth0

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

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

# 1. Bandwidth test через iperf3
# На сервере (публичный IP)
iperf3 -s

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

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

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

# 4. Interface statistics
show interfaces pppoe pppoe0 statistics

Решения:

  1. MTU fragmentation:
# Path MTU Discovery
# Уменьшить MTU
set interfaces pppoe pppoe0 mtu 1480
set interfaces pppoe pppoe0 mru 1480
set interfaces pppoe pppoe0 ip adjust-mss 1440
commit
  1. Hardware offloading:
# Включить offloading на source interface
set interfaces ethernet eth0 offload gso
set interfaces ethernet eth0 offload gro
set interfaces ethernet eth0 offload tso
commit
  1. QoS shaping (если ISP throttling):
# Traffic shaping по скорости тарифа
set traffic-policy shaper ISP-LIMIT bandwidth 100mbit
set traffic-policy shaper ISP-LIMIT default bandwidth 100%

set interfaces pppoe pppoe0 traffic-policy out ISP-LIMIT
commit

Проблема: IPv6 не работает

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

# 1. Проверить IPv6 address
show ipv6 interface pppoe0

# 2. Проверить DHCPv6-PD
show dhcpv6 client leases

# 3. IPv6 routing
show ipv6 route

# 4. Ping IPv6
ping 2001:4860:4860::8888 interface pppoe0

Решения:

# Включить IPv6 autoconfig
set interfaces pppoe pppoe0 ipv6 address autoconf

# Настроить DHCPv6-PD
set interfaces pppoe pppoe0 dhcpv6-options pd 0 length 56
set interfaces pppoe pppoe0 dhcpv6-options pd 0 interface eth1 address 1

# Проверить ISP поддерживает IPv6
# Если нет - использовать tunnel broker (6in4, 6rd)

Security Best Practices

1. Защита credentials

# Никогда не использовать plaintext-password в production
# Используйте password (автоматически хешируется)
set interfaces pppoe pppoe0 authentication password 'SecurePassword123!'

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

2. Firewall на WAN

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

set firewall name WAN-IN rule 20 action drop
set firewall name WAN-IN rule 20 state invalid enable

# Применить к PPPoE
set interfaces pppoe pppoe0 firewall in name WAN-IN

commit

3. Ограничение входящих connections

# Разрешить только established/related
set firewall name WAN-IN default-action drop
set firewall name WAN-IN enable-default-log

set firewall name WAN-IN rule 10 action accept
set firewall name WAN-IN rule 10 state established enable
set firewall name WAN-IN rule 10 state related enable

set firewall name WAN-IN rule 999 action drop
set firewall name WAN-IN rule 999 log enable

commit

4. Rate limiting

# Защита от DDoS
set firewall name WAN-IN rule 5 action drop
set firewall name WAN-IN rule 5 protocol icmp
set firewall name WAN-IN rule 5 limit rate 10/second
set firewall name WAN-IN rule 5 limit burst 20

commit

5. Мониторинг подключений

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

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

# Email alerts при disconnect
# (требует настройки mail relay)

Performance Tuning

1. MTU Optimization

# Оптимальный MTU для PPPoE
set interfaces pppoe pppoe0 mtu 1492
set interfaces pppoe pppoe0 mru 1492

# TCP MSS clamping
set interfaces pppoe pppoe0 ip adjust-mss 1452
set interfaces pppoe pppoe0 ipv6 adjust-mss 1432

commit

2. Hardware Offloading

# Включить offloading на source interface
set interfaces ethernet eth0 offload gso
set interfaces ethernet eth0 offload gro
set interfaces ethernet eth0 offload sg
set interfaces ethernet eth0 offload tso

commit

3. Buffer Tuning

# Увеличить ring buffers (если NIC поддерживает)
# Проверить текущие значения
ethtool -g eth0

# Установить максимальные (через shell)
# ethtool -G eth0 rx 4096 tx 4096

4. QoS для VoIP/Gaming

# Priority queueing для низкой latency
set traffic-policy shaper GAMING class 10 match VoIP ip protocol udp
set traffic-policy shaper GAMING class 10 match VoIP ip source port 5060-5090
set traffic-policy shaper GAMING class 10 bandwidth 10%
set traffic-policy shaper GAMING class 10 priority 7

set traffic-policy shaper GAMING class 20 match Gaming ip dscp cs4
set traffic-policy shaper GAMING class 20 bandwidth 30%
set traffic-policy shaper GAMING class 20 priority 5

set traffic-policy shaper GAMING default bandwidth 60%
set traffic-policy shaper GAMING default priority 1

set interfaces pppoe pppoe0 traffic-policy out GAMING
commit

Advanced Configuration

Load Balancing через два PPPoE (Dual WAN)

configure

# PPPoE 1
set interfaces pppoe pppoe0 source-interface eth0
set interfaces pppoe pppoe0 authentication username 'user1@isp1.ru'
set interfaces pppoe pppoe0 authentication password 'Pass1'
set interfaces pppoe pppoe0 default-route none

# PPPoE 2
set interfaces pppoe pppoe1 source-interface eth1
set interfaces pppoe pppoe1 authentication username 'user2@isp2.ru'
set interfaces pppoe pppoe1 authentication password 'Pass2'
set interfaces pppoe pppoe1 default-route none

# Load balancing configuration
set load-balancing wan interface-health pppoe0 nexthop pppoe0
set load-balancing wan interface-health pppoe0 test 10 type ping
set load-balancing wan interface-health pppoe0 test 10 target 8.8.8.8

set load-balancing wan interface-health pppoe1 nexthop pppoe1
set load-balancing wan interface-health pppoe1 test 10 type ping
set load-balancing wan interface-health pppoe1 test 10 target 8.8.4.4

set load-balancing wan rule 1 inbound-interface eth2
set load-balancing wan rule 1 interface pppoe0 weight 1
set load-balancing wan rule 1 interface pppoe1 weight 1

commit
save

PPPoE Server на VyOS

VyOS может работать как PPPoE сервер:

configure

# PPPoE server
set service pppoe-server interface eth1
set service pppoe-server authentication mode local
set service pppoe-server authentication local-users username client1 password 'ClientPass1'
set service pppoe-server client-ip-pool start 10.255.0.2
set service pppoe-server client-ip-pool stop 10.255.0.254
set service pppoe-server gateway-address 10.255.0.1
set service pppoe-server name-server 8.8.8.8
set service pppoe-server name-server 8.8.4.4

commit
save

Use case: Предоставление PPPoE доступа клиентам

Сравнение PPPoE vs DHCP vs Static IP

ХарактеристикаPPPoEDHCPStatic IP
AuthenticationДа (username/password)НетНет
IP AssignmentДинамическийДинамическийСтатический
Session ManagementДа (connect/disconnect)НетНет
MTU1492 (overhead 8 bytes)15001500
Setup ComplexityСредняяНизкаяНизкая
Типичное использованиеDSL, FTTHHome broadband, CableBusiness, Dedicated
Overhead8 bytes PPPoE + 2 bytes PPP0 bytes0 bytes
ISP ControlВысокийСреднийНизкий

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

  • ISP требует аутентификацию
  • DSL/ADSL подключение
  • Нужен session control
  • Multiple users sharing physical link

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

  • Cable modem
  • Simple home connection
  • Нет требований аутентификации

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

  • Business connections
  • Нужен постоянный IP
  • Server hosting
  • VPN endpoints

Best Practices

1. Naming Convention

# Используйте понятные имена
set interfaces pppoe pppoe0 description 'ISP-Rostelecom-Primary'
set interfaces pppoe pppoe1 description 'ISP-MTS-Backup'

2. MTU Configuration

# Всегда настраивайте MTU и MSS
set interfaces pppoe pppoe0 mtu 1492
set interfaces pppoe pppoe0 ip adjust-mss 1452

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

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

# Или automated backup
# Настроить в cron или external script

5. Security

# Firewall на WAN обязателен
set firewall name WAN-IN default-action drop
set firewall name WAN-IN rule 10 action accept
set firewall name WAN-IN rule 10 state established enable
set firewall name WAN-IN rule 10 state related enable

set interfaces pppoe pppoe0 firewall in name WAN-IN

6. Documentation

# Документируйте все в description
set interfaces pppoe pppoe0 description 'Main ISP - Contract #12345 - Support 8-800-XXX'

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

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

VyOS 1.4:

set interfaces pppoe pppoe0 source-interface eth0
set interfaces pppoe pppoe0 user-id 'username'
set interfaces pppoe pppoe0 password 'password'

VyOS 1.5:

set interfaces pppoe pppoe0 source-interface eth0
set interfaces pppoe pppoe0 authentication username 'username'
set interfaces pppoe pppoe0 authentication password 'password'

Migration script:

# Старая конфигурация (1.4) автоматически конвертируется
# Рекомендуется использовать новый синтаксис (authentication username/password)

Заключение

PPPoE остается важным протоколом для подключения к интернет-провайдерам:

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

  • Встроенная аутентификация
  • Session management
  • Широкая поддержка провайдерами
  • Поддержка IPv6 и DHCPv6-PD

Применение:

  • DSL/ADSL подключения
  • FTTH (Fiber to the Home)
  • Кабельные модемы с PPPoE
  • ISP connections с аутентификацией

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

  • Правильная настройка MTU (1492) и MSS clamping
  • Firewall на WAN интерфейсе
  • Monitoring и logging
  • Резервирование через dual PPPoE
  • Regular backup конфигурации

PPPoE в VyOS обеспечивает надежное и гибкое решение для подключения к интернет-провайдерам как для домашних пользователей, так и для бизнеса, с полным контролем над сетевой конфигурацией и безопасностью.

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

Проверено OpenNix LLC · Обновлено