Два канала интернет и шлюз на FREEBSD 6.2

Проблемы установки, настройки и работы Правильной Операционной Системы

Модератор: terminus

Правила форума
Убедительная просьба юзать теги [cоde] при оформлении листингов.
Сообщения не оформленные должным образом имеют все шансы быть незамеченными.
Аватара пользователя
andy3000
рядовой
Сообщения: 12
Зарегистрирован: 2007-03-13 13:16:26
Откуда: Питер

Два канала интернет и шлюз на FREEBSD 6.2

Непрочитанное сообщение andy3000 » 2007-03-27 12:32:44

Народ, кто нить озадачивался таким вопросом:
Имеется два выделенных канала интернет, сервер (в нем три сетевые карточки, одна для внутренней сети, и две карточки для двух выделенных каналов), задача такая при падении основного первого канала , автоматически включать резервный второй канал, а когда первый канал востанавливает свое рабочее состояние, автоматически подключать его обратно.
Есть ли решения данного вопроса?

Хостинговая компания Host-Food.ru
Хостинг HostFood.ru
 

Услуги хостинговой компании Host-Food.ru

Хостинг HostFood.ru

Тарифы на хостинг в России, от 12 рублей: https://www.host-food.ru/tariffs/hosting/
Тарифы на виртуальные сервера (VPS/VDS/KVM) в РФ, от 189 руб.: https://www.host-food.ru/tariffs/virtualny-server-vps/
Выделенные сервера, Россия, Москва, от 2000 рублей (HP Proliant G5, Intel Xeon E5430 (2.66GHz, Quad-Core, 12Mb), 8Gb RAM, 2x300Gb SAS HDD, P400i, 512Mb, BBU):
https://www.host-food.ru/tariffs/vydelennyi-server-ds/
Недорогие домены в популярных зонах: https://www.host-food.ru/domains/

Аватара пользователя
Alex Keda
стреляли...
Сообщения: 35456
Зарегистрирован: 2004-10-18 14:25:19
Откуда: Made in USSR
Контактная информация:

Непрочитанное сообщение Alex Keda » 2007-03-27 12:35:54

Код: Выделить всё

man ping
man shell
man route
Убей их всех! Бог потом рассортирует...

Аватара пользователя
alex3
лейтенант
Сообщения: 872
Зарегистрирован: 2006-11-20 16:47:56
Откуда: Переславль
Контактная информация:

Непрочитанное сообщение alex3 » 2007-03-28 8:14:15

В "Системном администраторе" есть статья по этому вопросу. С примерами скриптов.
Если ipfw можно считать речью обычного человека, то pf - речь политика. За каждой ошибкой -ядерный песец.

Гость
проходил мимо

Непрочитанное сообщение Гость » 2007-03-28 9:51:26

я как раз февральский номер задолбался искать нигде в Питере нет, ужо согласен был в инете купить, так тож проблема январский и мартовский есть, а вот февральского нет, как всегда закон подлости :cry:

Аватара пользователя
Abigor
старшина
Сообщения: 425
Зарегистрирован: 2006-03-02 11:13:15
Откуда: РФ. г. Иркутск
Контактная информация:

Непрочитанное сообщение Abigor » 2007-03-28 12:19:53

так чего там трудного?
сам чтоль не можешь их написать, там три-четыре строчки

Аватара пользователя
alex3
лейтенант
Сообщения: 872
Зарегистрирован: 2006-11-20 16:47:56
Откуда: Переславль
Контактная информация:

Непрочитанное сообщение alex3 » 2007-03-28 13:57:42

если не ошибаюсь, то я выкладывал на фтп к лисяре все выпуски 2002-2006
Если ipfw можно считать речью обычного человека, то pf - речь политика. За каждой ошибкой -ядерный песец.

votuanr
ефрейтор
Сообщения: 60
Зарегистрирован: 2006-10-31 14:15:36

Re: Два канала интернет и шлюз на FREEBSD 6.2

Непрочитанное сообщение votuanr » 2007-10-27 10:47:36

апну тему: немного другие условия:

есть 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

ткните в ман

Аватара пользователя
dikens3
подполковник
Сообщения: 4856
Зарегистрирован: 2006-09-06 16:24:08
Откуда: Нижний Новгород
Контактная информация:

Re: Два канала интернет и шлюз на FREEBSD 6.2

Непрочитанное сообщение dikens3 » 2007-10-28 12:32:35

Перехватывай нужный порт и отправляй всегда через dc0. (ipfw add fwd .. . . . ..

http://www.lissyara.su/?id=1330
Лучше установить FreeBSD, чем потратить 30 лет на Linux'ы и выяснить какой из них хуже.

in7rude
рядовой
Сообщения: 13
Зарегистрирован: 2007-07-09 20:47:59
Контактная информация:

Re: Два канала интернет и шлюз на FREEBSD 6.2

Непрочитанное сообщение in7rude » 2007-10-29 23:58:55

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-скрипта? Лишнюю зависимость тянуть?

Код: Выделить всё

if [...]
  if ...
else ...
  if [...]
Может проще?

Код: Выделить всё

if [ ... -a ... ]
elif [ ... ]
> /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
можно сократить до

Код: Выделить всё

if ! ping -c 1 -s 2 -q -r $DGW >&-; then
И что за опция (-r) такая у ping(8)'а? Согласно man'у она не требует никаких аргументов.
Ах да, #/usr/local/bin/bash... восклицательный знак после решеточки не забыли (#!)?
Вообщем скрипт кривой, но он все же лучше чем управлять роутингом из фаервола. Так что +1.