VPN, полное покрытие

    Представьте, ваша компания набирает обороты, растут продажи, происходит открытие множества филиалов, и эти филиалы активно работают друг с другом. А это значит что вам нужно все их друг с другом связать! В качестве оборудования у нас маршрутизаторы Cisco, что впрочем отменяет только конечные примеры настроек, если у вас Cisco нет, я находил в сети проект OpenNHRP.

    Итак, начнем. Для начала свяжем центр с первым филиалом с использованием IPSEC.


    Введем адресацию — внутренняя сеть компании 10.0.0.0/8, сеть головного офиса — 10.0.0.0/24, сеть первого филиала — 10.1.0.0/24. Внешний адрес маршрутизатора головного офиса — 172.16.0.2/30, а его маршрут по умолчанию уходит, соответственно, на 172.16.0.1. Для лучшего различения выдадим филиалу «внешний» адрес 192.168.45.14/30, а шлюзом у нас будет единственный оставшийся адрес из диапазона — 192.168.45.13.

    Маршрутизатор головного офиса:
    ! Определяем политику ISAKMP. Главное здесь это указание, что аутентификация у нас 
    ! с предварительно заданным ключом.
    !
    crypto isakmp policy 1
     encr aes
     authentication pre-share
     group 2
     lifetime 3600
    !
    ! Задаем ключ для связи с маршрутизатором филиала.
    !
    crypto isakmp key MEGAKEY123 address 192.168.45.14
    !
    crypto ipsec transform-set BIGCOMPANY-TRSET esp-aes esp-sha-hmac
    !
    crypto ipsec profile BIGCOMPANY-profile                                             
     set transform-set BIGCOMPANY-TRSET
    !
    interface FastEthernet0/0
     ip address 172.16.0.2 255.255.255.252
    !
    !А теперь создаем интерфейс, который будет вратами в филиал №1
    !
    interface Tunnel1
     description Tunnel to filial №1 10.1.0.0/24
     ip address 10.55.0.1 255.255.255.252
     tunnel source FastEthernet0/0
     tunnel destination 192.168.45.14
     tunnel mode ipsec ipv4
     tunnel protection ipsec profile BIGCOMPANY-profile
    !
    ip route 0.0.0.0 0.0.0.0 172.16.0.1
    ! А теперь пакеты для сети филиала пихаем на другой конец туннеля.
    ip route 10.1.0.0 255.255.255.0 10.55.0.2
    


    Маршрутизатор филиала настраивается по аналогии, а главное здесь это разобрать недостатки решения. Исходя из нашего предположения число филиалов быстро растет, поэтому при подключении второго филиала вам надо будет настроить еще два туннеля, при подключении третьего — 3, четвертого — 4 и так далее. Можете остановиться на 20-ом к примеру и задуматься — да разве же так оно должно быть?

    А должно быть в таких случаях на порядки больше динамики — нам нужны протоколы маршрутизации и многоточечный VPN, а все вместе Cisco именует DMVPN — Dynamic Multipoint VPN. Вначале освоения мало кто понимает зачем ему нужны OSPF и сертификаты — ведь прописать ip route 10.1.0.0… гораздо проще, а заморачиваться с сертификатами, когда есть возможность просто вбить ключ на двух концах, это вообще извращение. Но вбивать один ключ на все точки недопустимо, а вбивать пары ключей на все нереально. Таким образом сертификаты придется всё таки осваивать.

    Впрочем тема сертификатов в Cisco IPSEC выходит за рамки этого хабратопика — здесь я вам покажу что такое DMVPN и чем он замечателен.

    Итак, DMVPN это сочетание NHRP, протокола динамической маршрутизации (EIGRP, OSPF, IS-IS — в этом вас не ограничивают) и многоточечного GRE туннеля. DMVPN позволяет свести настройку дополнительных точек к минимуму, клиенты могут иметь динамические адреса (серверу нужен постоянный, это точка входа), туннели между клиентами будут подниматься автоматически, по требованию.

    Протокол NHRP — NBMA Next Hop Resolution Protocol, служит для разрешения адресов в не широковещательных сетях — в нашем случае помогает определить внешний адрес маршрутизатора, которому предназначается пакет. Разрешение осуществляет «hub», сервер, которому сообщают свои адреса и запрашивают информацию о других «spokes», клиенты.

    Я использовал DMVPN когда в компании началось внедрение VoIP — чтобы не гонять голосовой трафик через центр. Например Васе из Томска понадобилось вызвать Петю из Красноярска — туннель между маршрутизаторами будет установлен динамически. У каждого маршрутизатора есть IP адрес специальной сети (например 10.0.1.0/24), и маршрутизаторы регистрируются на NHRP сервере центра (10.0.1.1). Когда требуется Томску соединиться с Красноярском он смотрит в таблицу маршрутизации и видит, что маршрут до этой сети лежит через точку 10.0.1.7. Через NHRP маршрутизатор узнает публичный IP адрес маршрутизатора и может начинать устанавливать IPSEC туннель. Звучит не очень сложно по моему.

    В качестве протокола динамической маршрутизации возьмем OSPF, исходя из личных предпочтений. Легко может быть заменен на любой другой по вашему желанию.

    В примере используется общий ключ, один на всех. Но так делать в реальном мире нельзя — обязательно изучите тему сертификатов.

    Конфигурация центрального маршрутизатора, относящееся к делу:
    crypto isakmp policy 1
     encr aes
     authentication pre-share
     group 2
     lifetime 3600
    !
    ! Задаем ключ, один для всех
    !
    crypto isakmp key MEGAKEY123 address 0.0.0.0 0.0.0.0
    !
    crypto ipsec transform-set BIGCOMPANY-TRSET esp-aes esp-sha-hmac
    !
    crypto ipsec profile BIGCOMPANY-profile                                             
     set transform-set BIGCOMPANY-TRSET
    !
    interface FastEthernet0/0
     description WAN interface
     ip address 172.16.0.2 255.255.255.252
    !
    interface Tunnel101                                                           
     ip address 10.0.1.1 255.255.0.0
     no ip redirects
     ip mtu 1440
     ip nhrp authentication KUKU321
     ip nhrp map multicast dynamic                                                
     ip nhrp network-id 1                                                         
     ip nhrp holdtime 3600                                                        
     ip nhrp cache non-authoritative                                              
     ip tcp adjust-mss 1360                                                       
     no ip mroute-cache                                                           
     ip ospf network broadcast                                                    
     ip ospf hello-interval 30                                                    
     ip ospf priority 2                                                           
     delay 1000                                                                   
     tunnel source Vlan1                                                          
     tunnel mode gre multipoint                                                   
     tunnel key KUKU                                                            
     tunnel protection ipsec profile BIGCOMPANY-TRSET
    !
    ip route 0.0.0.0 0.0.0.0 172.16.0.1
    !
    


    Маршрутизатор филиала:
    interface Tunnel7                                                         
     ip address 10.0.1.2 255.255.255.0                                       
     no ip redirects
     ip nhrp authentication KUKU321
     ip nhrp map multicast dynamic                                            
     ip nhrp map multicast 172.16.0.2
     ip nhrp map 10.0.1.1 172.16.0.2
     ip nhrp network-id 1                                                     
     ip nhrp holdtime 3600                                                    
     ip nhrp nhs 10.0.1.1                                                   
     no ip route-cache cef                                                    
     no ip route-cache                                                        
     ip tcp adjust-mss 1360                                                   
     no ip mroute-cache                                                       
     ip ospf network broadcast                                                
     ip ospf hello-interval 30                                                
     ip ospf priority 0                                                       
     delay 1000                                                               
     tunnel source FastEthernet0/0
     tunnel mode gre multipoint                                               
     tunnel key KUKU
     tunnel protection ipsec profile BIGCOMPANY-TRSET
    


    Как видите основные настройки относятся к туннельному интерфейсу Tunnel7. Первый блок — настройки NHRP.
    Команды ip nhrp map задают порядок разрешения адресов. Здесь мы задаем соответствие внутреннего адреса сервера NHRP и его WAN адреса — ip nhrp map 10.0.1.1 172.16.0.2. Также по аналогии, все мультикастовые запросы адресуются туда же. Ну и ip nhrp nhs задает адрес сервера.
    Заметьте, что адреса всех интерфейсов DMVPN из одной сети.
    Команды ip ospf задают настройки динамической маршрутизации на интерфейсе. Здесь могут быть и ip eigrp, по вашему выбору.
    Ну и tunnel protection ipsec profile BIGCOMPANY-TRSET включает шифрование, как вы догадываетесь, шаг не обязательный.

    Здесь рассмотрен вариант spoke-spoke, то есть прямое соединение между клиентами DMVPN. Есть вариант hub-spoke, который служит для соединения клиентов с центром.

    Надеюсь кто то, столкнувшийся с взрывным ростом бизнеса, прочтя этот топик будет знать, что делать в такой ситуации. Приведенные здесь настройки это просто пример, не используйте статью в качестве HOW-TO, читайте cisco.com.

    Дополнительно могу сказать, что настройка маршрутизатора у нас занимала не более получаса — это генерация сертификата, заливка на маршрутизатор, генерация конфига (простенький bash скрипт), правка конфига напильником, упаковка в коробку.

    Домашнее чтение на официальном сайте. Из документа, который вы там скачаете, видно, что возможности применение DMVPN несколько шире, чем представлено здесь.
    Ads
    AdBlock has stolen the banner, but banners are not teeth — they will be back

    More

    Comments 43

      0
      Ответьте, вы сумели заставить OpenNHRP работать!?
        0
        Я не работал с VPN на базе Linux/BSD. У меня везде были маршрутизаторы Cisco.
        Возможно проходящий хабрагражданин расскажет о своем опыте.
          +1
          Я, я проходящий гражданин.

          Я так и не сумел заставить OpenNHRP работать. Статическую сеть mGRE, совместимую с Cisco — поднял (там без IPsec, но его туда добавить — это раз плюнуть), т.е. адреса в NBMA-сети прописывал руками. А вот чтоб динамически — регистрироваться на хабе и строить каналы между собой — тоже только на Cisco получилось сделать.
            0
            В общем раззадорили интерес: ) Я сейчас тоже попробую.
              0
              Чёрт, он видимо не 64-bit дружественный:
              nhrp_peer.c:1286: error: cast from pointer to integer of different size
                0
                Странно. А я собирал его на amd64 (на которой сейчас сижу, собственно). Он даже есть собранный. И он даже запускается, только не работает :(
                  0
                  Блин, вот ну не знаю я C, но ведь как то правлю каждый раз, и таки собираю. Вот как?? Это такой необходимый талант OSS админа?
                    0
                    Я вообще собираю emerge opennhrp, стянул ebuild в каком-то alpine linux. Там ещё есть утилита администрирования — с ней не разбирался (возможно, зря).
      +3
      > У каждого маршрутизатора есть IP адрес специальной NBMA сети (например 10.0.1.0/24)
      Вообще-то, неправильно вы написали.

      NBMA-сеть — это как раз Internet (NBMA = без широковещания, но с множественным доступом), через который всё гоняется. (Объяснение на сайте Cisco) А как раз виртуальная сеть, которую вы строите на базе mGRE, вполне может быть сделана с поддержкой широковещания — для этого нужно к конфигурации виртуальных интерфейсов добавить «ip nhrp map multicast nbma-address» — сообщить системе, на каком NBMA-адресе слушать широковещания для виртуальной сети.

      Более того, у вас это широковещание используется для работы ospf.

      Ну и, конечно же, адреса вида 10.0.1.0/24 не могут быть адресами концентраторов, т.к. это адреса сетей, а не конечных устройств. Вы имели ввиду 10.0.1.1/24 или что-то в этом роде?
        0
        спасибо за отличный комментарий, переправлю.

        10.0.1.0/24 это адрес сети, из которой берутся адреса.
        –1
        Как то в таком варианте больше склоняюсь к OpenVPN, но все равно спасибо интересно.
          0
          А в OpenVPN есть подобный механизм?

          Здесь просто используются стандартные протоколы, которые есть практически везде.
            0
            Использование OpenVPN стандартных протоколов TCP и UDP позволяет ему стать альтернативой IPsec в ситуациях, когда Интернет-провайдер блокирует некоторые VPN протоколы. © Wikipedia

            К сожалению придется ставить свой клиент, но возможностей хватает.
            сам я в силу обстоятельств использую или железное решение (офис — офис) или программное L2TP (без ipsec) клиент — офис
              0
              Ну все так, вот только если вам придется дружить с cisco, то придется заводить opennhrp, я думаю.
                0
                ну думаю да =)
                но про openvpn надо помнить.

                вот тут кстати одно из решений, одного хорошего человека, почитайте может будет интересно.
                bigkaa.blogspot.com/2008/11/open-vpn.html
                0
                «Использование OpenVPN стандартных протоколов TCP и UDP позволяет ему стать альтернативой IPsec в ситуациях, когда Интернет-провайдер блокирует некоторые VPN протоколы»

                Думаю, имеется в виду NAT-T, который есть у всех на самом деле.
              +1
              Вы различайте функционал.

              Если вы построите сеть OpenVPN — связь между двумя пирами-«споками» будет осуществляться непременно через хаб. Скажем, OpenVPN-сервер в Москве, а клиенты — в Красноярске и Перми — и весь трафик между последними двумя будет ходить через Москву.

              А DMVPN позволяет динамически организовывать виртуальные каналы между споками, т.е. трафик между Пермью и Красноярском не будет ходить через Москву, а напрямую.

              Тут скорее с gpve нужно сравнивать по функционалу, а не с OpenVPN, но gvpe не умеет строит динамические каналы.
                +2
                … gvpe не умеет строить динамические каналы. А статически такую сеть можно построить либо на gvpe, либо — на mGRE+IPsec (без OpenNHRP). Такую сеть гарантированно можно связать с Cisco.
              –3
              А еще можно вместо циски поставить старый пенек (pentium/celeron) линукс (для любителей всего и сразу — mikrotik) и завести все это там, не покупая дорогущих цисок

                –1
                старый пенек, может
                а) неожиданно умереть
                б) не выдержать нагрузки

                ну и последнее оно не надо =)
                Любая самая захудалая точка доступа для SOHO умеет делать VPN.
                  –1
                  У меня еще рядом стоят 2 пенька на готове — хотсвоп
                  Нагрузку держут лучше чем эти ваши длинки
                    0
                    каждому свое. Длинки не рекомендую =) но пеньки то же не вариант.
                    0
                    Имею интранет-сеть центральный офис + 6 филиалов. Реализовано все на IP-COP + Zerina OpenVPN.
                    Изначально стояли «старые пеньки», двое за полгода сдохли, поменял; еще двоих поменял сам на Celeron (III). Сеть неплоха в настройке и обслуживании, легко и быстро настраивается.

                      0
                      Кстати при помощи IP-COP + Zerina OpenVPN можно сделать что-то типа multi-point.
                  –3
                  А еще можно использовать cisco easyvpn чтобы он делал всю конфигурацию тогда получаеться DVTI тунели. Плюс непонятно зачем вы целую подсеть вешаете на тунель, это serial соединение. используйте просто ip unnambered c другого вашего интерфейса.
                    –3
                    в смысле не serial а point-to-point
                      +1
                      Вы статью-то прочитайте, ага. Там многоточковый туннель, а не точка-точка.
                        0
                        Виноват, читал по диагонали. Всегда считал что multi-point для VPN не существует, будем изучать, пробовать.
                      0
                      хорошая статья, на надо иметь в виду, что такое работает при условии, что в каждом из филиалов подключен «public internet», далеко не все компании позволяют себе такую «роскошь», особенно всякие там банки и прочие серьезные организации. У таких есть выделенный канал и связь только с центром, и по этому там по старинке будут в ручную городить n-ое кол-во туннелей и только и мечтать DMVPN & NHRP ;-)
                        0
                        Cisco распространяет свою концепцию не только на WAN IP сети. Почитайте документ по ссылке.

                        С другой стороны — а зачем банковским филиалам между собой общаться? Это конечно спорно все, сферический банк в вакууме.
                          0
                          Не, ну как же. Такое вполне возможно. Перевод денег между отделениями например. И общение по VoIP в процессе. Да мало ли чего может быть :)

                          Впрочем, по поводу сферического коня вы правы :)
                        0
                        Статья класс!
                        До этого на хабре были статьи про Cisco для newbies, так вот их забросили, у вас нет желания продолжить?
                        Буду очень благодарен!

                          0
                          Не знаю, я пишу по темам которые так или иначе заинтересовали. Если что нибудь такое придет в голову обязательно напишу: )

                          Навскидку могу описать свой метод разборок с адресами, масками в уме — для CCNA весьма полезно.
                          0
                          Это который 256 — маска, а потом выбираешь из диапозона?
                            0
                            Не совсем понял, распишите плз.
                            0
                            Ну например 172.22.1.97 маска 255.255.255.224 надо найти ip сети и broadcast ip.

                            256(лучше 255) — 224 = 32(тогда 31)
                            а потом типа считаешь в уме

                            0-31 далее 32-63 далее 64-95 далее 96-127 далее 128-149 и т.д

                            берешь 172.22.1.96 — сеть, 172.22.1.127 — broadcast

                            Это Вендел Одом так учит, Я ща самостоятельно курс CCNA учу
                              0
                              Правильно учит! У Cisco пару раз видел в мануалах страшные схемы с переводом в двоичную систему: )
                              0
                              Ребят я могу быт похож из-дали на лузера, но писать все эти команды ручками, потом ещё некоторые сертификацию проходят. Кучу бабла и время тратят на все эти дела.

                              Не проще ли программы использовать?

                              Хоть и стоят примерно столько-же, но иногда в целях тестирования к примеру можно пренебрегать ломалками, наглядный графический интерфейс, как например у KERIO и подобных. Куча вкусняшек типа контент фильтров прикрученых и антивирусов/антиспамеров.

                              Я конечно понимаю, что от слова CISCO у большинства стоит! Ну где же здравый смысл?
                                0
                                Программа то заточена на фильтрацию, кеширование и тп. А мне нужна динамическая маршрутизация! Вот и проще отдать денег за Cisco, чем за Kerio и получить все что нужно. В любом случае — если я использую Linux/BSD, то настройки там отнюдь не красочные (ну слышал что то про mikrotik, но не смотрел — не нравится мне их отношение к GPL наплевательское).

                                Конечно для Cisco может понадобится к примеру Radius сервер, syslog, netflow коллектор, взрослые технологии без свистелок. В общем надо разуметь куда и что ставить. Где то Kerio вполне хватит, а где то оборудование Cisco, или его unix аналоги, необходимо.
                                0
                                Кстати в Kerio WinRoute Firewall, VPN нету!
                                  0
                                  да и потом в Cisce тоже граф интерфейс есть
                                    0
                                    Да суть даже не в интерфейсе, в том что GUI сам по себе зло для новичка. На эту тему правда много разжевано, что надо вначале как следует разобраться в назначении галочек и кнопочек.

                                    Ну и мне быстрее маршрутизатор (один из кучи однотипных) настроить, к примеру, копирнув в него шаблон.

                                  Only users with full accounts can post comments. Log in, please.