Автор Тема: маршрутизация между двумя внешними интерфейсами  (Прочитано 3856 раз)

Оффлайн romario

  • Завсегдатай
  • *
  • Сообщений: 621
    • ЮНИКС
собственно есть ком(маршрутизатор) altlinux 4.0

eth0,eth1 - внешние (статика)
eth2 - внутренняя

нужно чтобы внешний трафик постоянно шел по eth0, и при падении eth0 внешний трафик шел через eth1.

как это сделать средствами iptables?

Оффлайн romario

  • Завсегдатай
  • *
  • Сообщений: 621
    • ЮНИКС
вот такой скриптик раздобыл, может посоветуйте что еще добавить

#!/bin/bash

# опрашиваемый узел основного провайдера
HOST=10.1.0.254

# шлюз к основному провайдеру
GW1=10.1.0.1
# шлюз к резервному провайдеру
GW2=10.2.0.1

#пингуем внешний хост
ping -q -c 1 ${HOST} > /dev/null 2>&1

#если пинг проходит, то пингуется шлюз основного провайдера и запускается еще if,
#если не проходит то меняется маршрут.
if [ $? -eq 0 ]; then
        ping -q -c 1 ${GW1} > /dev/null 2>&1
#если шлюз основного провайдера пингуется то меняется маршрут на основного провайдера
#иначе прописывается вспомогательный маршрут.
        if [ $? -eq 0 ]; then
                ip route change default via ${GW1}
        else
                ip route change default via ${GW2}
        fi
else
        ip route change default via ${GW2}
fi

Оффлайн Salomatin

  • Модератор раздела
  • ****
  • Сообщений: 981
    • Пошаговые инструкции
    • Email
внешний трафик постоянно шел по eth0, и при падении eth0 внешний трафик шел через eth1.
Боюсь вы не совсем понимаете чего хотите или не очень ясно выразились.
Что значит "падении eth0" ? А если провайдер просто проводит переключение некоторых маршрутов? Что если провайдер пингуется, а дальше нет?

Что делать с DNS провайдеров, они разные и чужих не обслуживают.

И наконец,  что делать когда провайдер через пять минут перестал падать?

Темы двух провайдеров обсуждалась на форуме, даже в соседнем посте. Почитайте. Посмотрите видеоролик.
Хочешь понять сам, объясни другому.
"Если уже все испробовал и ничего не помогает - почитай инструкцию"

Оффлайн romario

  • Завсегдатай
  • *
  • Сообщений: 621
    • ЮНИКС
в общем нужно чтобы было 2 подключения во внешнюю сеть, причем так что одно подключение основное, через которого идет весь трафик, а второе подключение резервное оно будет использоваться только тогда когда основное не работает. Скрипт проверяет ip какого нибудь хоста находящегося во внешке, ну например ya.ru. если он пингуется то все тип-топ, а если нет, меняется дефолтный маршрут на второго провайдера. при повторном запуске проверяется хост, а также шлюз для основного провайдера, если шлюз отвечает то маршрут прописывается обратно.

ДНС можно прописать первичный 1-провайдер, вторичный 2 - провайдер.

крон выполняет этот скрипт каждую минуту.

Вот только сейчас вылез один косяк ALtlinux 4.1 положил в CRON.hourly, поменял время выполнение на 0-59 * * * *
но чето маршрут не меняется. если руками запустить то скрипт работает. Все пока делаю на тестовой машине.

Оффлайн Andrey

  • Завсегдатай
  • *
  • Сообщений: 734
в общем нужно чтобы было 2 подключения во внешнюю сеть, причем так что одно подключение основное, через которого идет весь трафик, а второе подключение резервное оно будет использоваться только тогда когда основное не работает. Скрипт проверяет ip какого нибудь хоста находящегося во внешке, ну например ya.ru. если он пингуется то все тип-топ, а если нет, меняется дефолтный маршрут на второго провайдера. при повторном запуске проверяется хост, а также шлюз для основного провайдера, если шлюз отвечает то маршрут прописывается обратно.

