Глава 11. Настройка основных функций и атрибутов BGP

Эта глава первая из двух, где мы рассматриваем примеры конфигурации маршрутизаторов. Если вы уже знакомы с используемыми концепциями, то можете перейти к анализу примеров настройки и научиться задавать команды для настройки основных функций и атрибутов BGP. В этой главе мы сосредоточимся на настройке маршрутизаторов для работы в составе простейших структур, а в следующей — перейдем к более сложным схемам сети.
Даже если вы уже воспользовались ссылками из предыдущих глав на соответствующие примеры конфигурации, настоятельно рекомендуем еще раз проанализировать их, чтобы лучше закрепить теоретический материал из предыдущих глав. В дополнение к кодам настройки маршрутизаторов мы включили в эту главу множество таблиц маршрутов, которые, надеемся, помогут глубже понять смысл ваших действий и их возможные последствия.
Главы 11 и 12 не призваны заменить руководство пользователя по работе с маршрутизаторами Cisco, и в них вы не найдете все команды и варианты настройки маршрутизаторов. В этих главах представлены примеры конфигурации маршрутизаторов для общих ситуаций, которые чаще всего возникают при подключении сетей к Internet. В вашей сети возможно потребуется скомбинировать несколько вариантов или способов подключения с целью выработки наиболее эффективного набора правил маршрутизации.
Далее мы увидим, что AS может играть роль клиента, провайдера или даже обе эти роли сразу. Постарайтесь не запутаться в этих ролях AS или в IP-адресации, которая может показаться вам несколько необычной. Все приведенные примеры — всего лишь упражнения, которые помогут вам понять, как функционирует протокол BGP, и оптимально реализовать его возможности.

Сеанс связи между
взаимодействующими
маршрутизаторами

В этом примере демонстрируются различные типы BGP-сеансов между взаимодействующими узлами, с которыми вы можете столкнуться на практике. Рассмотрим рис. 11.1.
Сеанс взаимодействия по 1BGP происходит внутри AS3 между физическим адресом маршрутизатора RTF и петельным адресом маршрутизатора RTA. Кроме того, между AS3 и AS1 сформирован сеанс по EBGP с использованием двух IP-адресов из одного сегмента на маршрутизаторах RTA и RTC. Еще один EBGP-сеанс сформирован между маршрутизаторами RTF в AS3 и RTD в AS2 с использованием IP-адресов, которые находятся в разных сегментах (мультиузловое соединение).

Очень важно помнить, что TCP-соединение не будет установлено в BGP до тех пор, пока между двумя узлами не будет установлена связь по протоколу ЮР или если они соединены напрямую. В качестве протокола ЮР мы будем использовать OSPF, с помошью которого и будет обеспечиваться требуемая внутренняя связность. В листинге 11.1 показана конфигурация маршрутизатора RTA.

Листинг 11.1. Конфигурация маршрутизатора RTA
ip subnet-zero
interface LoopbackO ip address 172/16/2/254 255/255/255.255
interface Ethernetl ip address 172.16.1.1 255.255.255.0
interface Serial0 ip address 172.16.20.2 255.255.255.0
router ospf 10 network 172.16.0.0 0.0.255.255 area 0
router bgp 3 no syncronization neighbor 172.16.1.2 remote-as 3 neighbor 172.16.1.2 update-source Loopback0 neighbor 172.16.20.1 remote-as 1 no auto-summary
ip classless

В примере конфигурации маршрутизатора RTA в листинге 11.1 вам, возможно, незнаком синтаксис команд. Синтаксис всех этих команд приведен в табл. 11.1. В ней этим командам даются пояснения применительно к схеме маршрутизации, представленной на рис. 11.1. В последующих примерах, которые вы найдете в этой главе, все команды маршрутизатора будут касаться в основном настройки работы по BGP, IGP или статической маршрутизации. Команды, с помощью которых проводится назначение интерфейсам IP-адресов, не будут рассматриваться, поскольку объем книги ограничен.

Рис. 11.1. Сеанс между несколькими узлами

Таблица 11.1 Команды конфигурации из листинга 11.1
Команда	Пояснение

area area-number

Это команда глобальной настройки, если требуется настроить интерфейсы, которые подпадают под нулевые подсети (какой является 192.168.1.0/30). С переходом к бесклассовой междоменной маршрутизации применение нулевых подсетей стало довольно распространенным явлением и рекомендуется в качестве конфигурации по умолчанию
С помощью этой команды задается тип интерфейса и его номер на маршрутизаторе. Настройки, следующие за ней, будут относиться именно к этому интерфейсу. (Синтаксис slot/port может немного отличаться в зависимости от производителя оборудования). Обратите внимание, что на RTA задаются три команды interface — для каждого из трех соединений. Интерфейс loopback представляет собой программный интерфейс, эмулирующий интерфейс, который всегда находится в активном состоянии
С помощью этой команды интерфейсу задается пара IP-адреса и маски. Например, IP-адрес порта Ethernet на RTA задается так: ip address 172.16.1.1 255.255.255.0
Эта глобальная команда определяет процесс (режим работы) маршрутизатора, такой как OSPF, RIP или BGP, и присваивает ему идентификатор процесса. Некоторым процессам, например RIP, нет необходимости присваивать идентификатор процесса. Например, при настройке маршрутизатора RTA команда router ospf 10 определяет, что процесс OSPF имеет идентификатор 10, а команда router bgp 3 указывает на BGP-процесс в автономной системе 3
Эта команда определяет сеть или (в случае работы по OSPF) интерфейсы, принимающие участие в маршрутизации
Обратите внимание на команду network, заданную на маршрутизаторе RTA. Как видите, там имеется запись 0.0.255.255 — т.е. за нулями следуют единицы. Это и есть инверсная маска, где нули точно определяют размер сети, а единицы представляют незначащие биты. Например, запись 172.16.0.0 0.0. 255. 255 указывает на любую сеть или IP-адрес вида 176.16.Х.Х. Инверсные маски можно использовать при организации списков разрешения доступа, а также совместно с командой network. В табл. 1 1 .2 приведена схема преобразования нормальных масок в инверсные в десятичной записи

Эта команда используется для организации области с заданным номером в протоколе OSPF

inverse mask

network

router process [process-id]

ip address /p-address mask [secondary]

ip subnet-zero

interface type slot/port

no auto-summary

no syncronization

neighbor

ip classless

Этой командой задаются параметры соединения с соседними BGP-узлами и правила маршрутизации, которые будут использоваться между маршрутизатором и другими узлами. При настройке маршрутизатора RTA команда neighbor 172.16.1.2 remote-as 3 указывает на то, что BGP-сеанс будет устанавливаться между RTA и взаимодействующим узлом 1 72. 1 6. 1 .2 в AS3
Эта команда отключает синхронизацию между BGP и IGP. Более подробно она описана в главе 6, "Настройка параметров BGP"

Эта команда выключает в BGP режим автосуммирования по классам на границе основных сетей. Без этой команды BGP не будет рассылать маршруты в подсети основной сети, которые были преобразованы из IGP. Другими словами, сообщения об обновлениях маршрутов 172.16.1.0/24, 172.16-2.0/24 и т.д. будут рассылаться в виде одного сообщения о сети класса В 172.16.0,0/16. Суммирование на границе основных сетей необходимо выполнять только в том случае, если в AS объединены сети, принадлежащие одной основной сети (т.е. сети одного класса). Если нет явной необходимости в суммировании сетей, по умолчанию желательно запрещать эту процедуру

Эта команда позволяет маршрутизатору пересылать пакеты, которые адресованы в неизвестные сети, соседним сетям, подключенным непосредственно к маршрутизатору. По умолчанию, когда маршрутизатор получает пакеты для подсети, которая правильно задана сточки зрения IP-адресации, но отсутствует в его таблицах маршрутов и для этой сети нет маршрута по умолчанию, он отвергает пакеты. Задав команду ip classless, вы разрешаете маршрутизатору пересылать эти пакеты по наилучшему маршруту в суперсеть

remote -as

update-source interface

Эта команда, заданная совместно с выражением neighbor, определяет номер интерфейса, который будет использоваться в качестве IP-адреса источника во время BGP-сеанса с соседним узлом. Так, при настройке маршрутизатора RTA вторая строка с выражением neighbor указывает на то, что в качестве IP-адреса источника будет использоваться интерфейс LoopbackO
Эта команда, заданная совместно с выражением neighbor, определяет номер AS
удаленного взаимодействующего BGP-узла. При настройке RTA первое выражение
neighbor указывает на то, что внутренний соседний BGP-узел 1 72. 1 6. 1 .2 принадлежит к локальной AS3. Третье выражение выражением neighbor указывает на то, что BGP-узел 1 72. 1 6.20. 1 принадлежит к AS 1

Таблица 11.2 Преобразование префиксов C1DR в десятичные маски подсети

