Доступ к локальному web-серверу из локалки

Обсуждение настройки и работы сервисов, резервирования, сетевых настроек и вопросов безопасности ОС.

Модераторы: SLEDopit, Модераторы разделов

vadim007
Сообщения: 12
ОС: Win XP

Доступ к локальному web-серверу из локалки

Сообщение vadim007 »

Локалка, доступ в инет - через squid на linux'е. На виндовых машинах в свойствах обозревателя указано использование прокси-сервера proxyhost через порт 3128. В локалке-же установлен web-сервер на apache. Доступ к нему из интернета сделал проброской порта 80 на ip этого сервера. Здесь все OK. А вот как обеспечить доступ к нему локальных пользователей без дополнительных настроек на локальных компах? Я так понимаю - нужно squid копать.
Спасибо сказали:
Аватара пользователя
rm_
Сообщения: 3340
Статус: It's the GNU Age
ОС: Debian

Re: Доступ к локальному web-серверу из локалки

Сообщение rm_ »

Самый простой (и не вполне корректный) вариант -- на прокси-сервере, в /etc/hosts, поставить в соответствие доменному имени вашего сервера его локалочный айпишник.
Спасибо сказали:
pelmen
Сообщения: 1268
ОС: debian

Re: Доступ к локальному web-серверу из локалки

Сообщение pelmen »

А почему сейчас не работает?
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-серверу из локалки

Сообщение smaharbA »

если есть днс смотрящий во внутрь, указать в нем внутренний адрес (но тут все равно компы затронутся)

если в сквиде, то что то из ряда

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-серверу из локалки

Сообщение rm_ »

3. видит там внешний адрес (свой)
4. посылает на него запрос (через интерфейс lo, т.е. через 127.0.0.1) <--- тут могу ошибаться
5. сам же его ловит на 80 порту

Сквид и веб-сервер на разных машинах.
Спасибо сказали:
pelmen
Сообщения: 1268
ОС: debian

Re: Доступ к локальному web-серверу из локалки

Сообщение pelmen »

rm_ писал(а):
26.01.2010 11:50
3. видит там внешний адрес (свой)
4. посылает на него запрос (через интерфейс lo, т.е. через 127.0.0.1) <--- тут могу ошибаться
5. сам же его ловит на 80 порту

Сквид и веб-сервер на разных машинах.
Ого! Т.е. в DNS регистратора так и написано: www.domain.ru IN A 192.168.0.2 ?? О боже
Спасибо сказали:
Аватара пользователя
rm_
Сообщения: 3340
Статус: It's the GNU Age
ОС: Debian

Re: Доступ к локальному web-серверу из локалки

Сообщение rm_ »

pelmen писал(а):
26.01.2010 11:51
rm_ писал(а):
26.01.2010 11:50
Сквид и веб-сервер на разных машинах.
Ого! Т.е. в DNS регистратора так и написано: www.domain.ru IN A 192.168.0.2 ?? О боже

А, вон вы обо что. Ну так автор также и не сказал, что прокси с сетевым шлюзом на одной машине. Вполне вероятен вариант, что пробросом портов занимается вообще, какая-нибудь коробочка-роутер-дсл-модем.
Спасибо сказали:
pelmen
Сообщения: 1268
ОС: debian

Re: Доступ к локальному web-серверу из локалки

Сообщение pelmen »

rm_ писал(а):
26.01.2010 11:56
А, вон вы обо что. Ну так автор также и не сказал, что прокси с сетевым шлюзом на одной машине. Вполне вероятен вариант, что пробросом портов занимается вообще, какая-нибудь коробочка-роутер-дсл-модем.
Кстати, да. Об этом я не подумал, моя вина. Но и вы согласитесь, что я могу быть прав:)
Тогда вопрос к 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-серверу из локалки

Сообщение eddy »

vadim007 писал(а):
26.01.2010 10:48
Локалка, доступ в инет - через squid на linux'е. На виндовых машинах в свойствах обозревателя указано использование прокси-сервера proxyhost через порт 3128. В локалке-же установлен web-сервер на apache. Доступ к нему из интернета сделал проброской порта 80 на ip этого сервера. Здесь все OK. А вот как обеспечить доступ к нему локальных пользователей без дополнительных настроек на локальных компах? Я так понимаю - нужно squid копать.

А что, нельзя заставить пользователей локалки указывать "не использовать прокси для локальных адресов"?
RTFM
-------
KOI8-R - патриотичная кодировка Изображение
Спасибо сказали:
pelmen
Сообщения: 1268
ОС: debian

