Страница 1 из 1
Два канала интернет и шлюз на FREEBSD 6.2
Добавлено: 2007-03-27 12:32:44
andy3000
Народ, кто нить озадачивался таким вопросом:
Имеется два выделенных канала интернет, сервер (в нем три сетевые карточки, одна для внутренней сети, и две карточки для двух выделенных каналов), задача такая при падении основного первого канала , автоматически включать резервный второй канал, а когда первый канал востанавливает свое рабочее состояние, автоматически подключать его обратно.
Есть ли решения данного вопроса?
Добавлено: 2007-03-27 12:35:54
Alex Keda
Добавлено: 2007-03-28 8:14:15
alex3
В "Системном администраторе" есть статья по этому вопросу. С примерами скриптов.
Добавлено: 2007-03-28 9:51:26
Гость
я как раз февральский номер задолбался искать нигде в Питере нет, ужо согласен был в инете купить, так тож проблема январский и мартовский есть, а вот февральского нет, как всегда закон подлости

Добавлено: 2007-03-28 12:19:53
Abigor
так чего там трудного?
сам чтоль не можешь их написать, там три-четыре строчки
Добавлено: 2007-03-28 13:57:42
alex3
если не ошибаюсь, то я выкладывал на фтп к лисяре все выпуски 2002-2006
Re: Два канала интернет и шлюз на FREEBSD 6.2
Добавлено: 2007-10-27 10:47:36
votuanr
апну тему: немного другие условия:
есть 3 сетевых интерфейса: dc0,rl0 - каналы в интернет от разных провайдеров, xl0 -локалка
dc0 имеет внешний ip, rl0 - внутренний (непересекается с xl0), xl0 - обычная серая локалка.
шлюз по умолчанию rl0 (он просто быстрее на порядок).
Задача: выставить наружу 1723 порт (pptp) и radmin (4899).
Если шлюз по умолчанию dc0 - то проблем нет, все работает и перенаправляется (radmin внутрь локалки), если же шлюз по умолчанию rl0, то ответы на запросы (внешние соединения) возвращаются не через тотинтерфейс (dc0) через который они принимались, а через default gateway, т.е. через xl0 и нефига не работает

Если я жестко прописываю маршрут к внешнему хосту через dc0, а потом с этого хоста соединяюсь, то все работает, но проблема в том, что я не могу знать всех ip с которых будет соединение инициироваться.
изложил все для себя, чтоб так сказать структурировать в голове, но и от помощи не откажусь.
6.2-RELEASE-p4 FreeBSD 6.2-RELEASE-p4 #0: Tue May 29 12:53:25 MSD 2007
Oct 27 12:31:55 gw kernel: ipfw: 509 Accept TCP 175.59.051.117:1310 181.294.59.63:1723 in via dc0
Oct 27 12:31:55 gw kernel: ipfw: 509 Accept TCP 181.294.59.63:1723 175.59.051.117:1310 out via rl0
ткните в ман
Re: Два канала интернет и шлюз на FREEBSD 6.2
Добавлено: 2007-10-28 12:32:35
dikens3
Перехватывай нужный порт и отправляй всегда через dc0. (ipfw add
fwd .. . . . ..
http://www.lissyara.su/?id=1330
Re: Два канала интернет и шлюз на FREEBSD 6.2
Добавлено: 2007-10-29 23:58:55
in7rude
andy3000 писал(а):Народ, кто нить озадачивался таким вопросом:
Имеется два выделенных канала интернет, сервер (в нем три сетевые карточки, одна для внутренней сети, и две карточки для двух выделенных каналов), задача такая при падении основного первого канала , автоматически включать резервный второй канал, а когда первый канал востанавливает свое рабочее состояние, автоматически подключать его обратно.
Есть ли решения данного вопроса?
Код: Выделить всё
#/usr/local/bin/bash
DGW="xx.xx.xx.xx"
GW1="xx.xx.xx.xx"
GW2="yy.yy.yy.yy"
DATE=`date`
while sleep 15; do
ping -c 1 -s 2 -q -r $DGW > /dev/null
STATE=$?
ROUTEDEF=` netstat -rn | grep default | grep -v grep | awk '{print $2}' `
if [ ! "$STATE" = "0" ]; then
if [ "$ROUTEDEF" = "$GW1" ]; then
route -q delete default
route -q add default $GW2
sh /etc/rc.firewall LAC
echo "Switch to gw $GW2 in $DATE" >> /var/log/switchlog
fi
else
if [ "$ROUTEDEF" = "$GW2" ]; then
route -q delete default
route -q add default $GW1
sh /etc/rc.firewall USP
echo "Switch to gw $GW1 in $DATE" >> /var/log/switchlog
fi
fi
done
У меня норм работает, только бывает косяк, когда отпадет линия не от меня до прова, а гденибудь уже у самого прова, то приходится руками каюло выдергивать

Re: Два канала интернет и шлюз на FREEBSD 6.2
Добавлено: 2007-10-30 1:43:39
Гость
А никто не пробовал прикрутить routed(8) для этих целей?
in7rude, в чем прикол использовать быдлобаш ради
sh-скрипта? Лишнюю зависимость тянуть?
Может проще?
> /dev/null... а чем
>&- не угодил?
ROUTEDEF=` netstat -rn | grep default | grep -v grep | awk '{print $2}' `, можно короче
ROUTEDEF=$(route -n get -inet default | awk '/gateway/ { print $2 }')
А вот эту конструкцию
Код: Выделить всё
ping -c 1 -s 2 -q -r $DGW > /dev/null
STATE=$?
<snip>
if [ ! "$STATE" = "0" ]; then
можно сократить до
И что за опция (-r) такая у ping(8)'а? Согласно man'у она не требует никаких аргументов.
Ах да,
#/usr/local/bin/bash... восклицательный знак после решеточки не забыли (#!)?
Вообщем скрипт кривой, но он все же лучше чем управлять роутингом из фаервола. Так что +1.