Префикс CIDR	Десятичная запись	Инверсная запись	
/1	128.0.0.0	127.255.255.255	
/2	192.0.0.0	63.255.255.255	
/3	224.0.0.0	31.255.255.255	
/4	240.0.0.0	15255.255,255	
/5	248.0.0.0	7.255.255.255	
/6	252.0.0.0	3.255.255.255	
/7	254.0.0.0	1.255.255.255	
/8	255.0.0.0	0.255.255.255	
/9	255.128.0.0	0.127.255.255	
/10	255.192.0.0	0.63.255.255	
/11	255.224.0.0	0.31.255.255	
/12	255.240.0.0	0.15.255.255	
/13	255.248.0.0	0.7.255.255	
/14	255.252.0.0	0.3.255.255	
/15	255.254.0.0	0.1.255.255	
/16	255.255.0.0	0.0.255.255	
/17	255.255.128.0	0.0.127.255	
/18	255.255.192.0	0.0.63.255	
/19	255.255.224.0	0.0.31.255	
/20	255.255.240.0	0.0.15.255	
/21	255.255.248.0	0.0.7.255	
/22	255.255.252.0	0.0.3.255	
/23	255.255.254.0	0.0.1.255	
/24	255.255.255.0	0.0.0.255	
/25	255.255.255.128	0.0.0.127	
/26	255.255.255.192	0.0.0.63	
/27	255.255.255.224	0.0.0.31	
/28	255.255.255.240	0.0.0.15	
/29	255.255.255.248	0.0.0.7	
/30	255.255.255.252	0.0.0.3	
/31	255.255.255.254	0.0.0.1	
/32	255.255.255.255	0.0.0.0	

Рассмотрим теперь конфигурацию маршрутизатора RTF (листинг 11.2).

Листинг 11.2. Конфигурация маршрутизатора RTF

ip subnet-zero

interface Ethernetl ip address 172.16.1.2 255.255.255.0
interface Serial2/l ip address 192.68.5.1 255.255.255.0
router ospf 10 network 172.16.0.0 0.0.255.255 area 0
network 192.68.0.0 0.0.255.255 area 0
router bgp 3
no syncronization neighbor 172.16.2.254 remote-as 3 neighbor 192.68.12.1 remote-as 2 neighbor 192.68.12.1  ebgp-multihop 2 no аисо-summary
ip classless

Вы, наверное, обратили внимание на команду ebgp-multihop 2, которая используется как часть команды neighbor при настройке маршрутизатора RTF. Она показывает, что внешний BGP-узел не имеет непосредственного соединения с маршрутизатором RTF и доступен не более чем через два промежуточных узла. Помните, что команда применяется только в EBGP и не будет работать с IBGP. Величина, задаваемая в конце команды ebgp-multihop (в нашем примере 2), определяет значение времени жизни (Time To Live -- TTL), которое задается в заголовке IP-пакета. В листингах 11.3 и 11.4 представлены примеры конфигурации маршрутизаторов RTC и RTD.

Листинг 11.3. Конфигурация маршрутизатора RTC
ip subnet-zero
interface Serial2/l ip address 172.16.20.1 255.255.255.0
router bgp 1
no synchronization
neighbor 172.16.20.2 remote-as 3
no auto-summary

ip classless

Листинг 11.4. Конфигурация маршрутизатора RID
ip subnet-zero
interface SerialO/0 ip address 192.68.12.1 255.255.255.0
router ospf 10 network 192.68.0.0 0.0.255.255 area 0
router bgp 2
neighbor 192.68.5.1	remote-as 3
neighbor 192.68.5.1	ebgp-multihop 2
no auto-summary
ip classless

В листинге 11.5 представлен сеанс между взаимодействующими узлами после того, как они установили соединение.

Листинг 11.5. Соединение между взаимодействующими узлами
(маршрутизатор RTF)	
RTF#show ip bgp neighbor BGP neighbor is 172.16.2.254, remote AS 3, internal link BGP version 4,  remote router ID 172.16.2.254
BGP state = Established,   table version = 2,  up for 22:36:09
Last read 00:00:10, hold time is 180, keepalive interval is 60 seconds
Minimum time between advertisement runs is 5 seconds
Received 1362 messages, 0 notifications, 0 in queue
Sent 1362 messages, 0 notifications, 0 in queue
Connections established 2; dropped 1 Connection state is ESTAB, I/O status:  1, uread input bytes:  0 Local host:  172.16.1.2,  Local port:  11008 Foreign host:  172.16.2.254, Foreign port:  179
BGP neighbor is 192.68.12.1, remote AS 2, external link BGP version 4, remote router ID 192.68.5.2
BGP state = Established, table version = 2, up for 22:13:01
Last read 00:00:00, hold time is 180, keepalive interval is 60 seconds
Minimum time between advertisement runs is 30 seconds
Received 1336 messages, 0 notifications, 0 in queue
Sent 1336 messages, 0 notifications, 0 in queue
Connections established 1; dropped 0 External BGP neighbor may be up to 2 hops away.
Connection state is ESTAB, I/O status:  1, uread input bytes:  0
Local host:  192.68.5.1,  Local port:  11016
Foreign host:  192.68.12.1, Foreign port:  179

Для маршрутизатора RTF соседний узел 172.16.2.254 является внутренним соседним узлом, который принадлежит AS 3. Соединение между этими узлами организовано по BGP-4 с использованием версии таблицы 2. Версия таблицы изменяется каждый раз, когда происходит ее обновление.
Другим соседним маршрутизатором по отношению к RTF является узел 192.68.12.1, с которым также установлено соединение. Этот маршрутизатор является внешним соседним узлом, принадлежащим к AS2. Обратите внимание; в листинге указано, что этот узел доступен через два промежуточных узла (согласно команде ebgp-multihop).

Фильтрация маршрутов и управление атрибутами

Фильтрация маршрутов и управление атрибутами являются основой для реализации правил маршрутизации в BGP. В этом разделе мы рассмотрим следующее:
•	карты BGP-маршрутов;
•	списки префиксов;
•	идентифицирование и фильтрация маршрутов на основе NLRI;
•	идентифицирование и фильтрация маршрутов на основе анализа ASPATH.
Для введения в действие новых правил маршрутизации в BGP, таких как фильтрация маршрутов или управление атрибутами, для входных правил маршрутизации (Input Policy Engine) нужно представить набор соответствующих маршрутов. Это можно сделать несколькими способами. Самый грубый из них ~ сбросить BGP-сеанс с помощью команды:
clear ip bgp [ * / address / peer-group]  [soft [in / out]]

Однако с помощью мягкой перенастройки или механизма обновления BGP-маршрутов возможно более элегантное решение этой проблемы. Более детально об этих методах читайте в главе 12, "Настройка эффективных правил маршрутизации в сети Internet".

Карты BGP-маршрутов

Карты маршрутов используются в протоколе ВОР для управления и внесения изменений в маршрутную информацию, а также для определения условий, согласно которым осуществляется распределение маршрутов между маршрутизаторами и процессами маршрутизации.
Формат команды для задания карты маршрутов следующий: route-map map-tag  [permit  | deny]   [sequence-number]
Здесь map-tag (метка карты) - имя, идентифицирующее карту маршрутов, а sequence-number (номер последовательности) указывает место, начиная с которого запись в карте маршрутов будет взаимосвязана с другими записями в этой же карте маршрутов. Записи в картах делаются последовательно.
Рассмотрим на примере задание карты маршрутов с именем MYMAP (листинг 11.6).

Листинг 11.6. Карта маршрутов MYMAP
route-map MYMAP permit 10
! First set of conditions goes here.
route-map MYMAP permit 20
! Second set of conditions goes here.

Когда в BGP к обновлениям маршрутов применяется карта MYMAP, вначале применяется наименьшая запись (в нашем случае запись 10). Если первый набор условий не выполнен, то применяется вторая запись и т.д. до тех пор, пока один из наборов условий не будет выполнен или пока не закончатся возможные наборы условий.
Часть карты маршрутов, где задаются условия, описывается командами match и set. Команда match задает критерий, по которому проводится сопоставление, а команда set определяет действие, которое должно быть выполнено, если обновление маршрута встречает условие, заданное командой match.
В листинге 11.7 показан пример конфигурации простой карты маршрутов.

Листинг 11.7. Конфигурация карты маршрутов
router bgp 3
neighbor 1.1.1.1 route-map MYMAP in !
route-map MYMAP permit 10 match ip address 1 set metric 5 i
route-map MYMAP permit 20 set local-preference 200

ip access-list 1 permit 1.1.1.0 0.0.0.255

Из листинга 11.7 видно, что в карту маршрутов MYMAP включены маршруты, полученные от соседнего узла 1.1.1.1. Если маршрут в сеть 1.1.1.0/24 объявлен соседним узлом 1.1.1.1, то его метрике будет присвоено значение 5 (как указано в последовательности с номером 10) и больше никаких действий предприниматься не будет. Все остальные префиксы, полученные от соседнего узла, также будут представлены в карте маршрутов MYMAP в последовательности с номером 10. Однако если они не совпадают с условиями, заданными в этой последовательности, то будут сопоставляться последовательности условий с номером 20. Если же ни одно из условий не будет выполнено, то атрибут LOCAL_PREF для всех префиксов будет равен 200.
Существует два типа списков разрешения доступа — стандартные и расширенные. Основное их различие заключается в том, что стандартные списки разрешения доступа

применяются к IP-адресам источника, а расширенные списки — к адресам источника и пункта назначения или к адресам источника и сетевой маске. Для объявления стандартного списка разрешения доступа применяется глобальная команда access-list, а объявление расширенного списка мы рассмотрим далее в этой главе.

access-list access-list-number {deny / permit)  source  [source-wildcard]
Стандартный список разрешения доступа используется для сопоставления определенного IP-адреса хоста или сети с заданным в списке с целью разрешения или запрещения определенного маршрута. Рассмотрим пример стандартного списка разрешения доступа, представленного в листинге 11.8.

Листинг 11.8. Стандартный список разрешения доступа	
router bgp    3
neighbor      1.1.1.1      route-map    MYMAP      in !
route-map MYMAP   permit      10 match      ip      address      1
set metric      5 !
ip    access-list    1    permit    1.1.1.0      0.0.0.255

В листинге 11.8 список разрешения доступа с номером 1 идентифицирует все маршруты, поступающие от 1.1.1.Х. (Обратите внимание на инверсную запись маски 0.0.0.255 вместо явного указания префикса 1.1.1.0/24, как это было сделано в предыдущем листинге, — таким образом разрешается префикс именно этой длины). Маршрут в форме 1.1.1.Х будет совпадать с указанным в списке разрешения доступа и распространяться (так как задано ключевое слово permit, т.е. разрешить) с метрикой 5. Согласно логике, эти маршруты будут распространяться благодаря тому, что выполнены условия, заданные в карте маршрутов. Списки префиксов являются новым, более эффективным и интуитивно понятным способом фильтрации маршрутов. Более детально мы обсудим его позже.
Если сообщение об обновлении маршрутов не соответствует критерию, заданному в записи карты маршрутов, то в протоколе BGP последовательно применяются все записи, пока не будут предприняты какие либо действия или не исчерпаются записи в карте маршрутов. Если обновление маршрутов не соответствует ни одному из критериев, то оно не будет распространяться или модифицироваться каким-либо образом. Это обновление маршрутов будет просто отвергнуто.
Карты маршрутов могут использоваться как со входящими (in), так и с исходящими (out) обновлениями PGP-маршрутов. В листинге 11.9 представлена карта маршрутов MYMAP, которая используется применительно к исходящим обновлениям BGP-маршрутов, поступающих от узла с адресом 172.16.20.2.

Листинг 11.9. Карта маршрутов MYMAP и исходящие обновления маршрутов
router bgp 1
neighbor 172.16.20.2 remote-as 3
neighbor 172.16.20.2 route-map MYMAP out	

Списки префиксов

Как уже отмечалось в главе 6, списки префиксов являются новейшим, более эффективным и интуитивно понятным способом идентификации маршрутов для их последующего сравнения с критериями или для фильтрации в протоколах маршрутизации. Давайте рассмотрим основные рекомендации по настройке списков префиксов.
В отличие от списков разрешения доступа, списки префиксов могут обновляться не

полностью, а частично. Это означает, что каждая запись в списке префиксов идентифицируется номером последовательности. Если необходимо добавить, удалить или изменить заданную в списке префиксов последовательность, то нужно лишь указать ее номер. Основное преимущество такой операции заключается в том, что, в отличие от списков разрешения доступа, не нужно удачять список и затем снова настраивать его при внесении каких-либо изменений.
В списках префиксов также имеет значение порядок следования записей, т.е. первая запись, которая соответствует условиям, и будет приниматься как руководство к действию. Как и в списках разрешения доступа, вы можете разрешить (permit) или запретить (deny) распространение сведений о том или ином префиксе. Списки префиксов также позволяют организовать фильтрацию не только отдельных префиксов, но и диапазонов префиксов.
Настройку списков префиксов мы обсудим позже. Отметим, что наши рекомендации ни в коем случае не должны использоваться вместо тех, что имеются в документации на вашу версию 1 OS.
Списки префиксов могут именоваться любой строкой, содержащей буквы и цифры, а также могут снабжаться специальным описанием. Описание списка префиксов выглядит примерно так:
ip prefix-list list-name description text

Для того чтобы добавить или удалить записи из списка префиксов, понадобится следующий синтаксис:

ip prefix-list list-name seq seq-value deny/permit network/len [ge ge-value] [le le-value]
Здесь list-name — строка буквенно-цифровых символов. Для обозначения списков префиксов вы можете использовать стандартную схему с последовательной нумерацией или задать более понятное вам название:
ip prefix-list list-name <до 80 символов,  пробелы разрешены>
В табл. 11.3 представлены примеры фильтрации префиксов.
Таблица 11.3. Фильтрация заданных префиксов	

Критерий фильтрации	Выполняемая команда

Разрешить все кроме префикса 192.68.0.0/16 ip prefix-list sample permit 192.68.0.0/16
Запретить маршрут по умолчанию	ip prefix-list sample deny 0.0.0.0/0
Разрешить все	ip prefix-list sample permit 0.0.0.0/0 le 32
Запретить все	ip prefix-list sample deny 0.0,0.0/0 le 32
Запретить /25+ во всем адресном
^	^	ip prefix-list sample deny 0.0.0.0/0 ge 25
пространстве
В префиксе 192.68.0.0/24 запретить /25+	ip prefix-list sample deny 192.68.0.0/24 ge 25

Разрешить все адреса с префиксами от /8 до /24

ip prefix-list sample permit 0.0.0.0/0 ge 8 le 24

Обратите внимание, что в табл. 11.3 не включены номера последовательностей. Если вы не указываете номер последовательности, то начальное значение последовательности по умолчанию — 5 и будет увеличивается на 5 в каждой последующей записи, если явно не указан другой номер последовательности.
Для пошаговой настройки списка префиксов вам просто нужно указать номер последовательности для записи, которую вы собираетесь добавить, удалить или изменить в списке. В качестве примера рассмотрим список префиксов в листинге 11.10.

Листинг 11.10. Пример списка префиксов	
ip prefix-list	sample   seq	5	permit	1.1.1.0/24
ip prefix-list	sample   seq	10	permit	2.2.2.0/24
ip prefix-list	sample   seq	15	permit	3.3.3.0/24
ip prefix-list	sample seq	20	deny	0.0.0.0/0      le      32

Пример списка префиксов, приведенный в листинге 11.10, разрешает префиксы 1.1,1.0/24, 2.2.2.0/24 и 3.3.3.0/24 и запрещает все остальные маршруты. Предположим, что необходимо разрешить также маршрут 4.4.4.0/24. Соответствующая настройка записи будет выполняться таким образом:
ip prefix-list sample seq 18 permit 4.4.4.0/24

При внесении этой записи в список префиксов последний приобретет вид, представленный в листинге 11.11.

Листинг 11.11. Список префиксов после добавления записи, разрешающей
работу с маршрутом 4.4.4.0/24	
ip prefix-list	sample	seq 5   permit 1.1.1.0/24
ip prefix-list	sample	seq 10 permit 2.2.2.0/24
ip prefix-list	sample	seq 15 permit 3.3.3.0/24
ip prefix-list	sample	seq 18 permit 4.4.4.0/24
ip prefix-list	sample	seq 20 deny      0.0.0.0/0    le 32

Теперь допустим, что необходимо запретить маршрут 4.4.4.0/24. Вам потребуется внести следующую запись в список префиксов:
no ip prefix-list sample seq 18

Теперь наш список префиксов будет выглядеть так, как показано в листинге 11.12.

Листинг 11.12. Список префиксов после добавления записи, запрещающей
работу с маршрутом 4.4.4.0/24	
ip prefix-list	sample	seq 5   permit	1.1.1.0/24
ip prefix-list	sample	seq 10 permit	2.2.2.0/24
ip prefix-list	sample	seq 15 permit	3.3.3.0/24
ip prefix-list	sample	seq 20 deny	0.0.0.0/0    le 32

Как видите, пошаговое внесение изменений в списки префиксов предоставляет администратору огромные преимущества по сравнению с традиционными списками разрешения доступа. В последующих листингах главы 11 мы будем в основном применять списки разрешения доступа. Примеры использования списков префиксов вы найдете в следующей главе.

Идентифицирование и фильтрация маршрутов на основе NLRI

Чтобы ограничить маршрутную информацию, получаемую или распространяемую вашим маршрутизатором, вы можете фильтровать ее на основе сообщений об обновлении маршрутов, отправляемых на соседний взаимодействующий узел или поступающих от него. Фильтр представляет собой совокупность списков префиксов (или списков разрешения доступа), которые применяются к сообщениям об обновлении маршрутов, поступающим или

Чтобы избежать подобной ситуации, на маршрутизаторе RTA можно настроить фильтр, который бы не допускал распространения префикса 192.68.10.0/24 в AS1. В листинге 11.13 показан пример организации такого фильтра на маршрутизаторе RTA.

Листинг 11.13. Фильтр префикса на маршрутизаторе RTA
router bgp 3 no synchronization neighbor 172.16.1.2 remote-as 3 neighbor 172.16.20.1 remote-as 1 neighbor 172.16.20.1 prefix-list 1 out no auto-summary
!
ip prefix-list 1 seq 5 deny 192.68.10.0/24
ip prefix-list 1 seq 10 permit 0.0.0.0/0 le 32

В листинге 11.13 комбинация команд настройки маршрутизатора neighbor prefix-list и списка префиксов 1 не дает возможности маршрутизатору RTA распространять сведения о префиксе 192.68.10.0/24 в AS1. В части настроек маршрутизатора, где описывается список префиксов, когда последний используется совместно с BGP-командой neighbor, задается фильтрация исходящих обновлений маршрутов в направлении указанного соседнего узла (обратите внимание на ключевое слово out). Заметьте, что список префиксов 1 заканчивается логическим выражением, которое разрешает распространение всех обновлений маршрутов (permit 0.0.0.0/0 1е 32). Когда с целью фильтрации используются списки префиксов или списки разрешения доступа, если в конце не определено какое-либо действие, то по умолчанию будет применяться логическое выражение "запретить все остальное". Это означает, что маршруты, не соответствующие ранее заданным условиям, будут отвергаться. Вот почему очень важно определить действия по умолчанию. В нашем примере маршрут 192.68.10.0/24 будет запрещен, а все остальные маршруты разрешены к распространению. Для этой цели задание в явном виде выражения "запретить все остальное" (если вам действительно это необходимо) поможет избавиться от головной боли.
Хотя из примера этого и не видно, наиболее распространенная на сегодня практика заключается в подготовке списка маршрутов, которые будут разрешены к распространению, и последующей настройке в явном виде запрещенных маршрутов. Этим гарантируется, что маршрутная информация от взаимодействующего узла приниматься не будет, если она не прошла через фильтр. Конечно, это может оказаться не совсем удобным, если от взаимодействующего узла вы получаете большое количество маршрутной информации.
Карты маршрутов (которые ссылаются на списки разрешения доступа, списки

отправляемым взаимодействующему узлу. На рис. 11.2, маршрутизатор RTD в AS2 объявляет маршрут в сеть 192.68.10.0/24 и посылает его маршрутизатору RTF. Затем маршрутизатор RTF передает сведения о маршруте маршрутизатору RTA по IBGP, который, в свою очередь, будет распространять сведения о нем в AS1. Таким образом, объявляя сеть 192.68.10.0/24, AS3 может стать транзитной.

Рис. 11.2. Идентифицирование и фильтрация префиксов

префиксов или на другие правила маршрутизации) могут применяться для фильтрации обновлений маршрутов в предыдущем примере. Для того чтобы познакомить вас с различными параметрами, применяемыми при фильтрации, был выбран метод с использованием прямого списка префиксов.
Применение списков разрешения доступа для фильтрации маршрутов к суперсетям или диапазонов маршрутов — довольно сложное дело, поэтому обычно прибегают к различным хитростям. Предположим, что, например, к марш руги затору RTF на рис. 11.2 подключены различные подсети из диапазона 172.16.Х.Х, а вам необходимо объявить объединенный маршрут только в форме 172.16.0.0/16. Тогда стандартный список разрешения доступа вида: access-list I permit 172.16.0.0 0.0.255.255
работать не будет, так как он разрешает больше, чем вам необходимо. В стандартном списке разрешения доступа анализируется только IP-адрес источника и не проверяется длина сетевой маски. Таким образом, приведенный список разрешения доступа допускает объявление маршрутов 172.16.0.0/16, 172.16.0.0/17, 172.16.0.0/18, 172.16.0.0/24 и т.д.
Чтобы ограничить распространение маршрутов только одним 172.16.0.0/16, необходимо воспользоваться расширенным списком разрешения доступа: access-list access-list-number {deny | permit} protocol source source-wildcard destination destination-wildcard I mask mas.fc-ivild.card
Этим выражением вы определяете расширенный список разрешения доступа, в котором сопоставление проводится по паре адресов источника и пункта назначения или по адресу источника и маске. На основе этих данных принимается решение о разрешении или запрещении распространения определенного обновления маршрутов. Номер списка разрешения доступа назначается из диапазона между 100 и 199. Если проверка осуществляется по протоколу IP и сопоставление проводится по паре адрес источника — маска, то строка конфигурации может быть задана в виде:
access-list access-list-number permit ip network-number network-do-not-care-bits mask mask-do-not-care-bits

Например:
access-list    101    permit    ip    172.16.0.0    0.0.255.255    255.255.0.0
0.0.0.0

Здесь 0 — это точно совпавший бит, а 1 — незначащий бит.
В приведенном выше расширенном списке разрешения доступа показано, что объединенный маршрут 172.16.0.0/16 будет распространяться лишь потому, что его маска в точности совпадает с 255.255.0.0. А обновление маршрутов, содержащее 172.16.0.0/17. фильтр уже не пропустит.
Вы можете достичь этого и другими путями. Например:
access-list 101 permit ip host 172.16.0.0 host 255.255.0.0 Или использовать список префиксов в качестве фильтра:
ip prefix-list 1  seq 5 permit 172.16.0.0/16

Помните: по умолчанию предполагается, что все, не описанное в правилах, запрещено, если вы не задали обратное.

Идентифицирование и фильтрация маршрутов на основе атрибута ASPATH

Фильтрация маршрутов на основе информации, которая содержится в атрибуте AS_PATH, довольно удобна, когда требуется фильтровать все маршруты в одной или между

несколькими AS. Этот метод является достаточно эффективной альтернативой созданию списков из сотен маршрутов, например, в случае фильтрации на основе списков префиксов. Вы также можете указать список префиксов для входящих и исходящих обновлений маршрутов на основе значений атрибута ASPATH.
Давайте снова вернемся к рис. 11.2. Если требуется не допустить чтобы AS3 стала транзитной, то нужно сконфигурировать ее граничные маршрут заторы RTA и RTF так, чтобы они объявляли только локальные сети. Имеются в виду локальные сети, сгенерированные в самой AS. В листинге 11.14 приведена конфигурация маршрутизатора RTA, где выполняются эти действия (подобным образом нужно будет настроить и маршрутизатор RTF).

Листинг 11.14. Как не допустить, чтобы AS3 стала транзитной
(конфигурация маршрутизатора RTA)	
router bgp 3
no synchronization neighbor 172.16.1.2 remote-as 3 neighbor 172.16.20.1 remote-as 1 neighbor 172.16.20.1 filter-list 1 out no auto-summary ip as-path access-list 1 permit A$

В листинге 11.14 список разрешения доступа 1, работающий на основе анализа AS_PATH, идентифицирует только те обновления, которые были сгенерированы в AS3. Субкоманда filter-list при фильтрации обновлений маршрутов работает совместно со списком разрешения доступа на основе анализа AS_PATH. В данном примере эта субкоманда применяется к исходящим обновлениям маршрутов (обратите внимание на ключевое слово out). Нормальное выражение вида А$ говорит о том, что атрибут ASPATH пустой, т.е. не содержит каких-либо данных. Знак вставки (А) указывает на начало атрибута ASPATH, а символ $ обозначает конец атрибута AS_PATH. Так как все сети, сгенерированные в AS3, будут иметь пустые атрибуты ASPATH (вспомните, что локальный номер AS не включается в атрибут, пока маршрут не передан другому EBGP-узлу), то они будут объявляться дальше. Все остальные префиксы будут отвергаться.
Если вы хотите убедиться в корректной работе вашего нормального выражения, воспользуйтесь для этого командой EXEC:
show ip bgp regexp regular-expression

По этой команде маршрутизатор выдает все маршруты, которые соответствуют заданному нормальному выражению. Значения символов в нормальных выражениях описаны в табл. 6.4 в главе 6.

Примечание
Карты маршрутов (в частности те, что ссылаются на списки разрешения доступа на основе атрибута ASPATH) могли также применяться и для фильтрации обновлений маршрутов в предыдущем примере. Однако для того, чтобы показать различные способы организации фильтров, было предложено использовать субкоманду filter-list.