Динамическая маршрутизация в локальных сетях (несколько сетей, несколько тунелей)

Обсуждение настройки и работы сервисов, резервирования, сетевых настроек и вопросов безопасности ОС.

Модераторы: SLEDopit, Модераторы разделов

TonnyBennet
Сообщения: 230
ОС: Ubuntu Server 9.10

Динамическая маршрутизация в локальных сетях

Сообщение TonnyBennet »

Здравствуйте.

Есть несколько локальных сетей /24 расположенных в разных городах. У всех сетей в качестве шлюза работает компьютер под UbuntuServer. Сейчас все шлюзы подключены к одному шлюзу при помощи pptp, настроена маршрутизация, трафик из сети 192.168.3.0/24 может попасть в сеть 192.168.0.0/24 и обратно. То же самое с трафиком из сети 192.168.4.0/24
Изображение

Для того чтобы связать сети 192.168.3.0/24 и 192.168.4.0/24 нужно на одном из шлюзов поднять сервер pptpd и проделать всё то же с маршрутами. Трудоёмко и не совсем правильно как мне кажется если таких сетей пять-шесть и у нескольких шлюзов пара внешних каналов.

Хочется сделать шифрованные туннели между всеми шлюзами (у некоторых есть по два внешних интерфейса) чтобы при падении одного из каналов работал маршрут через промежуточный шлюз. Т.е. если прямой канал между сетями 192.168.3.0/24 и 192.168.4.0/24 отвалится - заработает маршрут через шлюз сети 192.168.0.0/24.

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

Подскажите пожалуйста что лучше использовать для реализации моих планов.
Спасибо сказали:
Аватара пользователя
rm_
Сообщения: 3340
Статус: It's the GNU Age
ОС: Debian

Re: Динамическая маршрутизация в локальных сетях

Сообщение rm_ »

Я бы порекомендовал Tinc. Автоматическая full-mesh сеть между всеми нодами, не требуется маршрутизация через центральный сервер. Все роутеры входящие в VPN просто оказываются в одной виртуальной Ethernet-сети, дальше роутинг настраиваете как удобно. При этом между любыми двумя данные фактически будут идти напрямую (это и называется full-mesh). http://www.tinc-vpn.org/
Спасибо сказали:
TonnyBennet
Сообщения: 230
ОС: Ubuntu Server 9.10

Re: Динамическая маршрутизация в локальных сетях

Сообщение TonnyBennet »

rm_ писал(а):
06.03.2013 12:19
Я бы порекомендовал Tinc. Автоматическая full-mesh сеть между всеми нодами, не требуется маршрутизация через центральный сервер. Все роутеры входящие в VPN просто оказываются в одной виртуальной Ethernet-сети, дальше роутинг настраиваете как удобно. При этом между любыми двумя данные фактически будут идти напрямую (это и называется full-mesh). http://www.tinc-vpn.org/


Спасибо за рекомендацию. Почитал. Поставил. Настроил. Пока только с двумя сетями. Вроде работает и есть несколько вопросов.

Запустил на двух шлюзах.
Файл tinc-up на сервере 192.168.0.1 в сети 192.168.0.0/24

Код:

#!/bin/sh modprobe tun ifconfig $INTERFACE 192.168.10.1 netmask 255.255.0.0


Файл tinc-up на сервере 192.168.6.1 в сети 192.168.6.0/24

Код:

#!/bin/sh modprobe tun ifconfig $INTERFACE 192.168.10.2 netmask 255.255.0.0


На каждом из серверов создаётся интерфейс inet addr:192.168.10.2/1 P-t-P:192.168.10.2/1 Mask:255.255.0.0 И создаётся маршрут в большую сеть 192.168.0.0/16.

С клиента 192.168.0.97 на 192.168.6.2 пинги ходят отлично, а со шлюзов соседнюю сеть не видно. Можно ли это исправить?

Как быть если если нужно сделать несколько туннелей к в одну сеть но через разные внешние интерфейсы?
Спасибо сказали:
Аватара пользователя
rm_
Сообщения: 3340
Статус: It's the GNU Age
ОС: Debian

Re: Динамическая маршрутизация в локальных сетях

Сообщение rm_ »

И создаётся маршрут в большую сеть 192.168.0.0/16.

Насколько я могу судить это некорректная конфигурация, у вас же вся эта /16 сеть не в бридже на уровне Ethernet.
Должны быть маршруты, если брать приведённые примеры:
ip route add 192.168.0.0/24 via 192.168.10.1
ip route add 192.168.6.0/24 via 192.168.10.2
Т.е. для каждой из конкретных сетей, указано, что её можно достичь через вот этот обслуживающий её роутер.
И это должно быть прописано на всех роутерах, входяших в VPN-сеть (маршрут "сам через себя", понятно, добавлять не нужно).
Маска сети 192.168.10.0 тоже следует сделать /24.
Спасибо сказали:
TonnyBennet
Сообщения: 230
ОС: Ubuntu Server 9.10

