PDA

Показать полную графическую версию : [решено] IP tunnel + IPSec + OSPF под Ubuntu и MikroTik


Tonny_Bennet
11-05-2014, 18:29
Здравствуйте.

Несколько раз уже поднимал тему грамотного соединения нескольких сетей с использованием разного маршрутизирующего оборудования и ПО. Вот снова я в раздумьях.

Есть несколько филиалов (читай сетей /24), смотрящих в интернет через программный роутер под Ubuntu Server. Между филиалами построена full mesh VPN сеть при помощи демона tinc, работающего на каждом из программных роутеров. Под full mesh я понимаю то, что каждый роутер подключен к каждому другому роутеру. Но если посмотреть на всю ситуацию объективно сейчас мне не нужно, чтобы все роутеры были подключены друг к другу прямым каналом. Достаточно чтобы региональные центры имели связь между собой в таком формате, а розничные подразделения каждого региона были подключены к своему региональному центру, и через него подключались к остальным региональным центрам.

Т.к. программно-аппаратных full mesh решений я не нашёл, а в ближайшее время нужно запустить ещё несколько подразделений я решил организовать подобную схему своими силами, прошу вас её прокомментировать:

Обязательным условием является отсутствие выделенного сервера, к которому все подключаются. Хочется создать схему без клиента и сервера, чтобы не было стороны инициализирующей и принимающей подключения.
Предположим есть четыре региональных центра: Ростов, Краснодар, Ставрополь, Волгоград. Между ними я поднимаю IP-IP тунели или GRE тунели. От каждого к каждому (Ростов-Краснодар, Ростов-Ставрополь, Ростов-Волгоград, Краснодар-Ставрополь, Краснодар-Волгоград, Ставрополь-Волгоград). Т.к. IP-IP или GRE тунели передают трафик в открытом режиме, на каждой из точек я разверну IPSec и буду шифровать трафик исходя из направления. Но т.к. я ленивый и писать статическую маршрутизацию для каждой сети мне лень, я разверну OSPF маршрутизацию, на всех тунельных и локальных интерфейсах маршрутизаторов. В таком случае если я захочу подключить розничное подразделение в Волгограде, я сделаю тунель только к волгоградскому офису с применением вышеописанной конфигурацией. Трафик из него будет попадать в любую сеть, через волгоградский филиал.

Меня смущает несколько моментов. Где-то я читал, что если в подобной схеме отключится IPsec трафик пойдёт в открытом виде. О OSPF ничего не знаю и поэтому хочу услышать заработает ли всё это в моей схеме? Или может стоит обратиться к чему-то ещё?

Tonny_Bennet
13-05-2014, 10:55
Всё оказалось не так сложно как могло показаться на первый взгляд.

Для тестов оставил Mikrotik дома. Отключил в нём фаервол для доступа из вне. Между офисным шлюзом и домом сначала поднял GRE тунель.
Пример для ubuntu (http://vk.it-sfera.com.ua/339.html) пример для MikroTik (http://wiki.mikrotik.com/wiki/Manual:Interface/Gre), к слову, если создавать его из GUI или веб интерфейса - нужно отдельно создать адрес и отдельно создать сам тунель. После поднятия тунеля железки видят друг друга через тунельные интерфейсы.

Для запуска динамической маршрутизации в Ubuntu понадобилось поставить один пакет и немного его настроить. Вот пример (http://calcn1.com/blog/linux/52.html) под CentOS, но у меня он заработал без проблем, после я закоментировал строку про "соседа", которая явно на него указывает, выключил пароли (почему-то не заработали с МТ), изменил ID зоны т.к. MT понимает ID похожие на IP адрес я указал 0.0.0.1. В Микротике всё настраивается аналогично, просто в нескольких окнах: отдельно зона, отдельно сети и интерфейсы. Всё заработало достаточно быстро маршруты прописались пакеты побежали, правда в логах увидел нестыковку MTU тунельных интерфейсов и быстренько поправил.

С шифрованием бился очень долго, ибо мне нужен не тунельный, а транспортный режим: IPSec только шифрует канал и не создаёт тунель. Пакет racoon под ubuntu в принципе не завёлся. Остановился на openswan. Путём проб и ошибок дошёл до вот такого конфига:


config setup
nat_traversal=yes
protostack=netkey

conn mikrotik #Подключение к Mikrotik
type=transport
authby=secret
left=<внешний IP адрес Ubuntu>
right=<внешний IP адрес MikroTik>
esp=3des-sha1
ike=3des-md5-modp1024
keylife=8h
keyexchange=ike
auto=start


В отдельном файле храниться PSK. Со стороны МТ нужно сделать аналогичные настройки шифрования и авторизации, и указать в качестве пира ip адрес Ubuntu. Сделать политики, в которых шифруется весь трафик между внешними интерфейсами. (Сейчас я переделал и у меня шифруется только протокол GRE, но насколько это безопасно и обосновано я пока не знаю).

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

Из вопросов которые накопились в процессе создания всего:

Для GRE тунеля между двумя точками я взял подсеть 192.168.20.0/30. 192.168.20.1 со стороны Ubuntu, 192.168.20.2 со стороны MT. В спецификации и настройках OSPF сказано, что маршрутизатор ищет соседей путём рассылки широковещательных пакетов. Стоит ли мне при подключении ещё одного узла выделять ещё одну /30 сеть или можно расширить существующую с /30 до /29 и использовать адреса для других тунелей из /29 сети? Намного ли это упростит работу OSPF?

Я очень мало сталкивался с шифрованием и защитой информации, к слову в pptp настраивается три типа авторизации и три типа шифрования. Сейчас авторизация проходит по PSK, как мне кажется это не самое лучшее решение. У IPSec возможностей намного больше и если не сложно поясните на пальцах что лучше использовать в соотношении цена/качество (безопасность/нагрузка на оборудование)? Может есть в сети адекватные обзоры по данной тематике?

Про мои опасения по поводу падения IPSec. В схеме три элемента: GRE тунель, демон OSPF маршрутизации, IPSec шифрование.
Если падает тунель, OSPF удаляет маршрут - трафик никуда не пойдёт.
Если упадёт OSPF, маршрутов опять таки не будет и трафик не пойдёт.
Если отключится IPSec - одна из сторон будет отправлять шифрованный трафик, а вторая не шифрованый. Связи не будет, но перехватив пакеты с не шифрованной стороны наверное можно что-то из-них получить.

exo
19-05-2014, 18:43
Если отключится IPSec - одна из сторон будет отправлять шифрованный трафик, а вторая не шифрованый. Связи не будет, но перехватив пакеты с не шифрованной стороны наверное можно что-то из-них получить. »
ну так запретите отправлять нешифрованный трафик.
у вас должны быть правила для отправки трафика через туннель: если одно правило не выполняется - трафик не передаётся.

к сожалению, не могу помочь с вашей инфраструктурой, но могу предложить следующий вариант, но с перестрой схемы сети и добавления оборудования:
сделать VPN S2S через OpenVPN или IPSec только для нужных направлений.
для каждого туннеля выбрать свою сеть.
для всех сетей руками записать маршруты (не ленитесь).
http://fs.exonix.ru/network/vpn1.png

Tonny_Bennet
23-07-2014, 13:48
ну так запретите отправлять нешифрованный трафик. »
Пока некогда, но реально сделать добавив в фаервол правило, которое будет убивать не шифрованные пакеты (проверять по флагу ESP).

для всех сетей руками записать маршруты (не ленитесь). »
Динамические как оказалось ничем не хуже. Сами поднимаются, сами удаляются, меняется метрика в зависимости от "стоимости" маршрута и т.д.
Пока работают три маршрутизатора, планируется ещё.

User001
23-07-2014, 14:34
Динамические как оказалось ничем не хуже. Сами поднимаются, сами удаляются, меняется метрика в зависимости от "стоимости" маршрута и т.д. »Раз уж поднимаете интерес к теме. Интересно насчет того, все ли сразу поднялось, т.к. OSPF же мультикаст гоняет, поэтому видел рекомендации насчет L2 между роутерами с OSPF.

Tonny_Bennet
23-07-2014, 15:18
Интересно насчет того, все ли сразу поднялось, т.к. OSPF же мультикаст гоняет, »
OSPF поднялась не сразу, но там были проблемы в том, что я неверно указал идентификатор зоны (сейчас он 0.0.0.1). Да и всё прекрасно отображалось в логах. По поводу мультикаста: он гоняет его только на стыковочных GRE интерфейсах в пределах /30-й сети.

видел рекомендации насчет L2 между роутерами с OSPF. »
Т.е. о L2 тунелях между маршрутизаторами? Насколько я понял из всего что прочитал о OSPF он использует многоадресную L3 рассылку.




© OSzone.net 2001-2012