Конфигурирование рутеров Cisco

Первоисточник: Void.ru, статья - 24/01/2001.
Автор: neo

Роутеры фирмы Cisco являются весьма надежным оборудованием и по удобству конфигруирования, по мнению автора, превосходят своих конкурентов, правда, и стоимость их на 20% превышает аналоги других производителей в классе коммутаторов и роутеров для компаний среднего звена.

В статье мы рассмотрим логическое деление блока адресов выделенного ISP на подсети, повторяющие структуру компании по отделам, конфигурирование роутера серии Cisco 2500 для организации доступа небольшой компании в Интернет с подключением по сихронному каналу 256K к ISP и фильтрацией IP пакетов. Наш роутер будет иметь один задействованный серийный порт для подключения к ISP (Serial 0) и один Ethernet порт (е0), смотрящий в локальную сеть компании, под которую ISP выделил сеть на 254 хоста.

1. Начальное конфигурирование роутера

На маршрутизаторах Cisco работает высокопроизводительная и созданная с нуля операционная система IOS, находящаяся в энергонезависимой памяти (flash). Типичная модель серии 2500 имеет 1 Ethernet порт подключаемый к HUB-у или коммутатор в локальной сети через трансивер AUI->UTP и два серийных порта для подключения к глобальным каналам (Seriаl 0, Serial 1). Имена интерфейсов можно указывать как Ethernet0 или e 0. Если это модульный коммутатор Catalyst то указывается сначала тип интерфейса, затем слот а затем порт.

Например 3-я ethernet плата и 2 порт на плате указывается как "e 3/2". Помимо этого имеется консольный порт для конфигурирования роутера (включаемый в серийный порт компьютера) и дополнительно AUX порт для подключения модема. Конфигурирования роутера можно производить как через консольный порт, AUX порт и через сессию telnet .

Более новые версии IOS позволяют работать с роутером по SSH сеансу. Но при первой загрузке роутер требуется сконфигурировать через консольный порт. Для этого установив скорость порта Serial в 9600 на UNIX-хосте начинаем конфигурирование в терминальной программе. Например это может быть tip, cu, minicom. Для tip последние две строчки конфига /etc/remote должны выглядеть так : # Hardwired line cuaa0:dv=/dev/cuaa0:br#9600: cuaa1:dv=/dev/cuaa1:br#9600: Подсоединив консольный кабель (идет в поставке) к роутеру (порт CON) и другой конец через преходник к ПК заходим на консоль Cisco роутера : bash-2.04#tip cuaa0 Затем включаем роутер и видим, что сначала загружается начальный загрузчик bootstrap : System Bootstrap, Version 5.2(8a), RELEASE SOFTWARE Copyright (c) 1986-1995 by cisco Systems 2500 processor with 16384 Kbytes of main memory F3: 3268680+81304+204996 at 0x3000060 Restricted Rights Legend Use, duplication, or disclosure by the Government is subject to restrictions as set forth in subparagraph (c) of the Commercial Computer Software - Restricted Rights clause at FAR sec. 52.227-19 and subparagraph (c) (1) (ii) of the Rights in Technical Data and Computer Software clause at DFARS sec. 252.227-7013. cisco Systems, Inc. 170 West Tasman Drive San Jose, California 95134-1706 Дальше начальный загрузчик загружает саму операционную систему IOS из флеша (flash) : Cisco Internetwork Operating System Software IOS (tm) 3000 Software (IGS-I-L), Version 11.0(4), RELEASE SOFTWARE (fc1) Copyright (c) 1986-1995 by cisco Systems, Inc. Compiled Mon 18-Dec-95 17:49 by alanyu Image text-base: 0x0301C8DC, data-base: 0x00001000 cisco 2500 (68030) processor (revision D) with 16380K/2048K bytes of memory. Processor board ID 02413443, with hardware revision 00000000 Bridging software. X.25 software, Version 2.0, NET2, BFE and GOSIP compliant. 1 Ethernet/IEEE 802.3 interface. 2 Serial network interfaces. 32K bytes of non-volatile configuration memory. 4096K bytes of processor board System flash (Read ONLY) Press RETURN to get started! Cisco Internetwork Operating System Software IOS (tm) 3000 Software (IGS-I-L), Version 11.0(4), RELEASE SOFTWARE (fc1) Copyright (c) 1986-1995 by cisco Systems, Inc. Compiled Mon 18-Dec-95 17:49 by alanyu Надо сказать что IOS можно загрузить не только из FLASH но и из ОЗУ роутера а также с TFTP сервера. Поскольку это первая загрузка роутера то нам предлагают пройти этапы конфигурирования роутера (эта программа запускается как setup). Как видно ниже процесс конфигурирования достаточно прозрачен и прост. После того как вы ответите на вопросы программа построит конфиг и запишет его в NVRAM и начнет перезагружаться. Итак начинаем конфигурирование интерфейсов в программе setup: --- System Configuration Dialog --- At any point you may enter a question mark '?' for help. Refer to the 'Getting Started' Guide for additional help. Use ctrl-c to abort configuration dialog at any prompt. Default settings are in square brackets '[]'. Would you like to enter the initial configuration dialog? [yes]: yes Просматриваем список интерфейсов на нашем роутере : First, would you like to see the current interface summary? [yes]: Any interface listed with OK? value "NO" does not have a valid configuration Interface IP-Address OK? Method Status Protocol Ethernet0 unassigned NO not set up up Serial0 unassigned NO not set down down Serial1 unassigned NO not set down down Configuring global parameters: Имя роутера : Enter host name [Router]: Вводим так enable-secret для доступа к конфигурированию роутера : The enable secret is a one-way cryptographic secret used instead of the enable password when it exists. Enter enable secret: s1 Затем вводим enable-password (оставленно для совместимости со старыми версиями IOS) : The enable password is used when there is no enable secret and when using older software and some boot images. Enter enable password: s2 Вводим пароль на виртульный терминал : Enter virtual terminal password: s2 Разрешаем SNMP для того чтобы мы могли получить статистику : Configure SNMP Network Management? [yes]: yes Community string [public]: public1 Наш роутер имеет только поодежку IP (без IPX), его мы и конфигурируем : Configure IP? [yes]: yes Поскольку с ISP у нас роутинг будет статический, мы не включаем протоколы маршрутизации : Configure IGRP routing? [yes]: no Configure RIP routing? [no]: Задаем IP адресс на Ethernet интерфейсе, оставляя интерфейс Serial 0 as unnumbered (что это такое разберем позже) : Configuring interface parameters: Configuring interface Ethernet0: Is this interface in use? [yes]: Configure IP on this interface? [yes]: IP address for this interface: 1 200.1 200.200.1 Number of bits in subnet field [0]: Class C network is 200.200.200.0, 0 subnet bits; mask is 255.255.255.0 Configuring interface Serial0: Is this interface in use? [yes]: Configure IP on this interface? [yes]: no Отключаем Serial1 : Configuring interface Serial1: Is this interface in use? [yes]: no The following configuration command script was created: И вот в итоге мы получаем такой файл конфигурации : hostname Router enable secret 5 $1$FE5i$sIvZuXxqJWjFllqA5heFn1 enable password s2 line vty 0 4 password s2 snmp-server community public1 ! ip routing ! interface Ethernet0 ip address 200.200.200.1 255.255.255.0 ! interface Serial0 no ip address ! interface Serial1 shutdown no ip address ! end Затем отвечаем положительно на вопрос о записи этой конфигурации в NVRAM и запуске ее : Use this configuration? [yes/no]: yes Building configuration... [OK]Use the enabled mode 'configure' command to modify this configuration. Press RETURN to get started! %SYS-5-RESTART: System restarted -- Cisco Internetwork Operating System Software IOS (tm) 3000 Software (IGS-I-L), Version 11.0(4), RELEASE SOFTWARE (fc1) Copyright (c) 1986-1995 by cisco Systems, Inc. Compiled Mon 18-Dec-95 17:49 by alanyu Router> Привыкайте к тому что Вам придется 90% времени работать с тектовым конфигом, хотя в природе есть такой програмный продукт как CiscoWorks но он хорош только при наличии огромного числа роутеров (peers). Итак мы находимся в консоли роутера. Все наши действия выполняются интерпретатором команд EXEC. Выполнение команд ведется в одном из двух режимов - пользовательском и привилегированном. Пользовательский режим позволяет собирать общую информацию о роутере при вводе команд на консоли, например наш роутер имеет приглашение : Router> введя команду show version мы увидим с чем мы работаем : Router>show version Cisco Internetwork Operating System Software IOS (tm) 3000 Software (IGS-I-L), Version 11.0(4), RELEASE SOFTWARE (fc1) Copyright (c) 1986-1995 by cisco Systems, Inc. Compiled Mon 18-Dec-95 17:49 by alanyu Image text-base: 0x0301C8DC, data-base: 0x00001000 ROM: System Bootstrap, Version 5.2(8a), RELEASE SOFTWARE ROM: 3000 Bootstrap Software (IGS-RXBOOT), Version 10.2(8a), RELEASE SOFTWARE (fc1) Router uptime is 3 days, 1 hour, 20 minutes System restarted by error - Software forced crash, PC 0x311B808 System image file is "flash:igs-in-l.110-4", booted via flash cisco 2500 (68030) processor (revision D) with 16380K/2048K bytes of memory. Processor board ID 02413443, with hardware revision 00000000 Bridging software. X.25 software, Version 2.0, NET2, BFE and GOSIP compliant. 1 Ethernet/IEEE 802.3 interface. 2 Serial network interfaces. 32K bytes of non-volatile configuration memory. 4096K bytes of processor board System flash (Read ONLY) Configuration register is 0x2102 Состояние всех интерфейсов можно просмотреть командой : Router>show int Ethernet0 is up, line protocol is up Hardware is Lance, address is 0000.0c5d.8231 (bia 0000.0c5d.8231) Internet address is 200.200.200.1 255.255.255.0 MTU 1500 bytes, BW 10000 Kbit, DLY 1000 usec, rely 255/255, load 1/255 Encapsulation ARPA, loopback not set, keepalive set (10 sec) ARP type: ARPA, ARP Timeout 4:00:00 Last input 0:00:10, output 0:00:09, output hang never Last clearing of "show interface" counters never Output queue 0/40, 0 drops; input queue 0/75, 0 drops 5 minute input rate 0 bits/sec, 0 packets/sec 5 minute output rate 0 bits/sec, 0 packets/sec 16094 packets input, 1867191 bytes, 0 no buffer Received 16094 broadcasts, 0 runts, 0 giants 16 input errors, 16 CRC, 16 frame, 0 overrun, 0 ignored, 0 abort 0 input packets with dribble condition detected 30833 packets output, 2896155 bytes, 0 underruns 3 output errors, 416 collisions, 1 interface resets, 0 restarts 0 output buffer failures, 0 output buffers swapped out Serial0 is down, line protocol is down Hardware is HD64570 MTU 1500 bytes, BW 1544 Kbit, DLY 20000 usec, rely 255/255, load 1/255 Encapsulation HDLC, loopback not set, keepalive set (10 sec) Last input never, output never, output hang never Last clearing of "show interface" counters never Output queue 0/40, 0 drops; input queue 0/75, 0 drops 5 minute input rate 0 bits/sec, 0 packets/sec 5 minute output rate 0 bits/sec, 0 packets/sec 0 packets input, 0 bytes, 0 no buffer Received 0 broadcasts, 0 runts, 0 giants 0 input errors, 0 CRC, 0 frame, 0 overrun, 0 ignored, 0 abort 0 packets output, 0 bytes, 0 underruns 0 output errors, 0 collisions, 8805 interface resets, 0 restarts 0 output buffer failures, 0 output buffers swapped out 0 carrier transitions DCD=up DSR=up DTR=down RTS=down CTS=up Serial1 is administratively down, line protocol is down Hardware is HD64570 MTU 1500 bytes, BW 1544 Kbit, DLY 20000 usec, rely 255/255, load 1/255 Encapsulation HDLC, loopback not set, keepalive set (10 sec) Last input never, output never, output hang never Last clearing of "show interface" counters never Input queue: 0/75/0 (size/max/drops); Total output drops: 0 Output queue: 0/64/0 (size/threshold/drops) Conversations 0/0 (active/max active) Reserved Conversations 0/0 (allocated/max allocated) 5 minute input rate 0 bits/sec, 0 packets/sec 5 minute output rate 0 bits/sec, 0 packets/sec 0 packets input, 0 bytes, 0 no buffer Received 0 broadcasts, 0 runts, 0 giants 0 input errors, 0 CRC, 0 frame, 0 overrun, 0 ignored, 0 abort 0 packets output, 0 bytes, 0 underruns 0 output errors, 0 collisions, 4 interface resets, 0 restarts 0 output buffer failures, 0 output buffers swapped out 0 carrier transitions DCD=down DSR=down DTR=down RTS=down CTS=down Если ввести сокращенно команду sh int e0, то вы увидите информацию только по Ethernet интерфейсу. Как вы видите этой информации часто хватает чтобы определить причину неисправности какого либо интерфейса или кабельного соединения. По команде show prot вы увидите какие протоколы активизированы на интерфейсах. Напрмер сейчас у нас нет соединения с ISP и на серийных интерфейсах у нас сплошные down. Заметьте что Serial1 у нас administratively down как неиспользуемый. Подробный список команд в пользовательском режиме можно получить введя команду "?" : Router>? Exec commands: connect Open a terminal connection disable Turn off privileged commands disconnect Disconnect an existing network connection enable Turn on privileged commands exit Exit from the EXEC help Description of the interactive help system lock Lock the terminal login Log in as a particular user logout Exit from the EXEC mrinfo Request neighbor and version information from a multicast router mstat Show statistics after multiple multicast traceroutes mtrace Trace reverse multicast path from destination to source name-connection Name an existing network connection pad Open a X.29 PAD connection ping Send echo messages ppp Start IETF Point-to-Point Protocol (PPP) resume Resume an active network connection rlogin Open an rlogin connection show Show running system information slip Start Serial-line IP (SLIP) telnet Open a telnet connection terminal Set terminal line parameters traceroute Trace route to destination tunnel Open a tunnel connection where List active connections x3 Set X.3 parameters on PAD Большая часть работ, такая как конфигурирование маршрутизации, программное выключение интерфейсов и создание ACL (списки доступа), измение глобального конфига осуществляются в привелигерованном режиме. Для этого требуется знать при велигерованный пароль. Перейдя в этот режим командой enable и введя пароль который мы ввели на этапе кофигурирования роутера программой setup мы увидим что список команд здесь более шире : Router>enable Password: Как видите курсор меняется на "#" (почти как у root-a в UNIX shell) : Router#? Exec commands: bfe For manual emergency modes setting clear Reset functions clock Manage the system clock configure Enter configuration mode connect Open a terminal connection copy Copy configuration or image data debug Debugging functions (see also 'undebug') disable Turn off privileged commands disconnect Disconnect an existing network connection enable Turn on privileged commands erase Erase flash or configuration memory exit Exit from the EXEC help Description of the interactive help system lock Lock the terminal login Log in as a particular user logout Exit from the EXEC mbranch Trace multicast route down tree branch mrbranch Trace reverse multicast route up tree branch mrinfo Request neighbor and version information from a multicast router mstat Show statistics after multiple multicast traceroutes name-connection Name an existing network connection no Disable debugging functions pad Open a X.29 PAD connection ping Send echo messages ppp Start IETF Point-to-Point Protocol (PPP) reload Halt and perform a cold restart resume Resume an active network connection rlogin Open an rlogin connection rsh Execute a remote command send Send a message to other tty lines setup Run the SETUP command facility show Show running system information slip Start Serial-line IP (SLIP) start-chat Start a chat-script on a line systat Display information about terminal lines telnet Open a telnet connection terminal Set terminal line parameters test Test subsystems, memory, and interfaces traceroute Trace route to destination tunnel Open a tunnel connection undebug Disable debugging functions (see also 'debug') verify Verify checksum of a Flash file write Write running configuration to memory, network, or terminal x3 Set X.3 parameters on PAD В этом режиме можно просмотреть файл конфигурации и редактировать его : Router#sh conf Using 465 out of 32762 bytes ! version 11.0 service config service udp-small-servers service tcp-small-servers ! hostname Router ! enable secret 5 $1$FE5i$sIvZuXxqJWjFllqA5heFn1 enable password s2 ! ! interface Ethernet0 ip address 200.200.200.1 255.255.255.0 ! interface Serial0 no ip address no fair-queue snmp-server community public1 RO ! interface Serial1 no ip address shutdown ! line con 0 exec-timeout 0 0 line aux 0 transport input all line vty 0 4 password s2 login ! end Войдем в режим редактирования глобального файла командой configure terminal и запретим напрмер использование small serivices, поскольку наш роутер должен будет выполнять роль шлюза в интернет и одновременно firewall-a (об этом в третьем разделе). Сначала посмотрим включены ли эти сервисы командой sh conf и увидим строчки : service udp-small-servers service tcp-small-servers Заходим в режим редактирования : Router#config terminal Отключаем эти сервисы вводом префикса "no" и полного написания команды: Router(config)#no service udp-small-servers Router(config)#no service tcp-small-servers Затем выходим из режима редактирования : Router(config)#exit Таким же образом можно быстро отключить какой либо интерфейс зайдя в режим конфигурирования интерфейса: Router#configure terminal Router(config)#interface ethernet 0 Router(config-if)#shutdown Router(config-if)#exit Router(config)#exit Router#write memory Building configuration ... Если вы введете no shutdown то интерфейс будет активизирован. В более новых версиях IOS команда write memory заменена на copy-runing config startup-config, т.е текущий файл конфигурации записывается в энергонезависимую память (NVRAM). Другая команда write terminal показыват действующую конфигурацию (в новых версия IOS - show running config).