Re: Динамическая маршрутизация в локальных сетях

Сообщение TonnyBennet »

rm_ писал(а):
06.03.2013 20:23
И создаётся маршрут в большую сеть 192.168.0.0/16.

Насколько я могу судить это некорректная конфигурация, у вас же вся эта /16 сеть не в бридже на уровне Ethernet.
Должны быть маршруты, если брать приведённые примеры:
ip route add 192.168.0.0/24 via 192.168.10.1
ip route add 192.168.6.0/24 via 192.168.10.2
Т.е. для каждой из конкретных сетей, указано, что её можно достичь через вот этот обслуживающий её роутер.
И это должно быть прописано на всех роутерах, входяших в VPN-сеть (маршрут "сам через себя", понятно, добавлять не нужно).
Маска сети 192.168.10.0 тоже следует сделать /24.


Пример списан с официального сайта tinc, там они использовали для точки VPN адрес из /16 сети. Я прекрасно понимаю, что для моей конфигурации из двух клиентов достаточно /30 подсети и пары маршрутов.

Маршрут ip route add 192.168.0.0/24 via 192.168.10.1 должен прописаться у всех участников сети, в том случае если сеть включилась в работу. Постоянно держать эти маршруты, как мне кажется смысла нет.
Спасибо сказали:
Аватара пользователя
rm_
Сообщения: 3340
Статус: It's the GNU Age
ОС: Debian

Re: Динамическая маршрутизация в локальных сетях

Сообщение rm_ »

TonnyBennet писал(а):
07.03.2013 09:50
Маршрут ip route add 192.168.0.0/24 via 192.168.10.1 должен прописаться у всех участников сети

На всякий случай - не на всех компьютерах, а только на роутерах, входящих в Tinc VPN (и другим интерфейсом смотрящих в "реальные" сети).

Я прекрасно понимаю, что для моей конфигурации из двух клиентов достаточно /30 подсети и пары маршрутов.

Маску /16 нигде использовать не нужно, у вас разные /24 в пределах этой /16 друг с другом по L2 не связаны, т.е. это просто не будет работать, и дело не в экономии адресов и не в "достаточно".

TonnyBennet писал(а):
07.03.2013 09:50
в том случае если сеть включилась в работу. Постоянно держать эти маршруты, как мне кажется смысла нет.

Включилась или не включилась в работу - это какие-то не относящиеся к делу подробности, я даже не знаю о чём тут речь.
Если вам нужно чтобы был доступ к сети "за" тем или иным роутером, все остальные роутеры должны знать, что эта сеть доступна именно через него.
Спасибо сказали:
TonnyBennet
Сообщения: 230
ОС: Ubuntu Server 9.10

Re: Динамическая маршрутизация в локальных сетях

Сообщение TonnyBennet »

rm_ писал(а):
07.03.2013 10:12
На всякий случай - не на всех компьютерах, а только на роутерах, входящих в Tinc VPN (и другим интерфейсом смотрящих в "реальные" сети).

Именно это я и имел ввиду.

rm_ писал(а):
07.03.2013 10:12
Включилась или не включилась в работу - это какие-то не относящиеся к делу подробности, я даже не знаю о чём тут речь.
Если вам нужно чтобы был доступ к сети "за" тем или иным роутером, все остальные роутеры должны знать, что эта сеть доступна именно через него.


Если у меня VPN сеть из десяти машррутизаторов, обслуживающих десять /24 сетей, то если реально будут включены только три, зачем мне на всех куча маршрутов? По карайней мере pptpd позволяет стирать ненужные маршруты при падении подключения. Хотя здесь также наверное можно сделать скрипт tinc-down

Спасибо. Буду пробовать дальше.
Спасибо сказали:
Аватара пользователя
serzh-z
Бывший модератор
Сообщения: 8259
Статус: Маньяк
ОС: Arch, Fedora, Ubuntu

Re: Динамическая маршрутизация в локальных сетях

Сообщение serzh-z »

rm_
Я правильно понимаю, что главное отличие и преимущество tinc перед OpenVPN - это просто другая топология, не требующая пускать весь трафик через один VPN-сервер?
Спасибо сказали:
TonnyBennet
Сообщения: 230
ОС: Ubuntu Server 9.10

Re: Динамическая маршрутизация в локальных сетях

Сообщение TonnyBennet »

serzh-z писал(а):
10.03.2013 14:46
rm_
Я правильно понимаю, что главное отличие и преимущество tinc перед OpenVPN - это просто другая топология, не требующая пускать весь трафик через один VPN-сервер?


По идее да, т.к. tinc создаёт подключения каждого к каждому.
Спасибо сказали: