Настраиваем боевой Cisco роутер
Vasiliy «canavar» Ozerov (fr33m2n@gmail.com)
Ты думаешь, что работать с сетевым оборудованием Cisco Systems могут только бородатые дядьки с сертификатами не ниже CCIE? Постараюсь тебя в этом переубедить.
Содержание:
- Получение оборудования
- Cisco IOS
- Постановка задачи
- Подключение к циске
- Подключение сетей
- Соединение с PPTP сервером
- Натим пользователей
- Используем внешние ресурсы
- Настройка циски в качестве DNS и DHCP сервера
- Заключение
- Врезка: Различные компоновки Cisco IOS
- Боковые выносы
В наше время только ленивый или далекий от компьютеров человек не слышал о Cisco. Эта компания довольно давно работает в сфере информационных технологий и разрабатывает сетевое оборудование, которое позволяет решить практически все возникающие задачи. Как ты понимаешь, стоят такие девайсы не 10$, а намного дороже. Именно поэтому я советую тебе сначала потренироваться на эмуляторах (Xenomips, GNS3, Boson Router Simulator), и только потом уже переходить к реальным системам. Если же тебе просто не терпится повертеть в руках реальную железку от Cisco, то можешь походить по различным барахолкам и приобрести оборудование там. Именно так я и поступил, купив маршрутизатор Cisco 1721 и модуль расширения WIC-4ESW (свитч на 4 порта) за 10k деревянных. Вполне нормально, если сравнивать с ценами в магазинах — там бы с меня содрали еще тысяч 20, как минимум. Думаю, что ты сам разберешься, какую модельку прикупить, а я пока расскажу про используемое программное обеспечение.
IOS (Internetwork Operation System, межсетевая операционная система) устанавливается на сетевое оборудование Cisco и предоставляет возможность гибкой настройки системы. По хорошему, IOS нужно покупать, но если ты ограничен в средствах, можешь поискать нужный IOS-образ на форумах (например ). Версию операционки нужно подбирать под конкретные задачи. Допустим, имидж IOS называется так: c1700-ipbasek9-mz.124-12.bin (на моей циске установлен именно он). В данном случае:
- c1700 означает, что данный IOS предназначен для оборудования 17-ой серии;
-
ipbasek9 — набор возможностей; ipbase расшифровывается как начальный уровень функциональности, обеспечивает базовый роутинг, т.е. статические маршруты, RIP, OSPF, EIGRP, только на IPv4, включает NAT и VLAN’ы (802.1q и ISL); k9 — поддержка шифрования;
- mz показывает, что данный файл является бинарным (для сжатых используется tar);
- 124-12 — номер релиза.
Для выбора подходящего IOS’а используется утилита Feature Navigator. Находится она на официальном сайте Cisco: . Искать подходящий IOS можно по набору возможностей, по используемой платформе, а также по названию образа. Чтобы посмотреть, какой у тебя установлен IOS, достаточно набрать в консоли:
cisco#show version
Эта команда выдаст тебе полную информацию о твоей циске — количество памяти, аптайм, модель процессора, доступные интерфейсы, значение конфигурационного регистра.
В начальных условиях у нас есть два провайдера: первый предоставляет доступ в интернет через локальную сеть с серым (читай: приватным) IP, второй выдает белый IP, но только после установления соединения с PPTP сервером. Также у нас имеется две локальных сети с адресами 192.168.1.0/24 и 192.168.3.0/24. Адрес сети демилитаризованной зоны (DMZ) — 10.10.20.0/24. Формулируем задачи:
- Cisco должна устанавливать соединение с PPTP сервером.
- Локальные сети должны выходить в интернет через первого провайдера (который выдает серый IP).
- Все запросы на внешний IP должны перенаправляться в DMZ на соответствующие сервера.
- Для локальных сетей циска должна выступать в роли DNS и DHCP серверов.
Я предпочитаю настраивать сетевое оборудование через консоль, чтобы при неполадках в сети оставалась возможность продолжения настройки. Итак, один конец консольного провода цепляем к циске, другой конец — к компу, используя COM-порт. Чтобы подключиться к девайсу, запускаем любую терминальную программу и соединяемся с COM-портом на скорости 9600. Как вариант, можешь использовать HyperTerminal, который включен в состав Windows. После подключения жмем <Enter> и входим в привилегированный режим командой «enable». В данный момент можно посмотреть состояние различных счетчиков, текущую и стартовую конфигурацию, а также произвести поиск неисправностей в сети (я имею ввиду ping, traceroute). Для перехода в режим конфигурации необходимо ввести команду «configure terminal». Именно в этом режиме мы и будем производить всю дальнейшую настройку.
В принципе, здесь ничего сложного нет — подключаем витую пару в циску и присваиваем IP адреса интерфейсам. Все бы хорошо, но порты модуля WIC-4ESW — это switch порты, т.е. на них нельзя выставить IP адрес (L2 switching). Решение сводится к добавлению физических портов в определенные VLAN’ы. Для тех, кто не в курсе: VLAN — это виртуальная локальная вычислительная сеть, отличие которой от обычной сети состоит в том, что отделяется она от других сетей не физически (установка нового оборудования), а логически (на управляемом коммутаторе ставится соответствие между его портами и определенными VLAN). Другими словами, для решения нашей проблемы нам необходимо создать 4 виртуальных сети, присвоить им IP адреса и сказать циске, что этот порт принадлежит этой сети, а этот — этой. Чтобы не занимать драгоценное журнальное место и не повторяться, приведу пример только для одной сети:
cisco#vlan database
cisco(vlan)#vlan 2
VLAN 2 added:
Name: VLAN0002
cisco(vlan)#ex
Теперь настроим наш vlan интерфейс:
cisco#conf t ! Настраиваем vlan 2 cisco(config)#int vlan 2 ! Выставляем IP адрес cisco(config-if)#ip address 192.168.1.254 255.255.255.0 cisco(config-if)#^Z
Последнее, что необходимо сделать — добавить физический интерфейс в нужный нам vlan:
! Конфигурируем интерфейс fastethernet 4 cisco(config)#int fa4 ! Тип порта (может быть еще trunk) cisco(config-if)#switchport mode access ! Добавляем этот порт во второй vlan cisco(config-if)#switchport access vlan 2
Посмотрим, что получилось:
cisco#sh ip int brief vlan 2 Interface IP-Address OK? Method Status Protocol Vlan2 192.168.1.254 YES manual up up cisco#sh ip int brief fa4 Interface IP-Address OK? Method Status Protocol FastEthernet4 unassigned YES unset up up cisco#sh vlan-switch
VLAN Name Status Ports
—- ——————————— ——— ——
1 default active
2 VLAN0002 active Fa4
… skipped …
Можешь попробовать пропинговать кого-нибудь, должно получиться. В качестве упражнения советую подключить остальные сети по аналогии с тем, как мы только что это сделали. Советую также добавлять описание к интерфейсу с помощью команды description, которую необходимо вводить в режиме конфигурирования интерфейса. Это необязательная процедура, но через некоторое время без таких пометок будет сложно разобраться, что к чему относится.
Когда я покупал циску, мне казалось, что установить соединение с VPN сервером по протоколу PPTP - довольно простая задача. Но на деле оказалось, что девайс умеет соединяться только по протоколу L2TP. Прогуглив этот вопрос, я нашел решение данной проблемы, которое, как мне кажется, является больше хаком, чем документированной возможностью. Нижеследующая команда не появляется по нажатию "?", ее нужно ввести вручную. Благодаря этой команде при выборе протокола подключения появляется возможность выбрать протокол PPTP.
cisco(config)#service internal
Включаем и настраиваем vpdn (Virtual Private Dialup Network):
! Включаем vpdn cisco(config)#vpdn enable ! Создаем группу с номером 1 cisco(config)#vpdn-group 1 cisco(config-vpdn)#request-dialin ! Указываем протокол соединения cisco(config-vpdn-req-in)#protocol pptp cisco(config-vpdn-req-in)#rotary-group 0 ! Указываем VPN сервер cisco(config-vpdn)#initiate-to ip _vpn_server_ip_
Понятное дело, что вместо "_vpn_server_ip_" необходимо подставить IP адрес своего VPN сервера. Теперь создаем сам интерфейс, на котором укажем параметры соединения:
! Настраиваем интерфейс VPN клиента cisco(config)#interface Dialer0 ! Указываем mtu cisco(config-if)#mtu 1440 ! Автоматически получать IP адрес cisco(config-if)#ip address negotiated ! Благодаря данной команде наш интерфейс будет всегда в состоянии "up" cisco(config-if)#ip pim dense-mode ! Выставляем инкапсуляцию ppp cisco(config-if)#encapsulation ppp cisco(config-if)#dialer in-band cisco(config-if)#dialer idle-timeout 0 cisco(config-if)#dialer string 123 cisco(config-if)#dialer vpdn ! Номер dialer-list'а - для просмотра подходящих данных cisco(config-if)#dialer-group 1 ! Отрубаем поддержку cisco discovery protocol на этом интерфейсе cisco(config-if)#no cdp enable ! Указываем логин и пароль для аутентификации cisco(config-if)#ppp chap hostname _login_ cisco(config-if)#ppp chap password 0 _password_
И добавляем dialer-list, где будут задаваться типы данных (в данном случае весь протокол IP), которые будут заставлять циску устанавливать соединение:
cisco(config)#dialer-list 1 protocol ip permit
Вот вроде бы и все. Теперь соединение с VPN сервером должно пройти нормально. Проверяем:
cisco#sh ip int dial0 Interface IP-Address OK? Method Status Protocol Dialer0 xxx.xxx.xxx.xxx YES IPCP up up
Соединение успешно установлено. Переходим к самому интересному - выпуску пользователей в интернет.
Как сказано в техзадании, нам необходимо выпускать пользователей в интернет через первого провайдера, а второго оставить только для внешних сервисов. Самым простым способом будет установить дефолтный маршрут на 1-ого провайдера и NAT'ить все пакеты, идущие из наших сетей. Так и поступим:
cisco(config)#ip route 0.0.0.0 0.0.0.0 ISP1_GW
Маршрут добавили, теперь создаем Access List, который будет ловить необходимые нам пакеты, для которых нужно делать NAT. Прошу заметить, что в данных правилах используется не обычная маска, а инвертная:
! Создаем access-list номер 1 cisco(config)#access-list 1 permit 192.168.1.0 0.0.0.255 cisco(config)#access-list 1 permit 192.168.3.0 0.0.0.255
Т.к. введенный ACL не применяется на интерфейсе для разграничения доступа, то правила permit и deny следует понимать не как разрешить или запретить, а как просмотр подходящих (permit) и неподходящих (deny) пакетов. При написании NAT правил нам придется указать адреса источников, которые необходимо будет заменить. Именно для этих целей нам пригодится наш ACL. В итоге схема будет выглядеть так: адрес источника будет модифицироваться только в тех пакетах, которые подошли под этот ACL.
! Указываем в качестве исходных адресов access-list 1 cisco(config)#ip nat inside source list 1 interface Vlan4 overload
Здесь мы заменяем адреса на адрес интерфейса vlan 4. В завершающей стадии нам нужно указать, какие интерфейсы являются внутренними, а какие - внешними. Делается это с помощью команд «ip nat insideip nat outside» соответственно. Команды вводятся при конфигурировании интерфейса:
cisco(config)#int vlan 2 cisco(config-if)#ip nat inside cisco(config-if)#int vlan 4 cisco(config-if)#ip nat outside
В данном случае vlan2 является внутренней сетью, а vlan4 - внешней.
Следующим нашим шагом будет перенаправление всех данных от внешних клиентов к нашим внутренним серверам. Сразу не станем переходить к настройке, сначала разберемся, как это должно работать. Итак, на внешний интерфейс приходят запросы на порт 80, наша циска перенаправляет полученные данные Web серверу, который стоит в DMZ. После обработки данных Web сервер начинает отвечать, и тут возникает большая проблема. Ответ Web сервера попадает к циске, у которой default route стоит ISP1_GW, именно через этот шлюз она и отправит ответ. Если не понятно, в чем проблема, то представь ситуацию, когда ты спрашиваешь у одного человека "как дела", а отвечает тебе совершенно другой, незнакомый человек. На незнакомца ты, естественно, внимания не обращаешь. В нашем IT случае ситуация аналогична: запрос мы отправили на один IP, а ответ пришел с какого-то совершенно левого. Исправлять такое поведение будем с помощью Policy Based Routing. Нам необходимо создать ACL, определяющий пакеты, которые должны быть отправлены через канал второго провайдера:
! Создаем расширенный access-list номер 100 ! Т.к. в расширенных листах нет отрицания, то перед разрешающими правилами ! пишем запрещающие cisco(config)#access-list 100 deny tcp host 10.10.20.2 eq www \ 192.168.1.0 0.0.0.255 cisco(config)#access-list 100 deny tcp host 10.10.20.2 eq www \ 192.168.3.0 0.0.0.255 cisco(config)#access-list 100 permit tcp host 10.10.20.2 eq www any
Первые два правила deny означают, что к пакетам, идущим от веб-сервера к локальным сетям, не будет применяться политика маршрутизации. А остальные пакеты попадут в политику WEB:
cisco(config)#route-map WEB permit 10 ! Определяем область действия политики - только на адреса, подпадающие ! под access-list 100 cisco(config-route-map)#match ip address 100 cisco(config-route-map)#set ip next-hop 172.17.0.1
Директива match указывает, какие данные попадают под эту политику, команда «set ip next-hop» задает следующий hop. Для полного счастья нам осталось сделать три очень простых действия. Во-первых, перенаправить данные из интернета к Web серверу. Во-вторых, выполнить трансляцию ответов от Web сервера. В-третьих, применить политику маршрутизации на интерфейсе, который смотрит в DMZ. Первое действие осуществляется в одну строчку:
cisco(config)#ip nat inside source static tcp _web_server_ip_ 80 \ xxx.xxx.xxx.xxx 80 extendable
Второе также не отличается особой сложностью:
cisco(config)#ip nat inside source list 100 interface Dialer0 overload
Напоминаю, что имя внешнего интерфейса - Dialer0, и что на нем необходимо сделать «ip nat outside», иначе IOS не будет NAT'ить данные на нем. Третьим действием применяем политику маршрутизации:
cisco(config)#int vlan 5 cisco(config-if)#ip policy route-map WEB
В принципе, на этом можно было бы закончить настройку нашего боевого роутера, если бы не его возможности по работе DNS и DHCP.
Настройка циски в качестве DNS и DHCP сервера
Вообще говоря, оборудование Cisco ориентировано на маршрутизацию и коммутацию данных в сетях, но никак не на работу в качестве DNS сервера. Для этого лучше выделить отдельную машинку или использовать уже существующую. Я же покажу пример настройки сервера DNS чисто в образовательных целях. Настройка сводится к указанию адресов вышестоящих DNS и, если нужно, созданию каких-либо внутренних зон. Ниже представлен пример настройки с комментариями:
! Указываем DNS сервера провайдера cisco(config)#ip name-server abc.abc.abc.abc cisco(config)#ip name-server bca.bca.bca.bca ! Включаем наш DNS сервак cisco(config)#ip dns server ! Создаем primary зону test cisco(config)#ip dns primary test soa ns.test postmaster.test ! Добавляем запись типа NS cisco(config)#ip host test ns ns.test ! Добавляем записи типа A cisco(config)#ip host ns.test 192.168.1.254 cisco(config)#ip host anyhost.test 192.168.1.250
DHCP также лучше вынести на отдельный сервер, но если нет такой возможности, воспользуемся встроенными средствами. Настраивать, по сути, необходимо пулы, которые привязываются к конкретным сетям командой network. Для каждого пула выставляются специфические настройки - адреса DNS серверов, адрес дефолтного маршрута, WINS сервера и т.д.:
! Создаем первый пул cisco(config)#ip dhcp pool FirstPool ! Указываем сеть cisco(dhcp-config)#network 192.168.1.0 255.255.255.0 ! Специфические настройки cisco(dhcp-config)#default-router 192.168.1.254 cisco(dhcp-config)#dns-server 192.168.1.254 cisco(dhcp-config)#domain-name domain1 cisco(dhcp-config)#exit ! Создаем второй пул cisco(config)#ip dhcp pool SecondPool ! Указываем сеть cisco(dhcp-config)#network 192.168.3.0 255.255.255.0 ! Специфические настройки cisco(dhcp-config)#domain-name domain2 cisco(dhcp-config)#default-router 192.168.3.2 cisco(dhcp-config)#dns-server 192.168.3.2 cisco(dhcp-config)#exit ! Указываем, какие адреса DHCP не будет присваивать клиентам cisco(config)#ip dhcp excluded-address 192.168.1.200 192.168.1.254 cisco(config)#ip dhcp excluded-address 192.168.3.1 192.168.3.10
Мне кажется, настройка DHCP - довольно прозрачная процедура, и вопросов тут быть не должно. А если они и возникнут, то в официальной документации есть хорошие примеры с объяснениями.
Конечно же в рамках одной статьи нереально раскрыть все тонкости и приемы работы с цисками, но я надеюсь, что мне удалось показать, что все не так сложно, как кажется, и главное в этом деле практика. Удачи!
Врезка: Различные компоновки Cisco IOS
- IP Base - начальный уровень функциональности, включается во все другие "feature sets". Обеспечивает базовый роутинг, т.е. статические маршруты, RIP, OSPF, EIGRP, только на IPv4. Включает VLAN (802.1Q и ISL) и NAT.
- IP Services (для L3 свичей) - протоколы динамической маршрутизации, NAT, IP SLA.
- Advanced IP Services - добавляется поддержка IPv6.
- IP Voice - добавляет функциональность VoIP и VoFR.
- Advanced Security - добавляется IOS/Firewall, IDS, SSH и IPSec (DES, 3DES и AES).
- Service Provider Services - добавляется IPv6, Netflow, SSH, BGP, ATM и VoATM.
- Enterprise Base - добавляется поддержка протоколов IPX и AppleTalk. Также включаются IBM features типа DLSw+, STUN/BSTUN и RSRB.
INFO
-
Cisco IOS - это многозадачная операционная система, выполняющая функции сетевой организации, маршрутизации, коммутации и передачи данных.
- CLI - интерфейс командной строки Cisco IOS.
-
Dynamips — программный эмулятор маршрутизаторов Cisco. Позволяет эмулировать аппаратную часть маршрутизаторов, непосредственно загружая и взаимодействуя с реальными образами Cisco IOS. Работает на Windows, большинстве Linux-систем, а также на Mac OS X.
-
Подробнее о VLAN'ах и создании виртуальной локальной сети читай в статье "Шаманство над виланами", опубликованной в январском номере ][ за 2009 год.
Статья опубликована в майском номере журнала "Xakep" за 2009 год.






