Работа с двумя провайдерами интернет одновременно

2 isp LinuxПодключил я себе дома помимо стандартного ADSL канала еще один канал интернет через витую пару. За ADSL канал абонентская плата для меня незначительна, поэтому решил оставить этот канал как запасной. Воткнул оба канала интернет в свой сервер-роутер на антресоле (для этого пришлось перевести ADSL роутер в режим bridge) и стал думать как сделать, чтобы оба канала работали одновременно.
Все нижеприведенные конфиги подходят для ОС Linux.
Мысль была такая,

  • Пустить мой основной рабочий комп через новый интернет канал (этот комп больше всего потребляет трафика)
  • Сам сервер-роутер (обновления ОС) и все остальные мобильные WiFi устройства пустить через ADSL канал.


Схема сети

Схема сети

Из-за того, что мне надо было, чтобы два "внешних" IP адреса оказались на сетевых картах сервер-роутера, WiFi ADSL роутер пришлось значительно переконфигурировать. ADSL роутер был переведен в режим bridge и стал точкой доступа для мобильных устройств и моего основного компа. На всех устройствах моей сети основным шлюзом стоит сервер-роутер. Но это у меня такая структура сети, если у вас 2 обычные Lan провайдера никаких подготовительных действий с ADSL роутерем делать не надо.

Настройка заключается в том, чтобы роутить мой компьютер через один интерфейс интернета, а всех остальных клиентов, включая сам сервер-роутер через другой интерфейс и в этом нам поможет программа iproute и iptables.

В конфиг /etc/iproute2/rt_tables добавляем идентификаторы наших двух провайдеров. Я добавил в файл 2 строки


100      adsl
101      futures

Числа и названия идентификаторов можно задавать произвольные, но потом в скрипте роутинга надо обязательно ссылаться на эти же названия.

Пример скрипта роутинга, который ставим в автозагрузку компьютера


#!/bin/sh

#########adsl
#наш ip первого провайдера
IP1=91.122.15.xx
#интерфейс нашего сервер-роутера к которому подключен этот провайдер
IF1=eth3
#шлюз провайдера
P1=91.122.0.1
#сеть провайдера
P1_NET=91.122.0.0/24

#futures telecom.
#Данные аналогично провайдера adsl
IP2=217.15.19.xx
IF2=eth2
P2=217.15.19.1
P2_NET=217.15.19.0/24

#очистка и удаление таблиц adsl и futures
ip route flush table adsl
ip route flush table futures
ip rule delete table adsl
ip rule delete table futures

#создаем таблицы и метки для роутинга пакетов и задаем метки провайдерам
ip rule add from $IP1 table adsl
ip rule add from $IP2 table futures
#1 метка - adsl провайдер
ip rule add fwmark 1 table adsl
#2 метка - провайдер futures
ip rule add fwmark 2 table futures

#создаем правила роутинга
ip route add $P1_NET dev $IF1 src $IP1 table adsl
ip route add default via $P1 table adsl
ip route add $P2_NET dev $IF2 src $IP2 table futures
ip route add default via $P2 table futures

#сбрасываем кэш маршрутизации
ip route flush cache

А теперь в iptables вместо правил Nat занесем эти строки


#Включаем nat
#Прописываем правила для нашего основного рабочего компьютера, его ip 192.168.0.17
#eth0 это интерфейс сервер-роутера к которому подключена наш ADSL роутер
#Все что приходит с него помечаем меткой 2 - провайдер futures
iptables -t mangle -A PREROUTING -s 192.168.0.17/32 ! -d 192.168.0.0/24 -j MARK --set-mark 2
iptables -t mangle -A INPUT -i eth0 -j MARK --set-mark 2
iptables -t mangle -A OUTPUT -m connmark --mark 2 -j MARK --set-mark 2

#Прописываем сети для оставишихся компьютеров сети 192.168.0.0, исключая ip 0.17
#эти компьютеры метим меткой 1, как и в скрипте роутинга 
#Правила писать в одну строку, что разделено знаком "\"
iptables -t mangle -A PREROUTING -m iprange --src-range \ 
   192.168.0.0-192.168.0.16 ! -d 192.168.0.0/24 -j MARK --set-mark 1
iptables -t mangle -A PREROUTING -m iprange --src-range \
   192.168.0.18-192.168.0.255 ! -d 192.168.0.0/24 -j MARK --set-mark 1
iptables -t mangle -A INPUT -i eth0 -j MARK --set-mark 1
iptables -t mangle -A OUTPUT -m connmark --mark 1 -j MARK --set-mark 1

