Если вы испытываете нехватку физических портов на оборудовании сети передачи данных, в то время как перед вами встала острая необходимость завести второго интернет-провайдера или вывести часть серверов в ДМЗ используя оборудование Cisco Systems, тогда эта статья должна помочь с решением многим начинающим системным администраторам, а также тем, кто недавно приступил к работе с сетями передачи данных и с оборудованием Cisco в частности. Речь пойдет об архитекторе под названием Router-on-a-Stick.
Подобному тому, как коммутатор может разделить локальную сеть на множество VLAN, так и маршрутизатор может использовать один физический интерфейс для создания подмножества логических виртуальных интерфейсов и обеспечить маршрутизацию данных, видео или голоса между ними.
В качестве наглядного примера, на схемах я хочу продемонстрировать некоторые возможные сценарии, которые можно реализовать с помощью одного физического порта и подмножества виртуальных интерфейсов на маршрутизаторе или межсетевом экране Cisco.
Как мы видим, для решения поставленной задачи требуется коммутатор, желательно 3-го уровня. Коммутатор должен обладать достаточной пропускной способностью, чтобы снизить потенциальные задержки передачи пакетов в случае возникновения больших объемов трафика. Если это модульный коммутатор, тогда желательно обзавестись резервным блоком питания и резервным управляющим процессором для него.
Кроме очевидных преимуществ подобной архитектуры, есть также некоторые недостатки, одним из которых является увеличенная в несколько раз нагрузка на отдельно взятый физический порт устройства. Но бывают ситуации, когда обойтись без виртуальных интерфейсов нельзя. Так, например, если немного отвлечься от темы, то невозможно выстроить отказоустойчивую связку двух межсетевых экранов в режиме Active/Passive, если не подключить каждый из них одним физическим линком к коммутатору, а вторым объединив их между собой для обмена служебными данными. В случае выхода из строя одного межсетевого экрана, его место займет второй с идентичной конфигурацией.
Чтобы не оставаться голословным, я приведу пример реализации простейшей модели архитектуры Router-on-a-Stick.
Возьмем упрощенную схему, на которой представлен маршрутизатор, подключенный к коммутатору 2-го уровня. В свою очередь к коммутатору подключены линки от двух интернет-провайдеров и одна внутренняя сеть компании с рабочими станциями и серверами.
Для реализации задуманного, подключим линк от Провайдера #1 к порту Gi0/1 и определим его в VLAN 100, а линк от Провайдера #2 к порту Gi0/2 в VLAN 200. Рабочие станции и сервера будут находиться на портах Gi0/3 — 23 в VLAN 50. Аплинк между коммутатором и маршрутизатором будет на порту Gi0/24, он будет помещен в транк. Схема подключения приведена на рисунке далее:
Конфигурация коммутатора сводится к следующим командам:
telecombook_ru#conf t
telecombook_ru(config)#vlan 50
telecombook_ru(config-vlan)#name DATA
telecombook_ru(config-vlan)#exit
telecombook_ru(config)#vlan 100
telecombook_ru(config-vlan)#name ISP1
telecombook_ru(config-vlan)#exit
telecombook_ru(config)#vlan 200
telecombook_ru(config-vlan)#name ISP2
telecombook_ru(config-vlan)#exit
telecombook_ru(config)#interface Gi0/1
telecombook_ru(config-if)#switchport mode access
telecombook_ru(config-if)#switchport access vlan 100
telecombook_ru(config)#interface Gi0/2
telecombook_ru(config-if)#switchport mode access
telecombook_ru(config-if)#switchport access vlan 200
telecombook_ru(config)#interface range Gi0/3 – 23
telecombook_ru(config-if)#switchport mode access
telecombook_ru(config-if)#switchport access vlan 50
telecombook_ru(config)#interface Gi0/24
telecombook_ru(config-if)#switchport mode trunk
telecombook_ru(config-if)#switchport trunk encapsulation dot1q
Теперь, когда коммутатор настроен, необходимо указать IP адреса, предоставленные интернет-провайдерами и адрес шлюза для хостов в VLAN 50. Указывать их будем на маршрутизаторе для каждого VLAN с помощью виртуальных интерфейсов. Так, мы разделим один физический интерфейс Gi0/0 на три виртуальных Gi0/0.50, Gi0/0.100, Gi0/0.200 под каждый VLAN и настроим так, как приведено на схеме не забыв про NAT:
Для настройки маршрутизатора применим следующие команды:
telecombook_ru#conf t
telecombook_ru(config)#interface Gi0/0.50
telecombook_ru(config-if)#ip address 192.168.1.254 255.255.255.0
telecombook_ru(config-if)#ip nat inside
telecombook_ru(config)#interface Gi0/0.100
telecombook_ru(config-if)#ip address 100.50.50.1 255.255.255.252
telecombook_ru(config-if)#ip nat outside
telecombook_ru(config)#interface Gi0/0.200
telecombook_ru(config-if)#ip address 200.75.75.1 255.255.255.252
telecombook_ru(config-if)#ip nat outside
telecombook_ru(config)#ip access-list extended nat-traffic
telecombook_ru(config-acl)#10 permit ip 192.168.1.0 0.0.0.255 any
telecombook_ru(config-acl)#exit
telecombook_ru(config)#route-map isp1 permit 10
telecombook_ru(config-route-map)#match ip address nat-traffic
telecombook_ru(config-route-map)#match interface GigabitEthernet0/0.100
telecombook_ru(config-route-map)#exit
telecombook_ru(config)#route-map isp2 permit 10
telecombook_ru(config-route-map)#match ip address nat-traffic
telecombook_ru(config-route-map)#match interface GigabitEthernet0/0.200
telecombook_ru(config-route-map)#exit
telecombook_ru(config)#ip nat inside source route-map isp1 interface GigabitEthernet0/0.100 overload
telecombook_ru(config)#ip nat inside source route-map isp2 interface GigabitEthernet0/0.200 overload
Завершим конфигурацию добавлением двух маршрутов по умолчанию:
telecombook_ru(config)#ip route 0.0.0.0 0.0.0.0 interface Gi0/0.100
telecombook_ru(config)#ip route 0.0.0.0 0.0.0.0 interface Gi0/0.200
Так как маршруты имеют одинаковую метрику, маршрутизатор будет балансировать нагрузку между ними.
Надеюсь, что данный материал когда-нибудь окажется для вас полезным. Спасибо!
Автор: stillevil