Страница 1 из 1

Добавлено: 30 янв 2008, 12:23
Den_S
Нужно реализовать такую штуку:

В сети есть шлюз, выпускающий пользователей в инет и сервер, на котором стоит Apache + сайт.. (оба сервака на винде)
Нужно сделать так, что бы при отвале шлюза, все запросы по 80 порту перенаправились на на определенную страницу внутреннего сайта.
Дописываем в DHCP второй шлюз (сервер Apach), теперь если падает 1-й шлюз, запросы пойдут на Apache...(ничего не напутал?).
Но вот как в Apache сделать, что бы при запросе, например, ya.ru пользователь попадал на http://apache.local/index.html где будет написано
что инет временно не работает?

Добавлено: 30 янв 2008, 12:52
Ivanhoe
Штука называется "прозрачный прокси", вся проблема в "оба сервака на винде". Штатными средствами винда сомнительно, что такое умеет. А вот фаервол от Kerio - очень может быть.

Добавлено: 30 янв 2008, 13:04
leo
посавить на оба сервака *Unix, взять нормального админа и не гемороиться.. средствами винды вы эту проблемы наврятли решите..
"Дописываем в DHCP второй шлюз" ето ваще бред, т.к при активныйх двух шлюзах может возникнуть такая ситуация.. как бы её правильно описать, что у тебя весь поток трафы пойдёт через один из шлюзов, в том числе и локальный траф.. !!! а такое не каждый Linux выдержит, я про Винду молчу..

Добавлено: 30 янв 2008, 14:13
Den_S
Ivanhoe писал(а):Цитата(Ivanhoe @ 30.1.2008, 12:52) Штука называется "прозрачный прокси", вся проблема в "оба сервака на винде". Штатными средствами винда сомнительно, что такое умеет. А вот фаервол от Kerio - очень может быть.
На шлюзе стоит KWF, поднят NAT и собирается статистика по трафику....лепить второй KWF на сервант с апачем??? Думаю, есть проще решение...

Добавлено: 30 янв 2008, 14:20
Den_S
leo писал(а):Цитата(leo @ 30.1.2008, 13:04) посавить на оба сервака *Unix, взять нормального админа и не гемороиться.. средствами винды вы эту проблемы наврятли решите..
"Дописываем в DHCP второй шлюз" ето ваще бред, т.к при активныйх двух шлюзах может возникнуть такая ситуация.. как бы её правильно описать, что у тебя весь поток трафы пойдёт через один из шлюзов, в том числе и локальный траф.. !!! а такое не каждый Linux выдержит, я про Винду молчу..
Я сам и есть Админ :D , правда *Unix не в зуб ногой...
И что должно случится, что бы локальный траф попёр через шлюз?...Какая разница, ну есть один шлюз, он отрубился, винда начинает ломиться на другой...и все...если можно то поподробнее...

Добавлено: 30 янв 2008, 16:47
Harmer
Короче, надо писать скрипт, который периодически проверяет наличие шлюза. И при отсутствии менять днс. Можно ли это сделать под виндой, не знаю.
Менять при отвале шлюза что либо в дхцп уже поздно, т.к. адреса все уже получили.

Добавлено: 30 янв 2008, 16:51
Георгий
а при чем тут ДНС и как это поможет?

Добавлено: 30 янв 2008, 17:26
Harmer
Ну, в смысле, должен быть свой днс-сервер. При пропадании инета он на все запросы должен отдавать адрес сервера с апачем.

Добавлено: 31 янв 2008, 01:19
Ivanhoe
Так Den_S правильно сказал про два шлюза: не работает один - полезет на второй. DNS не нужен (с)

Добавлено: 31 янв 2008, 03:59
Георгий
Harmer писал(а):Цитата(Harmer @ 30.1.2008, 17:26) Ну, в смысле, должен быть свой днс-сервер. При пропадании инета он на все запросы должен отдавать адрес сервера с апачем.
ну это тогда должен быть "свой в доску" DNS-сервер.
Т.е. вплоть до того что собранный из сорцов предварительно отредактированных руками.

Да и то поможет далеко не всегда, ибо на виндовых клиентах есть служба DNS Client которая кеширует ДНС-ответы и не спрашивает у ДНС-сервера, если данные еще не протухли.

Добавлено: 31 янв 2008, 04:03
Георгий
Ivanhoe писал(а):Цитата(Ivanhoe @ 31.1.2008, 1:19) Так Den_S правильно сказал про два шлюза: не работает один - полезет на второй. DNS не нужен (с)
а с чего оно полезет на другой?
если тупо прописать два шлюза на клиентах, то будет юзаться только один из них.
Даже если метрика будет одинаковая, то все равно только один из них.
Если уж со шлюзами хочется заморачиваться, тогда надо ставить один главный маршрутизатор который будет отслеживать наличие интернета и маршрутизировать либо в интернет либо на http://apache.local/index.html

Добавлено: 31 янв 2008, 10:01
Den_S
Георгий писал(а):Цитата(Георгий @ 31.1.2008, 4:03) а с чего оно полезет на другой?
если тупо прописать два шлюза на клиентах, то будет юзаться только один из них.
Даже если метрика будет одинаковая, то все равно только один из них.
Тогда пардон....Я чего то думал, что если прописать второй шлюз, то будет как с первичным и вторичным ДНС...

Добавлено: 31 янв 2008, 12:45
Ivanhoe
Георгий, а если первый будет в дауне? На второй не полезет?

Добавлено: 31 янв 2008, 17:40
Георгий
Ivanhoe писал(а):Цитата(Ivanhoe @ 31.1.2008, 12:45) Георгий, а если первый будет в дауне? На второй не полезет?
когда-то давно пробовал - у меня не получилось.
возможно надо что-то в реестре на клиентах прописать чтобы несколько шлюзов задействовать именно по схеме "когда первый лежит - шлем на второй"

Добавлено: 31 янв 2008, 18:07
_blackdog
Георгий, все зависит от того, что понимать под словами "в дауне" и "ляжет". Схема с несколькими шлюзами с одинаковой(бред)/разной метрикой будет балансировать траффик только если пропадает физический линк (L1)
По поводу http://apache.local/index.html я бы написал скрипт, который слушает 53 порт и выдает статический IP сервера apache.local из локальной подсети. Причем комп с этим скриптом надо прописывать последним в списка DNS серверов.

Добавлено: 31 янв 2008, 18:55
Георгий
_blackdog писал(а):Цитата(_blackdog @ 31.1.2008, 18:07) Георгий, все зависит от того, что понимать под словами "в дауне" и "ляжет". Схема с несколькими шлюзами с одинаковой(бред)/разной метрикой будет балансировать траффик только если пропадает физический линк (L1)
По поводу http://apache.local/index.html я бы написал скрипт, который слушает 53 порт и выдает статический IP сервера apache.local из локальной подсети. Причем комп с этим скриптом надо прописывать последним в списка DNS серверов.
Ага, скрипт, под виндами?
Нет, конечно это можно сделать, но это в принципе кривое решение, т.к. ДНС - это не самое последнее звено и слушанье 53-го порта может вообще не пригодиться, если клиент закешировал ДНС-ответ и больше на задает вопросов ДНС-серверу.

если нужно более ровное решение - тогда ставится линукс в качестве основного (и единственного) маршрутизатора и просто по факту отсутствия интернета (а это определить несложно) автоматом запускается команда
iptables -t nat -I PREROUTING -i eth0 -p tcp --dport 80 -j REDIRECT --to-ports 80
а на 80-м порту находится апач который на все запросы (независимо от URL) отдает страничку "извините, интернета нет".

Добавлено: 31 янв 2008, 19:04
at_hacker
Вообще не понимаю заморочки. Поставить прокси, и пусть он пишет сам, что интернета нет. При чём тут ваще апач, второй шлюз и прочая такая ерунда?

Добавлено: 31 янв 2008, 21:20
_blackdog
Георгий, А какие проблемы с запуском скриптов под виндами? Все скриптовые языки (в т.ч. Perl) имеют виндовые компиляции. ActivePerl может скрипты инсталить как стандартные службы.
Цитатаiptables -t nat -I PREROUTING -i eth0 -p tcp --dport 80 -j REDIRECT --to-ports 80[/quote]
Это будет работать только в случае, когда имеется выход на нормальный DNS. Т.е. нет инета - нет DNS - невозможно получить IP адрес - нечего редиректить.

Добавлено: 31 янв 2008, 21:24
leo
Георгий, на второй шлюз перекинется только если до первого нет коннекта, а не с него линк в нет лёг, но вот я ради эксперемента поднимал 2 шлюза в одной подсети и на один модем, получилось полная карявка.. т.к ссовершенно непонетно было какой он шлюз юзает. + ещё и траф внутри сети через шлюз пёр.. винда по определению кривая в маршрутизации..
at_hacker, ну как собственно я и предлагал: всё на одной машине.. в squid можно свои страницы ошибок подставлять.. (ну ты и сам знаешь что там можно :) )
Den_S., Хотите надёжный инет канал: а) учите linux, б) пригласите спеца в) просто хотите дальше..

Добавлено: 31 янв 2008, 23:00
Георгий
да тут любое решение - кривое. Хоть через DNS хоть через редирект - всего не предусмотришь. сквид - это костыли, хотя конечно же самое очевидное и простое решение.

да и вообще заморочка не стоит усилий по ее реализации. Ну нет интернета - юзер это и сам поймет без редиректа на local.apache
а просто ради красоты делать - слишком дорого.
я бы просто тупо забил на такое задание.
Не, ну если конечно бюджет огромный, то можно аппаратные решения поискать. Ведь делают же Wi-Fi операторы фичу, когда при попытке выхода в интернет клиент попадает на страницу оператора где ему предлагается оплатить кредитной картой доступ в интернет. Т.е. решение существует и оно очевидно настолько стандартное, что реализовано наверняка в виде отдельного маршрутизатора возможно в связке с каким-нибудь RADIUS-сервером.

Добавлено: 01 фев 2008, 15:38
at_hacker
leo писал(а):Цитата(leo @ 31.1.2008, 21:24) at_hacker, ну как собственно я и предлагал: всё на одной машине.. в squid можно свои страницы ошибок подставлять.. (ну ты и сам знаешь что там можно :) )
Только прозрачный прокси -- это кривой вариант. Сквид в режиме прозрачного прокси с https не может работать. ВО всяком случае, я интернет на эту тему курил -- решения никто не предложил.

Добавлено: 01 фев 2008, 17:37
Den_S
Понятно...кароче без линуха или какого то дополнительного маршрутизатора не обойтись....просто я думал, что можно все сделать гораздо проще при помощи "первичного" и "вторичного" шлюзов.. Задумывалась вся эта канетель для того, что бы не приходилось 50раз отвечать на один и тот же вопрос: "А что инет отвалился?"
Мысль понята. Всем спасибо за ответы...

Добавлено: 01 фев 2008, 19:09
Георгий
Den_S., ну так сделай страничку на которой путем пинга интернета проверяется "не отвалился ли инет". Всем юзерам разослать инструкцию, что отваливание интернета проверять на страничке по адресу ....

Добавлено: 02 фев 2008, 11:32
vovaivanov
Апупеть. Страдать такой фигней для показа странички... Вы чего там курите? :)
По теме:
Поставить на роутер ISA-сервер, там в случае отсутствия инета есть специальные страницы.