# Router Advertisements в VyOS

> Настройка Router Advertisements (RA) для IPv6 автоконфигурации в VyOS: SLAAC, prefix delegation, DHCPv6 интеграция, NAT64 для Yandex Cloud и VK Cloud

Source: https://opennix.org/docs/vyos/services/vyos-router-advert/


Router Advertisements (RA) - это механизм IPv6, позволяющий роутерам автоматически конфигурировать сетевые параметры клиентов через периодические объявления. RA является ключевой частью SLAAC (Stateless Address Autoconfiguration) и определен в RFC 4861.

## Обзор

Router Advertisements обеспечивают:

- **SLAAC (Stateless Address Autoconfiguration)**: Автоматическое создание IPv6 адресов клиентами
- **Prefix delegation**: Объявление сетевых префиксов
- **Default gateway**: Информирование о маршрутизаторе по умолчанию
- **DNS configuration**: Передача DNS-серверов и доменов поиска
- **MTU configuration**: Объявление MTU для сети
- **Router lifetime**: Время жизни маршрута по умолчанию
- **Managed/Other flags**: Управление режимами DHCPv6

**Протокол**: ICMPv6, тип 134 (Router Advertisement)

**RFC**: RFC 4861 (Neighbor Discovery), RFC 4862 (SLAAC)

## SLAAC vs DHCPv6

Router Advertisements работают совместно с DHCPv6 через флаги управления:

| Режим | Managed Flag | Other Flag | Описание |
|-------|--------------|------------|----------|
| **SLAAC только** | 0 | 0 | Полная автоконфигурация через RA |
| **Stateless DHCPv6** | 0 | 1 | Адреса через SLAAC, параметры через DHCPv6 |
| **Stateful DHCPv6** | 1 | 1 | Адреса и параметры через DHCPv6 |
| **SLAAC + DNS через RA** | 0 | 0 | SLAAC с RDNSS/DNSSL в RA |

### Выбор режима

- **SLAAC только**: Простые сети без централизованного управления
- **Stateless DHCPv6**: Когда нужны дополнительные параметры (DNS, NTP)
- **Stateful DHCPv6**: Централизованное управление и отслеживание клиентов
- **SLAAC + RDNSS**: Современный подход с DNS в RA

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

### Простой Router Advertisement

```bash
# IPv6 адрес на интерфейсе
set interfaces ethernet eth0 address 2001:db8:1::1/64

# Включение RA на интерфейсе
set service router-advert interface eth0

# Объявление префикса
set service router-advert interface eth0 prefix 2001:db8:1::/64

commit
save
```

Клиенты автоматически создадут адреса в префиксе 2001:db8:1::/64 используя SLAAC.

### RA с автоматическим определением префикса

```bash
# Использование ::/64 для автоопределения
set service router-advert interface eth0 prefix ::/64

commit
save
```

Префикс `::/64` автоматически использует префикс, настроенный на интерфейсе.

### RA с DNS серверами

```bash
# Router Advertisement с RDNSS (Recursive DNS Server)
set service router-advert interface eth0 prefix 2001:db8:1::/64
set service router-advert interface eth0 name-server 2001:4860:4860::8888
set service router-advert interface eth0 name-server 2001:4860:4860::8844

# DNS search domain (DNSSL)
set service router-advert interface eth0 dnssl example.com

commit
save
```

## Расширенная конфигурация

### Managed и Other-Config флаги

#### Managed Flag (Stateful DHCPv6)

```bash
# Клиенты получают адреса через DHCPv6
set service router-advert interface eth0 prefix 2001:db8:1::/64
set service router-advert interface eth0 managed-flag

# Требует настройки DHCPv6 сервера
set service dhcpv6-server shared-network-name LAN subnet 2001:db8:1::/64 address-range start 2001:db8:1::100 stop 2001:db8:1::200
set service dhcpv6-server shared-network-name LAN interface eth0

commit
save
```

