Налаштовуємо vlan на freebsd, blog
Це не просто, а дуже просто.
VLAN (від англ. Virtual Local Area Network), VLAN можуть бути частиною більшого LAN, маючи певні правила взаємодії з іншими VLAN, або бути повністю ізольованими від них. Найпростіший механізм ізоляції різних підмереж, які працюють через загальні свічі та роутери, відомий як 802.1Q.
- збільшує число широкомовних доменів. але зменшує розмір кожного широкомовного домену. які в свою чергу зменшують мережевий трафік і збільшують безпеку мережі (обидва слідства пов'язані разом через єдиного великого широковещательного домену);
- зменшує зусилля адміністраторів на створення підмереж;
- зменшує кількість обладнання, так як мережі можуть бути розділені логічно, а не фізично;
- покращує управління різними типами трафіку.
Транк VLAN - це фізичний канал, по якому передається кілька VLAN каналів, які розрізняються тегами (мітками, що додаються в пакети). Транки зазвичай створюються між «тегованих портами» VLAN-пристроїв: свитч-світч або світч-маршрутизатор. (В документах Cisco терміном «транк» також називають об'єднання декількох фізичних каналів в один логічний: Link Aggregation, Port Trunking). Маршрутизатор (світч третього рівня) виступає в ролі магістрального ядра мережі (backbone) для мережевого трафіку різних VLAN.
На пристроях Cisco, протокол VTP (VLAN Trunking Protocol) передбачає VLAN-домени для спрощення адміністрування. VTP також виконує «чистку» трафіку, направляючи VLAN трафік тільки на ті комутатори, які мають цільові VLAN-порти.
Native VLAN - кожен порт має параметр, названий постійний віртуальний ідентифікацією (Native VLAN), який визначає VLAN, призначений отримати нетеговие кадри.
Сказавши простіше, vlan - це логічний канал всередині фізичного каналу (кабелю), а trunk це безліч логічних каналів (vlan`ов) всередині одного фізичного каналу (кабелю).
Отже більш-менш з теорією розібралися, тепер подумаємо навіщо нам це може знадобитися.
Дана технологія може стати в нагоді наприклад якщо на сервер потрібно «подати» кілька фізичних лінків, а мережева карта всього одна і вставити ще одну немає можливості.
Візьмемо подібну ситуацію як приклад і спробуємо налаштувати наступне:
Для того щоб розрулити цю ситуацію нам знадобиться switch який розуміє Vlan (802.1Q), вже майже всі керовані свічі йдуть з цією функцією. У нашому прикладі розглянемо два типи свічів:
- cisco catalyst (наприклад 2950 або 3560)
- dlink DES-3526
Два провайдера і сервер FreeBSD з одного сет.картой
Застромимо фізичні зв'язку в наш свіч, отримаємо три кабелю і три зайнятих порту
- порт 1 - Провайдер А
- порт 2 - Провайдер Б
- порт 3 - наш сервер
Налаштуємо cisco catalyst:
configure terminal
vlan 100
name provider_a
vlan 101
name provider_b
int gi0 / 1
switchport access vlan 100
int gi0 / 2
switchport access vlan 101
exit
exit
Цими командами ми створили два vlan з номерами 100 і 101 для лінків від двох провайдерів і призначили два порти Каталіст в ці vlan.
по команді show vlan ви повинні бачити створені vlan `и
Тепер перейдемо до конфігурації 3-го порту Каталіст куди застромлять наш сервер. Оскільки нам доведеться в цей порт посилати обидва vlan (100,101) нам необхідно зробити trunk на цьому порту:
configure terminal
int gi 0/3
switchport trunk encapsulation dot1q
switchport mode trunk
switchport trunk allowed vlan 100,101
exit
exit
Цими командами ми на третьому порту Каталіст підняли trunk і дозволили в цьому trunk `е два vlan 100,101
У термінах Cisco:
- порт в аксес / аксес порт (access port) - порт приймає не тегованих пакети (пакети в яких немає тега (номера) vlan якому вони належать)
- порт в Транки / транк порт (trunk port) - порт приймає тегованих пакети в яких вказано тег (номер) vlan
Зробимо те ж саме, але для Dlink:
create vlan provider_a tag 100
create vlan provider_b tag 101
config vlan provider_a add untagged 1
config vlan provider_b add untagged 2
config vlan provider_a add tagged 3
config vlan provider_b add tagged 3
Так само по команді show vlan переконуємося що все на місці.
У термінах Dlink:
- антагет порт (untagged port) - порт в аксес режимі приймати не тегованих пакети
- Тагет порт (tagged port) - порт в Транки приймає тегерованние пакети
Переходимо до FreeBSD. Як приклад використовується сет. карта 82545EM Gigabit Ethernet Controller інтерфейс em0
/ Sbin / ifconfig em0 delete
Створимо vlan для провайдера А:
/ Sbin / ifconfig vlan100 create
/ Sbin / ifconfig vlan100 vlan 100 vlandev em0
Ось і все, vlan створений, перевіряємо чи є він у списку інтерфейсів:
запускаємо команду / sbin / ifconfig vlan100
vlan100: flags = 8842
options = 3
ether 00: 02: a5: 4e: 92: 48
media: Ethernet autoselect (100baseTX
status: active
vlan: 100 parent interface: em0
Ітерфейс на місці.
Створимо vlan для провайдера Б:
/ Sbin / ifconfig vlan101 create
/ Sbin / ifconfig vlan101 vlan 101 vlandev em0
Перевіряємо чи є він у списку інтерфейсів:
запускаємо команду / sbin / ifconfig vlan101
vlan101: flags = 8842
options = 3
ether 00: 02: a5: 4e: 92: 48
media: Ethernet autoselect (100baseTX
status: active
vlan: 101 parent interface: em0
Ітерфейс на місці.
Після того як інтерфейси vlan `ів створені ми звертаємося з ними як зі звичайними інтерфейсами звичайних мережевих карт.
/ Sbin / ifconfig vlan100 add 192.168.1.15/24
/ Sbin / ifconfig vlan101 add 172.16.10.48/26
Ось і все, якщо ви все зробили правильно, то при виводі команди ifconfig отримаєте:
vlan100: flags = 8843
options = 3
ether 00: 02: a5: 4e: 92: 48
inet 192.168.1.15 netmask 0xffffff00 broadcast 192.168.1.255
media: Ethernet autoselect (100baseTX
status: active
vlan: 100 parent interface: em0
vlan101: flags = 8843
options = 3
ether 00: 02: a5: 4e: 92: 48
inet 172.16.10.48 netmask 0xffffffc0 broadcast 172.16.10.63
media: Ethernet autoselect (100baseTX
status: active
vlan: 101 parent interface: em0
Можете перевіряти наявність зв'язку з двома провайдерами 🙂
Знищити / видалити vlan можна командою (наприклад видалимо vlan100):
/ Sbin / ifconfig vlan100 destroy
Залишилося остання справа, щоб після reboot конфігурація vlan `ів зберігалася.
Для цього додамо в файл /etc/rc.conf наступні рядки:
ifconfig_vlan100 = "inet 192.168.1.15 netmask 255.255.255.0 vlan 100 vlandev em0"
ifconfig_vlan101 = "inet 172.16.10.48 netmask 255.255.255.192 vlan 101 vlandev em0"
cloned_interfaces = »vlan100 vlan101"