vgulch 0 Опубликовано: 2005-01-14 09:07:01 Share Опубликовано: 2005-01-14 09:07:01 подскажите как зароутить переход с одного провайдера на второй. 1 провайдер - eth1, 2 - eth2 Ссылка на сообщение Поделиться на других сайтах
XoRe 0 Опубліковано: 2005-01-14 12:53:56 Share Опубліковано: 2005-01-14 12:53:56 т.е. зароутить и т.е. переход? Ссылка на сообщение Поделиться на других сайтах
nn 7 Опубліковано: 2005-01-14 15:10:15 Share Опубліковано: 2005-01-14 15:10:15 Насколько я понял идет речь о том, что если ложится один пров или канал к нему, переходить на другого. Продвинутый метод: Если у тя AS, что вряд-ли, то то BGP. Если не знаешь, что это, то забудь про это, руками или скриптом тогда. Ну скрипт нарисать в принцыпе, можно, чтобы выбивал один дефолт гейтвей и поднимал другой, если не пингуется что-то там. Если бэкапить канал, другим каналом или построить ВПН через второго прова, то RIP умеет это делать. Но тогда меняется только маршрут, а не пров. Ссылка на сообщение Поделиться на других сайтах
XoRe 0 Опубліковано: 2005-01-14 17:25:05 Share Опубліковано: 2005-01-14 17:25:05 написать скрипт, который пингует каналы обоих провов каждую минуту по 20 раз. если у первого провайдера пингов больше проходит, то на него. если у второго, то на него. у меня примерно что-то подобное реализовано. единственный минус - при переходе рвутся все соединения. т.е. отключается icq и т.д. Ссылка на сообщение Поделиться на других сайтах
nn 7 Опубліковано: 2005-01-16 15:14:31 Share Опубліковано: 2005-01-16 15:14:31 написать скрипт, который пингует каналы обоих провов каждую минуту по 20 раз. если у первого провайдера пингов больше проходит, то на него. если у второго, то на него.у меня примерно что-то подобное реализовано. единственный минус - при переходе рвутся все соединения. т.е. отключается icq и т.д. Скрипт в студию, плиз, может пригодится кому. Ссылка на сообщение Поделиться на других сайтах
XoRe 0 Опубліковано: 2005-01-17 00:04:44 Share Опубліковано: 2005-01-17 00:04:44 Скрипт мудреный. one - один провайдер, two - другой 1.1.1.1 - шлюз одного провайдера, 2.2.2.2 - другого 111.111.111.111 и 222.222.222.222 хосты, которые идут следующими после шлюзов провайдеров по пути следования пакетов. Советую отследить с помощью traceroute. 111.111.111.111 - ip адрес, который всегда роутится через первого провайдера, 222.222.222.222 - через другого. Используется модуль для perl Net::Ping. pping.pl #!/usr/local/bin/perl use Net::Ping; open (OLD, '/usr/bin/netstat -rn | /usr/bin/grep default |') or die 'Can\'t open pipe'; while ($line = <OLD>) { ($way, $ip) = (split(/[\s\t]+/, $line))[0,1]; last if ($way eq 'default'); } close OLD; $host{one} = '111.111.111.111'; #ip адрес, который всегда роутится через первого провайдера $host{two} = '222.222.222.222'; #ip адрес, который всегда роутится через второго провайдера $ways{one} = '1.1.1.1'; $ways{two} = '2.2.2.2'; $ways{'1.1.1.1'} = 'one'; $ways{'2.2.2.2'} = 'two'; if(exists $ways{$ip}) { $route = $ways{$ip}; } else { die "$ip - unknown route\n"; } if($#ARGV >= 0) { $routenow = @ARGV[0]; goto need if (exists $ways{@ARGV[0]}); } $ping{two} = 0; $ping{one} = 0; foreach(1..20) { #one #two $one = Net::Ping->new('icmp', 1.5, 56); $two = Net::Ping->new('icmp', 1.5, 56); if($one->ping($host{one})) { $ping{one}++; } if($two->ping($host{two})) { $ping{two}++; } $one->close(); $two->close(); } if($ping{one} + 10 >= $ping{two}) { $routenow = 'one'; } else { $routenow = 'two'; } need: open(FILE,"> /usr/local/stat/traf/route") or exit; print FILE "Pings to one: $ping{one}\nPings to two: $ping{two}\nWere route: $route\nNow route: $routenow\n"; close FILE; if($route eq $routenow) { exit; } else { `/bin/cat /usr/local/etc/squid/squid.conf | /usr/bin/grep -v cache_peer | /usr/bin/grep -v never_direct > /tmp/sq`; `/bin/cp -f /tmp/sq /usr/local/etc/squid/squid.conf`; `/bin/rm -f /tmp/sq`; if($routenow eq 'one') { `echo cache_peer proxy.one.ru parent 8080 3130 no-query default >> /usr/local/etc/squid/squid.conf`; `echo never_direct allow all >> /usr/local/etc/squid/squid.conf`; } elsif($routenow eq 'two') { `echo cache_peer proxy.two.ru parent 8080 3130 no-query default >> /usr/local/etc/squid/squid.conf`; `echo never_direct allow all >> /usr/local/etc/squid/squid.conf`; } `/usr/local/sbin/squid -k reconfigure`; `/usr/local/etc/rc.d/routes.sh $routenow`; } exit; У меня в кроне стоит на запуск каждые 2 минуты. В Net::Ping->new('icmp', 1.5, 56);, icmp - протокол, 1.5 - допустимая задержка, 56 - объем данных в пакете. У меня такая задержка потому что у меня пинг на глобал 0,5 секунды минимум. Советую задержку поставить поменьше и запускать каждую минуту. if($ping{one} + 10 >= $ping{two}) - у меня у провайдера one траффик дешевле в полтора раза, по сравнению с two. Поэтому есть приоритет в его использовании. Кроме роутинга, перенастривается прокси-сервер для работы через прокси провайдеров. Если у вас такого нету - убирайте. В /usr/local/stat/traf/route записывается кол-во пингов, какой роутинг был, какой стал. /usr/local/etc/rc.d/routes.sh #!/bin/sh route="/sbin/route -q" main() { #какой-то внутренний и остальной роутинг ${route} add -net 192.168.2.0/24 внутренний_шлюз # homenet2 # для пингования каких-то хостов через разный провайдеров ${route} add 111.111.111.111 1.1.1.1 #For testing one channel ${route} add 222.222.222.222 2.2.2.2 #For testing two channel } case "$1" in start) main ${route} delete default ${route} add default 1.1.1.1 exit 0 ;; two) ${route} delete default ${route} add default 2.2.2.2 exit 0 ;; one) ${route} delete default ${route} add default 1.1.1.1 exit 0 ;; stop) exit 0 ;; *) echo "Usage: `basename $0` { start | one | two }" exit 64 ;; esac В результате можно настроить нужный роутнг командой /usr/local/etc/rc.d/routes.sh { one | two } или pping.pl { one | two } Претензии по написанию принимаются только конструктивные. Т.е. после слов "все это лажа" должен идти пример своих скриптов. Правится по вкусу. 2админам, которые "только установили линукс и как это юзать ваще": юзайте как хотите. Меня попросили только выложить скрипт. Все мои пояснения - личная инициатива. Дальше читайте доки. P.S. Эти скрипты можно настроить на использование хоть 2, хоть 3, хоть n провайдеров. Ссылка на сообщение Поделиться на других сайтах
vgulch 0 Опубліковано: 2005-01-17 12:57:14 Автор Share Опубліковано: 2005-01-17 12:57:14 Хорошо -XoRe- --- я в принципе так и делал, что удалял дефолтный роут - и прописывал на нового провайдера - но он нешол. Только при выключении карточки (перезагруза->выброс карточки).Включаю карточку.(определение карточки->прописывание роутинга через нее при помощи утилитки настройки карточки). Тогда все пашет. Я делал delete default add default ... и ничего... Ссылка на сообщение Поделиться на других сайтах
XoRe 0 Опубліковано: 2005-02-26 13:47:27 Share Опубліковано: 2005-02-26 13:47:27 Так, а на какой ОСи это делается? Ссылка на сообщение Поделиться на других сайтах
vgulch 0 Опубліковано: 2005-02-28 07:20:44 Автор Share Опубліковано: 2005-02-28 07:20:44 Mandrake 10.0 (дело в том, что сам я iptables-правила не прописывал- у меня стоит Shorewall) - вообшем не понимаю.... Ссылка на сообщение Поделиться на других сайтах
fork() 0 Опубліковано: 2005-03-06 14:09:24 Share Опубліковано: 2005-03-06 14:09:24 Воспользоваться возможностями advanced routing ядер 2.2 и выше с помощью пакета iproute2 При этом Сделать несколько маршрутов по умолчанию с одинаковым приоритетом (можно и с разным, в зависимости от того, через какой интерфейс преподчтительнее отсылать пакеты). ip route add default scope global nexthop via $P1 dev $IF1 weight 1 \ nexthop via $P2 dev $IF2 weight 1 здесь $P1 - адрес первого шлюза, $P2 - адрес второго шлюза, $IF1 - интерфейс, который смотрит на первый шлюз, $IF2 - интерфейс, смотрящий на второй шлюз weight - предпочтение (чем больше - тем лучше). При этом если один шлюз недоступен - пакеты пойдут по другим. Здесь есть два момента: - несколько пакетов из одного соединения могут уйти на разные интерфейсы. - при недоступности шлюза через один из интерфейсов уже установленное соединение через "упавший" интерфейс будет разрываться только по time-out. Обе эти проблемы можно решить, если знать исходящий адрес пакета, являющегося частью уже существующего соединения, до момента принятия решения о маршрутизации, но как это сделать средствами iptables conntrack без сторонних патчей - не знаю, может кто подскажет. Подход, решающий обе эти проблемы,правда, с накладыванием "левых" патчей, можно посмотреть здесь Ссылка на сообщение Поделиться на других сайтах
ispolin 0 Опубліковано: 2005-03-06 21:42:36 Share Опубліковано: 2005-03-06 21:42:36 Воспользоваться возможностями advanced routing ядер 2.2 и выше с помощью пакета iproute2 Во, так и делается, а люди скриптов напридумывали, хотя все равно молодцы что альтернативу предложили Ссылка на сообщение Поделиться на других сайтах
fork() 0 Опубліковано: 2005-03-07 13:01:03 Share Опубліковано: 2005-03-07 13:01:03 Воспользоваться возможностями advanced routing ядер 2.2 и выше с помощью пакета iproute2 Во, так и делается, а люди скриптов напридумывали, хотя все равно молодцы что альтернативу предложили а как преодалеваются те возникающие при этом проблемы, которые я описал? Ссылка на сообщение Поделиться на других сайтах
ispolin 0 Опубліковано: 2005-03-08 00:16:49 Share Опубліковано: 2005-03-08 00:16:49 Нет ну нужно ж людям что по другому шли только в случае если первый не работает, поэтому приоритет на первом больше поставить, а вот от второго я и не избавлялся, просто не так часто уж эти переходы и случаются Ссылка на сообщение Поделиться на других сайтах
nn 7 Опубліковано: 2005-03-08 07:22:41 Share Опубліковано: 2005-03-08 07:22:41 Доступность шлюза еще не значит, что дальше канал не лежит. В моем случае рутер, который шлюз всегда доступен. И дальше часть канала практически всегда доступна. Заыки случаются как раз за 2 узлами. Ссылка на сообщение Поделиться на других сайтах
XoRe 0 Опубліковано: 2005-03-08 09:21:55 Share Опубліковано: 2005-03-08 09:21:55 Доступность шлюза еще не значит, что дальше канал не лежит.В моем случае рутер, который шлюз всегда доступен. И дальше часть канала практически всегда доступна. Заыки случаются как раз за 2 узлами. Вот вот. У меня такая-же ситуация. Есть два провайдера, оба получают инет через спутник. От шлюзов до точек приземления канала 3-5 хопов. Каналы приземляются на постояные айпишники. Я вписал маршрутизацию статически до этих айпишников. В моем случае мои скрипты лучше всего решают задачу постоянного инета. Само собой, реализаций сабжа куча. Я даже не предложил, я просто опубликовал свою реализацию. Потом. Вопрос по теме. Кто какими программами для генерации icmp пакетов пользуется? Ссылка на сообщение Поделиться на других сайтах
Рекомендованные сообщения
Создайте аккаунт или войдите в него для комментирования
Вы должны быть пользователем, чтобы оставить комментарий
Создать аккаунт
Зарегистрируйтесь для получения аккаунта. Это просто!
Зарегистрировать аккаунтВхід
Уже зарегистрированы? Войдите здесь.
Войти сейчас