# ARP - Address Resolution Protocol

> Настройка ARP на VyOS: статические ARP записи, Proxy ARP, ARP таблица, безопасность ARP, gratuitous ARP для Yandex Cloud и VK Cloud

Source: https://opennix.org/docs/vyos/routing/vyos-arp/


Address Resolution Protocol (ARP) - это протокол сетевого уровня, используемый для преобразования IP-адресов (IPv4) в MAC-адреса (аппаратные адреса) в локальных сетях Ethernet.

## Обзор

ARP является критически важным протоколом для работы IPv4 сетей:
- Преобразование IP-адресов в MAC-адреса
- Кэширование соответствий для уменьшения сетевого трафика
- Динамическое обновление ARP таблицы
- Поддержка статических записей для критической инфраструктуры
- Proxy ARP для межсетевого взаимодействия

**Основные задачи ARP**:
- Разрешение адресов в локальной сети
- Поддержание ARP кэша
- Обработка ARP запросов и ответов
- Обеспечение связности на канальном уровне

**Для IPv6** используется протокол Neighbor Discovery Protocol (NDP), который является частью ICMPv6.

### Как работает ARP

1. **ARP Request**: Хост отправляет широковещательный запрос "Кто имеет IP X?"
2. **ARP Reply**: Узел с IP X отвечает своим MAC-адресом
3. **Кэширование**: Оба узла сохраняют соответствие IP-MAC в ARP таблице
4. **Timeout**: Записи стареют и удаляются через определенное время (по умолчанию ~60 секунд)

### Типы ARP записей

**Dynamic ARP**:
- Создаются автоматически при обмене ARP запросами/ответами
- Имеют ограниченное время жизни (TTL)
- Обновляются при использовании
- Удаляются при истечении времени

**Static ARP**:
- Создаются вручную администратором
- Не истекают автоматически
- Используются для критичных узлов
- Защита от ARP spoofing
- Обозначаются флагом "CM" (Complete, Manual)

## Статические ARP записи

Статические ARP записи используются для постоянного связывания IP-адреса с MAC-адресом без автоматического истечения.

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

Создание статической ARP записи:

```
set protocols static arp interface eth0 address 192.0.2.1 mac 01:23:45:67:89:01
commit
```

Синтаксис:
```
set protocols static arp interface <interface> address <IP> mac <MAC>
```

Параметры:
- **interface** - сетевой интерфейс (eth0, eth1, bond0 и т.д.)
- **address** - IPv4 адрес узла
- **mac** - MAC адрес в формате XX:XX:XX:XX:XX:XX

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

```
set protocols static arp interface eth0 address 192.168.1.10 mac 00:11:22:33:44:55
set protocols static arp interface eth0 address 192.168.1.20 mac 00:11:22:33:44:66
set protocols static arp interface eth0 address 192.168.1.30 mac 00:11:22:33:44:77
commit
```

### Статические ARP для разных интерфейсов

```
set protocols static arp interface eth0 address 192.168.1.1 mac aa:bb:cc:dd:ee:01
set protocols static arp interface eth1 address 10.0.0.1 mac aa:bb:cc:dd:ee:02
set protocols static arp interface eth2 address 172.16.0.1 mac aa:bb:cc:dd:ee:03
commit
```

### Удаление статической записи

```
delete protocols static arp interface eth0 address 192.168.1.10
commit
```

## Просмотр ARP таблицы

### Показать все ARP записи

```
show arp
```

Пример вывода:
```
Address                  HWtype  HWaddress           Flags Mask     Iface
10.1.1.1                 ether   00:53:00:de:23:2e   C              eth1
10.1.1.100               ether   00:53:00:de:23:aa   CM             eth1
192.168.1.1              ether   52:54:00:12:34:56   C              eth0
192.168.1.10                     (incomplete)                       eth0
```

Обозначения флагов:
- **C** (Complete) - запись полная и валидная
- **M** (Manual/Permanent) - статическая запись
- **P** (Published) - proxy ARP запись
- **(incomplete)** - разрешение адреса не завершено

### Показать статические ARP записи

```
show protocols static arp
```

Выводит только статически настроенные ARP записи:
```
Address                  HWtype  HWaddress           Flags Mask     Iface
10.1.1.100               ether   00:53:00:de:23:aa   CM             eth1
192.168.1.10             ether   00:11:22:33:44:55   CM             eth0
```

### Показать ARP для конкретного интерфейса

```
show protocols static arp interface eth1
```

Вывод только для указанного интерфейса:
```
Address                  HWtype  HWaddress           Flags Mask     Iface
10.1.1.100               ether   00:53:00:de:23:aa   CM             eth1
```

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

Показать ARP статистику:
```
show interfaces ethernet eth0 statistics
```

Очистить динамический ARP кэш (требует operational mode):
```
reset arp cache
```

Очистить ARP для конкретного адреса:
```
reset arp cache address 192.168.1.10
```

## Proxy ARP

Proxy ARP позволяет роутеру отвечать на ARP запросы от имени других узлов, которые находятся в другой подсети или недоступны напрямую.

### Включение Proxy ARP

Proxy ARP включается на уровне интерфейса:

```
set interfaces ethernet eth0 ip enable-proxy-arp
commit
```

### Использование Proxy ARP

**Сценарий 1: Подсети в одном broadcast домене**

Топология:
```
[Host A: 192.168.1.10/24] --- [VyOS eth0] --- [Host B: 192.168.2.20/24]
                               Proxy ARP
```

Конфигурация:
```
set interfaces ethernet eth0 address 192.168.1.1/24
set interfaces ethernet eth0 address 192.168.2.1/24
set interfaces ethernet eth0 ip enable-proxy-arp
commit
```

VyOS будет отвечать на ARP запросы для обеих подсетей, позволяя хостам общаться.

**Сценарий 2: Transparent routing**

```
set interfaces ethernet eth0 ip enable-proxy-arp
set interfaces ethernet eth1 ip enable-proxy-arp
commit
```

### Отключение Proxy ARP

```
delete interfaces ethernet eth0 ip enable-proxy-arp
commit
```

### Проверка Proxy ARP

Проверить настройку:
```
show configuration commands | grep proxy-arp
```

Проверить состояние:
```
show interfaces ethernet eth0
```

## ARP Filtering и безопасность

### ARP Filtering

ARP filtering помогает предотвратить ARP spoofing атаки путем проверки ARP пакетов.

Включение ARP filtering на интерфейсе (через sysctl):

```
set interfaces ethernet eth0 ip arp-filter
commit
```

### Настройка ARP cache timeout

Изменение времени жизни ARP записей (в секундах):

```
set system sysctl parameter net.ipv4.neigh.default.gc_stale_time value 3600
commit
```

Параметры ARP кэша:
- **gc_stale_time** - время до пометки записи как устаревшей (3600 сек = 1 час)
- **gc_thresh1** - минимальное количество записей
- **gc_thresh2** - порог для сборки мусора
- **gc_thresh3** - максимальное количество записей

### Ограничение размера ARP таблицы

```
set system sysctl parameter net.ipv4.neigh.default.gc_thresh1 value 128
set system sysctl parameter net.ipv4.neigh.default.gc_thresh2 value 512
set system sysctl parameter net.ipv4.neigh.default.gc_thresh3 value 1024
commit
```

### Защита от ARP spoofing

Использование статических ARP записей для критичных узлов:

```
# Gateway
set protocols static arp interface eth0 address 192.168.1.1 mac 00:1a:2b:3c:4d:5e

# DNS серверы
set protocols static arp interface eth0 address 192.168.1.53 mac 00:1a:2b:3c:4d:5f

# Критичные сервера
set protocols static arp interface eth0 address 192.168.1.100 mac 00:1a:2b:3c:4d:60

commit
```

### ARP announce settings

Контроль поведения ARP announcements:

```
set system sysctl parameter net.ipv4.conf.all.arp_announce value 2
commit
```

Значения:
- **0** - использовать любой локальный адрес
- **1** - избегать адресов не из целевой подсети
- **2** - всегда использовать лучший локальный адрес для этой цели

### ARP ignore settings

Контроль ответов на ARP запросы:

```
set system sysctl parameter net.ipv4.conf.all.arp_ignore value 1
commit
```

Значения:
- **0** - отвечать на любой запрос для любого локального адреса
- **1** - отвечать только если IP адрес запроса настроен на этом интерфейсе
- **2-8** - различные режимы фильтрации

## Gratuitous ARP

Gratuitous ARP - это ARP запрос/ответ, отправленный узлом для объявления или обновления своего IP-MAC соответствия без запроса от других узлов.

### Использование Gratuitous ARP

Gratuitous ARP используется для:
- Обнаружения дублирования IP адресов
- Обновления ARP кэша на других узлах
- Failover в VRRP/HSRP
- После изменения MAC адреса
- Быстрого обновления таблиц коммутаторов

### Отправка Gratuitous ARP

VyOS автоматически отправляет gratuitous ARP при:
- Поднятии интерфейса
- Изменении IP адреса
- VRRP failover

Ручная отправка (через operational mode):
```
reset arp interface eth0
```

### Настройка accept_gratuitous_arp

Принимать gratuitous ARP пакеты:

```
set system sysctl parameter net.ipv4.conf.all.arp_accept value 1
commit
```

Значения:
- **0** - не принимать (по умолчанию)
- **1** - создавать новые записи из gratuitous ARP

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

### Пример 1: Yandex Cloud - Статические ARP для критической инфраструктуры

**Сценарий**: В Yandex Cloud развернута критическая инфраструктура с VyOS роутером, database сервером и application сервером. Необходимо зафиксировать ARP записи для предотвращения ARP spoofing.

**Топология**:
```
[VyOS Router]
      |
      | eth0: 192.168.10.0/24
      |
      +--- Database Server: 192.168.10.10
      +--- App Server: 192.168.10.20
      +--- Backup Server: 192.168.10.30
```

**Конфигурация**:
```
# Network interface
set interfaces ethernet eth0 address 192.168.10.1/24
set interfaces ethernet eth0 description 'Internal Infrastructure Network'

# Статические ARP для критических серверов
set protocols static arp interface eth0 address 192.168.10.10 mac 52:54:00:aa:bb:01
set protocols static arp interface eth0 address 192.168.10.20 mac 52:54:00:aa:bb:02
set protocols static arp interface eth0 address 192.168.10.30 mac 52:54:00:aa:bb:03

# ARP security settings
set system sysctl parameter net.ipv4.conf.eth0.arp_announce value 2
set system sysctl parameter net.ipv4.conf.eth0.arp_ignore value 1

# ARP cache limits
set system sysctl parameter net.ipv4.neigh.eth0.gc_stale_time value 7200

commit
save
```

**Проверка**:
```
show protocols static arp
show arp
```

**Ожидаемый результат**:
```
Address                  HWtype  HWaddress           Flags Mask     Iface
192.168.10.10            ether   52:54:00:aa:bb:01   CM             eth0
192.168.10.20            ether   52:54:00:aa:bb:02   CM             eth0
192.168.10.30            ether   52:54:00:aa:bb:03   CM             eth0
```

Флаг "CM" подтверждает статические (Manual) записи.

### Пример 2: VK Cloud - ARP безопасность в multi-tenant окружении

**Сценарий**: VK Cloud хостинг с несколькими клиентами на изолированных VLAN. VyOS выступает как edge router с Proxy ARP для обеспечения связности и защиты от ARP атак.

**Топология**:
```
                    [VyOS Edge Router]
                            |
         +------------------+------------------+
         |                  |                  |
    eth0.100           eth0.200           eth0.300
    VLAN 100           VLAN 200           VLAN 300
   Customer A         Customer B         Customer C
   10.100.0.0/24      10.200.0.0/24      10.300.0.0/24
```

