LINUX.ORG.RU
ФорумAdmin

роутинг. 2 соединения. одно отвалилось. Как бросить весь трафик во второе?


0

0

Собственно, вопрос в теме вопроса. Более расширено. Есть роутер на базе обычного писюка и линукс. Роутер имеет подключение к двум провайдерам и к локалке. Для определённости пров1 через eth1 (192.168.1.5), пров2 eth2 (192.168.2.5), локалка eth0 (192.168.0.5).

через eth1 ходят только на один адрес, остальные ходят через eth2 реализовано так:

route add 70.70.70.70 gw 192.168.1.1 dev eth1 route add default gw 192.168.2.1 dev eth2

Задача: если первое соединение будет недоступно, заставить автоматически идти трафик через второе.

В ручную всё ясно.

route del default route add default gw 192.168.1.1 dev eth1

А вот как определить что соединения не стало и направить трафик по новому маршруту автоматически? А ещё было бы великолепно затем определить что соединение восстановлено и направить трафик по основному маршруту.

Возможно ли это, и если да, то как?

★★★★★

Re: роутинг. 2 соединения. одно отвалилось. Как бросить весь трафик во второе?

Скрипт в crontab:

#!/bin/bash

GW1="172.16.1.1"
GW2="192.168.1.1"

if ping -I eth0 -c10 -W2 $GW1 2>&1 | grep "64 bytes from" > /dev/null && ping -I eth4 -c10 -W2 $GW2 2>&1 | grep "64 bytes from" > /dev/null ;
then
        ip route del default via $GW1 dev eth0 ;
        ip route del default via $GW2 dev eth4 ;
        ip route add default via $GW1 dev eth0 metric 5 ;
        ip route add default via $GW2 dev eth4 metric 10;
        echo "All channel Ok" ;
fi

if ping -I eth0 -c10 -W2 $GW1 2>&1 | grep "100% packet loss" > /dev/null && ping -I eth4 -c10 -W2 $GW2 2>&1 | grep "64 bytes from" > /dev/null ;
then
        ip route del default via $GW1 dev eth0 ;
        ip route del default via $GW2 dev eth4 ;
        ip route add default via $GW2 dev eth4 metric 5 ;
        ip route add default via $GW1 dev eth0 metric 10 ;
        echo "$GW1 DOWN! Switch on $GW2" ;
fi

if ping -I eth0 -c10 -W2 $GW1 2>&1 | grep "64 bytes from" > /dev/null && ping -I eth4 -c10 -W2 $GW2 2>&1 | grep "100% packet loss" > /dev/null ;
then
        ip route del default via $GW1 dev eth0 ;
        ip route del default via $GW2 dev eth4 ;
        ip route add default via $GW1 dev eth0 metric 5 ;
        ip route add default via $GW2 dev eth4 metric 10 ;
        echo "$GW2 DOWN! Switch on $GW1" ;
fi

Giz0 ()

Re: роутинг. 2 соединения. одно отвалилось. Как бросить весь трафик во второе?

или вместо
echo "$GW2 DOWN! Switch on $GW1"
чего-нить вроде
/bin/mail -s "GW2 DOWN! Switch on GW1" me@my.domain

a_andry ()

Re: роутинг. 2 соединения. одно отвалилось. Как бросить весь трафик во второе?

a bgp не спасет отца русской демократии?

anonymous ()

Re: роутинг. 2 соединения. одно отвалилось. Как бросить весь трафик во второе?

Огромное спасибо благородному дону Giz0 за готовое решение.

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

AndreyKl ★★★★★ ()

Re: роутинг. 2 соединения. одно отвалилось. Как бросить весь трафик во второе?

спасибо, нашёл некоторые сведения в адванседе, в разделе "динамическая маршрутизация".

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