Настройка двух провайдеров ppoe

Автор maxpostal, 26 октября 2016, 13:05:54

« назад - далее »

0 Пользователи и 3 гостей просматривают эту тему.

maxpostal

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

Имеется веб-сервер с двумя сетевыми адаптерами. В данный момент подключен один интернет провайдер, который настраивался с помощью pppoeconf.

nano /etc/network/interfaces:


# This file describes the network interfaces available on your system
# and how to activate them. For more information, see interfaces(5).

source /etc/network/interfaces.d/*

# The loopback network interface
auto lo
iface lo inet loopback

auto dsl-provider
iface dsl-provider inet ppp
pre-up /bin/ip link set eth0 up # line maintained by pppoeconf
provider dsl-provider

auto eth0
iface eth0 inet dhcp

auto eth1
iface eth0 inet manual


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

Подскажите пожалуйста, как это граммотно реализовать?

gardarea51

Вам нужно вручную создать файлы пиров в /etc/ppp/peers для двух соединений.
pppoeconf просто упрощает этот процесс.
Я бы дал готовый пример, но распрощался с сервером после увольнения с предыдущего места работы.
Хотя... вот можете почитать https://debianforum.ru/index.php?topic=4708.msg41428#msg41428
Там в начале как раз есть описание пира.
Вам просто нужно создать их парочку.

maxpostal

Спасибо за подсказку!
Перед тем как пробовать на рабочем сервере, я хотел уточнить пару моментов:

Моя текущая конфигурация:

/etc/ppp/options

asyncmap 0
auth
crtscts
lock
hide-password
modem
lcp-echo-interval 30
lcp-echo-failure 4
noipx


/etc/ppp/peers/dsl-provider

noipdefault
defaultroute
replacedefaultroute
hide-password
#lcp-echo-interval 30
#lcp-echo-failure 4
noauth
persist
#mtu 1492
#persist
#maxfail 0
#holdoff 20
plugin rp-pppoe.so eth0
usepeerdns
user "LoginISP#1"



Т. е. мне нужно создать пир второго провайдера, заменить eth0 на eth1 и логин:

/etc/ppp/peers/dsl-provider2

noipdefault
defaultroute
replacedefaultroute
hide-password
#lcp-echo-interval 30
#lcp-echo-failure 4
noauth
persist
#mtu 1492
#persist
#maxfail 0
#holdoff 20
plugin rp-pppoe.so eth1
usepeerdns
user "LoginISP#2"



А также указать его пароль:

/etc/ppp/pap-secrets

# Every regular user can use PPP and has to use passwords from /etc/passwd
*       hostname        ""      *

# UserIDs that cannot use PPP at all. Check your /etc/passwd and add any
# other accounts that should not be able to use pppd!
guest   hostname        "*"     -
master  hostname        "*"     -
root    hostname        "*"     -
support hostname        "*"     -
stats   hostname        "*"     -

"LoginISP#1" * "12345678"

"LoginISP#2" * "87654321"



И внести следующие изменения в /etc/network/interfaces (блок auto dsl-provider2):

source /etc/network/interfaces.d/*

# The loopback network interface
auto lo
iface lo inet loopback

auto dsl-provider
iface dsl-provider inet ppp
pre-up /bin/ip link set eth0 up # line maintained by pppoeconf
provider dsl-provider

auto dsl-provider2
iface dsl-provider inet ppp
pre-up /bin/ip link set eth1 up # line maintained by pppoeconf
provider dsl-provider

auto eth0
iface eth0 inet dhcp

auto eth1
iface eth0 inet manual


Верно?

gardarea51

#3
С виду все верно, главное, чтобы интерфейсы автоматически поднимались при старте системы.
В /etc/network/interfaces только наверное стоит поправить этот блок (поставить 2 в конце).
auto dsl-provider2
iface dsl-provider inet ppp
pre-up /bin/ip link set eth1 up # line maintained by pppoeconf
provider dsl-provider


И в описаниях пиров я бы раскомментировал опции persist и maxfail 0 (поддерживать соединение, бесконечно дозваниваться при обрыве).
Про эти опции можно в интернете почитать подробнее.

Cообщение объединено 02 ноября 2016, 08:59:18

Я, если нужно, вечером распакую старый бэкап корня сервака (который сейчас не у рук) и выложу тут свои конфиги.
Но выложу только завтра, дома интернет отключили :)

maxpostal

Спасибо!

В /etc/network/interfaces наверное нужно

auto eth1
iface eth0 inet manual


заменить на

auto eth1
iface eth0 inet dhcp


?

И что вы подразумевете под?
ЦитироватьВ /etc/network/interfaces только наверное стоит поправить этот блок (поставить 2 в конце)

Поставить блоки

auto dsl-provider
auto dsl-provider2


после

auto eth0
auto eth1


?

Про опции спасибо, изучу.

Если вас не затруднит выложить свои конфиги, то буду благодарен :)
Не разу не настраивал одновременную работу двух сетевых карт и не совсем понятен механизм, как они будут работать в системе, одновременно или по очереди, исходящие запросы будут по какой линии передаваться... В интернетах толковой инфы не могу найти.

gardarea51

#5
Если это PPPoE, то карточкам не обязательно задавать сетевые адреса (в этом просто нет смысла).
А без заданного адреса у меня давно что-то карточка автоматом не поднималась, что-то такое было.
Не буду дальше запутывать, лучше сегодня скопирую свой конфиг и завтра выложу сюда.
Ну или вечером с телефона скину.

Cообщение объединено 02 Ноябрь 2016, 13:11:53

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

Файл опций /etc/ppp/options (убрал все, что было закомментировано, но он скорее всего почти дефолтный):
asyncmap 0
auth
crtscts
lock
hide-password
modem
mtu 1492
lcp-echo-interval 30
lcp-echo-failure 5
noipx
persist
maxfail 0


Файл описания первого пира /etc/ppp/peers/vector
plugin rp-pppoe.so
wan1
unit 0
name "vector-username"
ipparam vector
#defaultroute
#replacedefaultroute

persist
maxfail 0

hide-password
noauth


Файл описания второго пира /etc/ppp/peers/utel
plugin rp-pppoe.so
wan2
unit 1
name "utel-username"
ipparam utel
#defaultroute

persist
maxfail 0

hide-password
noauth


Файл секретов /etc/ppp/pap-secrets (лишнее убрал)
# * password
"vector-username"   *       "vector-secret"
"utel-username"     *       "utel-secret"



И, наконец, файл /etc/network/interfaces (не относящееся к сути убрал)
...
#WAN-интерфейсы
auto wan1
iface wan1 inet manual
   up ip link set dev wan1 up
   down ip link set dev wan1 down

auto wan2
iface wan2 inet manual
   up ip link set dev wan2 up
   down ip link set dev wan2 down

...

auto vector
iface vector inet ppp
        provider vector
        #pre-up /sbin/ifup wan1

auto utel
iface utel inet ppp
        provider utel
        #pre-up /sbin/ifup wan2


Сейчас немного разъяснений.
В файлах описаний пиров wan1 и wan2  - это имена физических интерфейсов (типа eth0, eth1). Параметры unit задают номер, под которым будет подниматься ppp-соединение, так у меня при старте vector появится интерфейс ppp0, при старте utel  ppp1. Параметр ipparam задает имя соединения, чтобы можно было оперировать скриптами в /etc/ppp/ip-up.d, /etc/ppp/ip-down.d, можно посмотреть файлы /etc/ppp/ip-up и /etc/ppp/ip-down, из их содержимого станет понятно что за IPPARAM.

Это нужно к примеру для автоподнятия каких-то роутов после запуска ppp-соединения, или как было у меня - после поднятия соединения выполнить скрипт, который проверит состояние двух соединений и в случае чего сменит дефолтный роут. Например поднялось ранее отпавшее приоритетное соединение - запустить скрипт, который проверит состояние соединений и сделает default gw снова через первый, быстрый канал.

Опция defaultroute у меня закомменчена, потому что за двумя соединениями следил этот самый скрипт, который переключал дефолтный роут в зависимости от состояния соединений.

maxpostal

Спасибо за столь подробный ответ, буду пробовать.
А что за скрипт проверки подключений, можно по подробнее?
И как у вас работали эти подключения, по очереди? Т. е. был один основной и при его обрыве автоматом поднималось второе подключение?

gardarea51

#7
Скрипт следил за состоянием двух каналов, оба всегда были активны, но был приоритетный, то бишь основной. Кажется я даже о нем писал, постараюсь найти.


Cообщение объединено 06 ноября 2016, 17:08:39

https://debianforum.ru/index.php?topic=6909.msg56390#msg56390
Вот и тема

maxpostal

Спасибо за информацию, придется подучить Linux прежде чем во все это вникнуть...

Возник вопрос по настройке провайдеров: на сколько я помню, скрипт pppoeconf автоматически настраивает dns-сервера, как минимум прописывает их в /etc/resolv.conf.
На сколько я понимаю, нужно в также добавить dns для второго провайдера, если его добавлять руками указаным вами способом, а не через pppoeconf?

gardarea51

Это просто автоматизация, на самом деле dns нужно указать в /etc/resolv.conf и проследить, чтобы этот файл никто не изменял.

Если вы хотите использовать провайдерские DNS, то тут небольшая путаница. Они могут оказаться доступны только при активном подключении к провайдеру из внутренней сети провайдера. В таком случае, при падении соединения этого провайдера, его DNS станут вам недоступны. В самом простом случае используйте гуглDNS (8.8.8.8, 8.8.4.4). У меня сервер сам себе был DNS-сервером, поэтому в resolv.conf у меня было прописано 127.0.0.1.

maxpostal

Dns-сервер тоже нужно настроить, наверное с этого и стоит начать, у вас нет темы на этот счет?  :)

gardarea51

Может быть где-то и была, постараюсь посмотреть вечером.