Re: Доступ к локальному web-серверу из локалки

Сообщение pelmen »

eddy писал(а):
26.01.2010 12:05
А что, нельзя заставить пользователей локалки указывать "не использовать прокси для локальных адресов"?
Мы тут задачку решаем с четко сформулированным условием
vadim007 писал(а):
26.01.2010 10:48
...без дополнительных настроек на локальных компах...
Спасибо сказали:
Аватара пользователя
eddy
Сообщения: 3321
Статус: Красный глаз тролля
ОС: ArchLinux

Re: Доступ к локальному web-серверу из локалки

Сообщение eddy »

pelmen писал(а):
26.01.2010 12:10
eddy писал(а):
26.01.2010 12:05
А что, нельзя заставить пользователей локалки указывать "не использовать прокси для локальных адресов"?
Мы тут задачку решаем с четко сформулированным условием
vadim007 писал(а):
26.01.2010 10:48
...без дополнительных настроек на локальных компах...


Так у вас тогда прокся будет нагружаться ненужными пакетами.
Ну, делайте уж через прокси, раз хотите...
RTFM
-------
KOI8-R - патриотичная кодировка Изображение
Спасибо сказали:
vadim007
Сообщения: 12
ОС: Win XP

Re: Доступ к локальному web-серверу из локалки

Сообщение vadim007 »

rm_ писал(а):
26.01.2010 11:56
pelmen писал(а):
26.01.2010 11:51
rm_ писал(а):
26.01.2010 11:50
Сквид и веб-сервер на разных машинах.
Ого! Т.е. в DNS регистратора так и написано: www.domain.ru IN A 192.168.0.2 ?? О боже

А, вон вы обо что. Ну так автор также и не сказал, что прокси с сетевым шлюзом на одной машине. Вполне вероятен вариант, что пробросом портов занимается вообще, какая-нибудь коробочка-роутер-дсл-модем.


Извиняюсь, думал - и так асно. Значит уточняю: прокси на одной машине с сетевым шлюзом. В DNS регистратора все пучком :)
Спасибо сказали:
pelmen
Сообщения: 1268
ОС: debian

Re: Доступ к локальному web-серверу из локалки

Сообщение pelmen »

Ну тогда попробуй и так и так сделай. Сначала конечно hosts
Спасибо сказали:
vadim007
Сообщения: 12
ОС: Win XP

Re: Доступ к локальному web-серверу из локалки

Сообщение vadim007 »

pelmen писал(а):
26.01.2010 12:02
rm_ писал(а):
26.01.2010 11:56
А, вон вы обо что. Ну так автор также и не сказал, что прокси с сетевым шлюзом на одной машине. Вполне вероятен вариант, что пробросом портов занимается вообще, какая-нибудь коробочка-роутер-дсл-модем.
Кстати, да. Об этом я не подумал, моя вина. Но и вы согласитесь, что я могу быть прав:)
Тогда вопрос к 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

Re: Доступ к локальному web-серверу из локалки

Сообщение vadim007 »

eddy писал(а):
26.01.2010 12:05
А что, нельзя заставить пользователей локалки указывать "не использовать прокси для локальных адресов"?


Не понял вопроса? Откуда известно, что некий адрес - это внутренний? Нужно кому-то сказать об этом наверное. Кому и как?
Спасибо сказали:
vadim007
Сообщения: 12
ОС: Win XP

Re: Доступ к локальному web-серверу из локалки

Сообщение vadim007 »

pelmen писал(а):
26.01.2010 16:49
Ну тогда попробуй и так и так сделай. Сначала конечно hosts


Хоть и брали меня большие сомнения с использованием hosts - все же попробовал.
На доступе к web-серверу из локалки это никак не отразилось, а на пинговании по url - комп с www стал пинговаться.
Спасибо сказали:
Аватара пользователя
eddy
Сообщения: 3321
Статус: Красный глаз тролля
ОС: ArchLinux

Re: Доступ к локальному web-серверу из локалки

Сообщение eddy »

vadim007 писал(а):
26.01.2010 18:08
Не понял вопроса? Откуда известно, что некий адрес - это внутренний? Нужно кому-то сказать об этом наверное. Кому и как?

