# VLAN интерфейсы (802.1Q) в VyOS

> Настройка VLAN интерфейсов 802.1Q в VyOS: tagged и untagged порты, QinQ (802.1ad), VLAN-маршрутизация и trunk-порты для Yandex Cloud и VK Cloud

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



VLAN (Virtual Local Area Network) позволяет разделить физическую сеть на несколько логических сетей. VyOS поддерживает IEEE 802.1Q VLAN tagging, позволяя создавать VLAN sub-interfaces на физических интерфейсах.

## Обзор

### Ключевые концепции

**VLAN Tag (802.1Q)**:
- 12-битный VLAN ID (1-4094)
- VLAN 0 зарезервирован
- VLAN 4095 зарезервирован
- Рабочий диапазон: 1-4094

**Типы VLAN портов**:
- **Access Port**: Untag трафик, один VLAN
- **Trunk Port**: Tagged трафик, множество VLAN
- **Hybrid Port**: Комбинация tagged и untagged

**Native VLAN**:
- Untagged VLAN на trunk порту
- По умолчанию VLAN 1
- Трафик без тега принадлежит native VLAN

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

1. **Сегментация сети** - логическое разделение без дополнительного оборудования
2. **Безопасность** - изоляция трафика между VLAN
3. **Гибкость** - простое перемещение устройств между VLAN
4. **Производительность** - уменьшение broadcast доменов
5. **Управление** - упрощение администрирования сети

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

В VyOS VLAN реализуются как sub-interfaces физических интерфейсов:

```
eth0          - Физический интерфейс (parent)
├── eth0.10   - VLAN 10
├── eth0.20   - VLAN 20
└── eth0.30   - VLAN 30
```

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

### Создание VLAN интерфейса

```bash
# VLAN 10 на eth0
set interfaces ethernet eth0 vif 10 address 192.168.10.1/24
set interfaces ethernet eth0 vif 10 description 'Management VLAN'

# VLAN 20 на eth0
set interfaces ethernet eth0 vif 20 address 192.168.20.1/24
set interfaces ethernet eth0 vif 20 description 'Users VLAN'

# VLAN 30 на eth0
set interfaces ethernet eth0 vif 30 address 192.168.30.1/24
set interfaces ethernet eth0 vif 30 description 'Servers VLAN'

commit
save
```

**Примечание**: `vif` означает "Virtual Interface".

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

```bash
# Показать все интерфейсы
show interfaces

# Показать конкретный VLAN
show interfaces ethernet eth0 vif 10

# Детальная информация
show interfaces ethernet eth0 vif 10 detail

# Статистика
show interfaces ethernet eth0 vif 10 statistics
```

### MTU для VLAN

VLAN добавляет 4 байта (802.1Q tag), поэтому:

```bash
# Parent интерфейс должен поддерживать увеличенный MTU
set interfaces ethernet eth0 mtu 1504

# VLAN интерфейс
set interfaces ethernet eth0 vif 10 mtu 1500

commit
```

## Типичные сценарии

### Сценарий 1: Базовая VLAN сегментация

**Требования**:
- VLAN 10: Management (192.168.10.0/24)
- VLAN 20: Users (192.168.20.0/24)
- VLAN 30: Servers (192.168.30.0/24)
- VLAN 99: Guest (192.168.99.0/24)

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

```bash
# Parent интерфейс (без IP, только trunk)
set interfaces ethernet eth0 description 'Trunk to Switch'

# VLAN 10 - Management
set interfaces ethernet eth0 vif 10 address 192.168.10.1/24
set interfaces ethernet eth0 vif 10 description 'Management'

# VLAN 20 - Users
set interfaces ethernet eth0 vif 20 address 192.168.20.1/24
set interfaces ethernet eth0 vif 20 description 'Users'

# VLAN 30 - Servers
set interfaces ethernet eth0 vif 30 address 192.168.30.1/24
set interfaces ethernet eth0 vif 30 description 'Servers'

# VLAN 99 - Guest
set interfaces ethernet eth0 vif 99 address 192.168.99.1/24
set interfaces ethernet eth0 vif 99 description 'Guest Network'

commit
save
```

### Сценарий 2: VLAN с DHCP

