# Bridge интерфейсы (L2) в VyOS

> Bridge интерфейсы в VyOS - объединение портов на L2-уровне, настройка STP, VLAN-aware bridge, mac-learning и фильтрация трафика

Source: https://opennix.org/docs/vyos/interfaces/vyos-bridge/



Bridge (мост) соединяет несколько Ethernet сегментов на уровне L2 (канальный уровень), пересылая пакеты на основе MAC-адресов.

## Обзор

Bridge в VyOS:
- Работает на уровне L2 (канальный уровень OSI)
- Пересылает фреймы на основе MAC-адресов
- Поддерживает Spanning Tree Protocol (STP)
- Может иметь IP-адрес для управления
- Поддерживает VLAN-aware режим
- Реализует IEEE 802.1d стандарт

**Использование**:
- Объединение нескольких физических интерфейсов в один L2 домен
- VLAN switching
- Виртуализация (соединение VM с физической сетью)
- Создание виртуального коммутатора

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

### Создание bridge

```
set interfaces bridge br0
commit
```

### Добавление member интерфейсов

```
set interfaces bridge br0 member interface eth1
set interfaces bridge br0 member interface eth2
set interfaces bridge br0 member interface eth3
commit
```

Теперь eth1, eth2, eth3 находятся в одном L2 broadcast domain.

### IP-адрес на bridge

```
set interfaces bridge br0 address 192.168.1.1/24
commit
```

IP-адрес назначается самому bridge интерфейсу для управления или маршрутизации.

### Описание

```
set interfaces bridge br0 description 'LAN Bridge'
commit
```

## Member Interface параметры

### Priority

Приоритет порта для STP:

```
set interfaces bridge br0 member interface eth1 priority 32
commit
```

Значение: 0-63 (по умолчанию 32). Меньше = выше приоритет.

### Cost

Стоимость пути для STP:

```
set interfaces bridge br0 member interface eth1 cost 10
commit
```

Влияет на выбор корневого порта в STP. Меньше = предпочтительнее.

### Isolated

Изолированный порт (не может общаться с другими isolated портами):

```
set interfaces bridge br0 member interface eth2 isolated
commit
```

Полезно для guest сетей (private VLAN).

## Spanning Tree Protocol (STP)

STP предотвращает петли в L2 сетях.

### Включение STP

```
set interfaces bridge br0 stp
commit
```

По умолчанию STP **отключен**.

### Bridge Priority

Приоритет bridge для выбора root bridge:

```
set interfaces bridge br0 priority 4096
commit
```

Значения: кратные 4096 (0, 4096, 8192, ..., 61440).
Меньше значение = выше вероятность стать root bridge.

### Hello Time

Интервал отправки BPDU:

```
set interfaces bridge br0 hello-time 2
commit
```

Значение в секундах (по умолчанию 2).

### Forward Delay

Задержка перехода порта в forwarding состояние:

```
set interfaces bridge br0 forward-delay 15
commit
```

Значение в секундах (по умолчанию 15).

### Max Age

Максимальный возраст BPDU:

```
set interfaces bridge br0 max-age 20
commit
```

Значение в секундах (по умолчанию 20).

## Aging

MAC address aging - время хранения записей в FDB (Forwarding Database).

```
set interfaces bridge br0 aging 300
commit
```

Значение в секундах (по умолчанию 300).

## IGMP/MLD

### IGMP Snooping

Оптимизация multicast трафика:

```
set interfaces bridge br0 igmp snooping
commit
```

Позволяет bridge "слушать" IGMP запросы и передавать multicast только на нужные порты.

### IGMP Querier

```
set interfaces bridge br0 igmp querier
commit
```

Bridge становится IGMP querier для генерации membership queries.

## VLAN Filtering

Bridge может работать как VLAN-aware switch.

### Включение VLAN режима

```
set interfaces bridge br0 enable-vlan
commit
```

### Native VLAN

Untagged VLAN для member interface:

```
set interfaces bridge br0 member interface eth1 native-vlan 1
commit
```

Трафик без VLAN тега будет помечен указанным VLAN.

### Allowed VLANs

Разрешенные VLANs на member interface:

```
set interfaces bridge br0 member interface eth1 allowed-vlan 10
set interfaces bridge br0 member interface eth1 allowed-vlan 20
set interfaces bridge br0 member interface eth1 allowed-vlan 30
commit
```

Диапазон VLANs:

```
set interfaces bridge br0 member interface eth2 allowed-vlan 10-50
commit
```

### VLAN sub-interfaces (VIF)

Создание L3 интерфейсов для VLAN:

```
set interfaces bridge br0 vif 10 address 192.168.10.1/24
set interfaces bridge br0 vif 10 description 'VLAN 10 - Management'

set interfaces bridge br0 vif 20 address 192.168.20.1/24
set interfaces bridge br0 vif 20 description 'VLAN 20 - Users'

commit
```

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

### Простой bridge (L2 switch)

Объединение трех портов в один L2 домен:

```
set interfaces bridge br0 member interface eth1
set interfaces bridge br0 member interface eth2
set interfaces bridge br0 member interface eth3
set interfaces bridge br0 stp
commit
```

### Bridge с IP для управления

```
set interfaces bridge br0 address 192.168.1.1/24
set interfaces bridge br0 member interface eth1
set interfaces bridge br0 member interface eth2
set interfaces bridge br0 description 'LAN Bridge'
set interfaces bridge br0 stp
commit
```

Теперь можно управлять VyOS через 192.168.1.1 из любого порта (eth1, eth2).

### VLAN-aware bridge (trunk switch)

Создание trunk портов с множественными VLANs:

```
# Enable VLAN
set interfaces bridge br0 enable-vlan

# Trunk порт к другому коммутатору (все VLANs)
set interfaces bridge br0 member interface eth1 allowed-vlan 10-50

# Access порт для VLAN 10
set interfaces bridge br0 member interface eth2 allowed-vlan 10
set interfaces bridge br0 member interface eth2 native-vlan 10

# Access порт для VLAN 20
set interfaces bridge br0 member interface eth3 allowed-vlan 20
set interfaces bridge br0 member interface eth3 native-vlan 20

# L3 интерфейсы для VLANs
set interfaces bridge br0 vif 10 address 192.168.10.1/24
set interfaces bridge br0 vif 20 address 192.168.20.1/24

# STP
set interfaces bridge br0 stp

commit
```

### Bridge для VM (виртуализация)

Соединение физического интерфейса с виртуальными машинами:

```
set interfaces bridge br0 member interface eth0
set interfaces bridge br0 member interface tap0
set interfaces bridge br0 member interface tap1
set interfaces bridge br0 stp
commit
```

tap0, tap1 - интерфейсы виртуальных машин.

### Bridge с изолированными портами (Private VLAN)

Порты не могут общаться друг с другом (guest isolation):

```
set interfaces bridge br0 member interface eth0
set interfaces bridge br0 member interface eth1 isolated
set interfaces bridge br0 member interface eth2 isolated
set interfaces bridge br0 member interface eth3 isolated
commit
```

eth0 - uplink (может общаться со всеми).
eth1, eth2, eth3 - изолированы друг от друга.

### Multi-VLAN bridge с inter-VLAN routing

```
# VLAN-aware bridge
set interfaces bridge br0 enable-vlan

# Trunk порты
set interfaces bridge br0 member interface eth1 allowed-vlan 10
set interfaces bridge br0 member interface eth1 allowed-vlan 20
set interfaces bridge br0 member interface eth1 allowed-vlan 30

set interfaces bridge br0 member interface eth2 allowed-vlan 10-30

# L3 интерфейсы (шлюзы для VLANs)
set interfaces bridge br0 vif 10 address 192.168.10.1/24
set interfaces bridge br0 vif 10 description 'VLAN 10 - Management'

set interfaces bridge br0 vif 20 address 192.168.20.1/24
set interfaces bridge br0 vif 20 description 'VLAN 20 - Users'

set interfaces bridge br0 vif 30 address 192.168.30.1/24
set interfaces bridge br0 vif 30 description 'VLAN 30 - Servers'

# Enable IP forwarding (по умолчанию включено в VyOS)
set interfaces bridge br0 stp

commit
```

Теперь VLAN 10, 20, 30 могут общаться через VyOS (inter-VLAN routing).

### Bridge с Bond интерфейсом

Aggregation для redundancy:

```
# Bond интерфейс
set interfaces bonding bond0 member interface eth1
set interfaces bonding bond0 member interface eth2
set interfaces bonding bond0 mode '802.3ad'

# Bridge с bond
set interfaces bridge br0 member interface bond0
set interfaces bridge br0 member interface eth3
set interfaces bridge br0 stp

commit
```

### Secure bridge с firewall

```
# Bridge
set interfaces bridge br0 member interface eth1
set interfaces bridge br0 member interface eth2
set interfaces bridge br0 address 192.168.1.1/24

# Firewall для bridge трафика
set firewall bridge forward filter rule 10 action accept
set firewall bridge forward filter rule 10 state established
set firewall bridge forward filter rule 10 state related

set firewall bridge forward filter rule 20 action drop
set firewall bridge forward filter rule 20 state invalid

set firewall bridge forward filter default-action accept

commit
```

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

### Просмотр bridge интерфейсов

```
show bridge
```

Пример вывода:
```
bridge name     bridge id               STP enabled     interfaces
br0             8000.000c29abcdef       yes             eth1
                                                        eth2
                                                        eth3
```

### Forwarding Database (FDB)

MAC address table:

```
show bridge br0 fdb
```

Пример вывода:
```
port    mac addr                flags
eth1    00:0c:29:12:34:56
eth2    00:0c:29:ab:cd:ef
eth3    00:0c:29:98:76:54       permanent
```

### Multicast Database (MDB)

Multicast группы:

```
show bridge br0 mdb
```

### VLAN информация

```
show bridge br0 vlan
```

### STP информация

```
show bridge br0 spanning-tree
```

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

### Bridge не пересылает трафик

Проверьте member интерфейсы:
```
show interfaces
```

Убедитесь что все member интерфейсы в состоянии UP.

Проверьте firewall:
```
show firewall bridge forward filter
```

### STP блокирует порты

Проверьте STP состояние:
```
show bridge br0 spanning-tree
```

Порты могут быть в blocking/listening состоянии.

Уменьшите priority bridge для становления root:
```
set interfaces bridge br0 priority 0
commit
```

### Broadcast storm

Возможно петля в L2 сети.

Включите STP:
```
set interfaces bridge br0 stp
commit
```

Проверьте кабели на петли.

### VLAN трафик не проходит

Проверьте allowed-vlan:
```
show configuration interfaces bridge br0
```

Убедитесь что нужные VLANs разрешены на member интерфейсах.

Проверьте native-vlan для untagged трафика.

### MAC таблица переполнена

Увеличьте aging time:
```
set interfaces bridge br0 aging 600
commit
```

Или уменьшите для быстрого обновления:
```
set interfaces bridge br0 aging 120
commit
```

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

### MTU

Установите одинаковый MTU на всех member интерфейсах:

```
set interfaces bridge br0 mtu 1500
commit
```

Member интерфейсы автоматически наследуют MTU от bridge.

### Offloading

Bridge может использовать hardware offloading если поддерживается:

```
show interfaces bridge br0 offload
```

### Jumbo Frames

Для высокопроизводительных сетей:

```
set interfaces bridge br0 mtu 9000
commit
```

Все member интерфейсы должны поддерживать jumbo frames.

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

### MAC-based ACL

Фильтрация по MAC-адресам через firewall:

```
set firewall bridge forward filter rule 100 action drop
set firewall bridge forward filter rule 100 source mac-address aa:bb:cc:dd:ee:ff
commit
```

### Storm Control

Ограничение broadcast/multicast:

Используйте firewall rate limiting:

```
set firewall bridge forward filter rule 200 action accept
set firewall bridge forward filter rule 200 limit rate 1000/second
commit
```

### Port Security

Isolated порты для guest сетей:

```
set interfaces bridge br0 member interface eth5 isolated
commit
```

## Сравнение с другими технологиями

### Bridge vs Bond

| Характеристика | Bridge | Bond |
|---------------|--------|------|
| Уровень OSI | L2 | L2 |
| Назначение | Соединение сегментов | Агрегация каналов |
| Redundancy | Через STP | Через LACP/активный резерв |
| Используется для | Switching, VLAN | Увеличение пропускной способности |

### Bridge vs VLAN

Bridge может содержать VLANs (VLAN-aware bridge). VLAN - это метод сегментации L2 домена.

## Интеграция

### С DHCP сервером

```
set service dhcp-server shared-network-name LAN subnet 192.168.1.0/24 option default-router 192.168.1.1
set interfaces bridge br0 address 192.168.1.1/24
commit
```

### С firewall

```
set firewall bridge forward filter rule 10 action accept
set firewall bridge forward filter rule 10 source address 192.168.1.0/24
commit
```

### С VPN

Bridge может содержать VPN интерфейсы (tap):

```
set interfaces bridge br0 member interface tap0
commit
```

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

1. **Включайте STP** - для предотвращения петель
2. **Используйте VLAN** - для сегментации сети
3. **Документируйте** - какие порты в каких VLANs
4. **MTU** - одинаковый на всех member интерфейсах
5. **Isolated порты** - для guest/IoT устройств
6. **Мониторинг FDB** - отслеживайте MAC таблицу
7. **Firewall** - защищайте bridge трафик
8. **Aging** - настраивайте под нагрузку
9. **Priority** - планируйте STP топологию
10. **Резервирование** - используйте Bond для uplink

## Ограничения

- Bridge пересылает broadcast - может быть проблемой в больших сетях
- STP конвергенция занимает время (30-50 секунд)
- Большое количество VLANs требует больше ресурсов
- Hardware offload зависит от NIC

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

- [Bond](/docs/vyos/interfaces/vyos-bond/) - агрегация каналов
- [VLAN](/docs/vyos/interfaces/vyos-vlan/) - детальная настройка VLAN
- [Firewall](/docs/vyos/firewall/) - защита L2 трафика
- [DHCP Server](/docs/vyos/services/vyos-dhcp/) - интеграция с DHCP

