Freebsd два VPN канала

Обсуждаем OS FreeBSD и сервисы на ней.

Freebsd два VPN канала

Сообщение considered_this » 26 мар 2013, 11:16

ДД!

ситуация такая:
у нас имеется два филиала, у каждого филиала своя приватная сеть
филиал1(192.168.1.0/24) филиал2 (192.168.2.0/24)

в каждой сети по маршрутизатору на базе freebsd(192.168.1.1 и 192.168.2.1 соответственно), между сетями организован 1мбит впн тунель(gif)
одного мегабита недостаточно, поэтому взяли еще один 1мбит впн канал от другого провайдера

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

есть идеи?
considered_this
новичок
 
Сообщения: 8
Зарегистрирован: 26 мар 2013, 10:56

Re: Freebsd два VPN канала

Сообщение considered_this » 26 мар 2013, 11:22

пока смотрю в сторону mpd5, возможно ли объеденить с помощью mpd два канала с балансировкой по роунд робин? может у кого есть примеры конфигов, гуглил, но ничего подобного не нашел, к сожалению
considered_this
новичок
 
Сообщения: 8
Зарегистрирован: 26 мар 2013, 10:56

Re: Freebsd два VPN канала

Сообщение considered_this » 26 мар 2013, 11:49

такая схема необходима
http://docs.fortinet.com/cb/html/FOS_Co ... 6.01.1.png
considered_this
новичок
 
Сообщения: 8
Зарегистрирован: 26 мар 2013, 10:56

Re: Freebsd два VPN канала

Сообщение lehisnoe » 28 мар 2013, 09:16

Тебя интересует ECMP (Equal-cost multi-path routing). Данный функционал реализован в FreeBSD, начиная с версии 8.0, становится доступен после пересбора ядра с указанием в его конфиге:
Код: Выделить всё
options RADIX_MPATH


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

P.S. не могу сказать, на сколько стабильно сейчас ведет себя фря с этой опцией. Раньше из-за нее у нас серверы ребутались с завидной регулярностью, но мы использовали динамическую маршрутизацию. В случае со статикой картина м.б. и иной.
No users
No troubles
No money
------------
www.mega-net.ru - IT аутсорсинг
Аватара пользователя
lehisnoe
Site Admin
 
Сообщения: 539
Зарегистрирован: 11 июн 2008, 14:09
Откуда: Moscow

Re: Freebsd два VPN канала

Сообщение considered_this » 28 мар 2013, 10:38

2lehisnoe, Благодарю за ответ, но по-моему это не совсем то, что мне надо. Ведь шлюз в моей ситуации один и тот же для обеих каналов.
Вот, что еще пробовал и с чем столкнулся:

изначально идея была рузрулить трафик балансировкой по роунд робин с помощью pf, подобным правилом - pass in on $int_if route-to { (gif0 192.168.2.1), (gif1 192.168.2.1)} round-robin from 192.168.1.0/24 to any keep state

в филиале1 версия freebsd 6.3, во втором 8.1
при попытке поднять gif1 с таким же шлюзом, система ругалась
ifconfig gif1 inet 192.168.1.1 192.168.2.1 netmask 255.255.255.255 mtu 1500
ifconfig: ioctl (SIOCAIFADDR): File exists

правда, если сначала "положить" первый гиф, потом ввести данную команду и после "поднять" первый гиф, то в результате ифконфиг показывает два тунеля в апе, аналогично проделывается на втором роутере

таким кривым способом тунели поднимаются и с помощью pf трафик вроде балансируется(с помощью tcpdump наблюдается наличие пакетов на обоих гифах), но переодически в dmesg фиксируются ошибки типа
kernel: ifa_add_loopback_route: insertion failed
+
kernel: gif1: promiscuous mode enabled
kernel: gif1: promiscuous mode disabled

и через некоторое время такая схема разваливается, сети друг друга перестают видеть

#ping 192.168.2.1
PING 192.168.2.1 (192.168.2.1): 56 data bytes
ping: sendto: Input/output error
ping: sendto: Input/output error
ping: sendto: Input/output error

плюс ко всему надо еще как-то зашифровать эти два тунеля
первый тунель организовывался средствами racoon
теперь, при попытке зашифровать второй тунель, ракун просто не подымается, ругаясь, что такой канал уже существует

пока светлых мыслей как это все дело подружить - не приходит
considered_this
новичок
 
Сообщения: 8
Зарегистрирован: 26 мар 2013, 10:56

Re: Freebsd два VPN канала

Сообщение lehisnoe » 28 мар 2013, 11:28

considered_this писал(а):по-моему это не совсем то, что мне надо.
Это то, что тебе надо, просто ты еще не понял этого ;-).
Во-первых, на одном сервере должны быть уникальные адреса, никаких извратов с поднятием туннелей с одинаковыми адресами.
Во-вторых, туннели поднимаются также с уникальными адресами. Например для первого туннеля использовать подсеть 10.0.0.0/30, для второго - 10.0.0.4/30.
В-третьих, через туннели уже и попытаться балансить трафик путем добавления нескольких маршрутов к сети филиала, но через разные туннели - и вот тут-то и пригодиться ECMP (если с ним, конечно, сервера будут стабильно работать).

considered_this писал(а):плюс ко всему надо еще как-то зашифровать эти два тунеля
Шифруй на здоровье, препятствий для этого пока не вижу.
No users
No troubles
No money
------------
www.mega-net.ru - IT аутсорсинг
Аватара пользователя
lehisnoe
Site Admin
 
Сообщения: 539
Зарегистрирован: 11 июн 2008, 14:09
Откуда: Moscow

Re: Freebsd два VPN канала

Сообщение considered_this » 28 мар 2013, 12:38

ты прав, видимо я еще слабо понимаю ситуацию..
разъясни пожалуйста момент с уникальной адресацией, то именно необходимо исправить, чтобы тунели нормально работали?
на данный момент у меня следующая конфигурация:
филиал1
rl0 192.168.1.1 (LAN)
rl1 172.16.1.2 (VPN1)
rl2 10.10.10.2 (VPN2)
филиал2
rl0 192.168.2.1 (LAN)
rl1 172.16.1.10 (VPN1)
rl2 10.10.10.22 (VPN2)

IP адреса для VPN предоставлены двумя разными провайдерами

тунели:
филиал1
Код: Выделить всё
gif0: flags=8051<UP,POINTOPOINT,RUNNING,MULTICAST> mtu 1500
        tunnel inet 10.10.10.2 --> 10.10.10.22
        inet 192.168.1.1 --> 192.168.2.1 netmask 0xffffffff
gif1: flags=8051<UP,POINTOPOINT,RUNNING,MULTICAST> mtu 1500
        tunnel inet 172.16.1.2 --> 172.16.1.10
        inet 192.168.1.1 --> 192.168.2.1 netmask 0xffffffff

филиал2
Код: Выделить всё
gif0: flags=8051<UP,POINTOPOINT,RUNNING,MULTICAST> mtu 1500
        tunnel inet 10.10.10.22 --> 10.10.10.2
        inet 192.168.2.1 --> 192.168.1.1 netmask 0xffffffff
gif1: flags=8051<UP,POINTOPOINT,RUNNING,MULTICAST> mtu 1500
        tunnel inet 172.16.1.10 --> 172.16.1.2
        inet 192.168.2.1 --> 192.168.1.1 netmask 0xffffffff
considered_this
новичок
 
Сообщения: 8
Зарегистрирован: 26 мар 2013, 10:56

Re: Freebsd два VPN канала

Сообщение lehisnoe » 28 мар 2013, 13:03

considered_this писал(а):разъясни пожалуйста момент с уникальной адресацией, то именно необходимо исправить, чтобы тунели нормально работали?

Должно быть что-то типа такого (обрати внимание на маску подсети на адресах туннелей: она не /32, как у тебя, а /30 - 0xfffffffc):
филиал1
Код: Выделить всё
gif0: flags=8051<UP,POINTOPOINT,RUNNING,MULTICAST> mtu 1500
        tunnel inet 10.10.10.2 --> 10.10.10.22
        inet 192.168.100.1 --> 192.168.100.2 netmask 0xfffffffc
gif1: flags=8051<UP,POINTOPOINT,RUNNING,MULTICAST> mtu 1500
        tunnel inet 172.16.1.2 --> 172.16.1.10
        inet 192.168.100.5 --> 192.168.100.6 netmask 0xfffffffc

филиал2
Код: Выделить всё
gif0: flags=8051<UP,POINTOPOINT,RUNNING,MULTICAST> mtu 1500
        tunnel inet 10.10.10.22 --> 10.10.10.2
        inet 192.168.100.2 --> 192.168.100.1 netmask 0xfffffffc
gif1: flags=8051<UP,POINTOPOINT,RUNNING,MULTICAST> mtu 1500
        tunnel inet 172.16.1.10 --> 172.16.1.2
        inet 192.168.100.6 --> 192.168.100.5 netmask 0xfffffffc


P.S. Пользуйся тегом Code при размещении вывода команд - это улучшает восприятие информации.
No users
No troubles
No money
------------
www.mega-net.ru - IT аутсорсинг
Аватара пользователя
lehisnoe
Site Admin
 
Сообщения: 539
Зарегистрирован: 11 июн 2008, 14:09
Откуда: Moscow

Re: Freebsd два VPN канала

Сообщение considered_this » 28 мар 2013, 14:15

ок, теперь, если я правильно понимаю, то после поднятия тунелей необходимо будет добавить такие маршруты:

Код: Выделить всё
route add -net 192.168.2.0/24 192.168.100.1 -interface gif0
route add -net 192.168.2.0/24 192.168.100.5 -interface gif1


и на втором роутере, соответственно:

Код: Выделить всё
route add -net 192.168.1.0/24 192.168.100.2 -interface gif0
route add -net 192.168.1.0/24 192.168.100.6 -interface gif1


и уже после балансировать с помощью пф, верно?
considered_this
новичок
 
Сообщения: 8
Зарегистрирован: 26 мар 2013, 10:56

Re: Freebsd два VPN канала

Сообщение lehisnoe » 28 мар 2013, 14:58

Если 192.168.2.0/24 находится в филиале1, а 192.168.1.0/24 в филиале2, то да, добавление маршрутов корректное (только я бы не указывал интерфейсы - ни к чему это в данном случае).
lehisnoe писал(а):балансировать с помощью пф, верно?
В этом случае, тебе даже не нужно пересобирать ядро. Достаточно раунд-робином форвардить пакеты в разные туннели.
No users
No troubles
No money
------------
www.mega-net.ru - IT аутсорсинг
Аватара пользователя
lehisnoe
Site Admin
 
Сообщения: 539
Зарегистрирован: 11 июн 2008, 14:09
Откуда: Moscow

След.

Вернуться в FreeBSD

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 18