DHCP сервер для каждого VLAN:

```bash
# VLAN конфигурация
set interfaces ethernet eth1 vif 10 address 10.10.10.1/24
set interfaces ethernet eth1 vif 20 address 10.10.20.1/24

# DHCP для VLAN 10
set service dhcp-server shared-network-name VLAN10 subnet 10.10.10.0/24 option default-router 10.10.10.1
set service dhcp-server shared-network-name VLAN10 subnet 10.10.10.0/24 option name-server 10.10.10.1
set service dhcp-server shared-network-name VLAN10 subnet 10.10.10.0/24 range 0 start 10.10.10.100
set service dhcp-server shared-network-name VLAN10 subnet 10.10.10.0/24 range 0 stop 10.10.10.200
set service dhcp-server shared-network-name VLAN10 subnet 10.10.10.0/24 lease 86400

# DHCP для VLAN 20
set service dhcp-server shared-network-name VLAN20 subnet 10.10.20.0/24 option default-router 10.10.20.1
set service dhcp-server shared-network-name VLAN20 subnet 10.10.20.0/24 option name-server 10.10.20.1
set service dhcp-server shared-network-name VLAN20 subnet 10.10.20.0/24 range 0 start 10.10.20.100
set service dhcp-server shared-network-name VLAN20 subnet 10.10.20.0/24 range 0 stop 10.10.20.200

commit
save
```

### Сценарий 3: Inter-VLAN Routing

Маршрутизация между VLAN:

```bash
# VLAN интерфейсы
set interfaces ethernet eth0 vif 10 address 172.16.10.1/24
set interfaces ethernet eth0 vif 20 address 172.16.20.1/24
set interfaces ethernet eth0 vif 30 address 172.16.30.1/24

# По умолчанию inter-VLAN routing включен
# Firewall для контроля доступа между VLAN

# Разрешить VLAN 10 → VLAN 30 (management → servers)
set firewall ipv4 forward filter rule 100 action accept
set firewall ipv4 forward filter rule 100 source address 172.16.10.0/24
set firewall ipv4 forward filter rule 100 destination address 172.16.30.0/24

# Разрешить VLAN 20 → VLAN 30 (users → servers, только HTTP/HTTPS)
set firewall ipv4 forward filter rule 110 action accept
set firewall ipv4 forward filter rule 110 source address 172.16.20.0/24
set firewall ipv4 forward filter rule 110 destination address 172.16.30.0/24
set firewall ipv4 forward filter rule 110 destination port 80,443
set firewall ipv4 forward filter rule 110 protocol tcp

# Блокировать VLAN 20 → VLAN 10 (users не могут в management)
set firewall ipv4 forward filter rule 120 action drop
set firewall ipv4 forward filter rule 120 source address 172.16.20.0/24
set firewall ipv4 forward filter rule 120 destination address 172.16.10.0/24

commit
save
```

### Сценарий 4: VLAN на Bond интерфейсе

VLAN поверх bond (link aggregation):

```bash
# Bond интерфейс
set interfaces bonding bond0 member interface eth0
set interfaces bonding bond0 member interface eth1
set interfaces bonding bond0 mode 802.3ad
set interfaces bonding bond0 description 'LACP to Switch'

# VLAN на bond
set interfaces bonding bond0 vif 100 address 10.100.0.1/24
set interfaces bonding bond0 vif 100 description 'VLAN 100 on Bond'

set interfaces bonding bond0 vif 200 address 10.200.0.1/24
set interfaces bonding bond0 vif 200 description 'VLAN 200 on Bond'

commit
save
```

### Сценарий 5: VLAN с NAT

NAT для VLAN (доступ в интернет):

```bash
# WAN интерфейс
set interfaces ethernet eth0 address dhcp
set interfaces ethernet eth0 description 'WAN'

# VLAN на LAN
set interfaces ethernet eth1 vif 10 address 192.168.10.1/24
set interfaces ethernet eth1 vif 20 address 192.168.20.1/24

# NAT для VLAN 10
set nat source rule 100 outbound-interface name eth0
set nat source rule 100 source address 192.168.10.0/24
set nat source rule 100 translation address masquerade

# NAT для VLAN 20
set nat source rule 110 outbound-interface name eth0
set nat source rule 110 source address 192.168.20.0/24
set nat source rule 110 translation address masquerade

commit
save
```

## Продвинутые конфигурации

### QinQ (802.1ad) - VLAN Stacking

Double tagging для service providers:

```bash
# Outer VLAN (S-TAG)
set interfaces ethernet eth0 vif-s 100 description 'S-VLAN 100'

# Inner VLAN (C-TAG)
set interfaces ethernet eth0 vif-s 100 vif-c 10 address 10.100.10.1/24
set interfaces ethernet eth0 vif-s 100 vif-c 20 address 10.100.20.1/24

commit
```

**Структура**:
```
eth0
└── vif-s 100 (S-TAG, Outer VLAN)
    ├── vif-c 10 (C-TAG, Inner VLAN)
    └── vif-c 20 (C-TAG, Inner VLAN)
```

### VLAN с несколькими IP адресами

```bash
# Основной IP
set interfaces ethernet eth0 vif 10 address 192.168.10.1/24

# Дополнительные IP на том же VLAN
set interfaces ethernet eth0 vif 10 address 192.168.10.2/24
set interfaces ethernet eth0 vif 10 address 192.168.10.3/24

commit
```

### VLAN с IPv6

```bash
# Dual-stack VLAN
set interfaces ethernet eth0 vif 10 address 192.168.10.1/24
set interfaces ethernet eth0 vif 10 address 2001:db8:10::1/64

# IPv6 SLAAC
set interfaces ethernet eth0 vif 10 ipv6 address autoconf

commit
```

### VLAN Private (PVLAN)

VyOS не имеет нативной поддержки PVLAN, но можно эмулировать через firewall:

```bash
# VLAN 50 с изоляцией хостов
set interfaces ethernet eth0 vif 50 address 192.168.50.1/24

# Firewall: блокировать хосты друг с другом
set firewall ipv4 forward filter rule 500 action drop
set firewall ipv4 forward filter rule 500 source address 192.168.50.0/24
set firewall ipv4 forward filter rule 500 destination address 192.168.50.0/24

# Разрешить доступ к gateway
set firewall ipv4 forward filter rule 501 action accept
set firewall ipv4 forward filter rule 501 destination address 192.168.50.1

commit
```

### VLAN с VRRP (High Availability)

```bash
# Router 1
set interfaces ethernet eth0 vif 10 address 192.168.10.2/24

set high-availability vrrp group VLAN10 vrid 10
set high-availability vrrp group VLAN10 interface eth0.10
set high-availability vrrp group VLAN10 address 192.168.10.1/24
set high-availability vrrp group VLAN10 priority 200

# Router 2
set interfaces ethernet eth0 vif 10 address 192.168.10.3/24

set high-availability vrrp group VLAN10 vrid 10
set high-availability vrrp group VLAN10 interface eth0.10
set high-availability vrrp group VLAN10 address 192.168.10.1/24
set high-availability vrrp group VLAN10 priority 100

commit
```

### VLAN с динамическим routing (OSPF)

```bash
# VLAN интерфейсы
set interfaces ethernet eth0 vif 10 address 10.0.10.1/24
set interfaces ethernet eth0 vif 20 address 10.0.20.1/24

# OSPF на VLAN
set protocols ospf area 0 network 10.0.10.0/24
set protocols ospf area 0 network 10.0.20.0/24

# Или специфично на интерфейсах
set protocols ospf interface eth0.10 area 0
set protocols ospf interface eth0.20 area 0

commit
```

### VLAN с bandwidth shaping

```bash
# VLAN интерфейс
set interfaces ethernet eth0 vif 20 address 192.168.20.1/24

# Traffic policy (QoS)
set traffic-policy shaper VLAN20-LIMIT bandwidth 100mbit
set traffic-policy shaper VLAN20-LIMIT default bandwidth 80mbit

# Применить к VLAN
set interfaces ethernet eth0 vif 20 traffic-policy out VLAN20-LIMIT

commit
```

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

### VLAN изоляция

Полная изоляция VLAN друг от друга:

```bash
# Блокировать весь inter-VLAN трафик
set firewall ipv4 forward filter default-action drop

# Разрешить только established/related
set firewall ipv4 forward filter rule 10 action accept
set firewall ipv4 forward filter rule 10 state established
set firewall ipv4 forward filter rule 10 state related

commit
```

### Селективный доступ между VLAN

```bash
# VLAN 10: 192.168.10.0/24 (Admin)
# VLAN 20: 192.168.20.0/24 (Users)
# VLAN 30: 192.168.30.0/24 (Servers)

# Admin может везде
set firewall ipv4 forward filter rule 100 action accept
set firewall ipv4 forward filter rule 100 source address 192.168.10.0/24

# Users → Servers (только HTTP/HTTPS/DNS)
set firewall ipv4 forward filter rule 110 action accept
set firewall ipv4 forward filter rule 110 source address 192.168.20.0/24
set firewall ipv4 forward filter rule 110 destination address 192.168.30.0/24
set firewall ipv4 forward filter rule 110 destination port 80,443,53
set firewall ipv4 forward filter rule 110 protocol tcp

# Servers → Users (deny)
set firewall ipv4 forward filter rule 120 action drop
set firewall ipv4 forward filter rule 120 source address 192.168.30.0/24
set firewall ipv4 forward filter rule 120 destination address 192.168.20.0/24

# Users → Admin (deny)
set firewall ipv4 forward filter rule 130 action drop
set firewall ipv4 forward filter rule 130 source address 192.168.20.0/24
set firewall ipv4 forward filter rule 130 destination address 192.168.10.0/24

commit
```

### Guest VLAN с ограничениями

```bash
# Guest VLAN 99
set interfaces ethernet eth0 vif 99 address 192.168.99.1/24

# DHCP для guest
set service dhcp-server shared-network-name GUEST subnet 192.168.99.0/24 option default-router 192.168.99.1
set service dhcp-server shared-network-name GUEST subnet 192.168.99.0/24 option name-server 8.8.8.8
set service dhcp-server shared-network-name GUEST subnet 192.168.99.0/24 range 0 start 192.168.99.100
set service dhcp-server shared-network-name GUEST subnet 192.168.99.0/24 range 0 stop 192.168.99.200
set service dhcp-server shared-network-name GUEST subnet 192.168.99.0/24 lease 3600

# NAT для интернет доступа
set nat source rule 990 outbound-interface name eth1
set nat source rule 990 source address 192.168.99.0/24
set nat source rule 990 translation address masquerade

# Firewall: только интернет, блокировать локальные сети
set firewall ipv4 forward filter rule 990 action drop
set firewall ipv4 forward filter rule 990 source address 192.168.99.0/24
set firewall ipv4 forward filter rule 990 destination address 192.168.0.0/16

set firewall ipv4 forward filter rule 991 action drop
set firewall ipv4 forward filter rule 991 source address 192.168.99.0/24
set firewall ipv4 forward filter rule 991 destination address 10.0.0.0/8

set firewall ipv4 forward filter rule 992 action drop
set firewall ipv4 forward filter rule 992 source address 192.168.99.0/24
set firewall ipv4 forward filter rule 992 destination address 172.16.0.0/12

# Разрешить интернет (все остальное)
set firewall ipv4 forward filter rule 999 action accept
set firewall ipv4 forward filter rule 999 source address 192.168.99.0/24

commit
```

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

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

```bash
# Список всех VLAN
show interfaces

# Детали VLAN интерфейса
show interfaces ethernet eth0 vif 10

# Статистика
show interfaces ethernet eth0 vif 10 statistics

# Пакеты
show interfaces ethernet eth0 vif 10 statistics
```

### VLAN tagging проверка

```bash
# tcpdump на parent интерфейсе (видны VLAN tags)
sudo tcpdump -i eth0 -e -n

# tcpdump на VLAN интерфейсе (без tags)
sudo tcpdump -i eth0.10 -n

# Показать VLAN tagged пакеты
sudo tcpdump -i eth0 'vlan'

# Конкретный VLAN
sudo tcpdump -i eth0 'vlan 10'
```

### Проверка connectivity