#### Other-Config Flag (Stateless DHCPv6)

```bash
# Адреса через SLAAC, параметры через DHCPv6
set service router-advert interface eth0 prefix 2001:db8:1::/64
set service router-advert interface eth0 other-config-flag

# DHCPv6 только для параметров (без address-range)
set service dhcpv6-server shared-network-name LAN subnet 2001:db8:1::/64 name-server 2001:4860:4860::8888
set service dhcpv6-server shared-network-name LAN subnet 2001:db8:1::/64 domain-search example.com
set service dhcpv6-server shared-network-name LAN interface eth0

commit
save
```

### Интервалы отправки RA

```bash
# Максимальный интервал (сек) между RA
set service router-advert interface eth0 interval max 600

# Минимальный интервал (сек)
set service router-advert interface eth0 interval min 200

commit
save
```

По умолчанию: max=600 сек (10 минут), min=200 сек.

### Router Preference

Приоритет маршрутизатора при наличии нескольких:

```bash
set service router-advert interface eth0 default-preference <low|medium|high>
```

Примеры:

```bash
# Высокий приоритет (предпочтительный роутер)
set service router-advert interface eth0 default-preference high

# Средний приоритет (по умолчанию)
set service router-advert interface eth0 default-preference medium

# Низкий приоритет (резервный роутер)
set service router-advert interface eth0 default-preference low

commit
save
```

### Link MTU

Объявление MTU для сети:

```bash
set service router-advert interface eth0 link-mtu 1500

commit
save
```

### Hop Limit

Значение hop limit для исходящих пакетов:

```bash
set service router-advert interface eth0 hop-limit 64

commit
save
```

По умолчанию: 64 (стандартное значение IPv6).

### Reachable Time

Время достижимости соседа (миллисекунды):

```bash
set service router-advert interface eth0 reachable-time 30000

commit
save
```

### Retransmit Timer

Таймер повторной передачи Neighbor Solicitation (миллисекунды):

```bash
set service router-advert interface eth0 retrans-timer 1000

commit
save
```

### Router Lifetime

Время жизни маршрута по умолчанию (секунды):

```bash
set service router-advert interface eth0 default-lifetime 1800

commit
save
```

По умолчанию: 1800 сек (30 минут).

Значение 0 означает, что роутер не должен использоваться как default gateway.

### Отключение RA

#### No-Send-Advert

Полное отключение периодических RA:

```bash
set service router-advert interface eth0 no-send-advert

commit
save
```

Интерфейс все еще будет отвечать на Router Solicitation.

#### No-Send-Interval

Отключение Mobile IPv6 interval option:

```bash
set service router-advert interface eth0 no-send-interval

commit
save
```

## Префиксы (Prefix Configuration)

### Опции префикса

#### Autonomous Flag

Разрешение SLAAC (по умолчанию включен):

```bash
# Отключить SLAAC для этого префикса
set service router-advert interface eth0 prefix 2001:db8:1::/64 no-autonomous-flag

commit
save
```

#### On-Link Flag

Префикс доступен в локальной сети (по умолчанию включен):

```bash
# Префикс не в локальной сети
set service router-advert interface eth0 prefix 2001:db8:1::/64 no-on-link-flag

commit
save
```

#### Preferred Lifetime

Preferred lifetime для адресов (секунды):

```bash
set service router-advert interface eth0 prefix 2001:db8:1::/64 preferred-lifetime 604800

commit
save
```

По умолчанию: 604800 сек (7 дней).

Значение `infinity` означает бесконечный lifetime.

#### Valid Lifetime

Valid lifetime для адресов (секунды):

```bash
set service router-advert interface eth0 prefix 2001:db8:1::/64 valid-lifetime 2592000

commit
save
```

По умолчанию: 2592000 сек (30 дней).

### Множественные префиксы