На этом этапе нам надо убедиться что сетевой интерфейс Ethernet 0 у нас активирован его IP адрес - 200.200.200.1 пингуется из локальной сети.

Теперь перейдем к рассмотрению Serail интерфейсов. В большинстве случаев подключени синхронных интерфесов клиента и провайдера производится по V.35 интерфейсу и серийные порты конфмгурируются как unnunbered. Это дает возможность вести политику доступа в пределах одного адресного пространства манипулируя трафиком на одном ethernet интерфейсе. Для этого нам необходимо сконфигурировать интерфейс Serial 0 следующим образом, без присвоения ему IP адреса : Router#conf t Router(config)#int s0 Router(config-if)#ip unnumbered Ethernet 0 Router(config-if)#exit Router(config)#exit Router#wr mem IP адресс ethernet интерфеса нашего ISP 200.200.199.1 (а мы договорились что у ISP Serial скофигрурен как непронумерованный). Для того чтобы мы могли работать с ресурсами Интернета мы пропишем статический роутинг на этот IP через интерфес Serial 0: Router(config)#ip route 0.0.0.0 0.0.0.0 200.200.200.199.1 Serial0 Router#wr mem Провайдер со своей стороны прописывает роутинг на своем маршрутизаторе на IP адрес нашего роутера (200.200.200.1) на всю нашу сеть. Во всех хостах локальной сети мы должны поставить IP адрес нашего роутера (200.200.200.1) как адрес шлюза в интернет. Маска же должна соответствовать той подсети в которой находится данных хост, согласно логической структуре компании.

При поступлении пакета из внутреней сети наш роутер будет проверяет на адресован ли он в локальную сеть по заголовку IP пакета, если это не так то он адресует это пакет во внешнюю сеть через IP адрес роутера ISP. Сам же провайдер работает конечно не с применением статической маршрутизации а динамической (как правило в использованием BGP, IGRP протоколов).

Динамическая маршрутизация достаточно сложная тема и она будет освещаться на void.ru в отдельной статье. Теперь перейдем к пониманию принциппа деления подсетей на сети, что необходимо нам для организовации списки доступа по подсетям согласно отделам компании.

2. IP адресация и работа с подсетями

Системный администратор должен свободно ориентироватся в IP адресации и тому как применять подсети на практике. Крупные ISP помимо решения проблем безо- пасности ресурсов своей сети и клиентов постоянно управляют направлением трафика деля сети на подсети и надо сказать что во всем мире 80% парка маршрутизаторов составляют именно оборудование Cisco. Итак приступим. Как вы уже знаете адрес любого компьютера подключенного к сети интернета состоит из двух частей : адрес сети и адрес хоста, например в сети класса C полный адрес хоста выглядит так : 233.233.233.113, где 233.233.233 - адрес сети, а 113 - адрес хоста. Конечно, роутер работает с адресами в двоичном представлении (в качестве основания взято число "2")о чем и подет речь ниже. Полный IP адрес занимает 32 байта или 4 октета по 8 битов в каждом. Напрмер часто используемая маска сети 255.255.255.0 в двоичном представлении выглядит так : 11111111 11111111 11111111 00000000 Преобразование адресов из двоичной в десятичную систему счисления (CC) производится путем подсчета значащих (заполненных единицами ) битов в каждом октете и возведении в эту степень двойки. Напрмер число 255 есть 2 в восьмой степени или полностью заполненые все восемь битов в октете единицами (см. выше). Обратный же процесс преобразования адреса из десятичной CC в двоичную тоже прост - достаточно запомнить значение каждого бита в десятичной системе и путем операции "Логическое И" над адресом и нашим шаблоном получаем двоичное представление. 7 6 5 4 3 2 1 0 степень 2 -------------------------------------------------------------------------- 128 64 32 16 8 4 2 1 значение 2 Верхняя строка показывает нумерацию разрядов в октете или степень двойки в каждом разряде, нижняя строка - значение двойки в степени. Напрмер возмем адрес 233.233.233.111, и начнем перевод в двоичную СС. 233 в десятичную систему счисления : первый байт 233 получается суммой следующих слагаемых, которые мы набираем из нижней строки : 233 = 128+ 64 + 32 + 8 + 1 где позиции из которых были задействованны слагаемые мы записываем единицами, остальные нулями и получается - "11101001". Адрес хоста (последний октет) - десятичное 113 раскладывается так : 64 + 32 + 16 + 1 В итоге полный адрес будет выглядеть так : 11101001 11101001 11101001 01110001 Адрес сети в зависимости от первых трех битов делится на сети класса A, B, C, а маршрутизатор по первым битам определяет какого класса данная сеть, что ускоряет процесс маршрутизации. Ниже представленна таблица сетей, где AAA - часть адреса сети, BBB - часть адреса хоста

Сеть класса A (первый бит "0): AAA.HHH.HHH.HHH (диапазон AAA от 1 до 127), например : 63.12.122.12 Сеть класса B (первые два бита 10) : AAA.AAA.HHH.HHH (диапазон AAA от 128 до 191), например 160.12.234.12 Сеть класса C (первые три бита 110): AAA.AAA.AAA.HHH (диапазон AAA от 192 до 223), например 200.200.200.1 Соответственно число узлов в сети класса A (16 777 214) больше чем узлов в сети класса B (65534) и совсем немного станций можно определить в сети класа C - всего 254. Почему не 256 - спросите вы ? Дело в том что два адреса содержащего только нули и только единицы резервируется и от числа адресов отнимается 2 адреса 256-2 = 254. То же касается и части адреса сети : в сети класса A можно создать 128-1=127 сетей, так как один нулевой адрес сети используется при указании маршрута по умолчанию при статической маршрутизации, сетей класса B может быть 2 в 14 степени = 16384 (2 октета по 8 бит = 16 битов - 2 первых зарезервированных бита = 14), сетей класса C насчитывается 2 в 21 степени (3 октета по 8 бит = 24 бита - 3 первых зарезервированных бита = 21).

Еще пример. Есть маска сети 255.255.224.0 и ее надо представить в двоичном виде. Вспомнив что 255 в двоичной системе счисления есть 8 единиц мы записываем : 11111111 11111111 ???????? 00000000 Число 224 раскладывается по шаблону на следующие множители :

128 + 64 + 32 = 224 и заполнив единицами позиции из которых мы использовали слагаемые а нулями неиспользуемые позиции получаем полный адрес в двоичном представлении : получаем двоичное число 11111111 11111111 1110000 00000000 Теперь перейдем к пониманию того как же образуются подсети на примере сети класса C. Введение понятия подсети необходимо для экономии и четкого упорядочивания адресного пространства в компании, поскольку давать каждому отделу свое адресное пространство на 256 хостов в каждой сети нет необходимости да и накладно будет подобное для ISP. К тому же снижается трафик в сети поскольку роутер теперь может направлять пакеты непосрественно в нужную подсеть (определяющую отдел компании) а не всей сети.

Для того чтобы разделить сеть на подсети используют часть битов из адресного пространства описывающего адрес хоста с помошью маски подсети. Например в сети класса C мы можем использовать последний октет (8 битов), точнее его часть. Теперь разберемся с логической структурой компании . Компания имеет 10 отделов с числом компьютеров в каждом отделе не более 12-ти. Для такой струкруты подойдет маска подсети 255.255.255.240. Почему спросим мы ? Если представить маску в двоичном представлении : 1111111 11111111 11111111 11110000 то мы увидим что последний октет состоит из 4-х единиц и нулей. Поскольку 4 бита забирается из адреса сети для маски подсети то у нас остается 2 в четвертой степени адреса (2xx4=16 - адресов). Но согласно RFC использовать нулевые адреса и адреса состоящие их единиц не рекомендуется, значит из 16 адресов мы вычитаем 2 адреса = 14 адресов в каждой подсети. Аналогично мы можем подсчитать число подсетей равное : 2 в 4-й степени = 16 - 2 зарезервированных адреса , итого 14 подсетей.

Применяя данную методику посчета мы можем организовывать адресное пространство согласно структуре компании, в нашем случае каждый отдел будет иметь по 14 адресов с маской 255.255.255.240 с числом отделов до 14-ти. Но системный администратор должен знать еще и диапазон адресов в назначаемый им каждом отделе. Это делается путем вычитания первого подсети ("16) подсети из числа 256, т.е 256-16=240, 240-16=224... и так до тех пор пока не получится число меньше чем 16. Корректные адреса хостов лежат в диапазоне между подсетями, как в таблице : Подсеть 16 (17-30) Подсеть 32 (33-46) Подсеть 48 (49-62) Подсеть 64 (65-..) ... ... Подсеть 224 (225-238) В первой подсети 16 вы видите что диапазон адресов находится в границах от 17 до 30. "31" адрес (а если быть точнее часть адреса исключая биты подсети) состоит из единиц (используя 4 последних бита под адрес хоста мы получим широковещательный адрес) и мы не можем использовать его, само число 31 в двоичном представлении = 00011111. Старайтесь всегда переводить числа в двоичную с/с или пользуйтесь таблицами, ведь маршрутизатор получив неправильную маску или адрес хосто не сможет доставить обратно пакеты этому хосту.

Значит первую подсеть мы можем выделить секретариат отделу где каждый хост должен иметь маску подсети 255.255.255.240. При работе с маршрутизатором Вам следует учесть что использовать нулевую подсеть, c маской 255.255.255.128 в RFC не рекомендуется , но Вы можете решить эту проблему введя команду ip classless в глобальную кофигурацию роутера.

3. Создание списков доступа (ACL)

Списки доступа на роутере Сisco работают и строятся также как правил фильтрации в популярном IPFW или IPF на базе FreeBSD. Правила читаются в пордке следования и как только находится соот- ветствие шаблону маршрут пакета определяется этип правилом. Вы можете создавать списки доступа в глобальном конфиге (командой access list) а затем закрепить какой либо список за любым интерфейсом. Можно создать следующие списки доступа : Router#configure terminal Enter configuration commands, one per line. End with CNTL/Z. Router(config)#access-list ? <1-99> IP standard access list <100-199> IP extended access list <1100-1199> Extended 48-bit MAC address access list <200-299> Protocol type-code access list <700-799> 48-bit MAC address access list Вот полный синтактис команды : access-list номер_списка permit/deny протокол исходный_адрес порт целевой_адрес порт

Синтактис расширеного списка мы рассмотрим на примере строчки списка разрешающей работать по протоколу SMTP всем сотрудникам компании : Номер расширенного списка берем произвольный, 110 : Router(config)#access-list 110 ? deny Specify packets to reject permit Specify packets to forward Разрешаем прохождение пакетов : Router(config)#access-list 110 permit ? <0-255> An IP protocol number eigrp Cisco's EIGRP routing protocol gre Cisco's GRE tunneling icmp Internet Control Message Protocol igmp Internet Gateway Message Protocol igrp Cisco's IGRP routing protocol ip Any Internet Protocol ipinip IP in IP tunneling nos KA9Q NOS compatible IP over IP tunneling ospf OSPF routing protocol tcp Transmission Control Protocol udp User Datagram Protocol Вводим протокол : Router(config)#access-list 110 permit tcp ? A.B.C.D Source address any Any source host host A single source host Вводим исходный адрес (в нашем примере "any" означает любой хост или сеть) : Router(config)#access-list 110 permit tcp any ? A.B.C.D Destination address any Any destination host eq Match only packets on a given port number gt Match only packets with a greater port number host A single destination host lt Match only packets with a lower port number neq Match only packets not on a given port number range Match only packets in the range of port numbers Вводим целевой адрес : Router(config)#access-list 110 permit tcp any any ? eq Match only packets on a given port number established Match established connections gt Match only packets with a greater port number log Log matches against this entry lt Match only packets with a lower port number neq Match only packets not on a given port number precedence Match packets with given precedence value range Match only packets in the range of port numbers tos Match packets with given TOS value <cr> Указываем что мы хотим только один критерий - номер порта равный smtp (eq) : Router(config)#access-list 110 permit tcp any any eq ? <0-65535> Port number bgp Border Gateway Protocol (179) chargen Character generator (19) cmd Remote commands (rcmd, 514) daytime Daytime (13) discard Discard (9) domain Domain Name Service (53) echo Echo (7) exec Exec (rsh, 512) finger Finger (79) ftp File Transfer Protocol (21) ftp-data FTP data connections (used infrequently, 20) gopher Gopher (70) hostname NIC hostname server (101) irc Internet Relay Chat (194) klogin Kerberos login (543) kshell Kerberos shell (544) login Login (rlogin, 513) lpd Printer service (515) nntp Network News Transport Protocol (119) pop2 Post Office Protocol v2 (109) pop3 Post Office Protocol v3 (110) smtp Simple Mail Transport Protocol (25) sunrpc Sun Remote Procedure Call (111) syslog Syslog (514) tacacs TAC Access Control System (49) talk Talk (517) telnet Telnet (23) time Time (37) uucp Unix-to-Unix Copy Program (540) whois Nicname (43) www World Wide Web (HTTP, 80) И вводим порт smtp (можно было ввести и "25) : Router(config)#access-list 110 permit tcp any any eq smtp Теперь вводим остальные строчки списка доступа под наши задачи. Разрешаем работу с POP3 серверами сотрудникам компании : access-list 110 permit tcp any any eq pop3 Включаем доступ на наш прокси сервер (200.200.200.2) на 8080 порту access-list 120 permit tcp 200.200.200.0 0.0.0.255 host 200.200.200.2 eq 8080 access-list 110 permit tcp host 200.200.200.2 any На нашем прокси сервер мы настраиваем Squid на кеширование запросов от сотрудников по FTP и HTPP протоколам но не даем сотрудникам доступ напрямую в WWW cерверам . Разрешаем весь трафик в локальной сети (по стандартному списку доступа) : access-list 10 permi ip 200.200.200.0 0.0.0.255 200.200.200.0 0.0.0.255

Если вам необходимо разделить доступ по отделам компании то вы можете применяя маску подсети оперировать трафиком в локальной сети, напрмер доступ к серверу бухгалтерии 200.200.200.50 должны иметь только отдел бухгалтерии (200.200.200.48 255.255.255.240) и руководство компании (200.200.200.224 255.255.255.240) : access-list 110 permi ip 200.200.200.48 0.0.0.240 200.200.200.224 0.0.0.240 Если вы планируете ограничение трафика средствами серверов то вы должны разрешить весь IP трафик в локальной сети (применяя стандартный список доступа) : access-list 10 permit 200.200.200.0 0.0.0.255 200.200.200.0 0.0.0.255 После того как вы разберетесь с доступом и составите полный список access-list -ов вы должны сделать их привязку к интерфесу, в нашем случае Ethernet 0 : Router#configure terminal Router(config)#int e0 ! Разрешаем входящий трафик на прокси сервер Router(config)#access-group 120 in ! Разрешаем исходящий трайик от прокси сервера и Router(config)#access-group 110 in ! Разрешаем весь локальный трафик Router(config)#access-group 10 in Router(config)#exit Router#wr mem Как вы заметили, мы указываем правилам фильтрации выполняться на e0 интерфейсе для всех входящих пакетов.

4. Защита доступа к роутеру

Зашщита стека TCP/IP на роутере Cisco была описанна в предудущей статье, сейчас же мы займемся защитой паролем доступ к трем внешним источникам конфигрирования роутера : - консоли роутера - дополнительного порта для подлкючения модема (AUX) - доступа по telnet сеансу Для того чтобы закрыть доступ по консоли роутера войдите в режим конфигурирования Router#config terminal и введите команду задания пароля : Router(config)#line console 0 Router(config)#password your_password Router(config)#login Router(config)#exit Router#wr mem Задание пароля на AUX порту задается так же : Router(config)#line aux 0 Router(config)#password your_password Router(config)#login Router(config)#exit Router#wr mem И наконец пароль для telnet сессий : Router(config)#line vty 0 4 Router(config)#password your_password Router(config)#login Router(config)#exit Router#wr mem Обратите внимение, что при задании пароля для telnet сеанса вы указываете число разрешенных сессий равное 4-м. При попытке получить доступ по любому из перечисленных способов получения доступа к роутеру вы получите приглашение такого рода : "Enter password:" При большом количестве роутеров использкуюте AAA acounting для задания механизма единой авторизации на всех устройствах cоздав пользователя командой : Router(config)#username vasya password pipkin_password Router(config)#exit Router#wr term По комапнде snow config мы увидим что наш пароль зашифрован и разгадать его достаточно сложно : username vasya password 7 737192826282927612 Затем включаем в глобальном конфиге AAA accounting : aaa new-model aaa authentication login default local aaa authentication login CONSOLE none aaa authorization exec local if-authenticated Далее сконфигурируем AUX, Console, telnet сессию, чтобы получить в итоге в конфиге : line con 0 login authentication CONSOLE line aux 0 transport input none line vty 0 4 ! Теперь при попытке залогиниться получим следующее приглашение (пароль не отображается): User Access Verification Username:vasya Password: Router> 5. Сбор статистики с роутера

Для этого Вам понадобится любой UNIX хост с установленным на нем пакетом MRTG и создать файл конфигурации с помошью программы cfgmaker : cfgmaker community_name@name_your_router, где SNMP community_name (в режиме тольо чтение) вы задаете на роутере командой : Routet(config)#snmp-server community community_name RO а на UNIX хосте вы задаете на обработку перловым скриптом файл конфигурации : Workdir: /usr/local/www/docs Interval: 5 Refresh: 60 WriteExpires: Yes Background[router.victim.com.1]:#CFCFCF Options[router.victim.com.1]: bits, growright Target[router.victim.com.1]: 1:community_name@victim.com MaxBytes[router.victim.com.1]: 1250000 Title[router.victim.com.1]: router.victim.com : Ethernet0 PageTop[router.victim.com.1]: <H1>Traffic Analysis for Ethernet0 </H1> <TABLE> <TR><TD>System:</TD><TD>router.victim.com in </TD></TR> <TR><TD>Maintainer:</TD><TD></TD></TR> <TR><TD>Interface:</TD><TD>Ethernet0 (1)</TD></TR> <TR><TD>IP:</TD><TD>router.victim.com (200.200.200.1)</TD></TR> <TR><TD>Max Speed:</TD> <TD>1250.0 kBytes/s (ethernetCsmacd)</TD></TR> </TABLE> ### Serial 0 ### Background[router.victim.com.2]:#CFCFCF Options[community_name@victim.com.2]: bits, growright Target[community_name@victim.com.2]: 2:community_name@victim.com MaxBytes[community_name@victim.com.2]: 8000 Title[community_name@victim.com.2]: MTO 64K : Serial0 PageTop[community_name@victim.com.2]: <H1>Traffic Analysis for Serial0 </H1> <TABLE> <TR><TD>System:</TD><TD>router.victim.com </TD></TR> <TR><TD>Maintainer:</TD><TD></TD></TR> <TR><TD>Interface:</TD><TD>Serial0 (2)</TD></TR> <TR><TD>IP:</TD><TD> ()</TD></TR> <TR><TD>Max Speed:</TD> <TD>8000.0 Bytes/s (propPointToPointSerial)</TD></TR> </TABLE> каждые пять минут (с помошью crond), который будет генерить отчеты по трайику в катаге /usr/local/www/data в виде HTML страничек с графиками. Вам необходимо запустить на этом хосте WWW сервер Apache для публикации статистики по внутреннему трафику (router.victim.com.html) на Ethernet интерфейсе и трафику на Serail 0 (router.victim.com.2.html) интерфейсу.

Заключение

Несмотря на кажущуюся простоту команд в EXEC режиме роутеры Cisco являются мощным средстом для диагностики неисправностей в глобальных и локальных сетях. Использую режим отладки (помощь доступна по команде "debug ?") вы можете прослушивать трафик в локальной сети по любому поддерживаемому вашей версией IOS протоколу (IPX, IP, Appletalk) или с помошью cdp получать информацию о соседних роутерах Cisco.

В следующей статье мы осветим вопросы динамической маршрутизации по наиболее используемым протоколам машрутизации таким как OSPF, BGP, IGRP и рассмотрим их применение на практике.
  neo