```bash
# Ping с source
ping 192.168.20.10 source-address 192.168.10.1

# Traceroute
traceroute 192.168.30.10

# Проверка MAC адресов
show arp interface eth0.10
```

### Проверка VLAN таблицы

```bash
# На parent интерфейсе
cat /proc/net/vlan/eth0.10

# Kernel VLAN таблица
cat /proc/net/vlan/config
```

Вывод:
```
VLAN Dev name    | VLAN ID
Name-Type: VLAN_NAME_TYPE_RAW_PLUS_VID_NO_PAD
eth0.10        | 10  | eth0
eth0.20        | 20  | eth0
eth0.30        | 30  | eth0
```

## Troubleshooting

### VLAN интерфейс не поднимается

**Проблема**: VLAN интерфейс в состоянии down.

**Причины**:
1. Parent интерфейс down
2. VLAN не настроен на коммутаторе
3. Неправильный VLAN ID

**Диагностика**:
```bash
# Проверить parent
show interfaces ethernet eth0

# Проверить VLAN
show interfaces ethernet eth0 vif 10

# Kernel messages
dmesg | grep eth0
```

**Решение**:
```bash
# Убедиться что parent интерфейс up
set interfaces ethernet eth0 disable false

# Проверить на коммутаторе VLAN конфигурацию
```

### Нет связности между VLAN

**Проблема**: Устройства в разных VLAN не могут общаться.

**Причины**:
1. Inter-VLAN routing не работает
2. Firewall блокирует трафик
3. Неправильный default gateway на клиентах

**Диагностика**:
```bash
# Проверить routing
show ip route

# Проверить firewall
show firewall ipv4 forward filter

# Ping с source
ping 192.168.20.10 source-address 192.168.10.1
```

**Решение**:
```bash
# Проверить что IP forwarding включен (по умолчанию включен)
cat /proc/sys/net/ipv4/ip_forward
# Должно быть 1

# Проверить firewall правила
show firewall ipv4 forward filter

# Добавить правило если нужно
set firewall ipv4 forward filter rule 100 action accept
```

### VLAN трафик не tagged

**Проблема**: Трафик на коммутаторе не имеет VLAN тегов.

**Причины**:
1. Коммутатор порт в access режиме вместо trunk
2. Native VLAN mismatch

**Решение**:
На коммутаторе (Cisco пример):
```
interface GigabitEthernet0/1
 switchport mode trunk
 switchport trunk allowed vlan 10,20,30
```

### MTU проблемы с VLAN

**Проблема**: Пакеты фрагментируются или теряются.

**Причина**: VLAN добавляет 4 байта, но MTU не учтен.

**Решение**:
```bash
# Увеличить MTU на parent
set interfaces ethernet eth0 mtu 1504

# Или уменьшить на VLAN
set interfaces ethernet eth0 vif 10 mtu 1496

commit
```

### Broadcast storm в VLAN

**Проблема**: Высокая загрузка CPU, сеть медленная.

**Причины**:
1. Петля в сети
2. Нет STP
3. Broadcast трафик

**Диагностика**:
```bash
# Смотреть broadcast пакеты
sudo tcpdump -i eth0.10 broadcast -c 100

# Статистика ошибок
show interfaces ethernet eth0 vif 10 statistics
```

**Решение**:
1. Включить STP на коммутаторах
2. Проверить топологию на петли
3. Ограничить broadcast (storm-control на коммутаторе)

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

### Cisco IOS

```cisco
! Trunk порт к VyOS
interface GigabitEthernet0/1
 description Trunk to VyOS
 switchport mode trunk
 switchport trunk allowed vlan 10,20,30,99
 switchport trunk native vlan 999
 spanning-tree portfast trunk
```

### HP/Aruba

```
! Trunk к VyOS
interface 1
 name "Trunk to VyOS"
 tagged vlan 10,20,30,99
 untagged vlan 999
```

### Mikrotik

```
# VLAN на bridge
/interface vlan
add interface=bridge1 name=vlan10 vlan-id=10
add interface=bridge1 name=vlan20 vlan-id=20

# Trunk порт
/interface bridge port
add bridge=bridge1 interface=ether1 comment="Trunk to VyOS"

# VLAN filtering
/interface bridge vlan
add bridge=bridge1 tagged=ether1 vlan-ids=10,20,30
```

### Linux Bridge

```bash
# VLAN на Linux сервере
ip link add link eth0 name eth0.10 type vlan id 10
ip addr add 192.168.10.100/24 dev eth0.10
ip link set eth0.10 up
```

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

### Пример 1: Малый офис (SOHO)

**Топология**:
- VLAN 10: Management (192.168.10.0/24)
- VLAN 20: Office (192.168.20.0/24)
- VLAN 30: WiFi (192.168.30.0/24)

```bash
# WAN
set interfaces ethernet eth0 address dhcp
set interfaces ethernet eth0 description 'Internet'

# LAN trunk
set interfaces ethernet eth1 description 'LAN Trunk'

# Management VLAN
set interfaces ethernet eth1 vif 10 address 192.168.10.1/24
set interfaces ethernet eth1 vif 10 description 'Management'

# Office VLAN
set interfaces ethernet eth1 vif 20 address 192.168.20.1/24
set interfaces ethernet eth1 vif 20 description 'Office Network'

# WiFi VLAN
set interfaces ethernet eth1 vif 30 address 192.168.30.1/24
set interfaces ethernet eth1 vif 30 description 'WiFi'

# DHCP для всех VLAN
set service dhcp-server shared-network-name MGMT subnet 192.168.10.0/24 option default-router 192.168.10.1
set service dhcp-server shared-network-name MGMT subnet 192.168.10.0/24 range 0 start 192.168.10.100
set service dhcp-server shared-network-name MGMT subnet 192.168.10.0/24 range 0 stop 192.168.10.200

set service dhcp-server shared-network-name OFFICE subnet 192.168.20.0/24 option default-router 192.168.20.1
set service dhcp-server shared-network-name OFFICE subnet 192.168.20.0/24 range 0 start 192.168.20.100
set service dhcp-server shared-network-name OFFICE subnet 192.168.20.0/24 range 0 stop 192.168.20.200

set service dhcp-server shared-network-name WIFI subnet 192.168.30.0/24 option default-router 192.168.30.1
set service dhcp-server shared-network-name WIFI subnet 192.168.30.0/24 range 0 start 192.168.30.100
set service dhcp-server shared-network-name WIFI subnet 192.168.30.0/24 range 0 stop 192.168.30.200

# NAT для всех
set nat source rule 100 outbound-interface name eth0
set nat source rule 100 source address 192.168.0.0/16
set nat source rule 100 translation address masquerade

# Firewall: WiFi изолирован от локальных сетей
set firewall ipv4 forward filter rule 300 action drop
set firewall ipv4 forward filter rule 300 source address 192.168.30.0/24
set firewall ipv4 forward filter rule 300 destination address 192.168.10.0/24

set firewall ipv4 forward filter rule 301 action drop
set firewall ipv4 forward filter rule 301 source address 192.168.30.0/24
set firewall ipv4 forward filter rule 301 destination address 192.168.20.0/24

commit
save
```

### Пример 2: Enterprise с множеством VLAN

**Топология**:
- VLAN 10: Management
- VLAN 20: Employees
- VLAN 30: Servers
- VLAN 40: VoIP
- VLAN 50: CCTV
- VLAN 99: Guest