```bash
# Объявление нескольких префиксов
set service router-advert interface eth0 prefix 2001:db8:1::/64
set service router-advert interface eth0 prefix 2001:db8:2::/64
set service router-advert interface eth0 prefix 2001:db8:3::/64

# Разные параметры для разных префиксов
set service router-advert interface eth0 prefix 2001:db8:1::/64 preferred-lifetime 604800
set service router-advert interface eth0 prefix 2001:db8:2::/64 preferred-lifetime 86400
set service router-advert interface eth0 prefix 2001:db8:3::/64 no-autonomous-flag

commit
save
```

## NAT64 Prefix

NAT64 позволяет IPv6-only клиентам обращаться к IPv4 ресурсам.

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

```bash
# Объявление NAT64 префикса
set service router-advert interface eth0 nat64prefix 64:ff9b::/96

commit
save
```

Well-known NAT64 prefix: `64:ff9b::/96`

### Поддерживаемые маски NAT64

NAT64 префикс может использовать:
- /32
- /40
- /48
- /56
- /64
- /96 (well-known prefix)

Примеры:

```bash
# Well-known prefix (96-bit)
set service router-advert interface eth0 nat64prefix 64:ff9b::/96

# Organization-specific (64-bit)
set service router-advert interface eth0 nat64prefix 2001:db8:64::/64

# Network-specific (96-bit)
set service router-advert interface eth0 nat64prefix 2001:db8:1:64::/96

commit
save
```

### NAT64 Valid Lifetime

```bash
# Время жизни NAT64 префикса (секунды)
set service router-advert interface eth0 nat64prefix 64:ff9b::/96 valid-lifetime 65528

commit
save
```

По умолчанию: 65528 секунд.

## DNS Configuration (RDNSS и DNSSL)

### RDNSS (Recursive DNS Server)

```bash
# DNS серверы через RA
set service router-advert interface eth0 name-server 2001:4860:4860::8888
set service router-advert interface eth0 name-server 2001:4860:4860::8844
set service router-advert interface eth0 name-server 2001:db8:1::53

commit
save
```

### RDNSS Lifetime

```bash
# Время жизни DNS записей (секунды)
set service router-advert interface eth0 name-server 2001:4860:4860::8888 lifetime 300

commit
save
```

По умолчанию: используется router lifetime.

### DNSSL (DNS Search List)

```bash
# Домены поиска
set service router-advert interface eth0 dnssl example.com
set service router-advert interface eth0 dnssl corp.example.com
set service router-advert interface eth0 dnssl lab.example.com

commit
save
```

### DNSSL Lifetime

```bash
# Время жизни search list (секунды)
set service router-advert interface eth0 dnssl example.com lifetime 300

commit
save
```

## Поддерживаемые типы интерфейсов

Router Advertisements поддерживаются на:

- **ethernet** - физические Ethernet интерфейсы
- **bonding** - bond интерфейсы
- **bridge** - мостовые интерфейсы
- **vxlan** - VXLAN туннели
- **geneve** - Geneve туннели
- **l2tpv3** - L2TPv3 туннели
- **openvpn** - OpenVPN интерфейсы
- **pseudo-ethernet** - псевдо-Ethernet (VLAN)
- **tunnel** - туннельные интерфейсы
- **wireguard** - WireGuard VPN
- **wireless** - беспроводные интерфейсы
- **wwan** - беспроводные WAN интерфейсы

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

### Пример 1: Простой SLAAC

```bash
# IPv6 на интерфейсе
set interfaces ethernet eth1 address 2001:db8:1::1/64

# Router Advertisement для SLAAC
set service router-advert interface eth1 prefix 2001:db8:1::/64

# DNS через RDNSS
set service router-advert interface eth1 name-server 2001:4860:4860::8888
set service router-advert interface eth1 name-server 2001:4860:4860::8844
set service router-advert interface eth1 dnssl example.com

commit
save
```

Клиенты создадут адреса вида `2001:db8:1::xxxx:xxxx:xxxx:xxxx`.

### Пример 2: Stateless DHCPv6 + SLAAC

