The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]

форумы  помощь  поиск  регистрация  майллист  вход/выход  слежка  RSS
"Доступиться к локальному WEB-серверу из локалки, роутера"
Вариант для распечатки  
Пред. тема | След. тема 
Форумы WEB технологии (Разное)
Изначальное сообщение [ Отслеживать ]

"Доступиться к локальному WEB-серверу из локалки, роутера"  +/
Сообщение от vadim007 email(ok) on 14-Мрт-10, 20:11 
Имеется: локалка 192.168.6.0/24 с виндовыми машинами, роутер на linux с двумя интерфейсами, eth0 смотрит наружу, eth1 - внутрь сети, и имеет адрес 192.168.6.67. На роутере настроен кэширующий Squid, слушающий порт 3128. Также в локалке установлен WEB-сервер с адресом 192.168.6.71 на порту 80. Проброс порта осуществляется на роутере с помощью iptables. Этот WEB-сервер прекрасно виден из интернета.
Требуется, чтобы он был виден и из локалки, а также с самого роутера.
Документацию http://www.opennet.me/docs/RUS/iptables/ изучил вдоль и поперек, но решения не нашел. Вот выдержка из документа:
===========================================================
А теперь посмотрим, что произойдет, если запрос посылается с узла, расположенного в той же локальной сети. Для простоты изложения примем адрес клиента в локальной сети равным $LAN_BOX.
1. Пакет покидает $LAN_BOX.
2. Поступает на брандмауэр.
3. Производится подстановка адреса назначения, однако адрес отправителя не подменяется, т.е. исходный адрес остается в пакете без изменения.
4. Пакет покидает брандмауэр и отправляется на HTTP сервер.
5. HTTP сервер, готовясь к отправке ответа, обнаруживает, что клиент находится в локальной сети (поскольку пакет запроса содержал оригинальный IP адрес, который теперь превратился в адрес назначения) и поэтому отправляет пакет непосредственно на $LAN_BOX.
6. Пакет поступает на $LAN_BOX. Клиент "путается", поскольку ответ пришел не с того узла, на который отправлялся запрос. Поэтому клиент "сбрасывает" пакет ответа и продолжает ждать "настоящий" ответ.
Проблема решается довольно просто с помощью SNAT. Ниже приводится правило, которое выполняет эту функцию. Это правило вынуждает HTTP сервер передавать ответы на наш брандмауэр, которые затем будут переданы клиенту.
iptables -t nat -A POSTROUTING -p tcp --dst $HTTP_IP --dport 80 -j SNAT \
--to-source $LAN_IP
===============================================================
В моем случае это правило ничего не дает, т.к. у меня имеется еще одно звено прохода пакетов - это Squid, на роутере, на порту 3128. По каким цепочкам-таблицам пакеты из локалки прибудут на Squid, и по каким доставятся обратно - не могу разгрести. Прошу помощи.
Высказать мнение | Ответить | Правка | Cообщить модератору

Оглавление

Сообщения по теме [Сортировка по времени | RSS]


1. "Доступиться к локальному WEB-серверу из локалки, роутера"  +/
Сообщение от ACCA (ok) on 14-Мрт-10, 23:07 
Подойди к проблеме с другой стороны.

Ты можешь добраться до сервера напрямую по адресу http://192.168.6.71:80. Запрети proxy для локальных адресов.

Если у тебя name-based virtual server, то LAN клиенты должны знать, что www.localserver.com находится по адресу 192.168.6.71. Об этом им может сказать твой местный DNS-сервер, а может запись

192.168.6.71 www.localserver.com

в %SystemRoot%\system32\drivers\etc\etc\hosts у каждого клиента. Тогда запрос http://www.localserver.com для локальных клиентов попадёт прямо на 192.168.6.71 минуя раутер и прокси.

У раутера это файл /etc/hosts либо всё тот же DNS-сервер (про него ты ничего не сказал).

Высказать мнение | Ответить | Правка | ^ | Наверх | Cообщить модератору

3. "Доступиться к локальному WEB-серверу из локалки, роутера"  +/
Сообщение от vadim007 email(??) on 15-Мрт-10, 09:00 
>Подойди к проблеме с другой стороны.
>
>Ты можешь добраться до сервера напрямую по адресу http://192.168.6.71:80. Запрети proxy для
>локальных адресов.

Напрямую конечно могу, и даже без указания порта.

>Если у тебя name-based virtual server, то LAN клиенты должны знать, что
>www.localserver.com находится по адресу 192.168.6.71. Об этом им может сказать твой
>местный DNS-сервер, а может запись
>
>192.168.6.71 www.localserver.com
>
>в %SystemRoot%\system32\drivers\etc\etc\hosts у каждого клиента. Тогда запрос http://www.localserver.com для локальных клиентов попадёт
>прямо на 192.168.6.71 минуя раутер и прокси.

Свой DNS-сервер поднимать не стал, решил что ни к чему он в сетке из 30 компов.
Прописывать адрес WEB-сервера в hosts на каждом компе - себе головная боль: сайт пока в разработке, и он может переехать на любой ip.

>У раутера это файл /etc/hosts либо всё тот же DNS-сервер (про него
>ты ничего не сказал).

Исторически :) сложилось, что имя роутера, прописанное в /etc/hosts, такое-же, как и имя сайта, который расположен внутри сетки (по адресу 192.168.6.71). А имена машин, прописанные в /etc/sysconfig/network HOSTNAME - другие. Думаю, конкретные наименования не столь важны. Но суть не в этом. Попробовал в /etc/hosts указывать запись
192.168.6.71 www.localserver.com
Помогло, после перезагрузки. Но это в корне идеологически не правильный подход, мне так кажется. Имя сайта = имени домена. Вот на роутере пингую по имени домена - пингуется локальный комп с WEB-сервером. То есть фактически я перенес домен на другой комп. А ведь на роутере вертится, кроме Squid'а, еще и Postfix. Как изменения в /etc/hosts повлияют на него? Так что самый лучший вариант - с помощью iptables перенаправить запросы запросы из локальной сети к локальному WEB-серверу на заданный комп.

Высказать мнение | Ответить | Правка | ^ | Наверх | Cообщить модератору

4. "Доступиться к локальному WEB-серверу из локалки, роутера"  +/
Сообщение от shadow_alone (ok) on 15-Мрт-10, 09:13 
> Так что самый лучший вариант - с помощью iptables
>перенаправить запросы запросы из локальной сети к локальному WEB-серверу на заданный
>комп.

Как вы себе это представляете, если компы в локалке к нему обращаются напрямую, а не через шлюз?
Так что думайте сначала, потом пишите.

Высказать мнение | Ответить | Правка | ^ | Наверх | Cообщить модератору

6. "Доступиться к локальному WEB-серверу из локалки, роутера"  +/
Сообщение от vadim007 email(??) on 15-Мрт-10, 10:34 
>Как вы себе это представляете, если компы в локалке к нему обращаются
>напрямую, а не через шлюз?
>Так что думайте сначала, потом пишите.

Да нет, я такого не утверждаю. Наоборот, компы выходят в инет через Squid, и ни о каком прямом обращении нет и речи. И вот, нужно на роутере где-то завернуть запросы из локалки к определенному WEB-имени на заданный адрес внутри локалки.

Высказать мнение | Ответить | Правка | ^ | Наверх | Cообщить модератору

2. "Доступиться к локальному WEB-серверу из локалки, роутера"  +/
Сообщение от shadow_alone (ok) on 15-Мрт-10, 01:59 
если dns свой, то просто дабавь view на это зону, с локалки будет другой IP выдавать, и все будет работать правильно.
Высказать мнение | Ответить | Правка | ^ | Наверх | Cообщить модератору

5. "Доступиться к локальному WEB-серверу из локалки, роутера"  +/
Сообщение от shadow_alone (ok) on 15-Мрт-10, 09:16 
лучше всего настройте в сквиде, чтоб при обращении с локалки на это имя, он выдавал сервер в локалке.
Высказать мнение | Ответить | Правка | ^ | Наверх | Cообщить модератору

7. "Доступиться к локальному WEB-серверу из локалки, роутера"  +/
Сообщение от vadim007 email(??) on 15-Мрт-10, 10:35 
>лучше всего настройте в сквиде, чтоб при обращении с локалки на это
>имя, он выдавал сервер в локалке.

Если можно - подробнее пожалуйста.

Высказать мнение | Ответить | Правка | ^ | Наверх | Cообщить модератору

Архив | Удалить

Рекомендовать для помещения в FAQ | Индекс форумов | Темы | Пред. тема | След. тема




Партнёры:
PostgresPro
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2024 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру