четверг, 6 ноября 2014 г.

Выпустить GNS3 в реальный мир tagged (trunk) портом

У меня возникла необходимость подключить GNS3 к физическим маршрутизаторам. В процессе изучения MPLS я проверял работу функционала bfd, который отказался работать внутри dynamips.
Для построения моей схемы мне нужно было не менее четырех интерфейсов. На моем ноуте только один сетевой порт под rj45. Очевидно, что нужно использовать dot1q. Откровенно говоря, раньше я не подключал сетку GNS к живой сети, но мне попадалась статейка о том, как это делается.

Тут проблем никаких не возникло. В GNS есть элемент "облако". Именно с помощью него можно подключиться к миру.

В настройках облака выбираем нужный ethernet-адаптер и делаем линк между элементами.




У меня реальная сетка - это 192.168.3.0 с шлюзом .1. Настраиваем интерфейс маршрутизатора, проверяем доступность интернетов.



Router#conf t
Enter configuration commands, one per line.  End with CNTL/Z.
Router(config)#inte
Router(config)#interface fas
Router(config)#interface fastEthernet 0/0
Router(config-if)#ip add
Router(config-if)#ip address 192.168.3.7 255.255.255.0
Router(config-if)#no shu
Router(config-if)#no shutdown 
Router(config-if)#exit
Router(config)#ip route 0.0.0.0 0.0.0.0 192.168.3.1
Router(config)#end
Router#
Router#ping 8.8.8.8

Type escape sequence to abort.
Sending 5, 100-byte ICMP Echos to 8.8.8.8, timeout is 2 seconds:
!!!!!
Success rate is 100 percent (5/5), round-trip min/avg/max = 112/140/192 ms

Миссия выполнена. Если в сети есть маршрутизатор, можно настраивать OSPF и прочее взаимодействие.

Как я уже говорил, для моей схемы мне нужны четыре интерфейса. Не так давно я заказал себе в Китае usb-rj45 сетевухи, но им ехать ещё пару месяцев. Их я заказывал для других целей, но можно было использовать и для этого. Тем не менее, если мне понадобится 20 интерфейсов, не подключать же мне 20 переходников usb-rj45. Все верно, нужно использовать dot1q инкапсуляцию. На моем ноуте установлена WIndows 7. В linux с vlaa никаких проблем бы не возникло, заводится с пол пинка. У большинства дистрибутивов поддержка dot1q уже есть в ядре и нужно установить лишь пакет vlan. 

Я установил ubuntu на флешку, поставил туда gns3, загрузил свою схему, но меня взяло любопытство. Как же научить винду работать с dot1q. Это я решил вынести отдельной заметкой тут - http://www.k4route.ru/2014/11/windows-7-dot1q-tagged-port-trunk.html.

На коммутаторе, к которому подключен ноутбук, порт настроен так:

!
interface FastEthernet0/6
 switchport trunk native vlan 4
 switchport trunk allowed vlan 3,4,8
 switchport mode trunk
end
!

На ноуте я создал виртуальные интерфейсы VLAN.


Для подключения маршрутизатора в GNS создаем два облака. Одно цепляем к VLAN3, другое - VLAN8.




R1#conf t                  
Enter configuration commands, one per line.  End with CNTL/Z.
R1(config)#inte
R1(config)#interface fas
R1(config)#interface fastEthernet 0/0
R1(config-if)#ip address 192.168.247.243 255.255.252.0
R1(config-if)#no shutdown 
R1(config)#interface fastEthernet 0/1
R1(config-if)#ip address 192.168.253.18 255.255.255.0
R1(config-if)#no shutdown 
R1(config-if)#end
R1#
R1#ping 192.168.244.5

Type escape sequence to abort.
Sending 5, 100-byte ICMP Echos to 192.168.244.5, timeout is 2 seconds:
.!!!!
Success rate is 80 percent (4/5), round-trip min/avg/max = 4/9/12 ms
Success rate is 60 percent (3/5), round-trip min/avg/max = 56/72/84 ms
R1#ping 192.168.253.1

Type escape sequence to abort.
Sending 5, 100-byte ICMP Echos to 192.168.253.1, timeout is 2 seconds:
.!!!!
Success rate is 80 percent (4/5), round-trip min/avg/max = 4/33/92 ms
R1#
R1#show ip arp
Protocol  Address          Age (min)  Hardware Addr   Type   Interface
Internet  192.168.244.5           0   0050.56b4.45de  ARPA   FastEthernet0/0
Internet  192.168.253.1           0   0004.968b.f19c  ARPA   FastEthernet0/1

Давайте посмотрим в каком виде это все передается в интерфейсах. Запускаем Wireshark.

Интерфейс LAN (физический интерфейс):



Как видно, трафик на физическом интерфейсе идет с тегами 802.1q. Если посмотреть трафик на виртуально интерфейсе, видим следующее:


Входящий трафик от виртуального маршрутизатора ещё не содержит метки.

Надо заметить, что изначально GNS не видел виртуальных сетевых интерфейсов VLAN3 и VLAN8, несмотря на то, что они исправно работали.

Поиск в интернетах вывел меня на форум GNS - http://forum.gns3.net/topic7559.html. Последнее сообщение является решением этой проблемы.

Here's how:

1. I updated my drivers to the latest: http://www.realtek.com.tw/downloads/dow ... Down=false

2. Once installed, went to my regedit in: HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\Control\Class\{4D36E972-E325-11CE-BFC1-08002BE10318}\00nn
Where nn is the physical instance of the network port where you want to capture the VLAN tags.

3. Added / Edited the following DWORDS:

MonitorModeEnabled - 1
MonitorMode - 1
*PriorityVLANTag - 0
SkDisableVlanStrip - 1

4. Restarted my machine, and voila! Working router on a switch! No need to use Linux!

В реестре моей ОС вообще не было пунктов MonitorModeEnabled, MonitorMode и SkDisableVlanStrip.
Собственно, когда я прописал эти параметры в ветке физического интерфейса, виртуальные интерфейсы появились в GNS, но они перестали работать. В общем, чтобы все было так, как описано выше, SkDisableVlanStrip должен быть 1, остальные - 0.

Если сделать именно так:
MonitorModeEnabled - 1
MonitorMode - 1
*PriorityVLANTag - 0
SkDisableVlanStrip - 1,
то мы получаем другую схему, для которой вовсе и не нужны были все эти шаманства с тегированными интерфейсами в винде. 

Эти настройки говорят системе, чтобы она не снимала метки dot1q с входящих пакетов и не отбрасывала их. Для этой схемы интерфейсы виртуального маршрутизатора нужно настроить тегированными. 


!
interface FastEthernet0/0
 no ip address
 speed auto
 duplex auto
!
interface FastEthernet0/0.3
 encapsulation dot1Q 3
 ip address 192.168.247.247 255.255.252.0
!
interface FastEthernet0/0.8
 encapsulation dot1Q 8
 ip address 192.168.253.12 255.255.255.0
!         
          
Router#ping 192.168.244.5

Type escape sequence to abort.
Sending 5, 100-byte ICMP Echos to 192.168.244.5, timeout is 2 seconds:
.!!!!
Success rate is 80 percent (4/5), round-trip min/avg/max = 24/39/44 ms
Router#ping 192.168.253.1

Type escape sequence to abort.
Sending 5, 100-byte ICMP Echos to 192.168.253.1, timeout is 2 seconds:
.!!!!
Success rate is 80 percent (4/5), round-trip min/avg/max = 36/39/48 ms
Router#
Router#show ip arp
Protocol  Address          Age (min)  Hardware Addr   Type   Interface
Internet  192.168.244.5           0   0050.56b4.45de  ARPA   FastEthernet0/0.3
Internet  192.168.253.1           0   0004.968b.f19c  ARPA   FastEthernet0/0.8

Вот с реального коммутатора:

cat2960#show mac address-table dynamic interface fastEthernet 0/6
          Mac Address Table
-------------------------------------------

Vlan    Mac Address       Type        Ports
----    -----------       --------    -----
   3    060a.7b64.eaf7    DYNAMIC     Fa0/6
   3    ca00.17a4.0008    DYNAMIC     Fa0/6
   8    0a12.7b64.eaf7    DYNAMIC     Fa0/6
   8    ca00.17a4.0008    DYNAMIC     Fa0/6
Total Mac Addresses for this criterion: 4

Видны мак адреса виртуальных интерфейсов ноутбука и адрес виртуального маршрутизатора в разных vlan.

Посмотрим на физический интерфейс ноутбука через Wireshark.


Трафик ходит с тегами 802.1q. Таким образом мы получили возможность собрать схему "Router on a stick" с использованием реальных машин и виртуального маршрутизатора в среде GNS3.
Рассмотрим случай, когда нам нужно подключить несколько виртуальных маршрутизаторов к реальной сети. К одному облаку не подключить два рутера. Нужно создать два облака, которыу привязать к одному и тому же физическому интерфейсу LAN. Не самый красивый вариант. Это можно реализовать с использованием виртуальных коммутаторов. В GNS есть generic switch и маршрутизаторы 7200 или 7300 с платой NM-16ESW. Тут очень подробно расписано - http://commonerrors.blogspot.ru/2011/05/how-to-use-cisco-switch-in-gns3.html.

Рассмотрим первый вариант с платой коммутации в маршрутизаторе 3700 (рекомендуется именно эта линейка, а не 3600).



Настраиваем виртуальные маршрутизаторы:

R3#conf t
R3(config)#interface FastEthernet0/0
R3(config-if)#no shutdown 
R3(config)#interface fastEthernet 0/0.3
R3(config-subif)#encapsulation dot1Q 3
R3(config-subif)#ip address 192.168.247.242 255.255.252.0
R3(config-subif)#no shutdown 
R3(config-subif)#end

R1#conf t
R1(config)#interface fastEthernet 0/0
R1(config-if)#no shutdown 
R1(config)#interface fastEthernet 0/0.8
R1(config-subif)#encapsulation dot1Q 8
R1(config-subif)#ip address 192.168.253.44 255.255.255.0
R1(config-subif)#no shutdown 
R1(config-subif)#end

Настраиваем маршрутизатор с платой коммутатора:
VLAN настраивается по старославянски ещё :)

SWITCH1#vlan database
SWITCH1(vlan)#vlan 3
VLAN 3 added:
    Name: VLAN0003
SWITCH1(vlan)#vlan 8
VLAN 8 added:
    Name: VLAN0008
SWITCH1(vlan)#exit
APPLY completed.
Exiting....
SWITCH1#conf t
Enter configuration commands, one per line.  End with CNTL/Z.
SWITCH1(config)#interface fastEthernet 1/0
SWITCH1(config-if)#switchport mode trunk 
*Mar  1 00:06:27.151: %DTP-5-TRUNKPORTON: Port Fa1/0 has become dot1q trunk
SWITCH1(config-if)#switchport trunk allowed vlan 3,8
Command rejected: Bad VLAN allowed list. You have to include all default vlans, e.g. 1-2,1002-1005.
SWITCH1(config-if)#switchport trunk allowed vlan 1,3,8,1002-1005
SWITCH1(config-if)#no shutdown 
*Mar  1 00:06:47.299: %CDP-4-NATIVE_VLAN_MISMATCH: Native VLAN mismatch discovered on FastEthernet1/2 (1), with cat2960 FastEthernet0/6 (4).
SWITCH1(config)#interface fastEthernet 1/1  
SWITCH1(config-if-range)#switchport mode trunk                        
SWITCH1(config-if-range)#no shutdown                       
*Mar  1 00:07:14.511: %DTP-5-TRUNKPORTON: Port Fa1/1 has becomeswitchport trunk allowed vlan 1,3,8,1002-1005
SWITCH1(config-if-range)#switchport trunk allowed vlan 1,3,8,1002-1005
SWITCH1(config)#interface fastEthernet 1/2             
SWITCH1(config-if-range)#switchport mode trunk                        
SWITCH1(config-if-range)#switchport trunk allowed vlan 1,3,8,1002-1005
*Mar  1 00:07:34.427: %DTP-5-TRUNKPORTON: Port Fa1/2 has become dot1q trunk
SWITCH1(config-if-range)#switchport trunk allowed vlan 1,3,8,1002-1005
SWITCH1(config-if-range)#no shutdown 
SWITCH1(config-if-range)#end
SWITCH1#show vlan-switch 

VLAN Name                             Status    Ports
---- -------------------------------- --------- -------------------------------
1    default                          active    Fa1/3, Fa1/4, Fa1/5, Fa1/6
                                                Fa1/7, Fa1/8, Fa1/9, Fa1/10
                                                Fa1/11, Fa1/12, Fa1/13, Fa1/14
                                                Fa1/15
3    VLAN0003                         active    
8    VLAN0008                         active    
1002 fddi-default                     active    
1003 token-ring-default               active    
1004 fddinet-default                  active    
1005 trnet-default                    active    

SWITCH1#show cdp neighbors 
Capability Codes: R - Router, T - Trans Bridge, B - Source Route Bridge
                  S - Switch, H - Host, I - IGMP, r - Repeater

Device ID        Local Intrfce     Holdtme    Capability  Platform  Port ID
cat2960
                 Fas 1/2            175          S        WS-C2960- Fas 0/6
Router           Fas 1/1            171          R        7206VXR   Fas 0/0
Router           Fas 1/0            135          R        7206VXR   Fas 0/0


Обращу внимание на то, что иногда порты коммутатора находятся в состоянии down несмотря на наличие линка. По ссылке выше можно найти инфу, что в этом случае порту нужно дать shutdown, потом no shutdown. Если не сработает сразу - повторить ещё раз. Мне тогда это помогло.

Проверяем доступность реальной сети с виртуальных маршрутизаторов.

R1#ping 192.168.244.5

Type escape sequence to abort.
Sending 5, 100-byte ICMP Echos to 192.168.244.5, timeout is 2 seconds:
!!!!!
Success rate is 100 percent (5/5), round-trip min/avg/max = 8/61/172 ms

R2#ping 192.168.253.1

Type escape sequence to abort.
Sending 5, 100-byte ICMP Echos to 192.168.253.1, timeout is 2 seconds:
.!!!!
Success rate is 80 percent (4/5), round-trip min/avg/max = 12/34/64 ms

Адреса на порту реального коммутатора.

cat2960#show mac address-table dynamic interface fastEthernet 0/6
          Mac Address Table
-------------------------------------------

Vlan    Mac Address       Type        Ports
----    -----------       --------    -----
   3    060a.7b64.eaf7    DYNAMIC     Fa0/6
   3    ca00.1ce8.0008    DYNAMIC     Fa0/6
   8    0a12.7b64.eaf7    DYNAMIC     Fa0/6
Total Mac Addresses for this criterion: 3

Wireshark показывает наличие 8021q.

Последний вариант, наиболее быстрый в реализации - использование generic switch.



Стоит отметить, что тут все три порта настроены на транк (tagged port). Да, в generic switch так обозначается транк - VLAN=1, TYPE=DOT1Q.

Пожалуй, на этом всё.


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

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