Со временем обрывки знаний и умений становится все труднее удержать в голове. Они расползаются по уголкам памяти заполняя все свободное место. Извлекать необходимое на свет становится все сложнее. Этот блог - рабочая записная книжка.

Sunday, May 4, 2008

Динамический рутинг поверх vpn (ospf over gre ipsec)

0. Зачем
После прочтения заметки о конфигурации gre ipsec может остаться некоторое недопонимание того зачем, собственно, так усложнять достаточно простую первоначальную конфигурацию.
Данная запись призвана ответить на эти вопросы.
Тем читателям, которые попали сюда по поиску из google или еще каким путем я настоятельно рекомендую прочитать предыдущую часть о настройке gre ipsec, а уже потом возвращаться сюда.
Итак речь идёт о запуске динамических протоколов маршрутизации, в данном случае ospf, поверх существующего vpn соединения.
В случае статической конфигурации, необходимо жесткое указание сетей подлежащих шифрованию. Для этого в конфигурации без gre используются crypto acl.
Если же конфигурация сетей меняется необходимо менять и конфигурацию. Представим довольно жизненную ситуацию - головной офис и определённое количество филиалов.
С случае появления в головном отделении новых ip сетей, необходимо произвести перенастройку всех рутеров, как в центрального так и филиальных. При большом количестве филиалов это может быть непосильной задачей.


1. Описание стенда
Настройка продолжается ровно с того места на котором закончилась статья о конфигурировании gre ipsec. Итак у нас есть следующая конфигурации IP сетей.

Внутренняя сеть А: 192.168.1.0/24
Внутренняя сеть Б: 192.168.2.0/24

Внешний интерфейс А: 10.10.11.2/24
Внешний интерфейс Б: 10.10.10.2/24

Допустим, что А это филиал, а Б головное отделение. В случае статического ipsec туннеля указание какой трафик подлежит шифрации с помощью crypto acl.
// routerA
RouterA(config)# access-list 120 permit ip 192.168.1.0 0.0.0.255 192.168.2.0 0.0.0.255

В случае gre ipsec необходимо статическим маршрутом указать куда напрявлять трафик для определённой сети.
RouterA(config)# ip route 192.168.2.0 255.255.255.0 Tunnel10
После этого трафик попадает в туннель, инкапсулируется в gre, а crypto acl настроеные между пирами пропускали его через процедуру шифрации.

Теперь представим, что в центральном офисе (сеть Б) появилась новая сеть, например 10.200.1.0/24, для обеспечения её видимости в филиалах, необходимо либо добавить по строчке вcrypto acl (static ipsec) либо добавить маршрут (gre ipsec ), что конечно не составляет проблемы для десятка устройств. Но мы же помним, что организация у нас большая и туннелей условно бесконечное количество. :)


2. Конфигурация
Простейшая конфигурация ospf достаточно проста и не вызывает особых проблем. Я не буду рассказывать о принципах работы, алгоритме или прочих ньансах работы этого протокола. В сети достаточно много информации по этой теме. Цель данной заметки показать практическое применение и не дать себе забыть эту простую но в то же время крайне эффективную конфигурацию. :)
Описание настройки.
- число после слова ospf обозначает просто номер процесса ospf на данном устройстве, нет смысла стремиться к его идентичности
- логирование изменений
- ключевая строка, описание сети которые будут анонсироваться от данного рутера. О том что такое
area можно говорить долго, но не сейчас. Обратите внимание, используется не маска сети, а wildcard, как в acl.


//Настройка ospf. RouterA
RouterA(config)# router ospf 100
RouterA(config-router)# log-adjacency-changes
RouterA(config-router)# network 192.168.1.0 0.0.0.255 area 10

Практически анологична настройка ospf на рутере Б, исключение составляет дополнительная сеть.

//Настройка ospf. RouterB
RouterB(config)# router ospf 100
RouterB(config-router)# log-adjacency-changes
RouterB(config-router)# network 10.150.1.0 0.0.0.255 area 10
RouterB(config-router)# network 192.168.2.0 0.0.0.255 area 10

В принципе в документации сказано о том, что для указания процессу ospf работать на конкретном интерфейсе необходимо указать сеть относящуюся к данному интерфейсу в конфигурации network.
Т.е. в данном случае сети
10.10.11.0/24 и 10.10.10.0/24 также должны быть указаны. Если у вас версия IOS менее чем 12.4 так и придется сделать. Я же сделаю немного по-другому.
//Настройка ospf. RouterA
RouterA(config)# interface Tunnel10
RouterA(config)# ip ospf 100 area 10

Это просто указание процессу работать на данном интерфейсе. Об этом трюке я узнал от простого словацкого парня Ивана, чей блог я с удовольствием читаю.
После настройки ospf указание статического маршрута более не нужно. Т.е. для рутера А.
//удаление статического маршрута
RouterA(config)# no ip route 192.168.2.0 255.255.255.0 Tunnel10

Теперь можно взглянуть на таблицу маршрутизации во всей красе.

RouterA#sh ip route | beg Gateway
Gateway of last resort is 10.10.11.1 to network 0.0.0.0

10.0.0.0/8 is variably subnetted, 4 subnets, 2 masks
C 10.10.11.0/24 is directly connected, FastEthernet1/0
O 10.150.1.0/24 [110/11122] via 10.10.10.2, 00:00:22, Tunnel10
C 192.168.1.0/24 is directly connected, FastEthernet0/1
O 192.168.2.0/24 [110/11121] via 10.10.10.2, 00:00:22, Tunnel10
S* 0.0.0.0/0 [1/0] via 10.10.11.1

Как видно, анонсы сетей прошли и рутер А видит маршруты в сети за рутером Б через ospf, что и было необходимо.
Теперь при появлении в центральном отделении новых сетей, конфигурация филиалов не нуждается в изменениях. Всё что необходимо, добавить новую строчкуnetwork в конфигурацию ospf на рутере в центральном офисе. Филиалы узнают об этом практически мгновенно. :)


upd 14.05.08, спасибо Vadim
//Посмотрим на наших соседей.
RouterA#show ip ospf neighbor

Neighbor ID Pri State Dead Time Address Interface
192.168.2.1 0 FULL/ - 00:00:37 10.10.10.2 Tunnel10


6 comments:

Vadim said...

Для наглядности можно еще добавить вывод show ip ospf neighbor, чтобы показать соседний ospf маршрутизатор.

pablo said...

Совершенно здравая мысль, добавлено.
Спасибо.

Dormestmass said...

Долго думал над заголовком поста.

Скажите, а причем здесь vpn?

Если Вы хотели показать, что ОСПФ конфигурируется поверх криптованных каналов как-то по особенному, то тема не раскрыта — конфигурация OSPF совершенно банальная.

pablo said...

Спасибо за комментарий.

Предыдущих две заметки были о ipsec vpn - статический и поверх gre. Для неискушенного читателя может показаться неочевидным заметное усложнение изначально работающей схемы на что-то другое. Собствено, для разъяснение зачем и была написана эта заметка.
Возможно было бы правильнее поместить её к конец записи о gre vpn, как пример использования, я подумаю над этим.

Anonymous said...

...Теперь при появлении в центральном отделении новых сетей, конфигурация филиалов не нуждается в изменениях...

А как же acl 120? Иначе весь трафик на новые сети не будет шифроваться.

pablo said...

Всё смешалось. :)
acl 120 приведен как пример из конфигурации статического соединения. Статья. В данном случае трафик сначала "заворачивается" в gre туннель и только после этого подвергается процедуре шифрации. Статья.
Обратите внимание на пример с capture.