ipfw, "2 провайдера" и входящие соединения

Настройка сетевых служб, маршрутизации, фаерволлов. Проблемы с сетевым оборудованием.
Правила форума
Убедительная просьба юзать теги [code] при оформлении листингов.
Сообщения не оформленные должным образом имеют все шансы быть незамеченными.
dsa
проходил мимо
Сообщения: 8
Зарегистрирован: 2009-09-19 15:01:49
Откуда: Великий Новгород

ipfw, "2 провайдера" и входящие соединения

Непрочитанное сообщение dsa » 2009-10-05 1:48:33

Имею сервер под FreeBSD 7.1, у него 3 интерфейса: один - в локальную сеть, два других - к разным провайдерам.

Интерфейсы провайдеров имеют реальные айпишники.

Что-то никак не могу сочинить сет правил, чтобы работали входящие соединения извне на айпишники обоих провайдеров.

Исходящую нагрузку разделять не надо, пусть бы так и шла по одному маршруту.

Пытался делать по местным статьям, но упорно одно подключение работает, а ответ на подключение на второй адрес уходит в шлюз по умолчанию.

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

Подскажите, как там правильно?

Хостинговая компания 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/

paradox
проходил мимо
Сообщения: 11620
Зарегистрирован: 2008-02-21 18:15:41

Re: ipfw, "2 провайдера" и входящие соединения

Непрочитанное сообщение paradox » 2009-10-05 1:51:45

вообще правильно для таких случаев поднимать BGP
но можете попробовать извратиться через PF

и я не понял основного
что значит работали входящие от двух провадеров?

wel
сержант
Сообщения: 170
Зарегистрирован: 2007-02-27 11:59:41

Re: ipfw, "2 провайдера" и входящие соединения

Непрочитанное сообщение wel » 2009-10-05 2:12:17

paradox писал(а):и я не понял основного
что значит работали входящие от двух провадеров?
эт когда есть 1.1.1.1 и 2.2.2.2 на серваке и в любое время если один из провайдоров лежит то к серваку можно получить доступ
А так получается что все в дефолт уходит одного из провайдеров

paradox
проходил мимо
Сообщения: 11620
Зарегистрирован: 2008-02-21 18:15:41

Re: ipfw, "2 провайдера" и входящие соединения

Непрочитанное сообщение paradox » 2009-10-05 2:19:38

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

Nickuz
рядовой
Сообщения: 28
Зарегистрирован: 2009-09-22 11:48:31

Re: ipfw, "2 провайдера" и входящие соединения

Непрочитанное сообщение Nickuz » 2009-10-05 5:59:05

paradox писал(а):вообще правильно для таких случаев поднимать BGP
Где б найти таких правильных провайдеров, которые с каждым клиентом согласны BGP поднимать.

mediamag
лейтенант
Сообщения: 693
Зарегистрирован: 2008-10-02 20:49:21

Re: ipfw, "2 провайдера" и входящие соединения

Непрочитанное сообщение mediamag » 2009-10-05 9:36:37

тоесть по русски тебе нужно чтобы дефаултроутера было два?? или чтобы был запасной канал и резервный на случай падения основного??

dsa
проходил мимо
Сообщения: 8
Зарегистрирован: 2009-09-19 15:01:49
Откуда: Великий Новгород

Re: ipfw, "2 провайдера" и входящие соединения

Непрочитанное сообщение dsa » 2009-10-05 10:04:12

Не, немного не так.

Есть сервер, у него два внешних айпи. Они оба живы одновременно.

Если к серверу извне обращаются по адресу первого провайдера, то и ответить на запрос сервер должен в шлюз первого провайдера, если обращаются по адресу второго, то ответ должен уйти в шлюз второго провайдера.

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

Локальная сеть за натом, в качестве ната на сервере используется natd.


mediamag
лейтенант
Сообщения: 693
Зарегистрирован: 2008-10-02 20:49:21

Re: ipfw, "2 провайдера" и входящие соединения

Непрочитанное сообщение mediamag » 2009-10-05 10:43:26

Расскажи что ты хочешь сделать на конкретном примере..

dsa
проходил мимо
Сообщения: 8
Зарегистрирован: 2009-09-19 15:01:49
Откуда: Великий Новгород

Re: ipfw, "2 провайдера" и входящие соединения

Непрочитанное сообщение dsa » 2009-10-05 13:10:09

cloudsv писал(а):может использовать этот пример?
http://www.lissyara.su/?id=1330
Хм, что то мне эта статья не попадалась на глаза при самостоятельном поиске, спасибо.

В принципе, у меня ситуация та же, что и в статье, только я применял уже правила с established, что-то не помогло.

Нужно повнимательнее пойти прочесть статью и свои правила.

dsa
проходил мимо
Сообщения: 8
Зарегистрирован: 2009-09-19 15:01:49
Откуда: Великий Новгород

Re: ipfw, "2 провайдера" и входящие соединения

Непрочитанное сообщение dsa » 2009-10-05 13:15:23

mediamag писал(а):Расскажи что ты хочешь сделать на конкретном примере..
Да типичная ситуация. Был один провайдер - быстрый, надежный, дорогой. Появился второй - недорогой.

По "недорогому" нужно пустить всех в Интернет, на "надежном" нужно оставить несколько сервисов (dns, web, ssh). Через "недорогой" также нужно иметь доступ извне хотя бы к ssh для резерва. Ну и желательно еще обеспечить возможность использования "надежного", когда "недорогой" упадет.

mediamag
лейтенант
Сообщения: 693
Зарегистрирован: 2008-10-02 20:49:21

Re: ipfw, "2 провайдера" и входящие соединения

Непрочитанное сообщение mediamag » 2009-10-05 15:54:17

сам сейчас бьюсь над поиском решения проблемы "когда основной канал падает"...нарыл 3 на мой взгляд вполне рабочих скрипта...но я их еще не опробовал...вот

скрипт №1

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

#!/bin/bash
PETERSTAR=82.XXX.XXX.XXX #PETERSTAR gateway
SAMPO=10.XXX.XXX.XXX     #SAMPO gateway


if  [[ `/bin/ping -c 3 ${PETERSTAR} | /bin/grep "64 bytes"` ]]
then
    if [[ `/sbin/route | /bin/grep default | /bin/grep ${PETERSTAR}` ]]
    then
        echo "`date '+%d-%m-%Y-%H:%M:%S'`: Default gateway is ${PETERSTAR}" >>/var/log/chanel.log
    else
    {
    #Switch chanel to PETERSTAR gateway
    /sbin/route del default
    /sbin/route add default gw ${PETERSTAR}
    echo "`date '+%d-%m-%Y-%H:%M:%S'`: Switch chanel to PETERSTAR gateway" >>/var/log/chanel.log
    }
    fi
else
    {
    #Switch chanel to SAMPO
    /sbin/route del default
    /sbin/route add default gw ${SAMPO}
    echo "`date '+%d-%m-%Y-%H:%M:%S'`: Switch chanel to SAMPO gateway" >>/var/log/chanel.log
    }
fi
скрипт №2

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

#!/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
Нужен еще постоянный маршрут до опрашиваемого узла

ip route add 10.1.0.254 via 10.1.0.1
Скрипт загоняется в крон на исполнение каждую минуту.
скрипт №3

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

xl0 -> 192.168.x.x
rl0 -> ISP A (ADSL 256 kbit)
rl1 -> ISP B (WiFi 1 Mbit)

Сию каку, по имени fallover.sh "пихаю" в 5-ти минутный крон.

#cat fallover.sh
#!/bin/sh
WAN_MAIN_CHECK_IP=google.ru    # Надежный как кирпич ip-шник, я так думаю!? :-)
WAN_BACKUP_CHECK_IP= rl0    # Вместо фейса, его ip-шник конечно же.
DEFAULT_ROUTE_IP=`netstat -nr | grep default`
ISP_1_GATE=A.A.A.A
ISP_1_HALFBAND=`expr 32 \* 1024 \* 300 / 2`
ISP_1_ROUTE_COUNT=`ipfw show 40 | awk '{print $3}' ; ipfw -q zero 40`
ISP_2_GATE=B.B.B.B
ISP_2_HALFBAND=`expr 128 \* 1024 \* 300 / 2`
ISP_2_ROUTE_COUNT=`ipfw show 60 | awk '{print $3}' ; ipfw -q zero 60`

if echo $DEFAULT_ROUTE_IP | grep $ISP_1_GATE > /dev/null;
then
    if [ "$ISP_1_HALFBAND" -gt "$ISP_1_ROUTE_COUNT" ];
    then
        if ! (ping -c 3 $WAN_MAIN_CHECK_IP > /dev/null);
        then
            route delete default;
            route add default $ISP_2_GATE;
            route add $WAN_BACKUP_CHECK_IP $ISP_2_GATE;
        fi
    fi
else
    if [ "$ISP_2_HALFBAND" -gt "$ISP_2_ROUTE_COUNT" ];
    then
        if (ping -c 3 $WAN_BACKUP_CHECK_IP > /dev/null) || !(ping -c 3 $WAN_MAIN_CHECK_IP > /dev/null);
        then
            route delete default;
            route delete $WAN_BACKUP_CHECK_IP;
            route add default $ISP_1_GATE;
        else
            echo "<<L1e" > /dev/speaker;
        fi
    else
        echo "<<e3e3e3e3" > /dev/speaker;
    fi
fi

Поднимаю еще один НАТ, и добавляю каунты в ipfw:

/sbin/natd -f /etc/natd.conf -n rl1 -P /var/run/8669.pid
ipfw -q add 40 count ip from any to me in via rl0
ipfw -q add 60 count ip from any to me in via rl1
ipfw -q add 70 divert 8669 from any to any via rl1

paradox
проходил мимо
Сообщения: 11620
Зарегистрирован: 2008-02-21 18:15:41

Re: ipfw, "2 провайдера" и входящие соединения

Непрочитанное сообщение paradox » 2009-10-05 16:11:35

сам сейчас бьюсь над поиском решения проблемы "когда основной канал падает"...нарыл 3 на мой взгляд вполне рабочих скрипта...но я их еще не опробовал...вот
а какой смысл скриптов
когда 7 и 8 это найтивно поддерживают
много дефолтов
а ядро само перебирает какой доступный в текущий момент
при недоступности текущего перебираеться следующий

mediamag
лейтенант
Сообщения: 693
Зарегистрирован: 2008-10-02 20:49:21

Re: ipfw, "2 провайдера" и входящие соединения

Непрочитанное сообщение mediamag » 2009-10-05 16:43:50

мануалов по двум дефолтным роутерам мало..я например найти не могу ничего подобного


Аватара пользователя
skeletor
майор
Сообщения: 2486
Зарегистрирован: 2007-11-16 18:22:04
Откуда: Kiev
Контактная информация:

Re: ipfw, "2 провайдера" и входящие соединения

Непрочитанное сообщение skeletor » 2009-10-06 13:49:55

Тебе однозначно нужен BGP+PI. Ищи таких провов, копай в эту сторону, если не хочешь извращаться с файерволами.
"Винда съела дрова и резет здесь не фурычит."
"Все говорят, что у меня /dev/hands криво и я всё делаю через /dev/ass. А у меня этих фалов вообще нет!"

sch
сержант
Сообщения: 282
Зарегистрирован: 2009-05-28 14:36:50
Откуда: Кишинев

Re: ipfw, "2 провайдера" и входящие соединения

Непрочитанное сообщение sch » 2009-10-06 14:43:16

Вот уперлись все в этот ECMP routing, а он не отвечает на первначальный вопрос.
Ситуация у автора темы типа такого: на сервере стоит Apache, к серверу подключены два канала от разных провайдеров, Apache слушает оба внешних адреса. Приходит HTTP-запрос на первый адрес - ответ должн идти через шлюз первого провайдера. Приходит запрос на адрес второго провайдера - ответ уходит через шлюз второго провайдера. Эта задача никак не решается множественными маршрутами.

paradox
проходил мимо
Сообщения: 11620
Зарегистрирован: 2008-02-21 18:15:41

Re: ipfw, "2 провайдера" и входящие соединения

Непрочитанное сообщение paradox » 2009-10-06 14:47:25

Ситуация у автора темы типа такого: на сервере стоит Apache, к серверу подключены два канала от разных провайдеров, Apache слушает оба внешних адреса.
в таких ситуациях ответ - токо BGP
и обсуждать нечего

Аватара пользователя
terminus
майор
Сообщения: 2305
Зарегистрирован: 2007-10-29 11:27:35
Откуда: Рига

Re: ipfw, "2 провайдера" и входящие соединения

Непрочитанное сообщение terminus » 2009-10-06 15:03:12

sch писал(а):Вот уперлись все в этот ECMP routing, а он не отвечает на первначальный вопрос.
Ситуация у автора темы типа такого: на сервере стоит Apache, к серверу подключены два канала от разных провайдеров, Apache слушает оба внешних адреса. Приходит HTTP-запрос на первый адрес - ответ должн идти через шлюз первого провайдера. Приходит запрос на адрес второго провайдера - ответ уходит через шлюз второго провайдера. Эта задача никак не решается множественными маршрутами.
http://nuclight.livejournal.com/124348.html
Тот факт, что на самом деле "перепрыгивание" выполняется на параметры
действия, позволяет использовать это для интересных вещей. В частности, с
использованием появившегося во FreeBSD 6.2 параметра tag на каждый пакет можно
навешивать внутриядерный тег, что в применении со skipto позволяет сделать, к
примеру, запоминание, с какого шлюза пришел входящий пакет на машине с каналами
к двум разным провайдерам, и ответные пакеты отправлять в тот канал, откуда они
пришли (допустим, у вашей машины только один IP-адрес, и сделать fwd на базе
внешнего адреса не получится), т.е. реализовать аналог reply-to из pf:

ipfw add 100 skipto 300 tag 1 in recv $ext_if1 keep-state
ipfw add 200 skipto 300 tag 2 in recv $ext_if2 keep-state
ipfw add 300 allow { recv $ext_if1 or recv $ext_if2 } # входящие снаружи
ipfw add 400 allow in recv $int_if # разрешить ответы на внутреннем проходе
ipfw add 500 fwd $gw1 tagged 1 # остались ответы на внешнем интерфейсе,
ipfw add 600 fwd $gw2 tagged 2 # зарулим их куда надо
:unknown:

---

На 7.2 вместо fwd можно делать setfib для пущей красоты...
Последний раз редактировалось terminus 2009-10-06 15:05:20, всего редактировалось 1 раз.
Модель: AST-PM-105/0044; Тип: Универсальный, ремонтный; Название: Терминус; Род повреждения: Распад функций; Выводы: Сдать на слом.

Аватара пользователя
hizel
дядя поня
Сообщения: 9031
Зарегистрирован: 2007-06-29 10:05:02
Откуда: Выборг

Re: ipfw, "2 провайдера" и входящие соединения

Непрочитанное сообщение hizel » 2009-10-06 15:03:35

мне сейчас думать лень, но на линупсе такая задача рашается через маршрутизацию
http://www.opennet.ru/docs/RUS/LARTC/x348.html

значит и во фре тоже может быть решена и не надо вводить человека в заблуждение
BGP им, блин, с PI падавай, умники :unknown:
В дурацкие игры он не играет. Он просто жуткий, чу-чу, паровозик, и зовут его Блейн. Блейн --- это Боль.

Аватара пользователя
hizel
дядя поня
Сообщения: 9031
Зарегистрирован: 2007-06-29 10:05:02
Откуда: Выборг

Re: ipfw, "2 провайдера" и входящие соединения

Непрочитанное сообщение hizel » 2009-10-06 15:05:05

во terminus нормальный пример откопал :-)
если еще setfib привернуть получитсо еще красивее ;]
В дурацкие игры он не играет. Он просто жуткий, чу-чу, паровозик, и зовут его Блейн. Блейн --- это Боль.

Аватара пользователя
terminus
майор
Сообщения: 2305
Зарегистрирован: 2007-10-29 11:27:35
Откуда: Рига

Re: ipfw, "2 провайдера" и входящие соединения

Непрочитанное сообщение terminus » 2009-10-06 15:05:57

hizel писал(а):во terminus нормальный пример откопал :-)
если еще setfib привернуть получитсо еще красивее ;]
+1024 :drinks:
Модель: AST-PM-105/0044; Тип: Универсальный, ремонтный; Название: Терминус; Род повреждения: Распад функций; Выводы: Сдать на слом.

paradox
проходил мимо
Сообщения: 11620
Зарегистрирован: 2008-02-21 18:15:41

Re: ipfw, "2 провайдера" и входящие соединения

Непрочитанное сообщение paradox » 2009-10-06 15:11:57

с таким же успехом можно придумать и как pf настроить

а фиб врядли от этого спасет
dsa писал(а):Да типичная ситуация. Был один провайдер - быстрый, надежный, дорогой. Появился второй - недорогой.

По "недорогому" нужно пустить всех в Интернет, на "надежном" нужно оставить несколько сервисов (dns, web, ssh). Через "недорогой" также нужно иметь доступ извне хотя бы к ssh для резерва. Ну и желательно еще обеспечить возможность использования "надежного", когда "недорогой" упадет.

Аватара пользователя
hizel
дядя поня
Сообщения: 9031
Зарегистрирован: 2007-06-29 10:05:02
Откуда: Выборг

Re: ipfw, "2 провайдера" и входящие соединения

Непрочитанное сообщение hizel » 2009-10-06 15:23:14

скрпит для управления fib-ами и выбрать по какому критерию будет определятся падение недорого канала - вот и решение

кстати а откуда pf вытащил? :-\
В дурацкие игры он не играет. Он просто жуткий, чу-чу, паровозик, и зовут его Блейн. Блейн --- это Боль.

Аватара пользователя
skeletor
майор
Сообщения: 2486
Зарегистрирован: 2007-11-16 18:22:04
Откуда: Kiev
Контактная информация:

Re: ipfw, "2 провайдера" и входящие соединения

Непрочитанное сообщение skeletor » 2009-10-06 16:43:12

Где-то встречал фразу "и микроскопом можно гвозди забивать", это к тому, что лучше использовать вещи, которые под это заточены. Имхо.
"Винда съела дрова и резет здесь не фурычит."
"Все говорят, что у меня /dev/hands криво и я всё делаю через /dev/ass. А у меня этих фалов вообще нет!"