LINUX.ORG.RU
ФорумAdmin

Два pppoe - два шлюза. Как?

 , ,


1

1

Добрый день. Есть шлюз на Centos' 6.6 и и два провайдера, которые дают два pppoe. И оба выдают статичный белый адрес. Не могу настроить так, чтобы оба адреса были видны из вне.

TYPE=xDSL
DEVICE=ppp0
BOOTPROTO=dialup
USERCTL=no
IPV6INIT=no
PEERDNS=no
PIDFILE=/var/run/pppoe-ppp1.pid
FIREWALL=NONE
PING=.
PPPOE_TIMEOUT=80
LCP_FAILURE=3
LCP_INTERVAL=20
CLAMPMSS=1412
CONNECT_POLL=6
CONNECT_TIMEOUT=60
PERSIST=yes
SYNCHRONOUS=no

DEFROUTE=yes

USER=user1
ETH=eth0
PROVIDER=VSI1
DEMAND=no
ONBOOT=yes
NM_CONTROLLED=no

TYPE=xDSL
DEVICE=ppp1
BOOTPROTO=dialup
USERCTL=no
IPV6INIT=no
PEERDNS=no
PIDFILE=/var/run/pppoe-ppp2.pid
FIREWALL=NONE
PING=.
PPPOE_TIMEOUT=80
LCP_FAILURE=3
LCP_INTERVAL=20
CLAMPMSS=1412
CONNECT_POLL=6
CONNECT_TIMEOUT=60
PERSIST=yes
SYNCHRONOUS=no

DEFROUTE=no

USER=user2
ETH=eth1
PROVIDER=VSI2
DEMAND=no
ONBOOT=yes
NM_CONTROLLED=no

Проблема в DEFROUTE, если я ставлю у обоих yes, то я виден только со второго ppp1, если ставлю no, то только с ppp0. Затык в том, что в первый раз настраиваю систему с несколькими шлюзами. Подскажите, как в данном случае поступить.

Учу гуглить. Дорого. А серьезно, статей на тему подключения к двум провайдерам море.

anc ★★★★★ ()

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

Если я Вас правильно понял, Вы хотите распараллелить сетевой трафик через два независимых канала.

В этом случае создаете две таблицы - ppp0 (для трафика через первого провайдера) и ppp1 (для трафика через второго провайдера):

/sbin/ip route add $INET_IP_RANGE dev ppp0 src $INET_IP0 table ppp0
/sbin/ip route add default via $R_IP table ppp0
/sbin/ip route add $INET_IP_RANGE1 dev ppp1 src $INET_IP1 table ppp1
/sbin/ip route add default via $R_IP1 table ppp1

Здесь $INET_IP_RANGE и $INET_IP_RANGE1- это сети (вида 192.168.0.0) для интерфейсов ppp0 и ppp1, $INET_IP0 и $INET_IP1 - IP-адреса для итерфейсов ppp0 и ppp1. $R_IP и $R_IP1 - шлюзы по умолчанию для ppp0 и ppp1.

Далее, прописываете маршруты для сетей провадеров (в случае соединения точка-точка можно, наверное, не делать):

/sbin/ip route add $INET_IP_RANGE dev ppp0 src $INET_IP
/sbin/ip route add $INET_IP_RANGE1 dev ppp1 src $INET_IP1

Затем создаете распределенный шлюз по умолчанию:

/sbin/ip route add default scope global nexthop via $R_IP dev ppp0 weight x nexthop via $R_IP1 dev ppp1 weight y

Здесь x и y - цифры, которые задают распределение нагрузки между двумя каналами. Если они равны, каналы используются 50 на 50. Если, скажем, x=10, а y=1, то 90% соединений пойдет через ppp0, а 10% - через ppp1. Это удобно использовать, когда пропускная способность каналов разная. Имейте ввиду, канал распараллеливается только на уровне соединений - каждое соединение остается привязанным к тому каналу, с которого оно установлено.

Далее загоняете трафик в созданные таблицы:

/sbin/ip rule add from $INET_IP table ppp0
/sbin/ip rule add from $INET_IP1 table ppp1
/sbin/ip route add $LAN_IP_RANGE dev $LAN_IFACE table ppp0
/sbin/ip route add $INET_IP_RANGE1 dev ppp1 table ppp0
/sbin/ip route add 127.0.0.0/8 dev lo table ppp0
/sbin/ip route add $LAN_IP_RANGE dev $LAN_IFACE table ppp1
/sbin/ip route add $INET_IP_RANGE dev ppp0 table ppp1
/sbin/ip route add 127.0.0.0/8 dev lo table ppp1

Собственно говоря, это все. $LAN_IP_RANGE и $LAN_IFACE нужны в том случае, если Ваша машина выступает в качестве шлюза для локальной сети. В этом случае $LAN_IP_RANGE - локальная сеть, а $LAN_IFACE - интерфейс локальной сети. Если локальной сети за вами нет, то можете эти строки выбросить.

Имейте ввиду, что данный конфиг хоть и распределяет нагрузку между шлюзами, отказоустойчивым не является. Отваливание любого из шлюзов приведет к остановке трафика. К сожалению, изящного решения данной проблемы не существует (если не рассматривать получение своей AS и поднятие BGP). Поэтому все, что Вам остается, это по крону скриптами проверять доступность шлюзов и при необходимости перенастраивать сеть на использование одного из них.

Serge10 ★★★★★ ()
Ответ на: комментарий от Serge10

ТС просит чтобы оба адреса были видны из вне. Соответственно полагаю проблема в том, что сервер дает ответ на входящее соединение через default gateway, и сторона, отправившая запрос не понимает что это за фигня в ответ прилетела с какого-то неизвестного ip, и дропает ответы. Нужно маркировать входящий трафик и ответы давать с того интерфейса, на который пришел запрос. Вот тут очень грамотно расписано.

nike-tesla ()

лет 10 назад у меня было два прова - Казахтелеком АДСЛ и Билайн с l2tp.

вообщем, я тогда пытался разрулить это хозяйство правильным образом, но я уперся в то, что в системе как-то плохо себя ведут 2 pppoe-интерфейса.

Решение я нашел простое - запустил на сервере 2 виртуальные машины, прокинул туда сетевые карты( которые к провайдерам), внутри виртуалок ipcop/pfsense/прочее. виртуалки у себя поднимали ppp-интерфейсы, затем я себя настроил по статье 2 isp. и это работало.

Крутилось все на первых атомах. с 2гб озу. и еще осталось место для торрент-клиента.

Nurmukh ★★★ ()
Ответ на: комментарий от anc

скорей всего, я умею работать с виртуалками, поэтому привел все к виртуальным машинам.

Nurmukh ★★★ ()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.