```bash
# Trunk интерфейс
set interfaces ethernet eth0 description 'Core Switch Trunk'
set interfaces ethernet eth0 mtu 1600

# Management
set interfaces ethernet eth0 vif 10 address 10.0.10.1/24
set interfaces ethernet eth0 vif 10 description 'Management VLAN'

# Employees
set interfaces ethernet eth0 vif 20 address 10.0.20.1/24
set interfaces ethernet eth0 vif 20 description 'Employees'

# Servers
set interfaces ethernet eth0 vif 30 address 10.0.30.1/24
set interfaces ethernet eth0 vif 30 description 'Servers'

# VoIP
set interfaces ethernet eth0 vif 40 address 10.0.40.1/24
set interfaces ethernet eth0 vif 40 description 'VoIP'

# CCTV
set interfaces ethernet eth0 vif 50 address 10.0.50.1/24
set interfaces ethernet eth0 vif 50 description 'CCTV'

# Guest
set interfaces ethernet eth0 vif 99 address 10.0.99.1/24
set interfaces ethernet eth0 vif 99 description 'Guest WiFi'

# QoS для VoIP VLAN
set traffic-policy shaper VOIP bandwidth 100mbit
set traffic-policy shaper VOIP default bandwidth 100mbit
set traffic-policy shaper VOIP default priority 7
set interfaces ethernet eth0 vif 40 traffic-policy out VOIP

# Firewall матрица доступа
# Management → All
set firewall ipv4 forward filter rule 100 action accept
set firewall ipv4 forward filter rule 100 source address 10.0.10.0/24

# Employees → Servers (limited ports)
set firewall ipv4 forward filter rule 110 action accept
set firewall ipv4 forward filter rule 110 source address 10.0.20.0/24
set firewall ipv4 forward filter rule 110 destination address 10.0.30.0/24
set firewall ipv4 forward filter rule 110 destination port 80,443,3389
set firewall ipv4 forward filter rule 110 protocol tcp

# VoIP isolated (only to servers for call control)
set firewall ipv4 forward filter rule 140 action accept
set firewall ipv4 forward filter rule 140 source address 10.0.40.0/24
set firewall ipv4 forward filter rule 140 destination address 10.0.30.100
set firewall ipv4 forward filter rule 140 destination port 5060,5061
set firewall ipv4 forward filter rule 140 protocol udp

# CCTV isolated (only to NVR server)
set firewall ipv4 forward filter rule 150 action accept
set firewall ipv4 forward filter rule 150 source address 10.0.50.0/24
set firewall ipv4 forward filter rule 150 destination address 10.0.30.200

# Guest fully isolated
set firewall ipv4 forward filter rule 190 action drop
set firewall ipv4 forward filter rule 190 source address 10.0.99.0/24
set firewall ipv4 forward filter rule 190 destination address 10.0.0.0/8

commit
save
```

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

1. **Планирование VLAN ID**:
   - Используйте логическую схему (10-19 management, 20-29 users, и т.д.)
   - Документируйте VLAN ID и их назначение
   - Резервируйте диапазоны для будущего роста

2. **MTU конфигурация**:
   - Parent интерфейс: MTU 1504 или выше
   - VLAN интерфейс: MTU 1500
   - Jumbo frames: учитывайте дополнительные 4 байта

3. **Описания интерфейсов**:
   - Всегда добавляйте description для VLAN
   - Указывайте назначение и контактную информацию

4. **Безопасность**:
   - Используйте firewall для контроля inter-VLAN routing
   - Изолируйте guest сети
   - Ограничивайте broadcast трафик

5. **DHCP конфигурация**:
   - Разные DHCP pools для каждого VLAN
   - Используйте DHCP options (DNS, NTP, domain)
   - Настройте DHCP snooping на коммутаторах

6. **QoS для критичных VLAN**:
   - VoIP VLAN должен иметь приоритет
   - Real-time трафик (video) требует гарантированной полосы

7. **Мониторинг**:
   - Отслеживайте состояние VLAN интерфейсов
   - Логируйте VLAN changes
   - Алерты на down состояние

8. **Backup конфигурации**:
   - Регулярно сохраняйте конфигурацию
   - Документируйте VLAN топологию
   - Храните схемы сети

9. **Native VLAN**:
   - Не используйте VLAN 1 как native
   - Используйте неиспользуемый VLAN как native (например, 999)
   - Соответствие native VLAN на всех trunk портах

10. **Тестирование**:
    - Тестируйте connectivity между VLAN
    - Проверяйте firewall rules
    - Верифицируйте QoS политики
    - Тестируйте failover если есть redundancy

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

VLAN в VyOS предоставляют гибкий и мощный механизм сегментации сети. Правильное использование VLAN позволяет:
- Улучшить безопасность через изоляцию
- Оптимизировать производительность сети
- Упростить управление и масштабирование
- Реализовать QoS для критичных сервисов

VyOS поддерживает все современные VLAN функции включая 802.1Q tagging, QinQ (802.1ad), VLAN на bond интерфейсах, и полную интеграцию с firewall, NAT, routing, и QoS.

