два белых адреса

classic Classic list List threaded Threaded
3 messages Options
Reply | Threaded
Open this post in threaded view
|

два белых адреса

damir-7
Hi, All!

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

Планируется разместить в DMZ почтовый, ftp и http серверы. В dmz также
будет размещен http-proxy для внутренних пользователей.
Хочется, чтобы по умолчанию, почтовый сервер соединялся наружу по
быстрому наземному каналу, поскольку исходящий трафик - бесплатно, но в
случае если наземный канал упал, то через спутниковый канал. Это
основная задача.

Дополнительная задача: сделать так, чтобы при обращении снаружи через
спутниковый канал к ftp или http серверу при работающем наземном канале
происходил редирект на адрес, доступный через наземный канал.

Вопрос в том как это можно реализовать на роутере (OpenBSD4.4).
Принимаются любые советы, пожелания, и отсылы к литературе. Спасибо.

--
DamirX


Reply | Threaded
Open this post in threaded view
|

Re: два белых адреса

Anton Maksimenkov-2
> Есть два белых адреса. Один подключен через быстрый наземный канал,
> другой через медленный спутниковый канал.
> Беда в том, что быстрый наземный канал частенько падает, и бывает лежит
> по нескольку часов.

Можно например заиметь свою AS и аннонсить её через оба канала, даже
можно управлять предпочтением. Тогда вас будут видеть отовсюду, через
оба канала, либо хотяб через один живой.
Но это надо получить саму АС и с провайдерами договориться.
Ну и, вобщем-то это немалые знания принципов маршрутизации.

Простой "ручной" метод. Скрипт ping'ировщик с сервера проверяет
доступность роутера (провайдерского), и если не получается,
переключает default route на другой канал. Периодически проверяет, не
ожил ли любимый провайдерский роутер. Если ожил - переключает канал
опять на него.

> Дополнительная задача: сделать так, чтобы при обращении снаружи через
> спутниковый канал к ftp или http серверу при работающем наземном канале
> происходил редирект на адрес, доступный через наземный канал.

По-простому.
Насчёт ftp никак, там нету такого понятия как редирект. Для http
делается опять же с помощью скрипта. Нужно иметь 2-е имя, которое бы
резолвилось в IPшник наземного канала. И в вебсервере должно
проверяться (скажем, на прокси-сервере, который перед ним), что если
коннект был на IPспутникового канала, а файл-флаг (от ping'ера, см.
выше) говорит о том, что наземный канал живой, то выдавать 302
Redirect на 2-е имя. Правда юзер это в адресной строке увидит. И может
в следующий раз тыкнуться сразу на него, а наземный канал в этот
момент лежит...

По-сложному.
Заиметь свою AS и назначить аннонсируемым маршрутам разные
предпочтения для наземного и спутникового каналов. Остальное
маршрутизаторы интернета сделают сами автомагически :)


P.S.
Если дело того стоит (доход или важность сервисов, а также доступность
снаружи), то своя AS это необходимая штука.
Если нет или вообще в основном надо чтобы изнутри работало, то может
вообще по-простому. Я например, в пору работы "свободным админом"
делал php или cgi скрипт на вебсервере, и там 2 кнопочки "канал 1" и
"канал 2". Народ сам, видя что интернет не фурычит, переключал на
другой. :)
--
engineer
Reply | Threaded
Open this post in threaded view
|

Re: два белых адреса

Vitaliy Kulchevych
In reply to this post by damir-7
по поводу смены дефолта можно приминить что-то подобное этому
http://xgu.ru/wiki/%D0%94%D0%B2%D0%B0_%D1%88%D0%BB%D1%8E%D0%B7%D0%B0_%D0%B2_%D0%98%D0%BD%D1%82%D0%B5%D1%80%D0%BD%D0%B5%D1%82_%D0%B8_OpenVPN#.D0.97.D0.B0.D0.B4.D0.B0.D1.87.D0.B0

вот вам пример как я делаю подобное с помощью перла
my $socket = new Net::Telnet (
    Timeout     => 20,
    #Dump_log    => $log,
    #Input_log   => $log,
    #Output_log  => $log,
    Errmode     => 'return',
) or die;

while(1) {
    foreach my $row (@serverlist) {
        if ($row) {
        my $pos=index($row, ':');
        my $host = substr ($row,0, ($pos));
        my $port = substr ($row,($pos+1));
        $socket->open(Host => $host, Port => $port);
        if($socket->waitfor('/SMTP|^SSH|/')) {
        $socket->close;
        #print "Host up $host:$port\n";
        }
        else {
            #print "Host down";
            my $error= "$host:$port waitfor failed: ".$socket->errmsg()."\n";
            #system('call anything');
            mail ($error);
        }
    }
    }
    sleep(300);
}



по поводу доступа в дмз можно попробывать уменьшить TTL для хоста, и
уже играться с днс, либо попробуйте использывать что-то подобное
dyndns, больше в голову ничего не приходит

2008/11/21 damir <[hidden email]>:

> Hi, All!
>
> Есть два белых адреса. Один подключен через быстрый наземный канал,
> другой через медленный спутниковый канал.
> Беда в том, что быстрый наземный канал частенько падает, и бывает лежит
> по нескольку часов.
>
> Планируется разместить в DMZ почтовый, ftp и http серверы. В dmz также
> будет размещен http-proxy для внутренних пользователей.
> Хочется, чтобы по умолчанию, почтовый сервер соединялся наружу по
> быстрому наземному каналу, поскольку исходящий трафик - бесплатно, но в
> случае если наземный канал упал, то через спутниковый канал. Это
> основная задача.
>
> Дополнительная задача: сделать так, чтобы при обращении снаружи через
> спутниковый канал к ftp или http серверу при работающем наземном канале
> происходил редирект на адрес, доступный через наземный канал.
>
> Вопрос в том как это можно реализовать на роутере (OpenBSD4.4).
> Принимаются любые советы, пожелания, и отсылы к литературе. Спасибо.
>
> --
> DamirX
>
>
>



--
live free or die;