Доступ к локальному web-серверу из локалки
Модераторы: SLEDopit, Модераторы разделов
-
vadim007
- Сообщения: 12
- ОС: Win XP
Доступ к локальному web-серверу из локалки
Локалка, доступ в инет - через squid на linux'е. На виндовых машинах в свойствах обозревателя указано использование прокси-сервера proxyhost через порт 3128. В локалке-же установлен web-сервер на apache. Доступ к нему из интернета сделал проброской порта 80 на ip этого сервера. Здесь все OK. А вот как обеспечить доступ к нему локальных пользователей без дополнительных настроек на локальных компах? Я так понимаю - нужно squid копать.
-
rm_
- Сообщения: 3340
- Статус: It's the GNU Age
- ОС: Debian
Re: Доступ к локальному web-серверу из локалки
Самый простой (и не вполне корректный) вариант -- на прокси-сервере, в /etc/hosts, поставить в соответствие доменному имени вашего сервера его локалочный айпишник.
-
pelmen
- Сообщения: 1268
- ОС: debian
Re: Доступ к локальному web-серверу из локалки
А почему сейчас не работает?
1. пользователь посылает запрос на сквид
2. сквид лезет (не в хостс, как предложил rm_) в ДНС
3. видит там внешний адрес (свой)
4. посылает на него запрос (через интерфейс lo, т.е. через 127.0.0.1) <--- тут могу ошибаться
5. сам же его ловит на 80 порту
6. перенаправляет его в локалку (не меняя адрес отправителя, т.е. 127.0.0.1)
7. сервер получает запрос от 127.0.0.1
Т.е. если я правильно рассуждаю, то можно сделать правило
iptables -t nat -A POSTROUTING -p tcp --dport 80 -s 127.0.0.1 -d 192.168.0.2 -j SNAT --to-source 192.168.0.1
хотя я могу рассуждать неправильно
1. пользователь посылает запрос на сквид
2. сквид лезет (не в хостс, как предложил rm_) в ДНС
3. видит там внешний адрес (свой)
4. посылает на него запрос (через интерфейс lo, т.е. через 127.0.0.1) <--- тут могу ошибаться
5. сам же его ловит на 80 порту
6. перенаправляет его в локалку (не меняя адрес отправителя, т.е. 127.0.0.1)
7. сервер получает запрос от 127.0.0.1
Т.е. если я правильно рассуждаю, то можно сделать правило
iptables -t nat -A POSTROUTING -p tcp --dport 80 -s 127.0.0.1 -d 192.168.0.2 -j SNAT --to-source 192.168.0.1
хотя я могу рассуждать неправильно
-
smaharbA
- Сообщения: 229
- ОС: Windows Vista
Re: Доступ к локальному web-серверу из локалки
если есть днс смотрящий во внутрь, указать в нем внутренний адрес (но тут все равно компы затронутся)
если в сквиде, то что то из ряда
acl local-servers dstdomain "имя web-сервер"
http_access allow local-servers
always_direct allow local-servers
либо использовать external_acl_type BASH_ACL
либо типа
url_rewrite_program /usr/lib/squid/jesred
если в сквиде, то что то из ряда
acl local-servers dstdomain "имя web-сервер"
http_access allow local-servers
always_direct allow local-servers
либо использовать external_acl_type BASH_ACL
либо типа
url_rewrite_program /usr/lib/squid/jesred
Я конечно далек от мысли...(с)
-
rm_
- Сообщения: 3340
- Статус: It's the GNU Age
- ОС: Debian
Re: Доступ к локальному web-серверу из локалки
3. видит там внешний адрес (свой)
4. посылает на него запрос (через интерфейс lo, т.е. через 127.0.0.1) <--- тут могу ошибаться
5. сам же его ловит на 80 порту
Сквид и веб-сервер на разных машинах.
-
pelmen
- Сообщения: 1268
- ОС: debian
Re: Доступ к локальному web-серверу из локалки
Ого! Т.е. в DNS регистратора так и написано: www.domain.ru IN A 192.168.0.2 ?? О боже
-
rm_
- Сообщения: 3340
- Статус: It's the GNU Age
- ОС: Debian
Re: Доступ к локальному web-серверу из локалки
А, вон вы обо что. Ну так автор также и не сказал, что прокси с сетевым шлюзом на одной машине. Вполне вероятен вариант, что пробросом портов занимается вообще, какая-нибудь коробочка-роутер-дсл-модем.
-
pelmen
- Сообщения: 1268
- ОС: debian
Re: Доступ к локальному web-серверу из локалки
Кстати, да. Об этом я не подумал, моя вина. Но и вы согласитесь, что я могу быть прав
Тогда вопрос к vadim007:
squid и шлюз, на котором делали проброс порта №80 - это одна и та же машина?
Кстати, если на разных машинах это установлено, то так:
сквид получает от ДНС внешний адрес своего шлюза и посылает на него запрос
шлюз получает из локалки запрос на свой внешний адрес и перенаправляет его на внутренний 192.168.0.2
192.168.0.2 получает запрос от шлюза, но адрес отправителя - внутренний адрес сквид-сервера
он ему отправляет ответ, но сквид его отбрасывает, т.к. ждет ответ с внешнего адреса
iptables -t nat -A POSTROUTING -p tcp -s 192.168.0.0/24 -d 192.168.0.2 --dport 80 -j SNAT --to-source 192.168.0.1
-
eddy
- Сообщения: 3321
- Статус: Красный глаз тролля
- ОС: ArchLinux
Re: Доступ к локальному web-серверу из локалки
vadim007 писал(а): ↑26.01.2010 10:48Локалка, доступ в инет - через squid на linux'е. На виндовых машинах в свойствах обозревателя указано использование прокси-сервера proxyhost через порт 3128. В локалке-же установлен web-сервер на apache. Доступ к нему из интернета сделал проброской порта 80 на ip этого сервера. Здесь все OK. А вот как обеспечить доступ к нему локальных пользователей без дополнительных настроек на локальных компах? Я так понимаю - нужно squid копать.
А что, нельзя заставить пользователей локалки указывать "не использовать прокси для локальных адресов"?
RTFM
-------
KOI8-R - патриотичная кодировка
-------
KOI8-R - патриотичная кодировка
-
pelmen
- Сообщения: 1268
- ОС: debian
-
eddy
- Сообщения: 3321
- Статус: Красный глаз тролля
- ОС: ArchLinux
Re: Доступ к локальному web-серверу из локалки
Так у вас тогда прокся будет нагружаться ненужными пакетами.
Ну, делайте уж через прокси, раз хотите...
RTFM
-------
KOI8-R - патриотичная кодировка
-------
KOI8-R - патриотичная кодировка
-
vadim007
- Сообщения: 12
- ОС: Win XP
Re: Доступ к локальному web-серверу из локалки
Извиняюсь, думал - и так асно. Значит уточняю: прокси на одной машине с сетевым шлюзом. В DNS регистратора все пучком
-
pelmen
- Сообщения: 1268
- ОС: debian
Re: Доступ к локальному web-серверу из локалки
Ну тогда попробуй и так и так сделай. Сначала конечно hosts
-
vadim007
- Сообщения: 12
- ОС: Win XP
Re: Доступ к локальному web-серверу из локалки
pelmen писал(а): ↑26.01.2010 12:02Кстати, да. Об этом я не подумал, моя вина. Но и вы согласитесь, что я могу быть прав
Тогда вопрос к vadim007:
squid и шлюз, на котором делали проброс порта №80 - это одна и та же машина?
Кстати, если на разных машинах это установлено, то так:
сквид получает от ДНС внешний адрес своего шлюза и посылает на него запрос
шлюз получает из локалки запрос на свой внешний адрес и перенаправляет его на внутренний 192.168.0.2
192.168.0.2 получает запрос от шлюза, но адрес отправителя - внутренний адрес сквид-сервера
он ему отправляет ответ, но сквид его отбрасывает, т.к. ждет ответ с внешнего адреса
iptables -t nat -A POSTROUTING -p tcp -s 192.168.0.0/24 -d 192.168.0.2 --dport 80 -j SNAT --to-source 192.168.0.1
Да, это одна машина. Проброс 80 порта делается следующим правилом:
iptables -t nat -A PREROUTING -i $EXTIF -p tcp --dport 80 -j NAT --to-destination 192.168.6.71
iptables -t nat -A PREROUTING -i $EXTIF -p udp --dport 80 -j NAT --to-destination 192.168.6.71
Из интернета web-сервер виден.
-
vadim007
- Сообщения: 12
- ОС: Win XP
-
vadim007
- Сообщения: 12
- ОС: Win XP
-
eddy
- Сообщения: 3321
- Статус: Красный глаз тролля
- ОС: ArchLinux
Re: Доступ к локальному web-серверу из локалки
У вас, скажем, домен myjob.org, имя сервера пусть будет www. Тогда если кто-то из локалки набирает www.myjob.org, то DNS, естественно, отдает ему локальный IP, допустим, 192.168.33.1. Варианта два: либо прописать в настройках браузера, что в подсеть 192.168.33.0/24 надо ходить в обход прокси (напрямую), либо (что проще для конечного пользователя) написать, что в домен .myjob.ru надо ходить напрямую. Делов-то.
Если же вам хочется перезагружать свой прокси - пожалуйста, пусть идут на прокси. Только вам надо будет разрешить в iptables переброс запросов из внутренней сети обратно во внутреннюю сеть.
RTFM
-------
KOI8-R - патриотичная кодировка
-------
KOI8-R - патриотичная кодировка
-
rm_
- Сообщения: 3340
- Статус: It's the GNU Age
- ОС: Debian
Re: Доступ к локальному web-серверу из локалки
Тогда если кто-то из локалки набирает www.myjob.org, то DNS, естественно, отдает ему локальный IP, допустим, 192.168.33.1.
Что значит "естественно"? DNS вообще-то один на всех, глобальный, и адреса он отдаёт глобальные.
Можно конечно поставить на шлюзе dnsmasq, и тогда локалка будет получать те адреса, которые шлюз знает в своём /etc/hosts.
Но это не по-умолчанию так, это надо делать вручную.
-
eddy
- Сообщения: 3321
- Статус: Красный глаз тролля
- ОС: ArchLinux
Re: Доступ к локальному web-серверу из локалки
rm_ писал(а): ↑26.01.2010 18:56Тогда если кто-то из локалки набирает www.myjob.org, то DNS, естественно, отдает ему локальный IP, допустим, 192.168.33.1.
Что значит "естественно"? DNS вообще-то один на всех, глобальный, и адреса он отдаёт глобальные.
Можно конечно поставить на шлюзе dnsmasq, и тогда локалка будет получать те адреса, которые шлюз знает в своём /etc/hosts.
Но это не по-умолчанию так, это надо делать вручную.И кстати, ещё один вариант решения проблемы.
?????
А как у вас внутри локальной сети хост узнает айпишник другого хоста? Что, в DNS нет локальной зоны?
RTFM
-------
KOI8-R - патриотичная кодировка
-------
KOI8-R - патриотичная кодировка
-
pelmen
- Сообщения: 1268
- ОС: debian
Re: Доступ к локальному web-серверу из локалки
Наверное у него нет ДНС в локалке, т.к. наверное не было необходимости в общении между компьютерами внутри локалки. А теперь возникла. И у него теперь делема: поднимать ДНС, поправить настройки hosts, крутить сквид или iptables подточить.
-
eddy
- Сообщения: 3321
- Статус: Красный глаз тролля
- ОС: ArchLinux
Re: Доступ к локальному web-серверу из локалки
Как такое может быть? А по ftp/ssh/http/nfs файлы друг другу перекинуть? Или пообщаться через talk.
RTFM
-------
KOI8-R - патриотичная кодировка
-------
KOI8-R - патриотичная кодировка
-
pelmen
- Сообщения: 1268
- ОС: debian
Re: Доступ к локальному web-серверу из локалки
Быть может он использует сервер (самба?) для обмена данными ?
-
vadim007
- Сообщения: 12
- ОС: Win XP
Re: Доступ к локальному web-серверу из локалки
DNS поднимать нет смысла по разным причинам. Локалка небольшая - всего-то 30 компов, и все под виндами. Машины прекрасно друг друга видят.
По поводу hosts: имеется в виду на шлюзе, или на локальных компах? На локальных компах не хотелось бы, хотя это самый простой, и главное, сработающий на 100% вариант. Но это не наш метод.
Остается squid и iptables. Проброску 80 порта из-вне на локальный комп с apache сделал, web-сервер из инета виден. Думал - на этом и все. Но дальше все застряло... Прихожу к убеждению - нужно и squid копать, и регистратора DNS пинать. Мой домен: uus.donetsk.ua. Если присмотреться - в нем нет записи www.uus.donetsk.ua. Из инета я свой web вижу только через uus.donetsk.ua, адрес www.uus.donetsk.ua не проходит. Может быть, squid добавляет недостающие www к адресу, и получает отлуп. Не помню уже таких нюансов - пять лет назад его настраивал. Може здесь собака зарыта?
-
rm_
- Сообщения: 3340
- Статус: It's the GNU Age
- ОС: Debian
Re: Доступ к локальному web-серверу из локалки
По поводу hosts: имеется в виду на шлюзе, или на локальных компах?
Ответ на этот вопрос дан в сообщении #2 этой ветки.
Если непомогает, посмотреть настройки squid, а не задан ли ему явно внешний DNS-сервер.
-
eddy
- Сообщения: 3321
- Статус: Красный глаз тролля
- ОС: ArchLinux
Re: Доступ к локальному web-серверу из локалки
Вы наверное уже поняли, что смысл есть. Я, например, даже в компьютерном классе из 10 компьютеров DNS поднимал. Сложного-то ничего нет.
RTFM
-------
KOI8-R - патриотичная кодировка
-------
KOI8-R - патриотичная кодировка
-
vadim007
- Сообщения: 12
- ОС: Win XP
Re: Доступ к локальному web-серверу из локалки
Прошу прощения - до сих пор не понял ;( Нельзя ли привести некоторые доводы в пользу поднятия DNS на шлюзе в интернет? Ведь я на виндовых компах локалки не прописываю ни DNS'ы, ни основной шлюз. Все общение пользователей с внешним миром идет через squid. Imho такая политика себя оправдывает, в случае если в локалке заведется какой-нибудь бот.
-
eddy
- Сообщения: 3321
- Статус: Красный глаз тролля
- ОС: ArchLinux
Re: Доступ к локальному web-серверу из локалки
Ладно, вам решать. Я в мастдайных сетях ноль.
RTFM
-------
KOI8-R - патриотичная кодировка
-------
KOI8-R - патриотичная кодировка
-
pelmen
- Сообщения: 1268
- ОС: debian
Re: Доступ к локальному web-серверу из локалки
eddy, Что такое мастдайные сети? На каком уровне osi они работают?
Тут обычная сеть класса С, не парьте людям мозг.
vadim007, чтобы работало www, нужно в ДНС регистратора прописать
www.uus.donetsk.ua. IN CNAME uus.donetsk.ua
Ну и в апаче наверное что-то подправить
А чтобы из локалки работал сайт, попробуйте сделать так, как я вам посометовал
iptables -t nat -A POSTROUTING -p tcp --dport 80 -s 127.0.0.0/16 -d 192.168.0.0/24 -j SNAT --to-source 192.168.0.1
и на всякий случай
iptables -t nat -A POSTROUTING -p tcp --dport 80 -s 192.168.0.0/24 -d 192.168.0.0/24 -j SNAT --to-source 192.168.0.1
если заработает, то можно одно из них удалить, только я не уверен что знаю, какое именно.

Тут обычная сеть класса С, не парьте людям мозг.
vadim007, чтобы работало www, нужно в ДНС регистратора прописать
www.uus.donetsk.ua. IN CNAME uus.donetsk.ua
Ну и в апаче наверное что-то подправить
А чтобы из локалки работал сайт, попробуйте сделать так, как я вам посометовал
iptables -t nat -A POSTROUTING -p tcp --dport 80 -s 127.0.0.0/16 -d 192.168.0.0/24 -j SNAT --to-source 192.168.0.1
и на всякий случай
iptables -t nat -A POSTROUTING -p tcp --dport 80 -s 192.168.0.0/24 -d 192.168.0.0/24 -j SNAT --to-source 192.168.0.1
если заработает, то можно одно из них удалить, только я не уверен что знаю, какое именно.
Боту ничто не мешает работать через прокси, прописанный в настройках ИЕ. Возьмите к примеру скайп - чем не бот?
-
ALexhha
- Сообщения: 109
Re: Доступ к локальному web-серверу из локалки
Здесь все OK. А вот как обеспечить доступ к нему локальных пользователей без дополнительных настроек на локальных компах? Я так понимаю - нужно squid копать.
обращаться по ip
-
danger08
- Сообщения: 715
- ОС: Linux (CentOS, Ubuntu)
Re: Доступ к локальному web-серверу из локалки
На мой взгляд, простое решение проблемы:
1) Поднять в сети ДНС, прописать в нем зонами - все нужные нам локальные зоны (и сопоставить внутреннюю адресацию хостам). Все прочие имена - форвардить с сервера к ДНС-провайдера. У клиентов прописываете только наш ДНС-сервер. В результате получится, что у клиентов наши зоны будут ресольвиться в локальные адреса, а все остальные - как положено.
2) На клиентах:
а) если стоит галка "использовать прокси-сервер" (squid в непрозрачном режиме) - добавляете ваши зоны в список локальных зон (к которым не ходить через прокси).
б) если галка не стоит (т.е. у вас squid настроен в transparent), то на шлюзе сети предотвращаете заворот трафика, идущего по tcp/80 на локальные машины. Это можно сделать несколькими путями - указанием явного условия в --REDIRECT ( -d ! 192.168.0.0/24, например) или же маркировкой трафика и выборочному REDIRECT-у исходя из маркировки пакетов.
В любом случае, мало-мальски на клиентских компах надо будет поковыряться
Хотя, возможно, выставить адрес ДНС-сервера и дописать "локальные сайты" в настройках браузера (если squid непрозрачен) смогут сами пользователи.
1) Поднять в сети ДНС, прописать в нем зонами - все нужные нам локальные зоны (и сопоставить внутреннюю адресацию хостам). Все прочие имена - форвардить с сервера к ДНС-провайдера. У клиентов прописываете только наш ДНС-сервер. В результате получится, что у клиентов наши зоны будут ресольвиться в локальные адреса, а все остальные - как положено.
2) На клиентах:
а) если стоит галка "использовать прокси-сервер" (squid в непрозрачном режиме) - добавляете ваши зоны в список локальных зон (к которым не ходить через прокси).
б) если галка не стоит (т.е. у вас squid настроен в transparent), то на шлюзе сети предотвращаете заворот трафика, идущего по tcp/80 на локальные машины. Это можно сделать несколькими путями - указанием явного условия в --REDIRECT ( -d ! 192.168.0.0/24, например) или же маркировкой трафика и выборочному REDIRECT-у исходя из маркировки пакетов.
В любом случае, мало-мальски на клиентских компах надо будет поковыряться
Блогосайт - http://www.fateyev.com