**Конфигурация**:
```
# VLAN interfaces
set interfaces ethernet eth0 vif 100 address 10.100.0.1/24
set interfaces ethernet eth0 vif 100 description 'Customer A Network'
set interfaces ethernet eth0 vif 200 address 10.200.0.1/24
set interfaces ethernet eth0 vif 200 description 'Customer B Network'
set interfaces ethernet eth0 vif 300 address 10.300.0.1/24
set interfaces ethernet eth0 vif 300 description 'Customer C Network'

# Proxy ARP для каждого VLAN
set interfaces ethernet eth0 vif 100 ip enable-proxy-arp
set interfaces ethernet eth0 vif 200 ip enable-proxy-arp
set interfaces ethernet eth0 vif 300 ip enable-proxy-arp

# Статические ARP для default gateways (защита от spoofing)
set protocols static arp interface eth0.100 address 10.100.0.254 mac 00:0c:29:aa:00:01
set protocols static arp interface eth0.200 address 10.200.0.254 mac 00:0c:29:aa:00:02
set protocols static arp interface eth0.300 address 10.300.0.254 mac 00:0c:29:aa:00:03

# ARP security на всех интерфейсах
set system sysctl parameter net.ipv4.conf.all.arp_announce value 2
set system sysctl parameter net.ipv4.conf.all.arp_ignore value 1
set system sysctl parameter net.ipv4.conf.all.arp_accept value 0

# Ограничение ARP таблицы для каждого VLAN
set system sysctl parameter net.ipv4.neigh.eth0/100.gc_thresh1 value 64
set system sysctl parameter net.ipv4.neigh.eth0/100.gc_thresh2 value 256
set system sysctl parameter net.ipv4.neigh.eth0/100.gc_thresh3 value 512

set system sysctl parameter net.ipv4.neigh.eth0/200.gc_thresh1 value 64
set system sysctl parameter net.ipv4.neigh.eth0/200.gc_thresh2 value 256
set system sysctl parameter net.ipv4.neigh.eth0/200.gc_thresh3 value 512

set system sysctl parameter net.ipv4.neigh.eth0/300.gc_thresh1 value 64
set system sysctl parameter net.ipv4.neigh.eth0/300.gc_thresh2 value 256
set system sysctl parameter net.ipv4.neigh.eth0/300.gc_thresh3 value 512

# Firewall для изоляции между VLAN
set firewall ipv4 name CUSTOMER-ISOLATION default-action drop
set firewall ipv4 name CUSTOMER-ISOLATION rule 10 action accept
set firewall ipv4 name CUSTOMER-ISOLATION rule 10 state established
set firewall ipv4 name CUSTOMER-ISOLATION rule 10 state related

# Применение firewall
set interfaces ethernet eth0 vif 100 firewall in name CUSTOMER-ISOLATION
set interfaces ethernet eth0 vif 200 firewall in name CUSTOMER-ISOLATION
set interfaces ethernet eth0 vif 300 firewall in name CUSTOMER-ISOLATION

commit
save
```

**Проверка**:
```
show protocols static arp
show arp interface eth0.100
show arp interface eth0.200
show arp interface eth0.300
show interfaces ethernet eth0 vif 100
```

### Пример 3: Защита от ARP spoofing на корпоративной сети

**Сценарий**: Корпоративная сеть с критичными серверами и рабочими станциями. Необходимо защитить ключевую инфраструктуру от ARP spoofing атак.

**Конфигурация**:
```
# Критичные сервера - статические ARP
set protocols static arp interface eth1 address 192.168.100.10 mac 00:50:56:aa:bb:10
set protocols static arp interface eth1 address 192.168.100.20 mac 00:50:56:aa:bb:20
set protocols static arp interface eth1 address 192.168.100.30 mac 00:50:56:aa:bb:30

# DNS сервера
set protocols static arp interface eth1 address 192.168.100.53 mac 00:50:56:aa:bb:53
set protocols static arp interface eth1 address 192.168.100.54 mac 00:50:56:aa:bb:54

# Domain controllers
set protocols static arp interface eth1 address 192.168.100.100 mac 00:50:56:aa:bb:c1
set protocols static arp interface eth1 address 192.168.100.101 mac 00:50:56:aa:bb:c2

# ARP security
set system sysctl parameter net.ipv4.conf.eth1.arp_announce value 2
set system sysctl parameter net.ipv4.conf.eth1.arp_ignore value 1
set system sysctl parameter net.ipv4.conf.eth1.arp_accept value 0

# Увеличенное время жизни для статических записей
set system sysctl parameter net.ipv4.neigh.eth1.gc_stale_time value 14400

commit
save
```

### Пример 4: Proxy ARP для legacy оборудования

**Сценарий**: Legacy устройства с фиксированными IP адресами в разных подсетях должны общаться без изменения конфигурации.

**Топология**:
```
[Legacy Device A: 10.1.1.100/24] --- [VyOS] --- [Legacy Device B: 10.2.2.200/24]
                                   eth0   eth1
                                Proxy ARP enabled
```

**Конфигурация**:
```
# Interface configuration
set interfaces ethernet eth0 address 10.1.1.1/24
set interfaces ethernet eth0 description 'Legacy Network A'
set interfaces ethernet eth1 address 10.2.2.1/24
set interfaces ethernet eth1 description 'Legacy Network B'

# Enable Proxy ARP
set interfaces ethernet eth0 ip enable-proxy-arp
set interfaces ethernet eth1 ip enable-proxy-arp

# Static routes для обеспечения связности
set protocols static route 10.1.1.0/24 interface eth0
set protocols static route 10.2.2.0/24 interface eth1

# Опционально: статические ARP для legacy устройств
set protocols static arp interface eth0 address 10.1.1.100 mac aa:bb:cc:dd:ee:01
set protocols static arp interface eth1 address 10.2.2.200 mac aa:bb:cc:dd:ee:02

commit
save
```

### Пример 5: High-availability с VRRP и Gratuitous ARP

**Сценарий**: Два VyOS роутера в VRRP кластере. При failover необходимо быстро обновить ARP таблицы клиентов.

**Конфигурация** (Master):
```
# VRRP configuration
set high-availability vrrp group LAN vrid 10
set high-availability vrrp group LAN interface eth0
set high-availability vrrp group LAN virtual-address 192.168.1.1/24
set high-availability vrrp group LAN priority 200

# Accept gratuitous ARP для быстрого failover
set system sysctl parameter net.ipv4.conf.eth0.arp_accept value 1

# Статические ARP для критичных серверов
set protocols static arp interface eth0 address 192.168.1.10 mac 00:50:56:11:22:33
set protocols static arp interface eth0 address 192.168.1.20 mac 00:50:56:11:22:44

commit
save
```

**Конфигурация** (Backup):
```
# VRRP configuration
set high-availability vrrp group LAN vrid 10
set high-availability vrrp group LAN interface eth0
set high-availability vrrp group LAN virtual-address 192.168.1.1/24
set high-availability vrrp group LAN priority 100

# Accept gratuitous ARP для быстрого failover
set system sysctl parameter net.ipv4.conf.eth0.arp_accept value 1

# Те же статические ARP записи
set protocols static arp interface eth0 address 192.168.1.10 mac 00:50:56:11:22:33
set protocols static arp interface eth0 address 192.168.1.20 mac 00:50:56:11:22:44

commit
save
```

При failover VRRP автоматически отправит gratuitous ARP для виртуального IP 192.168.1.1, обновляя ARP таблицы всех клиентов.

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

### Просмотр ARP информации

Все ARP записи:
```
show arp
```

Статические ARP конфигурация:
```
show protocols static arp
```

ARP для конкретного интерфейса:
```
show protocols static arp interface eth0
```

ARP записи в табличном формате:
```
show arp | column -t
```

Поиск конкретного IP:
```
show arp | grep 192.168.1.10
```

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

Показать ARP конфигурацию:
```
show configuration protocols static arp
```

Показать всю конфигурацию с ARP:
```
show configuration commands | grep arp
```

### Сброс ARP кэша

Очистить весь динамический ARP кэш:
```
reset arp cache
```

Очистить для конкретного адреса:
```
reset arp cache address 192.168.1.10
```

Очистить для интерфейса:
```
reset arp cache interface eth0
```

### Мониторинг ARP

Просмотр ARP статистики интерфейса:
```
show interfaces ethernet eth0 statistics
```

Непрерывный мониторинг ARP таблицы:
```
watch -n 2 show arp
```

### Debugging ARP

Включить debug ARP (временно):
```
monitor protocol arp
```

Просмотр kernel ARP таблицы:
```
run show arp
```

Проверка ARP через tcpdump:
```
monitor traffic interface eth0 filter "arp"
```

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

### Проблема: ARP записи не создаются

**Симптомы**:
- Пинг не проходит
- ARP таблица показывает "(incomplete)"
- Нет связности с узлом в локальной сети

**Диагностика**:
```
# Проверить ARP таблицу
show arp

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

# Проверить связность на L2
monitor traffic interface eth0 filter "arp"
```

**Решения**:
1. Проверить физическое подключение
2. Убедиться что интерфейс в состоянии "up"
3. Проверить VLAN конфигурацию
4. Проверить firewall правила
5. Убедиться что целевой узел отвечает на ARP

### Проблема: Статическая ARP запись не применяется

**Симптомы**:
- После commit статическая запись не появляется в ARP таблице
- Динамическая запись переопределяет статическую

**Диагностика**:
```
# Проверить конфигурацию
show configuration protocols static arp

# Проверить ARP таблицу
show arp
show protocols static arp
```

**Решения**:
1. Проверить правильность IP и MAC адресов
2. Убедиться что интерфейс существует и активен
3. Очистить ARP кэш и пересоздать запись:
   ```
   reset arp cache
   commit
   ```
4. Проверить синтаксис команды
5. Перезагрузить интерфейс:
   ```
   set interfaces ethernet eth0 disable
   commit
   delete interfaces ethernet eth0 disable
   commit
   ```

### Проблема: ARP spoofing атака

**Симптомы**:
- Нестабильная связность
- Трафик перехватывается
- Изменяющиеся MAC адреса для одного IP
- Security alerts от IDS

**Диагностика**:
```
# Мониторинг ARP изменений
watch -n 1 show arp

# Проверка дублирующихся IP
show arp | sort -k1 | uniq -d -f1
```

**Решения**:
1. Использовать статические ARP для критичных узлов
2. Включить ARP filtering:
   ```
   set system sysctl parameter net.ipv4.conf.all.arp_ignore value 1
   set system sysctl parameter net.ipv4.conf.all.arp_accept value 0
   ```
3. Настроить port security на коммутаторах
4. Использовать DHCP snooping
5. Включить Dynamic ARP Inspection (DAI) на коммутаторах
6. Мониторить ARP таблицу на аномалии

### Проблема: Переполнение ARP таблицы

**Симптомы**:
- ARP записи не создаются
- Сообщения "Neighbor table overflow"
- Degraded network performance

**Диагностика**:
```
# Проверить размер ARP таблицы
show arp | wc -l

# Проверить kernel параметры
show system sysctl | grep neigh
```

**Решения**:
1. Увеличить размер ARP таблицы:
   ```
   set system sysctl parameter net.ipv4.neigh.default.gc_thresh1 value 256
   set system sysctl parameter net.ipv4.neigh.default.gc_thresh2 value 1024
   set system sysctl parameter net.ipv4.neigh.default.gc_thresh3 value 2048
   commit
   ```
2. Уменьшить время жизни записей:
   ```
   set system sysctl parameter net.ipv4.neigh.default.gc_stale_time value 60
   commit
   ```
3. Разбить большие broadcast домены на меньшие VLAN
4. Расследовать возможную ARP flood атаку

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

**Симптомы**:
- Узлы в разных подсетях не видят друг друга
- VyOS не отвечает на ARP запросы для других подсетей

**Диагностика**:
```
# Проверить настройку Proxy ARP
show configuration interfaces ethernet eth0 | grep proxy

# Мониторить ARP трафик
monitor traffic interface eth0 filter "arp"

# Проверить routing
show ip route
```

**Решения**:
1. Убедиться что Proxy ARP включен на правильном интерфейсе:
   ```
   set interfaces ethernet eth0 ip enable-proxy-arp
   commit
   ```
2. Проверить что маршруты настроены корректно
3. Проверить firewall правила
4. Убедиться что IP forwarding включен (по умолчанию включен на VyOS)
5. Проверить что подсети не overlap

### Проблема: Медленное ARP разрешение

**Симптомы**:
- Задержки при первом соединении
- Таймауты при установке соединения
- Медленный ping первого пакета

**Диагностика**:
```
# Проверить ARP timeout
show system sysctl | grep gc_stale

# Тест производительности
ping 192.168.1.10 -c 10
```

**Решения**:
1. Использовать статические ARP для часто используемых узлов
2. Увеличить время жизни ARP записей:
   ```
   set system sysctl parameter net.ipv4.neigh.default.gc_stale_time value 3600
   commit
   ```
3. Настроить gratuitous ARP на критичных серверах
4. Проверить производительность сети (latency, packet loss)

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

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

1. **Статические ARP для критичной инфраструктуры**
   - Default gateway
   - DNS сервера
   - Domain controllers
   - Database сервера
   - Management интерфейсы

2. **ARP filtering**
   ```
   set system sysctl parameter net.ipv4.conf.all.arp_ignore value 1
   set system sysctl parameter net.ipv4.conf.all.arp_accept value 0
   set system sysctl parameter net.ipv4.conf.all.arp_announce value 2
   ```

3. **Ограничение размера ARP таблицы**
   - Предотвращение DoS атак
   - Защита от ARP table exhaustion

4. **Мониторинг ARP аномалий**
   - Автоматические алерты на дублирующиеся IP/MAC
   - Логирование изменений в ARP таблице

### Производительность

1. **Оптимизация ARP timeout**
   - Баланс между производительностью и нагрузкой
   - Для стабильных сетей: увеличить timeout
   - Для динамических сетей: уменьшить timeout

2. **Правильный размер ARP таблицы**
   - gc_thresh1: минимум для предотвращения GC
   - gc_thresh2: старт soft GC
   - gc_thresh3: максимум, hard limit

3. **Использование Proxy ARP разумно**
   - Только когда необходимо
   - Минимизировать broadcast домены

### Документация

1. **Документировать статические ARP**
   - Вести список всех статических записей
   - Указывать причину создания
   - Обновлять при изменениях

2. **Naming convention**
   - Использовать description для интерфейсов
   - Комментарии в конфигурации

### Мониторинг и обслуживание

1. **Регулярная проверка ARP таблицы**
   ```
   show arp
   show protocols static arp
   ```

2. **Автоматизация мониторинга**
   - Скрипты для проверки консистентности
   - Алерты на изменения критичных записей

3. **Backup конфигурации**
   - Регулярные бэкапы конфигурации
   - Version control для изменений

4. **Тестирование failover**
   - Проверка VRRP failover с gratuitous ARP
   - Тестирование backup маршрутов

### Масштабирование

1. **Разделение broadcast доменов**
   - Использование VLAN
   - Уменьшение размера L2 доменов

2. **Иерархическая архитектура**
   - Core/Distribution/Access модель
   - Минимизация ARP трафика между уровнями

3. **IPv6 миграция**
   - NDP более эффективен чем ARP
   - Встроенная защита от spoofing (SEND)

## IPv6 и Neighbor Discovery

Для IPv6 сетей ARP заменен на Neighbor Discovery Protocol (NDP), который является частью ICMPv6.

### Основные отличия

**ARP (IPv4)**:
- Отдельный протокол
- Broadcast
- Уязвим к spoofing

**NDP (IPv6)**:
- Часть ICMPv6
- Multicast (более эффективно)
- SEND (Secure Neighbor Discovery) для защиты

### Статические IPv6 neighbors

Аналог статических ARP для IPv6:

```
set protocols static neighbor interface eth0 address 2001:db8::10 mac 00:11:22:33:44:55
commit
```

### Просмотр IPv6 neighbors

```
show ipv6 neighbors
```

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

### ARP и VRRP/HSRP

При failover VRRP/HSRP автоматически отправляет gratuitous ARP для обновления таблиц клиентов.

Конфигурация для быстрого failover:
```
set system sysctl parameter net.ipv4.conf.all.arp_accept value 1
```

### ARP и DHCP

DHCP сервер может использовать ARP для проверки уникальности IP адресов перед выдачей lease.

### ARP и VPN

Для overlay сетей (VXLAN, GRE) ARP проксируется через туннели.

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

- [Статическая маршрутизация](/docs/vyos/routing/vyos-static/) - настройка статических маршрутов
- [OSPF](/docs/vyos/routing/vyos-ospf/) - динамическая маршрутизация для enterprise
- [BGP](/docs/vyos/routing/vyos-bgp/) - маршрутизация для подключения к ISP
- [Firewall](/docs/vyos/firewall) - настройка firewall правил
- [VLAN](/docs/vyos/interfaces/vyos-vlan/) - виртуальные локальные сети

