Краткая инструкция по настройке Vlan-ов

    Для начала определимся что такое 802.1q vlan, дабы не изобретать велосипед маленькая вырезка из википедии:
    VLAN (аббр. от англ. Virtual Local Area Network) — виртуальная локальная компьютерная сеть, представляет собой группу хостов с общим набором требований, которые взаимодействуют так, как если бы они были подключены к широковещательному домену, независимо от их физического местонахождения. VLAN имеет те же свойства, что и физическая локальная сеть, но позволяет конечным станциям группироваться вместе, даже если они не находятся в одной физической сети. Такая реорганизация может быть сделана на основе программного обеспечения вместо физического перемещения устройств.
    На устройствах Cisco, протокол VTP (VLAN Trunking Protocol) предусматривает VLAN-домены для упрощения администрирования. VTP также выполняет «чистку» трафика, направляя VLAN трафик только на те коммутаторы, которые имеют целевые VLAN-порты. Коммутаторы Cisco в основном используют протокол ISL (Inter-Switch Link) для обеспечения совместимости информации.
    По умолчанию на каждом порту коммутатора имеется сеть VLAN1 или VLAN управления. Сеть управления не может быть удалена, однако могут быть созданы дополнительные сети VLAN и этим альтернативным VLAN могут быть дополнительно назначены порты.
    Native VLAN — это параметр каждого порта, который определяет номер VLAN, который получают все непомеченные (untagged) пакеты.


    Для чего это надо?
    Есть несколько ситуаций:
    1. Банально представим ситуацию есть большая сеть, в районе покрытия этой сети у нас расположено два офиса, их необходимо объединить в одну физическую сеть, при этом общегородская сеть не должна видеть/иметь доступ к офисным тачкам. Данную ситуацию конешно можно разрулить VPN-ами, но на шифрованый трафик порядка 100 мегабит нужно не кислое железо, поэтому рулим vlan-aми.
    2. Есть масса подсетей, территориально поделенных по городу, необходимо на каждую подсеть настроить интерфейс, по началу можно конечно обойтись сетевыми картами, но сети имеют свойства разростаться, и что прикажете делать, например в такой ситуации?:
    serv:~# ifconfig | grep eth | wc -l
    152
    serv:~#

    3. Клиенту необходимо выдать блок из 4,8,16 и т.д. и т.п. адресов.
    4. Уменьшение количества широковещательного трафика в сети
    Каждый VLAN — это отдельный широковещательный домен. Например, коммутатор — это устройство 2 уровня модели OSI. Все порты на коммутаторе, где нет VLANов, находятся в одном широковещательном домене. Создание VLAN на коммутаторе означает разбиение коммутатора на несколько широковещательных доменов. Если один и тот же VLAN есть на разных коммутаторах, то порты разных коммутаторов будут образовывать один широковещательный домен.
    И множество других причин/ситуаций в которых это может понадобиться.
    5. Увеличение безопасности и управляемости сети
    Когда сеть разбита на VLAN, упрощается задача применения политик и правил безопасности. С VLAN политики можно применять к целым подсетям, а не к отдельному устройству. Кроме того, переход из одного VLAN в другой предполагает прохождение через устройство 3 уровня, на котором, как правило, применяются политики разрешающие или запрещающие доступ из VLAN в VLAN.

    Как мне это все сделать?
    Легко!

    Тегирование трафика VLAN
    Компьютер при отправке трафика в сеть даже не догадывается, в каком VLAN'е он размещён. Об этом думает коммутатор. Коммутатор знает, что компьютер, который подключен к определённому порту, находится в соответствующем VLAN'e. Трафик, приходящий на порт определённого VLAN'а, ничем особенным не отличается от трафика другого VLAN'а. Другими словами, никакой информации о принадлежности трафика определённому VLAN'у в нём нет.
    Однако, если через порт может прийти трафик разных VLAN'ов, коммутатор должен его как-то различать. Для этого каждый кадр (frame) трафика должен быть помечен каким-то особым образом. Пометка должна говорить о том, какому VLAN'у трафик принадлежит.
    Наиболее распространённый сейчас способ ставить такую пометку описан в открытом стандарте IEEE 802.1Q. Существуют проприетарные протоколы, решающие похожие задачи, например, протокол ISL от Cisco Systems, но их популярность значительно ниже (и снижается).

    Настройка обычно происходит на серверах и на свитчах.
    По умолчанию все сетевые устройства находятся в первом (1, default) vlan-e.
    Поэтому подними 2-й vlan, с сетью 1
    В зависимости от ОСи на сервере vlan-ы конфигурятся по разному.
    В данной статье я попробую максимально коротко и четко описать различные способы настройки vlan-ов, на разных ОС.

    И так поехали, попробуем на разных ОС сделать одну и ту же задачу — настроить 2-й vlan, с адресным пространством из 64-х адресов, 10.10.10.0/26
    Для начала нам необходимо рассчитать маску, бродкастовый адрес и шлюз, в помощь прийдет ipcalc :)
    Address: 10.10.10.0 00001010.00001010.00001010.00 000000
    Netmask: 255.255.255.192 = 26 11111111.11111111.11111111.11 000000
    Wildcard: 0.0.0.63 00000000.00000000.00000000.00 111111
    =>
    Network: 10.10.10.0/26 00001010.00001010.00001010.00 000000 (Class A)
    Broadcast: 10.10.10.63 00001010.00001010.00001010.00 111111
    HostMin: 10.10.10.1 00001010.00001010.00001010.00 000001
    HostMax: 10.10.10.62 00001010.00001010.00001010.00 111110
    Hosts/Net: 62 (Private Internet)

    Шлюзом сделаем 10.10.10.1
    Маска 255.255.255.192 или 26
    Broadcast 10.10.10.63
    Итого мы получаем на клиентов 61 адрес, 10.10.10.2 — 10.10.10.62

    Debian-like:
    Нам необходимо поставить пакет vlan
    # apt-get install vlan
    Далее переходим в /etc/network/
    и правим файл с интерфейсами.
    # nano interfaces
    auto eth0.2 # автоматически поднимаем интерфейс после ребута. eth0 транковый интерфейс в которы подаем vlan
    iface eth0.2 inet static
    address 10.10.10.1
    netmask 255.255.255.192
    broadcast 10.10.10.63

    поднимаем интерфес:
    # ifup eth0.2

    Red-Hat-like:
    Для ред-хата необходима утилита настройки vlan'ов, ставим утилиту vconfig
    [root@notebook ~]# yum search vconfig
    vconfig.i686 : Linux 802.1q VLAN configuration utility
    [root@notebook ~]# yum install -y vconfig

    Добавим второй vlan в eth0.
    [root@notebook ~]# vconfig add eth0 2
    переходим в /etc/sysconfig/network-scripts, создадим файл интерфейса, редактируем его
    [root@notebook ~]# cd /etc/sysconfig/network-scripts
    [root@notebook ~]# touch ifcfg-eth0.2
    [root@notebook ~]# nano ifcfg-eth0.2
    DEVICE=eth0.2
    VLAN_TRUNK_IF=eth0
    BOOTPROTO=static
    IPADDR=10.10.10.1
    NETMASK=255.255.255.192
    BROADCAST=10.10.10.63
    ONBOOT=yes

    поднимаем интерфейс
    [root@notebook ~]# ifup eth0.2

    В BSD-like:
    ifconfig vlan_device vlan vlan_id vlandev parent_device
    ifconfig vlan0 vlan 2 vlandev xl0
    ifconfig vlan0 inet 10.10.10.1 netmask 255.255.255.192

    Для того чтобы интерфейс автоматически загружался, правим /etc/rc.conf.
    cloned_interfaces="vlan0" #You need a recent STABLE for this else use:
    #network_interfaces="lo0 vlan0"
    ifconfig_vlan0="inet 10.10.10.1 netmask 255.255.255.192 vlan 24 vlandev xl0"
    #Note: If you do not assign an IP Adress to your parent device, you need to
    #start it explicitly:
    ifconfig_xl0="up"


    Теперь перейдем к более интересному пункту, настройка сетевых коммутаторов.
    т.к. коммутаторы 2-го уровня бывают разные я приведу несколько примеров по настройке, на разных коммутаторах разное меню соответственно по разному настраивается, обычно ничего сложного нет, и принцип настройки одинаковый. ситуация серв включен в 1-й порт, необходимо подать 2-й влан в 4,5,6 порты, и во втором порту подать его тегированным.

    На D-Link-е:
    config vlan default delete 1-26
    config vlan default add untagged 1,3,7-24
    create vlan Offices tag 2
    config vlan Offices add tagged 1,2
    config vlan Offices add untagged 4,5,6
    save

    Пробуем воткнуться в 4 дырочку сетевым устройством и прописать адрес из диапазона 10.10.10.0/26 и банально пингами проверить.

    На Asotel-ях
    set 1qvlan create 2 Offices #создадим 2-й влан
    set 1qvlan modify -4-5-6 1 0 #уберем первый с 4,5,6-го портов
    set 1qvlan modify +1+2 2 1 #подадим тегированный 2-й влан в 1,2 порты
    set 1qvlan modify +4+5+6 2 0 #подадим нетегированный 2-й влан в 4,5,6 порты
    set 1qvlan pvid 4 2 # скажем свитчу что 4 дырка пренадлежит 2-му влану, аналогично делаем с 5,6
    set 1qvlan pvid 5 2
    set 1qvlan pvid 6 2


    На EdgeCore/LinkSys
    Vty-0#configure
    Vty-0(config)#vlan database
    Vty-0(config-vlan)#
    Vty-0(config-vlan)#vlan 2 name Offices media ethernet state active
    Vty-0(config-vlan)#exit
    Vty-0(config)#interface ethernet 1/1
    Vty-0(config-if)#switchport mode trunk
    Vty-0(config-if)#switchport allowed vlan add 2 tagged
    Vty-0(config-if)#exit
    Vty-0(config)#interface ethernet 1/2
    Vty-0(config-if)#switchport mode trunk
    Vty-0(config-if)#switchport allowed vlan add 2 tagged
    Vty-0(config-if)#exit
    Vty-0(config)#interface ethernet 1/4
    Vty-0(config-if)#switchport mode access
    Vty-0(config-if)#switchport allowed vlan add 2 untagged
    Vty-0(config-if)#switchport native vlan 2
    Vty-0(config-if)#exit
    Vty-0(config)#interface ethernet 1/5
    Vty-0(config-if)#switchport mode access
    Vty-0(config-if)#switchport allowed vlan add 2 untagged
    Vty-0(config-if)#switchport native vlan 2
    Vty-0(config-if)#exit
    Vty-0(config)#interface ethernet 1/6
    Vty-0(config-if)#switchport mode access
    Vty-0(config-if)#switchport allowed vlan add 2 untagged
    Vty-0(config-if)#switchport native vlan 2
    Vty-0(config-if)#exit
    Vty-0(config)#exit
    Vty-0#copy running-config startup-config
    ; Для проверки запустим
    Vty-0#show running-config


    p.s. Старался максимально коротко и ясно показать на примерах принцип настройки оборудования.
    Share post

    Comments 19

      +1
      Эмм, спасибо, конечно, но ИМХО, совсем новичкам это будет неинтересно/непонятно, а совсем чуть более опытным — уже не нужно.
        +2
        Ну даже перед новичками иногда встают сложные задачи, которые необходимо решать.
        +1
        Радуюсь, что первый свой VLAN я поднимал на коммутаторах Cisco Catalyst. Кстати, почему здесь их не упомянули?
          0
          Ситуация вышла довольно смешная, трафик который необходимо перелопачивать уже давно перевалил за гигабит, начальство посмотрело цены на продукты Cisco и на продукты Dlink+писюки, решили бюджет экономить и ставить второй вариант, а старые каталисты сейчас валяются на складе(куда поставить пока не придумали). Под рукой железки не было, а писать «по памяти» и «абы как» не хотелось, поэтому пропустил. :)
          0
          Vty-0(config)#interface ethernet 1/4
          Vty-0(config-if)#switchport mode access
          Vty-0(config-if)#switchport allowed vlan add 2 untagged
          Vty-0(config-if)#switchport native vlan 2
          Vty-0(config-if)#exit

          как-то странно видеть комбинацию mode access и native vlan
          может быть там должен быть switchport access vlan 2 по аналогии с каталистами?
          Да и allowed vlan add… тоже как-то не пляшет — вроде ж access порт может быть только в одном вилане, зачем там список разрешенных?
            0
            Нет, в еджкорах так.
            0
            А если честно, то про Inter Switch Link из книг узнали? ;) Интересно, кто-то его вообще хоть когда-то в продакшн использовал?

            Раз упомянули, то тогда уже нужно упомянуть о PVSTP, VTP, GVRP, public/private VLAN, etc. Тема интересная, многие ее боятся по молоду, а красиво сегментированная сетка намного приятнее в управлении.

              0
              что касаемо ISL — это вырезка с википедии, пора походу вики править.

              Тема интересная, но если в одной статье расписать все, то будет сильно длинно. Если и расписывать все, то короткими блоками, так информация легче переваривается :)
              0
              EdgeCore синтаксис у циски спер? занятно…
                0
                Они себя так и позиционируют, как дешевый аналог циски.
                Правда вместе с дешевизной приходят и глюки.
                  0
                  На сколько я помню, когда хуавей начал свои железки по аналогии с циской называть и пользовать тот же синтаксис, было много шума и циска с ними судилась
                  0
                  Не совсем, но по большей части — да. Вот кусок Эджевского конфига для примера:

                  VLAN database
                  VLAN 1 name DefaultVlan media ethernet state active
                  VLAN 300 name vor36 media ethernet state active
                  VLAN 317 name fib-dcs-v317 media ethernet state active
                  VLAN 321 name fl13 media ethernet state active
                  VLAN 331 name fib-dcs-v331 media ethernet state active
                  VLAN 4093 media ethernet state active
                  !
                  interface ethernet 1/1
                  switchport allowed vlan add 1,317 untagged
                  switchport native vlan 317
                  switchport mode access
                  switchport allowed vlan add 4093 tagged
                  !
                  interface ethernet 1/2
                  switchport allowed vlan add 1,331 untagged
                  switchport native vlan 331
                  switchport mode access
                  switchport allowed vlan add 4093 tagged
                  !
                  0
                  Саша, теперь признавайся у кого статью утащил :)
                    0
                    О дела, автор — мой тезка :) я аж удивился, когда в профиль заглянул :)
                      +1
                      Статью писал сам, на работе :)
                      0
                      Для Red Hat совместимых систем, указанное в статье не точно.

                      — Вами предложенный метод не будет работать перманентно.
                      — VLAN_TRUNK_IF не используется ни одной из подсистем.
                      — BROADCAST указывает не нужно.

                      Краткая инструкция.

                      $ echo Установка менеджера VLAN-ов
                      $ sudo yum install vconfig

                      $ echo Включение для сервиса /etc/init.d/network обработку VLAN-ов
                      $ sudo vim /etc/sysconfig/network

                      VLAN=yes


                      $ echo Создание на интерфейсе eth0 VLAN-а с VID 2 и именем eth0.2
                      $ sudo vim /etc/sysconfig/network-scripts/ifcfg-eth0.2
                      DEVICE=eth0.2
                      BOOTPROTO=static
                      IPADDR=10.10.10.1
                      NETMASK=255.255.255.192
                      ONBOOT=yes

                      $ echo Включение eth0.2, при масштабных изменениях конфигурации не рекомендуется, лучше sudo service network restart
                      $ sudo ifup eth0.2
                        0
                        >> /etc/sysconfig/network
                        >> VLAN=yes
                        Это писать не обязательно по крайней мере в Fedore, при vconfig.
                        По поводу бродкаста — это опционально, его можно не указывать.

                        "$ echo Включение eth0.2, при масштабных изменениях конфигурации не рекомендуется, лучше sudo service network restart"
                        Угу представляю у вас основной сервер на который заведено порядка 150 vlan'ов, вы делаете небольшой рестарт и все на пару секунд отваливается, очень романтично получается. А вдруг на этом сервере еще и VPN-клиенты крутятся, так вообще шикарно будет :)
                        зачем дергать все интерфейсы если нам необходимо затронуть 1?
                        0
                        автор, после курения wiki.debian.org можно сделать вывод, что истинный debian-way:

                        iface vlan3 inet static
                        vlan_raw_device eth0
                        address 10.14.34.254
                        netmask 255.255.255.128

                        а Вашим методом — лишь multiple IP addresses…
                          0
                          чорт, скрипты правильно понимают ".", значит по-вашему работать тоже будет :)

                        Only users with full accounts can post comments. Log in, please.