У вас, скажем, домен myjob.org, имя сервера пусть будет www. Тогда если кто-то из локалки набирает www.myjob.org, то DNS, естественно, отдает ему локальный IP, допустим, 192.168.33.1. Варианта два: либо прописать в настройках браузера, что в подсеть 192.168.33.0/24 надо ходить в обход прокси (напрямую), либо (что проще для конечного пользователя) написать, что в домен .myjob.ru надо ходить напрямую. Делов-то.
Если же вам хочется перезагружать свой прокси - пожалуйста, пусть идут на прокси. Только вам надо будет разрешить в iptables переброс запросов из внутренней сети обратно во внутреннюю сеть.
RTFM
-------
KOI8-R - патриотичная кодировка Изображение
Спасибо сказали:
Аватара пользователя
rm_
Сообщения: 3340
Статус: It's the GNU Age
ОС: Debian

Re: Доступ к локальному web-серверу из локалки

Сообщение rm_ »

Тогда если кто-то из локалки набирает www.myjob.org, то DNS, естественно, отдает ему локальный IP, допустим, 192.168.33.1.

Что значит "естественно"? DNS вообще-то один на всех, глобальный, и адреса он отдаёт глобальные.
Можно конечно поставить на шлюзе dnsmasq, и тогда локалка будет получать те адреса, которые шлюз знает в своём /etc/hosts.
Но это не по-умолчанию так, это надо делать вручную. :) И кстати, ещё один вариант решения проблемы.
Спасибо сказали:
Аватара пользователя
eddy
Сообщения: 3321
Статус: Красный глаз тролля
ОС: ArchLinux

Re: Доступ к локальному web-серверу из локалки

Сообщение eddy »

rm_ писал(а):
26.01.2010 18:56
Тогда если кто-то из локалки набирает www.myjob.org, то DNS, естественно, отдает ему локальный IP, допустим, 192.168.33.1.

Что значит "естественно"? DNS вообще-то один на всех, глобальный, и адреса он отдаёт глобальные.
Можно конечно поставить на шлюзе dnsmasq, и тогда локалка будет получать те адреса, которые шлюз знает в своём /etc/hosts.
Но это не по-умолчанию так, это надо делать вручную. :) И кстати, ещё один вариант решения проблемы.

?????
А как у вас внутри локальной сети хост узнает айпишник другого хоста? Что, в DNS нет локальной зоны?
RTFM
-------
KOI8-R - патриотичная кодировка Изображение
Спасибо сказали:
pelmen
Сообщения: 1268
ОС: debian

Re: Доступ к локальному web-серверу из локалки

Сообщение pelmen »

eddy писал(а):
26.01.2010 19:42
А как у вас внутри локальной сети хост узнает айпишник другого хоста? Что, в DNS нет локальной зоны?
Наверное у него нет ДНС в локалке, т.к. наверное не было необходимости в общении между компьютерами внутри локалки. А теперь возникла. И у него теперь делема: поднимать ДНС, поправить настройки hosts, крутить сквид или iptables подточить.
Спасибо сказали:
Аватара пользователя
eddy
Сообщения: 3321
Статус: Красный глаз тролля
ОС: ArchLinux

Re: Доступ к локальному web-серверу из локалки

Сообщение eddy »

pelmen писал(а):
26.01.2010 19:48
не было необходимости в общении между компьютерами внутри локалки.

Как такое может быть? А по ftp/ssh/http/nfs файлы друг другу перекинуть? Или пообщаться через talk.
RTFM
-------
KOI8-R - патриотичная кодировка Изображение
Спасибо сказали:
pelmen
Сообщения: 1268
ОС: debian

Re: Доступ к локальному web-серверу из локалки

Сообщение pelmen »

Быть может он использует сервер (самба?) для обмена данными ?
Спасибо сказали:
vadim007
Сообщения: 12
ОС: Win XP

Re: Доступ к локальному web-серверу из локалки

Сообщение vadim007 »

pelmen писал(а):
26.01.2010 19:48
eddy писал(а):
26.01.2010 19:42
А как у вас внутри локальной сети хост узнает айпишник другого хоста? Что, в DNS нет локальной зоны?
Наверное у него нет ДНС в локалке, т.к. наверное не было необходимости в общении между компьютерами внутри локалки. А теперь возникла. И у него теперь делема: поднимать ДНС, поправить настройки hosts, крутить сквид или iptables подточить.


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-серверу из локалки

Сообщение rm_ »

По поводу hosts: имеется в виду на шлюзе, или на локальных компах?

Ответ на этот вопрос дан в сообщении #2 этой ветки. :)
Если непомогает, посмотреть настройки squid, а не задан ли ему явно внешний DNS-сервер.
Спасибо сказали:
Аватара пользователя
eddy
Сообщения: 3321
Статус: Красный глаз тролля
ОС: ArchLinux

Re: Доступ к локальному web-серверу из локалки

Сообщение eddy »

vadim007 писал(а):
27.01.2010 08:34
DNS поднимать нет смысла по разным причинам. Локалка небольшая - всего-то 30 компов, и все под виндами. Машины прекрасно друг друга видят.

Вы наверное уже поняли, что смысл есть. Я, например, даже в компьютерном классе из 10 компьютеров DNS поднимал. Сложного-то ничего нет.
RTFM
-------
KOI8-R - патриотичная кодировка Изображение
Спасибо сказали:
vadim007
Сообщения: 12
ОС: Win XP

Re: Доступ к локальному web-серверу из локалки

Сообщение vadim007 »

eddy писал(а):
27.01.2010 08:46
vadim007 писал(а):
27.01.2010 08:34
DNS поднимать нет смысла по разным причинам. Локалка небольшая - всего-то 30 компов, и все под виндами. Машины прекрасно друг друга видят.

Вы наверное уже поняли, что смысл есть. Я, например, даже в компьютерном классе из 10 компьютеров DNS поднимал. Сложного-то ничего нет.


Прошу прощения - до сих пор не понял ;( Нельзя ли привести некоторые доводы в пользу поднятия DNS на шлюзе в интернет? Ведь я на виндовых компах локалки не прописываю ни DNS'ы, ни основной шлюз. Все общение пользователей с внешним миром идет через squid. Imho такая политика себя оправдывает, в случае если в локалке заведется какой-нибудь бот.
Спасибо сказали:
Аватара пользователя
eddy
Сообщения: 3321
Статус: Красный глаз тролля
ОС: ArchLinux

Re: Доступ к локальному web-серверу из локалки

Сообщение eddy »

Ладно, вам решать. Я в мастдайных сетях ноль.
RTFM
-------
KOI8-R - патриотичная кодировка Изображение
Спасибо сказали:
pelmen
Сообщения: 1268
ОС: debian

Re: Доступ к локальному web-серверу из локалки

Сообщение pelmen »

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 писал(а):
27.01.2010 10:50
Ведь я на виндовых компах локалки не прописываю ни DNS'ы, ни основной шлюз. Все общение пользователей с внешним миром идет через squid. Imho такая политика себя оправдывает, в случае если в локалке заведется какой-нибудь бот.
Боту ничто не мешает работать через прокси, прописанный в настройках ИЕ. Возьмите к примеру скайп - чем не бот? :)
Спасибо сказали:
ALexhha
Сообщения: 109

Re: Доступ к локальному web-серверу из локалки

Сообщение ALexhha »

Здесь все OK. А вот как обеспечить доступ к нему локальных пользователей без дополнительных настроек на локальных компах? Я так понимаю - нужно squid копать.

обращаться по ip
Спасибо сказали:
Аватара пользователя
danger08
Сообщения: 715
ОС: Linux (CentOS, Ubuntu)

Re: Доступ к локальному web-серверу из локалки

Сообщение danger08 »

На мой взгляд, простое решение проблемы:

1) Поднять в сети ДНС, прописать в нем зонами - все нужные нам локальные зоны (и сопоставить внутреннюю адресацию хостам). Все прочие имена - форвардить с сервера к ДНС-провайдера. У клиентов прописываете только наш ДНС-сервер. В результате получится, что у клиентов наши зоны будут ресольвиться в локальные адреса, а все остальные - как положено.

2) На клиентах:
а) если стоит галка "использовать прокси-сервер" (squid в непрозрачном режиме) - добавляете ваши зоны в список локальных зон (к которым не ходить через прокси).
б) если галка не стоит (т.е. у вас squid настроен в transparent), то на шлюзе сети предотвращаете заворот трафика, идущего по tcp/80 на локальные машины. Это можно сделать несколькими путями - указанием явного условия в --REDIRECT ( -d ! 192.168.0.0/24, например) или же маркировкой трафика и выборочному REDIRECT-у исходя из маркировки пакетов.

В любом случае, мало-мальски на клиентских компах надо будет поковыряться ;) Хотя, возможно, выставить адрес ДНС-сервера и дописать "локальные сайты" в настройках браузера (если squid непрозрачен) смогут сами пользователи.
Блогосайт - http://www.fateyev.com
Спасибо сказали: