Поиск по этому блогу

понедельник, 16 декабря 2019 г.

Настройка VLAN на оборудовании Cisco


 Создание VLAN по сути есть добавление виртуального коммутатора второго уровня внутри аппаратного коммутатора. VLAN это отдельный широковещательный домен, два компьютера помещенные в разные VLAN не смогут обмениваться данными без настройки шлюза по умолчанию для подсети каждого VLAN. Поэтому компьютеры подключенные в один VLAN должны иметь адреса из одной подсети, например:
10.0.0.1 255.255.255.0 и 10.0.0.100 255.255.255.0

По умолчанию, в каждом коммутаторе абсолютно любого производителя все порты находятся в VLAN 1. Если рабочие станции будут общаться только между собой то никаких дополнительных настроек на коммутаторе можно не производить(при этом на рабочих станциях внутри L2 VLAN могут быть прописаны IP из разных диапазонов, но тогда общаться смогут лишь те кто принадлежит одной подсети, например 192.168.0.0/24 и 172.16.0.0/24 - но между 192.168.0.1 и  172.16.0.1 связи не будет).

Однако если нам надо разделить подключаемое оборудование и ограничить их взаимодействие на основе списков доступа то необходимо вводить различные VLAN. Принцип разделение на VLAN может быть различным - по административному делению компании (HR,Бухгалтерия, Руководство и т.д) или по функциональному назначению (принтеры,сервера,пользователи).
Диапазон номеров VLAN доступных к использованию - 1-4094
Максимальное количество VLAN доступных к использованию на коммутаторе можно уточнить из документации оборудования. Например, для Cisco Catalyst 2960:
Количество доступных к использованию VLAN отличается у разных моделей и уровней  прошивки.При этом номера VLAN можно использовать любые из доступного диапазона. Такие ограничения присутствуют только у коммутаторов доступа начального класса.  У старших моделей таких ограничений нет. Также необходимо отметить, что номера VLAN 1002-1005 в коммутаторах Cisco IOS и IOS XE нельзя использовать, так они зарезервированы для FDDI и Token Ring и их невозможно удалить:

Switch#sh vlan

VLAN Name                             Status    Ports
---- -------------------------------- --------- -------------------------------
1    default                          active    Et0/0, Et0/1, Et0/2, Et0/3
1002 fddi-default                     act/unsup
1003 token-ring-default               act/unsup
1004 fddinet-default                  act/unsup
1005 trnet-default                    act/unsup

VLAN Type  SAID       MTU   Parent RingNo BridgeNo Stp  BrdgMode Trans1 Trans2
---- ----- ---------- ----- ------ ------ -------- ---- -------- ------ ------
1    enet  100001     1500  -      -      -        -    -        0      0
1002 fddi  101002     1500  -      -      -        -    -        0      0
1003 tr    101003     1500  -      -      -        -    -        0      0
1004 fdnet 101004     1500  -      -      -        ieee -        0      0
1005 trnet 101005     1500  -      -      -        ibm  -        0      0

Рассмотрим подключение рабочих станций коммутатору, для эмуляции используется ПО EVE-NG. Адреса ПК - 10.0.0.10,10.0.0.20 и 10.0.0.30 с маской 255.255.255.0

Итак, для того чтобы добавить vlan на коммутатор Cisco необходимо:
1. Войти в режим конфигурирования:

Switch#conf t

2.Прописать VLAN с нужным номером:
Switch(config)#vlan 2
Switch(config-vlan)#exit

3. VLAN добавлен:
Switch(config)# do sh vlan brief

VLAN Name                             Status    Ports
---- -------------------------------- --------- -------------------------------
1    default                          active    Et0/0, Et0/1, Et0/2, Et0/3
2    VLAN0002                         active
1002 fddi-default                     act/unsup
1003 token-ring-default               act/unsup
1004 fddinet-default                  act/unsup
1005 trnet-default                    act/unsup

4.Созданному VLAN автоматически было присвоено имя VLAN0002, это можно изменить дав ему имя соответствующее его назначению. Для этого снова заходим в режим настройки VLAN:
Switch(config)#vlan 2
Switch(config-vlan)#name USERS
Switch(config-vlan)#exit
Switch(config)#do sh vlan brief

VLAN Name                             Status    Ports
---- -------------------------------- --------- -------------------------------
1    default                          active    Et0/0, Et0/1, Et0/2, Et0/3
2    USERS                            active

(Изменения применяются только после выхода из режима конфигурирования VLAN)

5. VLAN создан и ему присвоено имя отражающее его назначение, но в нем пока все еще нет ни одного порта, все 4 порта находятся в VLAN 1. 
Порты на коммутаторах Cisco могут быть двух типов - транк (trunk) или доступ (access).
Разница в том, что порты доступа могут быть членами только одного какого-то VLAN. Такие порты подключаются ПК, принтеры - оконечные устройства.
Транковые порты поддерживают передачу тегированного трафика, то есть трафика разных VLAN. Тег это заголовок который вставляется в заголовок кадра вместо части поля тип протокола. Для тегирования сегодня повсеместно используется протокол IEEE 802.1Q (по-русски звучит как "дот ку". В этом заголовке для обозначения VLAN используется поле VLAN Identifier длиной 12 бит. Именно отсюда ограничение в количестве VLAN: 212= 4096.
Тегированные порты используются для подключения устройств использующих несколько VLAN - коммутаторов друг к другу, серверов с виртуализацией, IP телефонов, WiFi точек доступа.
Добавим порт e0/2  с VLAN 2 как порт доступа:
Switch(config)#int e0/2
Switch(config-if)#switchport mode access
Switch(config-if)#switchport access vlan 2
Switch(config-if)#do sh vlan bri

VLAN Name                             Status    Ports
---- -------------------------------- --------- -------------------------------
1    default                          active    Et0/0, Et0/1, Et0/3
2    USERS                            active    Et0/2

Команда switchport mode access необходима чтобы явно указать, что порт в режиме доступа, и выключить на порту DTP протокол. 
Теперь USER1 находится в VLAN2, а USER2 и USER3 в VLAN1. Для того чтобы все пользователи были в одном пользовательском VLAN переместим порты e0/1 и e0/3 в VLAN2:
Switch#conf t
Enter configuration commands, one per line.  End with CNTL/Z.
Switch(config)#int ra e0/1,e0/3
Switch(config-if-range)#switchport mode access
Switch(config-if-range)#switchport access vlan 2
Switch(config-if-range)#^Z
Switch#sh vlan brief

VLAN Name                             Status    Ports
---- -------------------------------- --------- -------------------------------
1    default                          active    Et0/0
2    USERS                            active    Et0/1, Et0/2, Et0/3
1002 fddi-default                     act/unsup
1003 token-ring-default               act/unsup
1004 fddinet-default                  act/unsup
1005 trnet-default                    act/unsup

Проверим (для эмуляции USER используется Cisco Router):


USER1#sh ip int bri | ex una

Interface                  IP-Address 
ocol
Ethernet0/0                10.0.0.10  
USER1#ping 10.0.0.20
Type escape sequence to abort.
Sending 5, 100-byte ICMP Echos to 10.0.0.20, timeout is 2 seconds:
.!!!!
Success rate is 80 percent (4/5), round-trip min/avg/max = 1/2/4 ms
USER1#ping 10.0.0.30
Type escape sequence to abort.
Sending 5, 100-byte ICMP Echos to 10.0.0.30, timeout is 2 seconds:
.!!!!
Success rate is 80 percent (4/5), round-trip min/avg/max = 1/2/4 ms

Первый пинг пропадает на резолв MAC адреса протоколом ARP. 
Далее допустим, что у нас появился сервер, который необходимо поместить в отдельный VLAN, например №3 и дать ему адрес из другой подсети - 10.0.1.1 с маской 255.255.255.0. 


Итак, последовательность действий следующая:
1. Создаем VLAN 3 и даем ему имя SERVERS
2. Делаем порт e0/0 портом доступа и помещаем его в VLAN 3.


Switch(config)#vlan 3

Switch(config-vlan)#name SERVERS
Switch(config-vlan)#exit
Switch(config)#int e0/0
Switch(config-if)#switchport mode access
Switch(config-if)#switchport access vlan 3
Switch(config-if)#description SERVER
Switch(config-if)#^Z
Switch#sh run int e0/0
Building configuration...

Current configuration : 99 bytes
!
interface Ethernet0/0
 description SERVER
 switchport access vlan 3
 switchport mode access
end

Switch#sh vlan brief

VLAN Name                             Status    Ports
---- -------------------------------- --------- -------------------------------
1    default                          active    
2    USERS                            active    Et0/1, Et0/2, Et0/3
3    SERVERS                          active    Et0/0
1002 fddi-default                     act/unsup
1003 token-ring-default               act/unsup
1004 fddinet-default                  act/unsup
1005 trnet-default                    act/unsup


Теперь сервер с адресом 10.0.1.1 находится в третьем VLAN. В данный момент общаться участники разных VLAN не могут, это станет возможно только после того как в сети появится устройство способное организовать IP маршрутизацию, т.е. понимать протокол IP и пересылать пакеты между различными IP сетями.


USER1#ping 10.0.1.1

Type escape sequence to abort.
Sending 5, 100-byte ICMP Echos to 10.0.1.1, timeout is 2 seconds:
.....
Success rate is 0 percent (0/5)

В роли такого устройства может выступать коммутатор третьего уровня (L3 коммутатор), маршрутизатор или сервер с соответствующим ПО. 
Не все коммутаторы Cisco поддерживают маршрутизацию, и тем более маршрутизацию в полном объёме, аналогично маршрутизаторам. Ограничения есть как в максимальном количестве записей в таблице маршрутизации(маршрутов) так и поддерживаемых протоколов динамической маршрутизации. Ограничения распространяются на коммутаторы доступа начального и среднего уровня.
Рассмотрим вариант маршрутизации на коммутаторе. Для включения маршрутизации на коммутаторе необходимо выполнить команду:
ip routing (в последних поколениях Catalyst 9000 маршрутизация включена по умолчанию)
Затем создаем SVI (Switch Virtual Interface) интерфейсы для каждого VLAN. Конечно же номер SVI должен совпадать с номером соответствующего VLAN, IP адрес VLAN будет шлюзом по умолчанию для узлов в этом VLAN. Создадим два SVI интерфейса для VLAN 2 и 3, с адресами 10.0.0.254 и 10.0.1.254 соответственно:


interface Vlan2

 description USERS
 ip address 10.0.0.254 255.255.255.0
 no shutdown
interface Vlan3
 description SERVERS
 ip address 10.0.1.254 255.255.255.0
no shutdown

Для того чтобы эти логические интерфейсы перешли в состояние UP необходимо чтобы хотя бы один физический порт в этом VLAN был в состоянии UP. Во VLAN 2 у нас три таких порта, в VLAN 3 один, поэтому оба интерфейса немедленно доступны к использованию.
*Dec 16 13:22:59.707: %LINEPROTO-5-UPDOWN: Line protocol on Interface Vlan2, changed state to up
*Dec 16 13:22:59.707: %LINEPROTO-5-UPDOWN: Line protocol on Interface Vlan3, changed state to up
Проверим таблицу маршрутизации:

Switch#sh ip route
Gateway of last resort is not set

      10.0.0.0/8 is variably subnetted, 4 subnets, 2 masks
C        10.0.0.0/24 is directly connected, Vlan2
L        10.0.0.254/32 is directly connected, Vlan2
C        10.0.1.0/24 is directly connected, Vlan3
L        10.0.1.254/32 is directly connected, Vlan3

Маршруты установлены как C - Connected т.е. непосредственно подключенные к коммутатору. Проверим пинги между пользователем и сервером:


USER1#ping 10.0.1.1

Type escape sequence to abort.
Sending 5, 100-byte ICMP Echos to 10.0.1.1, timeout is 2 seconds:
!!!!!

Теперь пользователи и сервера находятся в разных VLAN и IP подсетях. Для ограничения доступа к серверу можно применить списки доступа (ACL). Например, USER1 может обращаться к серверу только по 22 и 80 порту tcp, USER2 может только по 80 порту tcp, а USER3 может только пинговать сервер. Список доступа назовем SRV-ACCESS.
*Обратите внимание, что для названий и описаний предпочтительней использовать все заглавные буквы в словах.

ip access-list extended SRV-ACCESS
 permit tcp host 10.0.0.10 host 10.0.1.1 eq 22
 permit tcp host 10.0.0.10 host 10.0.1.1 eq www
 permit tcp host 10.0.0.20 host 10.0.1.1 eq www
 permit icmp host 10.0.0.30 host 10.0.1.1
Теперь применим его на интерфейс VLAN3:

interface Vlan3
ip access-group SRV-ACCESS out

Проверим:


USER1#telnet 10.0.1.1 80

Trying 10.0.1.1, 80 ... Open
^C
HTTP/1.1 400 Bad Request
Date: Mon, 16 Dec 2019 14:03:43 GMT
Server: cisco-IOS
Accept-Ranges: none

USER1#ssh -l admin 10.0.1.1
Password:

Password:
SERVER#exit

А вот пинг не работает с USER1:

USER1#ping 10.0.1.1
Type escape sequence to abort.
Sending 5, 100-byte ICMP Echos to 10.0.1.1, timeout is 2 seconds:
U.U.U

Для USER2 открыт только 80 порт TCP:

USER2#telnet 10.0.1.1 80

Trying 10.0.1.1, 80 ... Open
^C
HTTP/1.1 400 Bad Request
Date: Mon, 16 Dec 2019 14:06:25 GMT
Server: cisco-IOS
Accept-Ranges: none

400 Bad Request
[Connection to 10.0.1.1 closed by foreign host]

Попробуем другой порт:

USER2#telnet 10.0.1.1 81
Trying 10.0.1.1, 81 ...
% Destination unreachable; gateway or host down

И только USER3 может пинговать сервер, но более ничего:

USER3#ping 10.0.1.1
Type escape sequence to abort.
Sending 5, 100-byte ICMP Echos to 10.0.1.1, timeout is 2 seconds:
!!!!!
Success rate is 100 percent (5/5), round-trip min/avg/max = 1/1/2 ms
USER3#telnet 10.0.1.1 80
Trying 10.0.1.1, 80 ...
% Destination unreachable; gateway or host down

При настройке списков доступа на коммутаторе нужно помнить, что коммутатор в отличии от межсетевого экрана, не запоминает проходящие через него сессии, и проверяет каждый пакет приходящий на интерфейс по всему списку доступа в поисках совпадения. Поэтому сервер тоже сможет пинговать только USER3, потому что пакеты icmp echo reply от USER1 и USER2 будут отброшены коммутатором т.к. нет совпадений в списке доступа (implicit deny). А если бы на месте коммутатора стоял stateful firewall, например Cisco ASA, то сервер смог бы пинговать USER1 и USER2, т.к. ASA отслеживает сессии и "помнит", что пинг инициировал 10.0.1.1 у которого ограничений нет и ожидает от USER1 и USER2 пакетов icmp echo reply в ответ на icmp echo request.

Напоследок обязательно сохраняем конфигурацию:

Switch#write
Building configuration...

Compressed configuration from 1485 bytes to 888 bytes[OK]
















Комментариев нет:

Отправить комментарий

Ограничение количества MAC адресов на порту коммутатора Cisco

Для того чтобы ограничить количество MAC адресов ( количество подключенных узлов) на порту коммутатора Cisco необходимо использовать функци...