
Интернет от двух провайдеров (pfSense 2.x) |
![]() |
![]() |
![]() |
30.06.11 09:23 |
Интернет от двух провайдеров (pfSense 2.x)
Видео:
Обычно подключение к двум или более провайдерам преследует две цели (или одну из двух). 1) Разделение нагрузки. Вы можете более критичный для бизнеса трафик пускать через одного провайдера, а всё остальное через другого. Либо весь трафик просто делить между двумя провайдерами. Сразу заметим, что если Вы имеете два канала по 1 Мбит/с и вдруг заходите установить одно соединение с удалённым сервером и "прокачать" 2 Мбит/с, то ничего не выйдет. Дело в том, что весь трафик между компьютером в Вашей LAN и удалённым сервером будет проходить через одного и того же провайдера (если удалённый сервер не поддерживает несколько сессий одновременно). Однако это не означает, что два компьютера из Вашей LAN не смогут передавать данные с одним и тем же удалённым сервером каждый на скорости 1 Мбит/с, это вполне возможно. Всё вышесказанное относится к исходящему трафику, т.е. к случаю, когда локальный клиент инициирует подключение к удалённому серверу. Данная статья НЕ затрагивает вопроса разделения входящего трафика. 2) Резервный канал. Очень часто одного провайдера используют в качестве основного доступа в интернет, а второго только в случае обнаружения проблем на основном доступе. Причин для такого "неэффективного" использования каналов может быть множество - качество, стоимость каналов, наличие повременного учёта на одном из каналов и т.п. СхемаИтак, предположим, что ISP1 выдал Вам IP-адрес 38.0.0.1, маску 255.255.255.0, шлюз по умолчанию 38.0.0.254, а второй соответственно 64.0.0.1/24 и 64.0.0.254. Для простоты мы полагаем, что адреса выданы статически. В принципе не имеет значения, как Вы подключаетесь к провайдеру, в любом случае у вас будут определены IP на стороне pfSense'а, маска и шлюз по умолчанию. Создание шлюзовИдём в System->Routing и нажимем на "плюсик", конфигурируем шлюз для ISP1. Пусть данный провайдер у нас будет "по умолчанию", т.е. будет использоваться, если никакой тип выбора провайдера в правила файрволла указан не будет: Ещё раз нажимаем "плюсик" и конфигурируем шлюз для ISP2: Заметим, что мы оставили пустыми поля "Monitor IP", т.е. pfSense будет принимать решение о том "живы" ли линке на основе того отвечают ли соответствующие шлюзы на ping или нет. Мы ещё вернёмся к вопросу о том, как конфигурировать другие "Monitor IP" ниже. Естественно, кликаем "Apply changes": Если шлюзы провайдеров отвечают на icmp-request, то мы должны в Status->Gateways увидеть такую приятную зелёненькую картинку: Создание групп шлюзовТеперь нам необходимо сконфигурировать правила распределения трафика между двумя провайдерами. Для этого существуют группы шлюзов. Группа шлюзов для разделения нагрузки (load balancing) создаётся в System->Routing->Groups следующим образом (опять через "плюсик"): Кликаем "плюсик" опять и теперь создаём группу шлюзов для "резервного канала" (failover). У провайдера с меньшей Priority будет больший приоритет, т.е. если мы сконфигурируем согласно данной картинки, то если ISP1 "живой" трафик всегда будет маршрутизироваться к провайдеру ISP1. ISP2 будет задействован, если ISP1 "умрёт": Кликаем "Apply changes", чтобы всё, что мы тут наконфигурили получило путёвку в жизнь. В Status->Gateways->Groups всё опять должно быть зелёненьким: Создавая шлюзы и группы шлюзов, мы намеренно выбрали простейший вариант наблюдения - "Trigger level = Member down", т.е. отвечает шлюз на пинги, значит провайдер "живой", неотвечает - "мёртвый". Когда Вы поиграетесь и поймёте, как это дело работает, необходимо будет подстроить метод наблюдения под Ваши конкретные условия. Все варианты ("Packet loss", "High Latency") интуитивно понятны и здесь не рассматриваются. Отметим лишь, что величины метрик для "Packet loss", "High Latency" и "Member down" устанавливаются в Advanced секции шлюзов System->Routing->Gateways для каждого шлюза индивидуально. Создание правилТеперь нам осталось решить, какой трафик должен следовать какой логике. Для примера препдоложим нам нужно доступ к WEB (tcp port 80) сделать в режиме разделения нагрузки, чтобы все пользовали весь остальной трафик пустить через ISP1, если он в рабочем состоянии и через ISP2, если ISP1 вдруг поломался. Идём в Firewall->Rules и создаём следующие правила. Для порта 80 разделение нагрузки: И для всего остального резервный канал: ... не забываем нажать "Apply" и вобщем-то всё - должно работать, как задумано. Немного лирики по поводу Monitoring IPНе всегда выбор шлюза по умолчанию является хорошим вариантом отслеживания живучести провайдера. Представьте, что узел доступа, к которому Вы подключаетесь находится в рабочем состоянии (шлюз по умолчанию великолепно отвечает на пинги Вашего pfSense), однако, внутри своей инфраструктуры провайдер испытвает недетские проблемы - маршрутизация, падение линка без резерва, что угодно - и в результате, собственно, Вы получаете нерабочий Интернет. Чтобы обойти данную проблему можно воспользоваться мониторингом каких-либо хостов в Интернете, которые условно "всегда доступны". Вернёмся к диаграмме, пусть для мониторинга здоровья ISP1 мы хотим использовать хост 1.1.1.1, а для мониторинга ISP2 соответственно хост 2.2.2.2. Для этого прописываем данные IP в System->Routing->Gateways и дело сделано: Однако, в данном случае надо аккуратно с выбором метода мониторинга в System->Routing->Groups. Если поставить Trigger Level в Packet loss или в High Latency, то можно получить нежелательные результаты, т.к. интернет непредсказуем по своей сути, словом, экспериментируйте!
Дополнение: Я фейловер и не настраивал на PF 2.1, просто создал два шлюза - источник дополнения: https://forum.pfsense.org/index.php?topic=74756.msg408585#msg408585
источник: http://ru.doc.pfsense.org ссылка на статью: http://www.thin.kiev.ua/router-os/50-pfsense/395-internet-providers-from-two-pfsense-2x.html {jcomments on} |
Последнее обновление 09.04.14 12:41 |
