LINUX.ORG.RU
ФорумAdmin

Dual WAN CentOS 6 резервный канал на usb модеме

 , , ,


0

2

Добрый день уважаемые форумчане. Сразу к делу, решил я в одной фирме избавиться от дорогостоящего спутникового резервного канала в пользу обычного usb свистка Huawei e3131, т.к. скорость они выдают примерно одинаковую но у свистка раз так в 10-15 выгоднее предложение как по абонентской плате так и по объёму доступного трафика. USB завёлся но не сразу, пришлось его переводить в режим модема: usb_modeswitch -W -c /etc/usb_modeswitch.d/huawei_e3131.conf

При помощи следующей команды модем стал отображаться в /dev/: modprobe usbserial vendor=0x12d1 product=0x1506 &

Дозвон произожу прогой wvdial, с таким конфигом: [Dialer Defaults]

ISDN = 0

Init1 = ATZ

Init2 = AT+CGDCONT=1,«IP»,«static.beeline.ru»

Stupid Mode = 1

Phone = *99***1#

New PPPD = 1

Modem = /dev/ttyUSB0

Username = beeline

Dial Command = ATD

Password = beeline

Baud = 115200

Основной канал висит на интерфейсе eth1 а локалка на eth0.

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

Всё подключается, всё пингуется, и если поочерёдно отрубать основной канал и свисток то трафик подхватывается, казалось бы всё хорошо, но появляется следующая проблема: при загрузке wvdial и создании подключения интерфеса ppp0, этот самый интерфейс становится по умолчанию в роут таблице (default dev ppp0 scope link), и весь трафик по умолчанию идёт через свисток а не через основной канал, даже если вручную удалить. В конфиге wvdial нет никаких настроек касаемых рутинга.

В настройках fault_tolerant_router есть опции которые должны влиять на роуты #base IP route table number, just need to change if you are already using #multiple routing tables base_table: 1

#just need to change if you are already using ip policy routing, to avoid #overlapping, must be higher than 32767 (default priority, see output of #«ip rule» command) base_priority: 40000

#just need to change if you are already using packet marking, to avoid #overlapping base_fwmark: 1

но насколько я понимаю у меня всё верно настроено, вывод ip rule вот такой

40000: from 192.168.1.123 lookup 1

40001: from хх.хх.254.116 lookup 2

40002: from all fwmark 0x1 lookup 1

40003: from all fwmark 0x2 lookup 2

ЕСЛИ КТО С ПОДОБНЫМ СТАЛКИВАЛСЯ ОТЗОВИТЕСЬ )) А пока в деталях изучаю iptables...



Последнее исправление: tyoma75squad (всего исправлений: 1)

рекомендую поднять внутри твоего сервера виртуалку, туда перебросить модем, и внутри виртуалки поднимать wvdial ppp0, а на сервер простым eth подавать канал, в этом случае у тебя не будет таких проблем с ppp0.

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

Nurmukh

Мысль конечно хорошая, но в моём случае не пройдёт скорее всего, ввиду того что на «сервере» всего 2Гб оперативы, а из них свободно всего 700 это при том что пользователи сети ещё с ним не работают пока что... Стоит минимальный Centos 6 и далее DansGuardian -> Squid -> ClamAV. Ещё надо на нём VPN настроить... Но спасибо за идею ))

tyoma75squad
() автор топика
Ответ на: комментарий от john33

ip route show

без поднятого ppp0

192.168.1.0/24 dev eth1 proto kernel scope link src 192.168.1.123 (ИНЕТ)

192.168.0.0/24 dev eth0 proto kernel scope link src 192.168.0.101 (ЛОКАЛКА)

169.254.0.0/16 dev eth0 scope link metric 1002

169.254.0.0/16 dev eth1 scope link metric 1003

с поднятым ppp0 (запустил wvdial)

хх.хх.64.64 dev ppp0 proto kernel scope link src хх.хх.254.116 (свисток)

192.168.1.0/24 dev eth1 proto kernel scope link src 192.168.1.123 (ИНЕТ)

192.168.0.0/24 dev eth0 proto kernel scope link src 192.168.0.101 (локалка)

169.254.0.0/16 dev eth0 scope link metric 1002

169.254.0.0/16 dev eth1 scope link metric 1003

default dev ppp0 scope link

в общем когда поднимается ppp0 он автоматически делается по умолчанию и даже если его убрать из этой таблицы то приоритет у него остаётся почему-то...

tyoma75squad
() автор топика
Ответ на: комментарий от tyoma75squad

Не вижу где default в первый случай? Ты редактировал выход? Можно поменять default и вручную, но твоя прога для меня чёрная коробка, не понятно что она точно делает. По моему Нужно или разобраться с fault_tolerant_routet или удалить её и прописать все вручную.

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

В fault_tolerant_router одно из главных условий чтобы ни один интерфейс не был роутом по умолчанию что я сделал... Но когда запускаешь wvdial он гад ppp0 автоматом делает по роутом по умолчанию, и даже если этот дефаулт роут руками убираю то всё равно трафик идёт через свисток. Пятница 6 вечера )) С днём мужика всех! ) и пожалуй дискуссия откладывается до понедельника... На выходных поковыряю ентот fault_tolerant_routet там на гитхабе есть исходники...

tyoma75squad
() автор топика
Ответ на: комментарий от tyoma75squad

есть файл /etc/ppp/up.local /etc/ppp/down.local

в котором ты можешь прописать что нужно делать когда ppp0 поднялся и когда упал.

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

ip route flush cache не забывай запустить ее после того как изменил маршруты.

Nurmukh ★★★
()
Ответ на: Nurmukh от tyoma75squad

ну если есть 2 гб, то можно и еще 2 гб добавить. память щас не так дорого стоит. если конечно же у тебя в качестве роутера atom где жесткое ограничение на память.

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

ну вот и всё заработало ))

https://github.com/drsound/fault_tolerant_router/blob/master/lib/fault_tolera...

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

было: if routing_uplinks.size == 1

стало: if routing_uplinks.size >= 1

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

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