: Ця сторінка застаріла та неповна — вона походить з епохи ядра 2.6 або 3 і ранньої UCI-конфігурації.
Якщо ваш пристрій має кілька інтерфейсів, типова конфігурація VLAN, ймовірно, буде суттєво відрізнятися від описаної тут.
Дивіться також:
Переконайтесь, що ви маєте доступ до safemode або через TTL перед зміною мережевих/комутаторних налаштувань
: У цьому документі передбачається, що ви вже знаєте, що таке комутатор і навіщо він вам потрібен. (див. VLAN)
Якщо ваш пристрій має більше одного LAN-порту, то в ньому, ймовірно, є спеціальне внутрішнє з'єднання між портами, яке називається комутатор (switch). Внутрішня структура, ймовірно, виглядатиме приблизно так:
Якщо ви хочете змінити спосіб, у який порти з’єднані між собою, вам потрібно налаштувати switch вашого пристрою (див. також network.interfaces)
Різні маршрутизатори мають різні топології комутаторів, тому обов’язково перегляньте Wiki для вашої моделі пристрою. Наприклад: - TP-Link Archer C7 має `eth0 = WAN`, а `eth1 = LAN` (тобто 4 порти комутатора).
- TP-Link WDR4300 має лише eth0.
swconfig dev <назва_інтерфейсу> show | grep link
або див. swconfig
: Деякі припущення не узгоджуються зі схемою. Потрібно або виправити, або уточнити пояснення.
# /etc/config/network config 'switch' 'eth1' option 'enable' '1' option 'enable_vlan' '1' option 'reset' '1'
- Номер VLAN задається рядком `option vlan`. - За замовчуванням, VLAN ID (VID) дорівнює номеру VLAN, але це можна змінити через `option vid`. Наприклад, VLAN з номером 1 може мати VID 100. - У деякому обладнанні значення `option vlan` обмежене 127; перевищення може призвести до того, що VLAN не створиться.
У параметрі `option ports`: - цифра означає номер порту, що входить до VLAN; - суфікс `t` означає, що передані пакети на цьому порту тегуються, а отримані можуть містити тег цього VLAN; - порт 5 зазвичай відповідає CPU або «внутрішньому» порту і зазвичай використовується як tagged.
Інші суфікси (наприклад `u`, `*`) ігноруються в `swconfig`, але можуть використовуватись у Broadcom (через `/proc/switch/`).
Приклад: `0 1 2 3 5t` — порти 0–3 передають пакети без тегу, а порт 5 — з тегом (внутрішній порт CPU).
Tagged пакети спрямовуються згідно з VID у пакеті. Untagged пакети — спрямовуються до PVID (за замовчуванням для порту). Щоб задати PVID, потрібно окремо вказати `config switch_port`.
Згідно з 802.1Q:
# /etc/config/network config 'switch_vlan' option 'vlan' '0' option 'device' 'eth1' option 'ports' '0 1 2 5t' config 'switch_vlan' option 'vlan' '1' option 'device' 'eth1' option 'ports' '3 5t' config 'switch_port' option 'port' '3' option 'pvid' '1'
Секції інтерфейсів VLAN виглядають як звичайні секції інтерфейсів, за винятком того, що замість `eth1` (або `eth0`, чи іншого), вказується `eth1.0`, `eth1.1` тощо, де цифра після крапки — це номер VLAN. (Це стосується ядра 2.6; у ядрах 2.4 схема інша.)
Наступний приклад стосується маршрутизатора з двома інтерфейсами: `eth0` — це WAN, а `eth1` — це п’ятипортовий комутатор, налаштований як описано раніше. Це все розміщується у файлі `/etc/config/network`.
Наприклад:
# /etc/config/network config 'interface' 'lan' option 'ifname' 'eth1.0' option 'proto' 'static' option 'ipaddr' '192.168.1.1' option 'netmask' '255.255.255.0' option 'defaultroute' '0' option 'peerdns' '0' option 'nat' '1' config 'interface' 'extranet' option 'ifname' 'eth1.1' option 'proto' 'dhcp' config 'interface' 'wan' option 'ifname' 'eth0.2' option 'proto' 'pppoe' option 'username' 'szabozsolt-em' option 'password' 'M3IuWBt4'
Звісно, якщо у вас лише п’ятипортовий комутатор на `eth0` (без додаткових інтерфейсів), ви можете налаштувати інтерфейс `wan` як `eth0.1`, а `lan` як `eth0.0` — з відповідним відображенням у секціях `switch`, `switch_vlan`, `switch_port`.
Див. також backplane.
# /etc/config/network config 'switch' 'eth0' option 'enable' '1' config 'switch_vlan' 'eth0_0' option 'device' 'eth0' option 'vlan' '0' option 'ports' '4 5' # WAN config 'switch_vlan' 'eth0_1' option 'device' 'eth0' option 'vlan' '1' option 'ports' '3 5' # LAN 1 config 'switch_vlan' 'eth0_2' option 'device' 'eth0' option 'vlan' '2' option 'ports' '2 5' # LAN 2 config 'switch_vlan' 'eth0_3' option 'device' 'eth0' option 'vlan' '3' option 'ports' '1 5' # LAN 3 config 'switch_vlan' 'eth0_4' option 'device' 'eth0' option 'vlan' '4' option 'ports' '0 5' # LAN 4 # Примітка: щоб використовувати порт у певному інтерфейсі, ifname повинен бути у форматі 'назва_інтерфейсу.vlan' # Наприклад: ifname 'eth0.3'
Потрібно більше інформації про VLAN на пристроях x86, щоб доповнити цю частину Wiki.
Більшість x86-пристроїв не мають програмованого комутатора, але це не є проблемою. Синтаксис, що використовується на пристроях із програмованими комутаторами, тут не потрібен.
Наприклад, ми хочемо створити два «віртуальні інтерфейси», які пов’язані з одним фізичним інтерфейсом `eth1`. Тоді у `/etc/config/network` вказуємо:
# /etc/config/network
...
config interface lan1
option ifname eth1.100
...
config interface lan2
option ifname eth1.101
...
Згідно з коментарів дописувачів форуму, виглядає так, що пакети автоматично тегуються, оскільки вони пов’язані з одним фізичним інтерфейсом, який може мати лише один PVID, але кілька віртуальних інтерфейсів. Тому при наявності кількох VLAN-інтерфейсів — пакети мають бути теговані, інакше вони не зможуть досягти потрібного інтерфейсу або бути відправлені.
Тести підтверджують це: для зв’язку двох OpenWrt x86-гостьових систем у VMware через один комутатор, необхідно було налаштувати portgroups із VLAN ID = 4095 (trunk) — згідно з технічними документами VMware: *VMware Virtual Networking Concepts* та *VMware ESX Server 3 802.1Q VLAN Solutions*.
Примітка: якщо різні віртуальні інтерфейси (з різних VLAN) знаходяться в одній логічній підмережі — це може викликати конфлікт маршрутів (metric). У такому випадку можна об’єднати інтерфейси у bridge — це потребує додаткового тестування.