ДНС можно прописать первичный 1-провайдер, вторичный 2 - провайдер.

крон выполняет этот скрипт каждую минуту.

Вот только сейчас вылез один косяк ALtlinux 4.1 положил в CRON.hourly, поменял время выполнение на 0-59 * * * *
но чето маршрут не меняется. если руками запустить то скрипт работает. Все пока делаю на тестовой машине.
Угу, косяк ОСИ, естествено. Либо пустой строки в конце нет, либо пути не прописаны.

Оффлайн Andrey

  • Завсегдатай
  • *
  • Сообщений: 734
Цитировать
CRON.hourly
Это кстати что?

Оффлайн romario

  • Завсегдатай
  • *
  • Сообщений: 621
    • ЮНИКС
пусты строки есть, cron-hourly это папка которая уже настроенная для запуска с правами рута. про пути ничего не знаю где их можно прописать.

Оффлайн Andrey

  • Завсегдатай
  • *
  • Сообщений: 734
пусты строки есть, cron-hourly это папка которая уже настроенная для запуска с правами рута. про пути ничего не знаю где их можно прописать.
Показывайте скрипт.

Оффлайн romario

  • Завсегдатай
  • *
  • Сообщений: 621
    • ЮНИКС
#!/bin/bash

HOST=10.1.0.254

GW1=10.1.0.1

GW2=10.2.0.1


ping -q -c 1 ${HOST} > /dev/null 2>&1

if [ $? -eq 0 ]; then
        ping -q -c 1 ${GW1} > /dev/null 2>&1
        if [ $? -eq 0 ]; then
                ip route change default via ${GW1}
        else
                ip route change default via ${GW2}
        fi
else
        ip route change default via ${GW2}
fi

Оффлайн Salomatin

  • Модератор раздела
  • ****
  • Сообщений: 981
    • Пошаговые инструкции
    • Email
но чето маршрут не меняется. если руками запустить то скрипт работает. Все пока делаю на тестовой машине.

Попробуйте в скрипте вместо ip route

/sbin/route delete default gw ${GW1}
/sbin/route add default gw ${GW2}

Хочешь понять сам, объясни другому.
"Если уже все испробовал и ничего не помогает - почитай инструкцию"

Оффлайн romario

  • Завсегдатай
  • *
  • Сообщений: 621
    • ЮНИКС
обычные команды типа cp /home/admin/12.txt /home/admin/123

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

Оффлайн romario

  • Завсегдатай
  • *
  • Сообщений: 621
    • ЮНИКС


Попробуйте в скрипте вместо ip route

/sbin/route delete default gw ${GW1}
/sbin/route add default gw ${GW2}



помогло спасибо!:)


теперь скрипт выглядит вот так:

#!/bin/bash
HOST=10.1.0.254
GW1=10.1.0.1
GW2=10.2.0.1

ping -q -c 1 ${HOST} > /dev/null 2>&1
if [ $? -eq 0 ]; then
        ping -q -c 1 ${GW1} > /dev/null 2>&1
        if [ $? -eq 0 ]; then
                /sbin/ip route change default via ${GW1}
        else
                /sbin/ip route change default via ${GW2}
        fi
else
        /sbin/ip route change default via ${GW2}
fi
« Последнее редактирование: 16.08.2010 17:33:00 от romario »

Оффлайн Alukardd

  • Завсегдатай
  • *
  • Сообщений: 197
    • Email
и еще...
вам не стоило трогать расписание для стандартной папки cron.hourly
надо было в файл crontab добавить строку, например такую - 0-59 *   * * *   root    /root/myscript
ну и положите ваш скрипт в /root/myscript и дайте ему права на выполнение или измените пути как вам больше нравится
Debian Lenny 6.0, Ubuntu 10.04 Lucid Lynx