iptables -t nat -A POSTROUTING -m mark --mark 1 -j MASQUERADE
iptables -t nat -A POSTROUTING -m mark --mark 2 -j MASQUERADE

Дефолтным маршрутом сервер-роутера я сделал gateway adsl провайдера. Т.е. если выходить в интернет с самого сервера, то инет пойдет через adsl соединение.
Добавляя нужные ip адреса для меток 1 или 2 в конфиг iptables можно управлять нагрузкой каналов. Для этого надо перезапускать только правила iptables. Скрипт роутинга трогать не нужно.

Статья просмотрена 24 466 раз
Запись опубликована в рубрике Firewall, iptables, Настройка ОС с метками , , . Добавьте в закладки постоянную ссылку.

15 комментариев: Работа с двумя провайдерами интернет одновременно

  1. Лелик говорит:

    Господа, продолжая вышеизложенную тему можно проще. Берется роутер Asus PX3042H с двумя WAN портами, оба канала суммируюся в процентном отношении и все. У меня ADSL-3Mbit и выделенка-6Mbit в итоге на 1 LAN порту 9Mbit.

  2. rIDEr говорит:

    Я хочу настроить аналогичную схему, но вместо “основного компьютера” свич и сетка на 8 компьютеров.
    Имеется два провайдера:
    1) Ethernet PPPoe со статическим адресом, скорость не высокая, но стабильная, плюс почтовые ящики на их сервере.
    2) Оптика-LAN, скорость более высокая (с какой надежностью не понятно), кроме того IPTV на отдельный порт LAN. То есть коробка (раздает оптику на два порта Internet и IPTV, только что узнал у провайдера :)
    задачи приблизительно такие как у автора статьи.
    Имеется железо Asus wl500GPv2 и ПС на базе СeleronD 2.6GHz-RAM1GB
    Господа, какие рекомендации будут?

  3. rIDEr говорит:

    Есть намерения в PC установить три сетевые карты(одна встроенная) и ClearOs с режимом MultiWAN (может для iPTV другой режим нужен). В две Internet(2) и IPTV, соответственно, третью соединить с одним из LAN портом ASUS. В другой соединить со Свич, в Порт WAN ASUS подключить Internet(1).
    Вопрос в том как все это настроить. Мои знания в *NIX близкие к нулю.

  4. mik говорит:

    Насчет ClearOS настроек ничего не скажу, т.к. не юзал. Я так понимаю вы выбрали эту ОС из-за веб интерфейса чтобы попроще было :)
    Чтобы настроить все это надо четко понимать логику работы что вы хотите сделать. Неважно что вы *nix не знаете, лишь бы только представляли куда какие маршруты прописать, а синтаксис как говориться освоите.
    В 1 сетевую интернет (2) – значит надо настроить поднятие PPPoe сессии на этом интерфейсе.
    Во 2 сетевую IPTV – тут надо понимать как iptv работает у провайдера. Обычно это трансляция мультикастовых пакетов, значит надо организовать эту трансляцию. Для возможность трансляции мультикаста через компьютер-роутер надо всего лишь разрешить igmp пакеты. Возможно придется поставить прогу для этого (все упирается в возможности ClearOS)
    В 3 сетевую Lan порт Asus , а уже в wan Asus интернет (2). Не очень удачное решение. Придется повозится с маршрутами в самом Asus и на сервере, чтобы все работало. Т.к. на 4 порту сервера будет свич с такой же сетью lan.
    На этом пункте я бы предложил:
    купить свич на все 8 компьютеров сети и воткнуть его в третью сетевую компа, а уже в свич воткнуть asus в роли wifi точки доступа без подключения его к интернет (2) – (это если в wifi есть необходимость).
    В 4 сетевую уже подключить интернет (2).
    Свич придется покупать 16 портовый, на 8 портов дырок не хватит..
    Ну и вопрос как это настроить так и остался :) начните с простого интернет (1) в первую сетевую, во вторую Lan свич ну и пробуйте настроить доступ в инет с компьютера подключенного к свичу, далее усложняйте пока не дойдете до нужной сложности :)

  5. rIDEr говорит:

    Про igmp пакеты слышал но еще не знаю что это такое. Один спец говорил что свичи нужны особенные?! Буду разбираться.
    ” ….Т.к. на 4 порту сервера будет свич с такой же сетью lan.” вот эту фразу не понял, какой 4 порт?
    У нас два свича на 8 и 5 портов, всего 9 или 10 портов.

    • mik говорит:

      я так понял, что будет подключен asus через lan порт, а еще фактичести также к серверу будет и свич подключен.
      4 же сетевые на сервере вы планировали? 1 встроенная + 3 pci..

  6. rIDEr говорит:

    нет мне хотелось бы ограничится 3 сетевыми (2+1 встроенная). Схема сети точно такая как у Вас на рисунке и задачи б! Почему я и заинтересовался данной темой.
    Вместо ADSL модема ASUS wl500gpv2(WAN-ethernet c PPPoE), сервер подключен двумя картами на два выхода ONT (Optical Network Terminal) -интернет(2) и IPTV, а вместо компьютера на вашей схеме свичи 10 портов. Свичи находится в другом помещении. Покупка новых switch или роутеров и перепрокладка сетей не планируется. IPTV рассматривается как бонус, т.е. хотелось, но не обязательно.

    • mik говорит:

      Ну так если почти все как у меня, то думаю проблем не должно быть если все по этой инструкции делать :)
      Вот только с выбором linux дистрибутива надо определиться. ClearOS может и хорошо для новичка, но как подсказывает опят не все можно проделать через web интерфейс, возможно придется ковыряться внутри командной строки.
      Давайте так. Начните с чего-нибудь, чтобы приступить к решению задачи. Самое простое на мой взгляд это сделать доступ в инет через провайдера без pppoe. Для новичка все может быть трудно, даже прописать ip на интерфейсе.
      Как будут появляться конкретные вопросы пишите здесь, постараюсь ответить.

  7. rIDEr говорит:

    PPPoe без проблем на ASUS (прошивка от Олега) через вебморду. До этого Kerio FW &MS на машине с двумя картами интернет и почту раздавал исправно.
    Поставил ClearoS на PC-router с 3мя картами. К одной карте Lan назначил стат. адрес 192.168.1.2 ( остальные2 DHCP) и хочу для удобства работы (15″CRT напрягает) подключится ноутбуком с Windows напрямую без свича кроссом.
    Как подключится к по веб интерфейсу сервера ClearOs?

  8. rIDEr говорит:

    Вопрос снят, получилось подключится. Это же совсем другое дело ;)
    Понадобилось в браузере указать прокси и порты как для прокси[3128] так и подключения [81]. Продолжаю движение…..

  9. rIDEr говорит:

    Сейчас схема такая, упрощенная- PC роутер на ClearOS с З-мя карточками:
    1)Ext. DHCP ( дин IP 87.x.x.x)- Internet
    2) Hot LAN 169.264.1.х (рекомендации провайдера) – IPTV
    3) LAN IP192.168.1.11 – подключен к ноуту 192.168.1.х кроссом.
    Интернет есть, подключается через прокси 192.168.1.11:3128. Вопрос: как на ноуте получить IPTV? В настройках программы можно указать только IP-ноута.

  10. rIDEr говорит:

    Программа это “плеер IPTV”
    .

  11. mik говорит:

    Поскольку вы не уточнили как работает IPTV у провайдера я опишу применительно к моему провайдеру и как это работает у меня.
    У меня провайдер раздает iptv через пакеты мультикаста. Самое простое что я нашел это поставить на компьютер программу udpxy – http://sourceforge.net/projects/udpxy/.
    Как установили программу на сервере запускаем

    udpxy -a eth1 -p 4022 -m eth2

    где eth1 – интерфейс локальной сети, у вас это тот что 192.168.1.11
    4022 – порт на сервере, так и оставляете
    eth2 – интерфейс откуда брать пакеты телевидения, у вас 169.264.1.х
    соответственно номера ethX подставьте свои номера интерфейсов.
    После запуска можно с ноута проверить как запустился сервер udpxy, наберите
    в браузере http://192.168.1.11:4022/status должно появиться типа что-то статистики сервера.
    Если все работает можно смотреть программы, но перед этим надо переделать playlist программ.. Смысл переделки playlista в том чтобы указать, что программе IPTV следует обращаться не сразу на какой-то ip вашего провайдера, а именно на ваш ip сервера 192.168.1.11. Т.е для одной программы лист будет выглядеть

    http://192.168.1.11:4022/udp/224.200.202.51:1234

    http://192.168.1.11:4022 – это ваш сервер
    224.200.202.51:1234 это уже сервер где-то в инете с самой программой
    Пробуйте если что на vlc программе, необязательно использовать программу провайдера..

  12. юрик говорит:

    лёлика ф топку по 2 причинам:
    1. Не у всех асус работает с провайдерами (а этот ваапще не работает судя по скриншотам интерфейса имхо нет настройки параметров WAN портов!!!)
    2. Люди хотят недорогой эргономичный девайс а в совокупе с данным получается аж 3 девайся – мега ненадежно.

  13. Андрей говорит:

    Андрей

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *

Можно использовать следующие HTML-теги и атрибуты: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>