```bash
# IPv6 на интерфейсе
set interfaces ethernet eth1 address 2001:db8:1::1/64

# Router Advertisement с other-config flag
set service router-advert interface eth1 prefix 2001:db8:1::/64
set service router-advert interface eth1 other-config-flag

# DHCPv6 для параметров (без адресов)
set service dhcpv6-server shared-network-name LAN subnet 2001:db8:1::/64 name-server 2001:4860:4860::8888
set service dhcpv6-server shared-network-name LAN subnet 2001:db8:1::/64 name-server 2001:4860:4860::8844
set service dhcpv6-server shared-network-name LAN subnet 2001:db8:1::/64 domain-search example.com
set service dhcpv6-server shared-network-name LAN interface eth1

commit
save
```

Адреса через SLAAC, DNS и домен через DHCPv6.

### Пример 3: Stateful DHCPv6

```bash
# IPv6 на интерфейсе
set interfaces ethernet eth1 address 2001:db8:1::1/64

# Router Advertisement с managed flag
set service router-advert interface eth1 prefix 2001:db8:1::/64
set service router-advert interface eth1 managed-flag
set service router-advert interface eth1 other-config-flag

# DHCPv6 для адресов и параметров
set service dhcpv6-server shared-network-name LAN subnet 2001:db8:1::/64 address-range start 2001:db8:1::100 stop 2001:db8:1::200
set service dhcpv6-server shared-network-name LAN subnet 2001:db8:1::/64 name-server 2001:4860:4860::8888
set service dhcpv6-server shared-network-name LAN subnet 2001:db8:1::/64 domain-search example.com
set service dhcpv6-server shared-network-name LAN interface eth1

commit
save
```

Полное управление через DHCPv6.

### Пример 4: Множественные префиксы

```bash
# Множественные IPv6 адреса на интерфейсе
set interfaces ethernet eth1 address 2001:db8:1::1/64
set interfaces ethernet eth1 address 2001:db8:2::1/64
set interfaces ethernet eth1 address 2001:db8:3::1/64

# RA для всех префиксов
set service router-advert interface eth1 prefix 2001:db8:1::/64
set service router-advert interface eth1 prefix 2001:db8:2::/64
set service router-advert interface eth1 prefix 2001:db8:3::/64

# DNS
set service router-advert interface eth1 name-server 2001:4860:4860::8888

commit
save
```

### Пример 5: RA с NAT64

```bash
# IPv6 на интерфейсе
set interfaces ethernet eth1 address 2001:db8:1::1/64

# Router Advertisement с NAT64
set service router-advert interface eth1 prefix 2001:db8:1::/64
set service router-advert interface eth1 nat64prefix 64:ff9b::/96

# DNS64 сервер
set service router-advert interface eth1 name-server 2001:db8:1::53

commit
save
```

IPv6-only клиенты смогут обращаться к IPv4 через NAT64.

### Пример 6: Высокий приоритет роутера

```bash
# Основной роутер с высоким приоритетом
set interfaces ethernet eth1 address 2001:db8:1::1/64

set service router-advert interface eth1 prefix 2001:db8:1::/64
set service router-advert interface eth1 default-preference high
set service router-advert interface eth1 default-lifetime 3600

# DNS
set service router-advert interface eth1 name-server 2001:4860:4860::8888
set service router-advert interface eth1 dnssl example.com

commit
save
```

### Пример 7: Резервный роутер

```bash
# Резервный роутер с низким приоритетом
set interfaces ethernet eth1 address 2001:db8:1::2/64

set service router-advert interface eth1 prefix 2001:db8:1::/64
set service router-advert interface eth1 default-preference low
set service router-advert interface eth1 default-lifetime 1800

commit
save
```

### Пример 8: RA на множественных интерфейсах

```bash
# LAN 1
set interfaces ethernet eth1 address 2001:db8:1::1/64
set service router-advert interface eth1 prefix 2001:db8:1::/64
set service router-advert interface eth1 name-server 2001:4860:4860::8888

# LAN 2
set interfaces ethernet eth2 address 2001:db8:2::1/64
set service router-advert interface eth2 prefix 2001:db8:2::/64
set service router-advert interface eth2 name-server 2001:4860:4860::8888

# LAN 3 (Guest)
set interfaces ethernet eth3 address 2001:db8:100::1/64
set service router-advert interface eth3 prefix 2001:db8:100::/64
set service router-advert interface eth3 default-lifetime 600  # Короткий lifetime для guest

commit
save
```

### Пример 9: RA на VLAN

```bash
# VLAN 10 - Management
set interfaces ethernet eth1 vif 10 address 2001:db8:10::1/64
set service router-advert interface eth1.10 prefix 2001:db8:10::/64
set service router-advert interface eth1.10 managed-flag
set service router-advert interface eth1.10 name-server 2001:db8:10::53

# DHCPv6 для management
set service dhcpv6-server shared-network-name MGMT subnet 2001:db8:10::/64 address-range start 2001:db8:10::100 stop 2001:db8:10::150
set service dhcpv6-server shared-network-name MGMT interface eth1.10

# VLAN 20 - Users
set interfaces ethernet eth1 vif 20 address 2001:db8:20::1/64
set service router-advert interface eth1.20 prefix 2001:db8:20::/64
set service router-advert interface eth1.20 other-config-flag

# VLAN 30 - Guest (SLAAC only)
set interfaces ethernet eth1 vif 30 address 2001:db8:30::1/64
set service router-advert interface eth1.30 prefix 2001:db8:30::/64
set service router-advert interface eth1.30 name-server 2001:4860:4860::8888

commit
save
```

### Пример 10: RA на Bridge

```bash
# Bridge интерфейс
set interfaces bridge br0 address 2001:db8:1::1/64
set interfaces bridge br0 member interface eth2
set interfaces bridge br0 member interface eth3

# Router Advertisement на bridge
set service router-advert interface br0 prefix 2001:db8:1::/64
set service router-advert interface br0 name-server 2001:4860:4860::8888
set service router-advert interface br0 dnssl example.com

commit
save
```

### Пример 11: Короткие интервалы для быстрой конвергенции

```bash
# Быстрые RA для тестирования или критичных приложений
set interfaces ethernet eth1 address 2001:db8:1::1/64

set service router-advert interface eth1 prefix 2001:db8:1::/64
set service router-advert interface eth1 interval max 30    # 30 секунд
set service router-advert interface eth1 interval min 10    # 10 секунд

commit
save
```

### Пример 12: Кастомные lifetime параметры

```bash
# Различные lifetime для разных целей
set interfaces ethernet eth1 address 2001:db8:1::1/64

set service router-advert interface eth1 prefix 2001:db8:1::/64
set service router-advert interface eth1 prefix 2001:db8:1::/64 preferred-lifetime 86400    # 1 день
set service router-advert interface eth1 prefix 2001:db8:1::/64 valid-lifetime 604800       # 7 дней

set service router-advert interface eth1 default-lifetime 1800                              # 30 минут
set service router-advert interface eth1 name-server 2001:4860:4860::8888
set service router-advert interface eth1 name-server 2001:4860:4860::8888 lifetime 600      # 10 минут

commit
save
```

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

### Просмотр конфигурации RA

```bash
show configuration service router-advert
```

### Проверка IPv6 на интерфейсе

```bash
show interfaces ethernet eth1
```

Убедитесь что IPv6 адрес назначен и интерфейс UP.

### Проверка IPv6 routing

```bash
show ipv6 route
```

### Логи RA

```bash
# Логи radvd (RA демона)
show log | match radvd

# Real-time мониторинг
monitor log | match radvd
```

### Тестирование с клиента

На Linux клиенте:

```bash
# Просмотр полученных RA
sudo radvdump

# Пример вывода:
# Router advertisement from fe80::1 (hoplimit 64)
#         Prefix 2001:db8:1::/64
#         Prefix options: onlink autoconf
#         Preferred lifetime 604800, valid lifetime 2592000

# Просмотр IPv6 адресов
ip -6 addr show eth0

# Пример вывода:
# inet6 2001:db8:1::a00:27ff:fe8d:c04d/64 scope global dynamic
# inet6 fe80::a00:27ff:fe8d:c04d/64 scope link

# Просмотр default gateway
ip -6 route show

# Пример вывода:
# default via fe80::1 dev eth0 proto ra metric 1024
```

На Windows:

```powershell
# Просмотр IPv6 адресов
ipconfig

# Детальная информация
netsh interface ipv6 show address

# Routing table
netsh interface ipv6 show route
```

### Проверка SLAAC адресов

```bash
# На роутере - сканирование IPv6 neighbors
show ipv6 neighbors

# Пример вывода:
# IPv6 Address                            Age Hardware Address State Interface
# 2001:db8:1::a00:27ff:fe8d:c04d         0   08:00:27:8d:c0:4d REACH eth1
# fe80::a00:27ff:fe8d:c04d               0   08:00:27:8d:c0:4d REACH eth1
```

### ICMPv6 статистика

```bash
show ipv6 icmpv6 statistics
```

Смотрите на "Router Advertisement" секцию.

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

### Проблема: Клиенты не получают IPv6 адреса

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

```bash
# 1. Проверка RA конфигурации
show configuration service router-advert

# 2. Проверка IPv6 на интерфейсе
show interfaces ethernet eth1

# 3. Проверка IPv6 forwarding
sysctl net.ipv6.conf.all.forwarding

# 4. Логи
show log | match radvd

# 5. Firewall
show firewall ipv6
```

**Решение**:

```bash
# Убедиться что IPv6 forwarding включен (автоматически при настройке интерфейсов)
# Проверить firewall - ICMPv6 должен быть разрешен

# Разрешить ICMPv6 Router Advertisement
set firewall ipv6 name LAN_LOCAL rule 100 action accept
set firewall ipv6 name LAN_LOCAL rule 100 protocol ipv6-icmp
set firewall ipv6 name LAN_LOCAL rule 100 icmpv6 type router-advertisement

# Restart radvd
restart router-advert

commit
save
```

### Проблема: RA отправляются, но клиенты не конфигурируются

**Причина**: Клиент может не поддерживать SLAAC или блокируется firewall на клиенте.

**Диагностика на клиенте** (Linux):

```bash
# Проверка accept_ra
cat /proc/sys/net/ipv6/conf/eth0/accept_ra
# Должно быть: 1 или 2

# Включить accept_ra
sudo sysctl -w net.ipv6.conf.eth0.accept_ra=2

# Сделать постоянным
echo "net.ipv6.conf.eth0.accept_ra = 2" | sudo tee -a /etc/sysctl.conf
```

**Решение**:

```bash
# На роутере - отправить RA вручную
restart router-advert

# На клиенте - обновить конфигурацию
sudo systemctl restart networking
# или
sudo dhclient -6 -r eth0 && sudo dhclient -6 eth0
```

### Проблема: Клиенты получают адреса, но нет DNS

**Причина**: DNS не настроен в RA или клиент не поддерживает RDNSS.

**Решение**:

```bash
# Добавить name-server в RA
set service router-advert interface eth1 name-server 2001:4860:4860::8888
set service router-advert interface eth1 name-server 2001:4860:4860::8844

# Или использовать DHCPv6 для DNS
set service router-advert interface eth1 other-config-flag
set service dhcpv6-server shared-network-name LAN subnet 2001:db8:1::/64 name-server 2001:4860:4860::8888
set service dhcpv6-server shared-network-name LAN interface eth1

commit
save
```

### Проблема: Множественные роутеры вызывают конфликты

**Причина**: Несколько роутеров отправляют RA с одинаковым приоритетом.

**Решение**:

```bash
# На основном роутере
set service router-advert interface eth1 default-preference high

# На резервном роутере
set service router-advert interface eth1 default-preference low

commit
save
```

### Проблема: DHCPv6 работает, но SLAAC нет

**Причина**: Autonomous flag отключен.

**Решение**:

```bash
# Убедиться что autonomous flag включен (по умолчанию)
delete service router-advert interface eth1 prefix 2001:db8:1::/64 no-autonomous-flag

# Проверить конфигурацию
show configuration service router-advert interface eth1

commit
save
```

### Проблема: Клиенты не видят роутер как default gateway

**Причина**: Router lifetime = 0 или роутер не отправляет RA.

**Решение**:

```bash
# Установить router lifetime
set service router-advert interface eth1 default-lifetime 1800

# Проверить что RA не отключен
delete service router-advert interface eth1 no-send-advert

commit
save
```

### Проблема: NAT64 не работает

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

```bash
# Проверка NAT64 префикса в RA
show configuration service router-advert interface eth1

# На клиенте
ping 64:ff9b::8.8.8.8  # Должен пинговаться 8.8.8.8
```

**Решение**:

```bash
# Настроить NAT64 префикс
set service router-advert interface eth1 nat64prefix 64:ff9b::/96

# Настроить NAT64 translation (если нужно)
# (Зависит от дополнительной конфигурации NAT64 демона)

commit
save
```

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

### 1. Выбор правильного режима

```bash
# Enterprise с централизованным управлением
set service router-advert interface eth1 managed-flag

# Простые сети
set service router-advert interface eth1 prefix ::/64
```

### 2. Настройка DNS

Всегда настраивайте DNS:

```bash
# Через RDNSS в RA
set service router-advert interface eth1 name-server 2001:4860:4860::8888

# Или через DHCPv6
set service router-advert interface eth1 other-config-flag
set service dhcpv6-server shared-network-name LAN subnet 2001:db8:1::/64 name-server 2001:4860:4860::8888
```

### 3. Множественные DNS серверы

```bash
set service router-advert interface eth1 name-server 2001:4860:4860::8888
set service router-advert interface eth1 name-server 2001:4860:4860::8844
set service router-advert interface eth1 name-server 2001:db8:1::53  # Локальный DNS
```

### 4. Правильные интервалы

```bash
# Стабильная сеть - длинные интервалы
set service router-advert interface eth1 interval max 600

# Динамичная сеть - короткие интервалы
set service router-advert interface eth1 interval max 60
set service router-advert interface eth1 interval min 20
```

### 5. Разумные lifetime

```bash
# Preferred lifetime < Valid lifetime
set service router-advert interface eth1 prefix 2001:db8:1::/64 preferred-lifetime 604800   # 7 дней
set service router-advert interface eth1 prefix 2001:db8:1::/64 valid-lifetime 2592000      # 30 дней
```

### 6. Приоритеты для HA

```bash
# Primary router
set service router-advert interface eth1 default-preference high

# Secondary router
set service router-advert interface eth1 default-preference low
```

### 7. Документирование префиксов

Документируйте назначение каждого префикса:

```bash
# Production LAN
set service router-advert interface eth1 prefix 2001:db8:1::/64

# Management VLAN
set service router-advert interface eth1.10 prefix 2001:db8:10::/64

# Guest WiFi
set service router-advert interface eth1.30 prefix 2001:db8:30::/64
```

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

Используйте firewall для защиты от rogue RA:

```bash
# Разрешить RA только от доверенных интерфейсов
set firewall ipv6 name WAN_LOCAL rule 100 action drop
set firewall ipv6 name WAN_LOCAL rule 100 protocol ipv6-icmp
set firewall ipv6 name WAN_LOCAL rule 100 icmpv6 type router-advertisement
```

### 9. MTU Configuration

Настройте MTU если используете туннели:

