Задача
Как-то возникла задача поменять номер VLAN у трафика, проходящего между двумя коммутаторами через Trunk-канал. У Cisco есть такая вещь, как vlan mapping, но это на моделях вроде C6XXX и выше, а у меня C3560, этого нет.
План сети
Схема такая. Имеется фрагмент сети, там два коммутатора, соединённых Trunk-портом. На одном коммутаторе хосты, на втором – сервера.
Далее, Имеется три VLAN.
VLAN10 включает в себя один сервер и один хост. Тут проблем не возникает.
VLAN20 включает в себя другой сервер.
VLAN30 включает в себя ещё один хост. Теперь нужно помочь этому хосту достучаться до второго сервера.
Как это сделать?
SW1:
vlan 10
!
vlan 30
!
interface FastEthernet0/1
switchport access vlan 10
!
interface FastEthernet0/2
switchport access vlan 30
!
interface GigabitEthernet0/1
switchport trunk encapsulation dot1q
switchport mode trunk
!
SW2:
vlan 10
!
vlan 20
!
interface FastEthernet0/1
switchport access vlan 10
!
interface FastEthernet0/2
switchport access vlan 20
!
interface GigabitEthernet0/1
switchport trunk encapsulation dot1q
switchport mode trunk
!
Зачем это надо?
Причины такой сомнительной конфигурации таковы, что образован канал между двумя разными сетями, где существуют два разных админа. Хосту одного админа нужно получить доступ к сервису другого админа. Используемые в их сетях VLAN-ы частично пересекаются. Но сервисы на них пересекаться не должны. То есть изначально у первого админа для хоста выделен VLAN 30. Но этот номер у второго используется под другие нужды, свободен 20.
К соглашению они приходить не хотят, переделывать всё остальное тоже не собираются. Нужно организовать проход 30 VLAN в 20. Только и всего.
Как превратить один VLAN в другой?
На помощь приходит такое понятие как Native VLAN. Это так называемый “родной” VLAN, передаваемый без метки.
По умолчанию Native VLAN с номером 1. То есть если на access-порт с vid 1 пришёл кадр, то он передаётся без метки. И наоборот, если в коммутатор пришёл кадр без метки, то он получит метку vid 1. Самый, что ни на есть, “родной VLAN”.
Немного модернизируем нашу схему:
SW1:
interface GigabitEthernet0/1
switchport trunk native vlan 30
switchport trunk encapsulation dot1q
switchport mode trunk
spanning-tree portfast
SW2:
interface GigabitEthernet0/1
switchport trunk native vlan 20
switchport trunk encapsulation dot1q
switchport mode trunk
spanning-tree portfast
Что это нам даст?
Кадр данных, приходя с хоста в коммутатор пометится VID 30. Далее, для передачи по Trunk метка с него снимается вообще, так как 30-ый VLAN “родной” и метить этот трафик не надо.
Кадр, попадая во второй коммутатор (всё ещё без метки) заставляет коммутатор SW2 пометить его своим “родным” VLAN – 20-ым! Потому что любой нетегированный трафик должен быть помечен родным влан-ом. Кстати, если в этот порт попадёт трафик с меткой 20, такой кадр должен быть уничтожен.
Это тот ещё костыль, требует подстройки других протоколов. В частности начнёт ругаться CDP и STP. С STP я разобрался корявым portfast-режимом, а CDP лучше будет вообще отключить для безопасности!
Comments: