Введение
Модуль ARIP представляет собой реализацию стандартного протокола маршрутизации RIP.
Модуль маршрутизации поддерживает две версии протокола RIP - RIP-1 и RIP-2.
Настройка модуля осуществляется опциями команды "arip".
Командный язык. Общие принципы
ARIP имеет свою командную оболочку (КО), вход в которую осуществляется командой:
#1>arip RIP>
Команды, вводимые в КО, нечувствительны к регистру букв и допускают произвольное сокращение вплоть до одной буквы, если команда в целом не может быть воспринята КО неоднозначно. В любой момент можно получить справку о наборе команд. Для этого нажмите клавишу ‘?’:
RIP>? configure Configuration from vty interface end End current mode and change to root mode (CTRL+C). exit Back to WANFlex command shell (CTRL+D). help Print command list show Show running system information RIP>
КО может находится в различных режимах. Режим отображается вместе с префиксом команды в виде "RIP(режим)#". Например, если ввести команду configure, то КО перейдет в режим "config":
RIP> configure RIP(config)#
На рисунке показана диаграмма переходов между режимами КО.
Можно устанавливать нужный режим или выполнять команды RIP не заходя специально в сам модуль. Например, если мы последовательно выполним команды:
#1> arip configure #1> arip router #1> arip RIP(config-router)#
то (как видно из примера) при входе в "arip" мы попадем сразу в нужный нам режим.
В каждом режиме существует собственный набор команд, однако в любом режиме существуют команды:
- Help - вывод полного списка команд данного режима
- End – переход из текущего режима в базовый
- Exit – команда выхода из КО в командную оболочку WANFlex
Изначально КО находится в базовом режиме, который содержит набор команд только для просмотра текущего состояния маршрутизатора. Переход в режим конфигурации разрешен только для пользователя WANFlex имеющего привилегии "superuser". После перехода в режим конфигурации, конфигурация блокируется и вход в этот режим с другого терминала (например, другая сессия "telnet") запрещен. Для исключения «мертвой» блокировки, КО автоматически выходит из режимов конфигурации, если в течение 5-ти минут не поступало никаких команд.
При вводе команд, в любой момент можно получить контекстную подсказку нажав клавишу "?".
Например,
RIP> config RIP(config)#? access-list Add an access list entry clear Reset functions end End current mode and change to root mode (CTRL+C). exit Back to WANFlex command shell (CTRL+D). help Print command list interface Select an interface to configure key Authentication key management no Negate a command or set its defaults prefix-list Build a prefix list route-map Create route-map or enter route-map command mode router Enable a routing process show Show running system information stop stop RIP(config)# interface? IFNAME Interface's name RIP(config)# interface eth0 RIP(config-if)#? authentication Authentication control description Interface specific description end End current mode and change to root mode (CTRL+C). exit Back to WANFlex command shell (CTRL+D). help Print command list no Negate a command or set its defaults receive Advertisement reception send Advertisement transmission show Show running system information split-horizon Perform split horizon RIP(config-if)#
После выхода из КО командой exit (или Ctrl+D) КО маршрутизатора остается в последнем режиме.
Команды могут иметь параметры. Параметры команд задаются в нескольких форматах. Формат параметра описывается в контекстной справке или в списке команд (по команде help) следующим образом:
- "A.B.C.D" - параметр задается в формате IP адреса. Например: 192.168.0.15
- "WORD" – набор символов не содержащий пробелов
- "<1-N>" - параметр задается в виде целого десятичного числа в диапазоне от 1 до N
- "A.B.C.D/M" – параметр задается в форматке IP адрес/длина маски сети – целое число в диапазоне от 0 до 32. Например: 192.168.0.0/24
- "IFNAME" – имя физического сетевого интерфейса. Например: eth0
Если параметр допускает варианты, то в справке они указываются в круглых скобках, а возможные варианты разделены символом “|”. Например: (A.B.C.D|<0-4294967295>).
При описании команд в случае, если какой-либо параметр или опция является необязательной, этот параметр или опция будет заключена в квадратные скобки “[]”.
Любая команда конфигурации может содержат префикс “no”. Наличие такого префикса приводит к отмене (удалению) соответствующего параметра конфигурации.
Запуск/останов RIP маршрутизатора.
Запуск RIP маршрутизатора осуществляется командой WANFleX:
arip start
Останов маршрутизатора производится командой режима "config":
stop (daemon|clear)
Например,
>arip RIP> configure RIP(config)# stop daemon
Если команду останова выполнить с параметром clear, модуль RIP перед остановой очистит свою часть системной конфигурации.
Объекты фильтрации
Во многих настройках маршрутизатора применяются специальные объекты – фильтры. Фильтры представлены объектами двух классов
- Списки доступа (access-list)
- Списки префиксов (prefix-list)
Списки доступа состоят из набора операторов. Каждый оператор состоит из диапазона IP адресов (условия соответствия) и команды "deny" (отвергнуть) или "permit" (принять). Диапазон адресов записывается в виде "<значение> < маска незначащих битов значения>". Объект подлежащий фильтрации имеет основной параметр в таком же виде (IP адрес, подсеть и т.п.). Для принятия решения о том удовлетворяет ли объект данному списку или нет, к основному параметру объекта последовательно применяется каждый оператор списка доступа до тех пор, пока этот параметр не удовлетворит условию соответствия. При достижении соответствия выносится решение записанное в команде данного оператора (deny или permit).
В RIP маршрутизаторе применяется три типа списков доступа:
- Стандартный. Идентифицируется номерами 1-99 или 1300-1999 и предназначен для оценки одного параметра объектов фильтрации.
- Расширенный. Идентифицируется номерами 100-199 или 2000-2699 и предназначен для оценки двух параметров объектов фильтрации (например, адрес источника и адрес назначения).
- Именованный. Аналогичен стандартному, но идентифицируется не номерами, а именем. Кроме того, диапазон (условие) операторов записывается в виде "<значение>/<длина маски>"
Для создания или изменения списков доступа в RIP маршрутизаторе предназначены следующие команды режима "config":
- Для стандартных списков доступа
access-list | (<1-99>|<1300-1999>) | (deny|permit) | A.B.C.D | A.B.C.D |
---|---|---|---|---|
| Идентификатор списка | команда | значение | Маска незначащих битов значения |
|
|
| Диапазон значений параметра |
Данная команда создает оператор в стандартном списке доступа. Значение и маска незначащих битов определяют диапазон (условие) оператора. Маска незначащих битов определяет те биты значения, которые определяют диапазон. Например, чтобы задать диапазон IP адресов от 192.168.12.0 до 192.168.12.255, необходимо указать значение 192.168.12.0, маску – 0.0.0.255. Для диапазонов обозначающих любое значение параметра (0.0.0.0 255.255.255.255) предусмотрено ключевое слово any. Например, команда :
RIP(config)# access-list 1 permit 0.0.0.0 255.255.255.255
Тождественна команде:
RIP(config)# access-list 1 permit any
Аналогично, для задания диапазона, состоящего из единственного значения, допускается применять ключевое слово "host".
Например, команда :
RIP(config)# access-list 1 permit 192.168.12.150 0.0.0.0
Тождественна команде:
RIP(config)# access-list 1 permit host 192.168.12.150
- Для расширенных списков доступа
access-list | (<100-199>|<2000-2699>) | (deny|permit) | ip | A.B.C.D A.B.C.D | A.B.C.D A.B.C.D |
---|---|---|---|---|---|
| Идентификатор списка | команда |
| Диапазон адресов источника | Диапазон адресов назначения |
- Для именованных списков
access-list | WORD | (deny|permit) | A.B.C.D/M | [exact-match] |
---|---|---|---|---|
| Идентификатор списка | Команда | Диапазон | Требование полного равенства параметра диапазону |
В этом случае идентификатор списка представляет собой произвольное сочетание символов. Диапазон значений указывается в виде "<значение>/<длина маски>". Например, чтобы задать диапазон IP адресов от 192.168.12.0 до 192.168.12.255, необходимо указать значение 192.168.12.0/24. Для диапазона любых значений параметра (0.0.0.0/0) так же допускается применять ключевое слово "any".
Например,
RIP(config)# access-list TestList1 deny 192.168.1.0/24 RIP(config)# access-list TestList1 permit any
При конфигурировании операторы списка безусловно добавляются в конец списка. Т.о. последовательность просмотра операторов списка при фильтрации определяется только последовательностью конфигурирования этих операторов.
Списки префиксов отличаются от списков доступа тем, что каждый оператор имеет кроме диапазона (условие) и команды еще и последовательный номер. Кроме того, при определении принадлежит ли параметр объекта фильтрации диапазону оператора, можно ввести дополнительные условия на длину маски параметра. Операторы списка префиксов сортируются по последовательным номерам операторов. Т.о. можно управлять последовательностью просмотра операторов при фильтрации объектов.
prefix-list | WORD | [seq <1-4294967295>] | (deny|permit) | A.B.C.D/M | [ge <0-32>] [le <0-32>] |
---|---|---|---|---|---|
| Идентификатор списка | Последовательный номер оператора | Команда | Диапазон | Диапазон допустимых длин маски параметра |
Если не указан последовательный номер, то маршрутизатор назначает его автоматически путем прибавления 5 к последовательному номеру последнего оператора в списке. Т.о. новый оператор будет иметь самый большой номер и, соответственно, будет расположен в самом конце списка.
Настройка RIP
Возможны несколько способов подключения RIP на оперделенном сетевом интерфейсе.
Первый способ подключения – указание сети. На интерфейс устройства, сетевой адрес которого будет принадлежать указанной сети, будет включен RIP. Это можно сделать в режиме "config-router" командой:
network A.B.C.D/M
Cеть задается IP префиксом этой сети и длиной маски подсети.
Второй способ – непосредственное указание имени интерфейса. Это можно сделать в режиме "config-router" командой:
network WORD
- "WORD" - это имя интерфейса.
Например,
RIP>configure RIP(config)# router RIP(config-router)# network 4.7.8.0/24 RIP(config-router)# network rf5.0 RIP(config-router)#
Отменить RIP на интерфейсе можно командами:
no network A.B.C.D/M no network WORD
В определенных случаях не все маршрутизаторы понимают мультикастовые запросы. Для решения этой проблемы можно установить прямую связь между маршрутизтороми с помощью команды в режиме "config-router":
neighbor a.b.c.d
- "a.b.c.d" – адрес маршрутизатора-соседа. Для отмены назначение соседа:
no neighbor a.b.c.d
Для анонсирования информации из других протоколов маршрутизации предназначена команда в режиме "config-router":
redistribute (kernel|connected|static|ospf) [metric <0-16777214>] [route-map WORD]
Определить критерий, по которому маршрутизатор будет анонсировать информацию из того или иного протокола маршрутизации из всех существующих можно командой режима "config-router":
distribute-list WORD direct ifname
- "WORD" – имя списка. Эта команда связывает список доступа с определенным интерфейсом. Параметр direct принимает значения «out» или «in». В значении «in» список доступа применяется к входящим пакетам.
В следующем примере интерфейс “eth0” пропустит только те пакеты, которые маршрутизируются в 10.0.0.0/8:
RIP(config-router)# distribute-list private in eth0 RIP(config-router)# access-list private permit 10 10.0.0.0/8 RIP(config-router)# access-list private deny any
Следующая команда задает метрику по умолчанию в режиме "config-router":
default-metric <0-16>
Если метрика по умолчанию не установлена, то ее значение равно 1.
В режиме "redistribute kernel" маршрутизатор не будет заявлять в RIP систему о наличии у него канала к "default route" (адресат = сеть 0.0.0.0/0), даже если он явно прописан в системной маршрутной таблице администратором. Для того, чтобы маршрутизатор заявлял о наличии у него канала к "default route" необходимо дать ему явное указание в режиме "config-router":
default-information originate
Отмена заявления внешнего канала к "default route" производится командой:
no default-information originate
Следующая команда включает алгоритм «расщепления горизонта» на определенном ip-интерфейсе устройства в режиме "config-if":
split-horizon [poisoned-reverse]
При включенном алгоритме «расщепления горизонта» устройство не анонсирует маршруты через интерфейс, с которого они были получены, что позволяет уменьшить вероятность возникновения локальных маршрутных циклов.
При указанной опции "poisoned-reverse" устройство при удалении маршрута ещё некоторое время оставляет его в таблице маршрутизации и включает в стандартную рассылку анонсов маршрутной инфирмации со специальной пометкой для того, чтобы соседние маршрутизаторы поняли, что маршрут больше не используется. В качестве метки используется метрика маршрута со значением 16.
Алгоритм «расщепления горизонта» без опции "poisoned-reverse" включен по умолчанию.
Для выключения «расщепления горизонта» используется комманда:
no split-horizon
Карта маршрутов (route-map)
Для более гибкого назначения типа и значения метрики, можно воспользоваться картой маршрутов (route-map). Карта маршрутов содержит последовательность записей-условий. Каждая запись описывается своим последовательным номером в карте, условием соответствия импортируемого маршрута данной записи, действиями, производимыми над результирующим объектом в случае соответствия (присваивания типа и/или значения метрики образуемого канала), результирующей реакцией (отвергнуть, принять) и сценарием дальнейшего просмотра записей (может быт не задан). Маршруты просматриваются по карте в порядке увеличения их последовательных номеров. Если маршрут соответствует условию записи, то:
- в случае результирующей реакции отвержения (deny), маршрут отбрасывается, просмотр записей карты прекращается, результирующий объект аннулируется (маршрут не анонсируется)
- в случае результирующей реакции принять (permit), с результирующим объектом производятся указанные в записи действия (установка типа и/или значения метрики). Далее, просмотр записей прекращается, либо, если задан сценарий, продолжается с указанного в сценарии номера записи в двух вариантах:
- "on-match next" – просмотр продолжается с записи, непосредственно следующей за текущей
- "on-match goto <N>" - просмотр записей продолжается с записи с номером больше или равным N, но не меньше, чем номер текущей.
Для формирования карты маршрутов применяется команда в режиме "config":
route-map WORD (deny|permit) <1-65535>
- "WORD" – это идентификационное название (имя) карты маршрутов. Далее указывается порядковый номер и результирующая реакция записи данной карты маршрутов, параметры которой необходимо изменить/добавить. Если записи с таким порядковым номером не существует, она будет автоматически создана. После выполнения этой команды КО переходит в режим редактирования выбранной записи карты маршрутов.
Например,
RIP> configure RIP(config)# route-map testmap permit 10 RIP(config-route-map)#
Далее устанавливается условие соответствия импортируемого маршрута данной записи. Для этого в режиме "config-route-map" применяются команды:
match address (<1-199>|<1300-2699>|WORD) match address prefix-list WORD match interface WORD match next-hop (<1-199>|<1300-2699>|WORD) match next-hop prefix-list WORD
Эти команды устанавливают условия соответствия маршрута по трем возможным его параметрам: адресата (destination), gateway (nexthop) и интерфейса. Для одной записи допускается устанавливать несколько различных условий. Если задано несколько условий, то они объединяются по правилу «и». В командах "match next-hop" и "match address" указывается ссылка (номер или имя) на объект фильтрации: номер или имя "access-list" или имя "prefix-list". В этом случае условие будет выполнено, если соответствующий параметр маршрута принадлежит указанному фильтрующему списку по соответствующему этому типу списка правилу. В команде "match interface" в качестве параметра указывается имя сетевого интерфейса, которому принадлежит маршрут.
При выполнении маршрутом всех условий записи можно установить значения метрики маршрута при помощи команды режима "config-route-map":
set metric <0-4294967295>
Сценарий дальнейшего поведения записи при выполнении маршрутом указанных условий и присвоению образующемуся в результате внешнему каналу параметров, можно создать одной из команд:
on-match goto <1-65535> on-match next
Пример конфигурации:
RIP> configure RIP(config)# access-list AnyNetwork permit any RIP(config)# access-list net200 permit 192.168.200.0/24 RIP(config)# route-map mapForConnected permit 10 RIP(config-route-map)# match address net200 RIP(config-route-map)# set metric 7 RIP(config-route-map)# route-map mapForConnected deny 11
RIP(config-route-map)# match address AnyNetwork RIP(config-route-map)# router RIP(config-router)# redistribute connected route-map mapForConnected RIP(config-route-map)#
В этой конфигурации маршрутизатору указано анонсировать маршруты, образованные из connected маршрутов системной таблицы маршрутов. При этом, если адресат этого маршрута – подсеть 192.168.200.0/24, то образованный маршрут будет иметь метрику 7, любой другой адресат не приведет к анонсированию маршрута канала к нему.
ПРЕДОСТЕРЕЖЕНИЕ
Чтобы определенный интерфейс использовал определенный, "route-map", созданный как описано выше, необходимо применить команду "route-map" в режиме "config-router":
route-map WORD (in|out) IFNAME
- "WORD" – имя созданного раннее road-map.
Аутентификация. Проверка подлинности.
Для предотвращения несанкционированного подключения маршрутизаторов к RIP системе в протоколе предусмотрена проверка подлинности пакетов протокола. В настоящий момент маршрутизатор располагает двумя различными способами проверки подлинности (аутентификации):
- Парольная аутентификация. Простая парольная аутентификация уязвима для пассивных атак, часто встречающихся в Internet (sniffing), т.к. для передачи пакетов используется широковещание, а пакет содержит пароль в некодированном виде.
- Криптографическая аутентификация. Используется ключ при генерации и проверке цифровых подписей (message-digest). Для построения цифровой подписи используется алгоритм MD5. Поскольку секретный ключ никогда не передается через сеть в открытом виде, это обеспечивает защиту против пассивных атак.
По умолчанию у маршрутизатора не установлено никакой аутентификации (null-аутентификация).
Аутентификация устанавливается для определенного интерфейса командами режима "config-if".
- Для простой парольной:
authentication mode text authentication string LINE
"LINE" – это пароль, который должен быть менее 16 символов
- Для криптографической:
authentication mode md5 authentication key-chain LINE
"LINE" – это имя секретного ключа MD5.
Задать сам ключ, имя которого указывается в параметре "LINE", можно командой режима "config":
RIP(config)# key chain WORD RIP(config-keychain)# key <0-2147483647> RIP(config-keychain-key)# key-string LINE
- "WORD" – это имя цепочки ключей
- "<0-2147483647>" - идентификатор ключа
- "LINE" – секретный ключ md5.
Настройка таймеров.
В протоколе RIP существуют несколько таймеров. Параметры по умолчанию для них имеют следующие значения:
- Update timer срабатывает каждые 30 секунд. При срабатывании RIP посылает полную таблицу маршрутизации всем соседним RIP маршрутизаторам.
- Timeout timer срабатывает каждые 180 секунд. После истечения этого времени маршрут больше не считается верным. Но ещё некоторое время он остаётся в таблице маршрутизации для того, чтобы соседи-маршрутиза поняли, что маршрут больше не используется.
- Garbage collect timer срабатывает каждые 120 секунд. После истечения этого времени устаревшая маршрутная информация удаляется из таблицы маршрутизации.
Следующая команда в режиме "config-router" позволяет изменить значения таймеров:
timers basic update timeout garbage
Чтобы сбросить все таймеры в настройки по умолчанию:
no timers basic
Просмотр состояния RIP
Для просмотра состояния RIP используется следующие команды в исходном режиме:
show access-list
Команда выводит информацию о списках доступа.
show memory
Команда выводит информацию по использованию памяти.
show rip
Команда выводит текущее состояние RIP. Отображается информация по таймерам, фильтрам, версии, итерфейсах, на которых поднят RIP.
show route
Команда распечатывает таблицу маршрутов