```bash
# Для GRE/IPsec туннелей
set service router-advert interface eth1 link-mtu 1280

# Для Jumbo frames
set service router-advert interface eth1 link-mtu 9000
```

### 10. Мониторинг

Регулярно проверяйте:

```bash
show ipv6 neighbors
show log | match radvd
```

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

### RA + DHCPv6

Гибридный подход (рекомендуется):

```bash
# SLAAC для адресов
set service router-advert interface eth1 prefix 2001:db8:1::/64

# DHCPv6 для параметров
set service router-advert interface eth1 other-config-flag
set service dhcpv6-server shared-network-name LAN subnet 2001:db8:1::/64 name-server 2001:4860:4860::8888
set service dhcpv6-server shared-network-name LAN subnet 2001:db8:1::/64 domain-search example.com
set service dhcpv6-server shared-network-name LAN interface eth1
```

### RA + DNS Forwarding

```bash
# RA указывает на локальный DNS
set service router-advert interface eth1 name-server 2001:db8:1::1

# DNS Forwarding на роутере
set service dns forwarding listen-address 2001:db8:1::1
set service dns forwarding name-server 2001:4860:4860::8888
```

### RA + Firewall

```bash
# Разрешить ICMPv6 (включая RA)
set firewall ipv6 name LAN_LOCAL rule 100 action accept
set firewall ipv6 name LAN_LOCAL rule 100 protocol ipv6-icmp

# Блокировать внешние RA (rogue RA protection)
set firewall ipv6 name WAN_LOCAL rule 100 action drop
set firewall ipv6 name WAN_LOCAL rule 100 protocol ipv6-icmp
set firewall ipv6 name WAN_LOCAL rule 100 icmpv6 type router-advertisement
```

### RA + High Availability (VRRP)

```bash
# На обоих роутерах настроить VRRP IPv6
set high-availability vrrp group LAN vrid 10
set high-availability vrrp group LAN interface eth1
set high-availability vrrp group LAN address 2001:db8:1::1/64

# RA на VIP адресе (только на master)
set service router-advert interface eth1 prefix 2001:db8:1::/64
```

## Полезные команды

```bash
# Конфигурация RA
show configuration service router-advert

# IPv6 интерфейсы
show interfaces

# IPv6 routing
show ipv6 route

# IPv6 neighbors
show ipv6 neighbors

# Логи radvd
show log | match radvd
monitor log | match radvd

# Restart RA
restart router-advert

# ICMPv6 статистика
show ipv6 icmpv6 statistics

# Проверка IPv6 connectivity
ping 2001:db8:1::100

# Traceroute IPv6
traceroute6 2001:4860:4860::8888
```

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

Router Advertisements в VyOS обеспечивают мощную и гибкую платформу для автоконфигурации IPv6 сетей. Поддержка SLAAC, DHCPv6 интеграции, NAT64, RDNSS/DNSSL и множественных интерфейсов делает VyOS идеальным решением для современных IPv6 развертываний.

Основные преимущества RA в VyOS:
- Полная автоматизация IPv6 конфигурации клиентов
- Гибкость режимов (SLAAC, Stateless DHCPv6, Stateful DHCPv6)
- Поддержка современных стандартов (RDNSS, DNSSL, NAT64)
- Работа на множественных типах интерфейсов
- Интеграция с DHCPv6, DNS, Firewall

Рекомендации для production:
- Используйте SLAAC + DHCPv6 (hybrid mode) для баланса простоты и функциональности
- Настраивайте DNS через RDNSS в RA или DHCPv6
- Планируйте префиксы заранее и документируйте их
- Настраивайте приоритеты для HA сценариев
- Защищайте от rogue RA через firewall
- Мониторьте логи radvd регулярно
- Тестируйте с разными клиентами (Linux, Windows, macOS)

Router Advertisements в VyOS обеспечивают enterprise-grade управление IPv6 автоконфигурацией с надежностью и гибкостью, необходимой для production environments.

