КОНФИГУРИРОВАНИЕ РОУТЕРОВ CISCO
Часть 1 Часть 2
С Т А Т Ь Я - 26 / 01 / 2001
КОНФИГУРИРОВАНИЕ РОУТЕРОВ CISCO
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
Указываем что мы хотим только один критерий - номер порта равный 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]: Traffic Analysis for Ethernet0
System: | router.victim.com in |
Maintainer: | |
Interface: | Ethernet0 (1) |
IP: | router.victim.com (200.200.200.1) |
Max Speed: |
1250.0 kBytes/s (ethernetCsmacd) |
### 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]: Traffic Analysis for Serial0
System: | router.victim.com |
Maintainer: | |
Interface: | Serial0 (2) |
IP: | () |
Max Speed: |
8000.0 Bytes/s (propPointToPointSerial) |
каждые пять минут (с помошью 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
Часть 1 Часть 2
|