URL: https://www.opennet.ru/cgi-bin/openforum/vsluhboard.cgi
Форум: vsluhforumID1
Нить номер: 55078
[ Назад ]

Исходное сообщение
"перенаправление 80 порта"

Отправлено slv , 01-Апр-05 15:11 
Привет всем! Помогите разрешить следующую проблему. Есть шлюз FreeBSD c реальным IP. Есть сайт на машине в локалке с серым адресом 172.16.0.20. Надо чтоб сайт все могли видеть. Ну мир видит, т.к. сделал следущее:

rc.conf
natd_interface=внешний ифейс
natd_flags="-redirect_port tcp 172.16.0.20:80 80"

rc.firewall
$fwcmd add divert natd all from any to ${oip} in via ${natd_interface}
$fwcmd add divert natd all from 172.16.0.20 to any out via ${natd_interface}
$fwcmd add allow all from any to 172.16.0.20
$fwcmd add allow all from 172.16.0.20 to any

А вот локалка не видит, т.к. ей прокся, которая стоит на шлюзе отдает локальный сайт, который, тоже стоит на этом же шлюзе (он только для внутреннего пользования).
Т.е. как бы исходящие пакеты на внешний интерфейс, надо как то обратно на него загонять? Или я не прав, может не в этом дело?
Подскажите.



Содержание

Сообщения в этом обсуждении
"перенаправление 80 порта"
Отправлено McLeod095 , 01-Апр-05 16:14 
>Привет всем! Помогите разрешить следующую проблему. Есть шлюз FreeBSD c реальным IP.
>Есть сайт на машине в локалке с серым адресом 172.16.0.20. Надо
>чтоб сайт все могли видеть. Ну мир видит, т.к. сделал следущее:
>
>
>rc.conf
>natd_interface=внешний ифейс
>natd_flags="-redirect_port tcp 172.16.0.20:80 80"
>
>rc.firewall
>$fwcmd add divert natd all from any to ${oip} in via ${natd_interface}
>
>$fwcmd add divert natd all from 172.16.0.20 to any out via ${natd_interface}
>
>$fwcmd add allow all from any to 172.16.0.20
>$fwcmd add allow all from 172.16.0.20 to any
>
>А вот локалка не видит, т.к. ей прокся, которая стоит на шлюзе
>отдает локальный сайт, который, тоже стоит на этом же шлюзе (он
>только для внутреннего пользования).
>Т.е. как бы исходящие пакеты на внешний интерфейс, надо как то обратно
>на него загонять? Или я не прав, может не в этом
>дело?
>Подскажите.


По поводу FreeBSD и Squidа ничего сказать немогу, я линухом занимаюсь, а Sqiud не юзаю. Но может поможет описание принципов работы через Firewall.

https://www.opennet.ru/docs/RUS/iptables/index.html#DNATTARGET
там после описания действия изложено решение такой прорблемы, правда через firewall.
Может отслеживать обращения к шлюзу с внутреннего интерфейса на его внешний айпи порт 80 и пробрасывать????? Если не прав, то поправьте самому некогда проверить, и конечно в этом случае жутко извиняюсь (новичок я!!!!)!!!!



"перенаправление 80 порта"
Отправлено else , 01-Апр-05 19:08 
$fwcmd add divert natd all from not ${local_net} to ${oip} in via ${natd_interface}
$fwcmd add divert natd all from 172.16.0.20 to not ${local_net} out via ${natd_interface

"перенаправление 80 порта"
Отправлено else , 01-Апр-05 19:09 
Да и вообще, неплохо бы на локальные сайты ходить без прокси.


"перенаправление 80 порта"
Отправлено slv , 04-Апр-05 07:15 
>Да и вообще, неплохо бы на локальные сайты ходить без прокси.

Правила, хоть и стали более точными, но проблему не решили. А как средствами сервера заставить ходить без прокси?


"перенаправление 80 порта"
Отправлено else , 04-Апр-05 15:40 
>>Да и вообще, неплохо бы на локальные сайты ходить без прокси.
>
>Правила, хоть и стали более точными, но проблему не решили. А как
>средствами сервера заставить ходить без прокси?


Средствами сервера наверное никак....

function FindProxyForURL(url, host) {
    if (isPlainHostName(host))
    return "DIRECT";

    if (shExpMatch(host, "внутренняя сеть")||
        shExpMatch(host, "внешний ip")||
        shExpMatch(host, "локалхост"))
    return "DIRECT";

    if (dnsDomainIs(host,"домен")||
        dnsDomainIs(host,"доменное имя2")
    return "DIRECT";

    if (!isResolvable(host))
    return "DIRECT";

    return "PROXY squid.domain.ru:3128; DIRECT";
}

это помещается в файлик с расширением *.pac и выкладывается на веб. Клиенты прописывают у себя Автоматическое обнаружение прокси и указывают линк на скрипт.

Кстати, вообще не очень понятно как у вас человек попадает на локальный сайт. Смотрите на httpd.conf, смотрите на виртуальные хосты. Апач не должен отдавать myweb.lan если вы идете на myweb.ru, даже если они висят на одном адресе и на одном порту, прокся тут не причем....


"перенаправление 80 порта"
Отправлено slv , 04-Апр-05 16:04 
>Кстати, вообще не очень понятно как у вас человек попадает на локальный
>сайт. Смотрите на httpd.conf, смотрите на виртуальные хосты. Апач не должен
>отдавать myweb.lan если вы идете на myweb.ru, даже если они висят
>на одном адресе и на одном порту, прокся тут не причем....
>

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


"перенаправление 80 порта"
Отправлено else , 04-Апр-05 17:03 
>>Кстати, вообще не очень понятно как у вас человек попадает на локальный
>>сайт. Смотрите на httpd.conf, смотрите на виртуальные хосты. Апач не должен
>>отдавать myweb.lan если вы идете на myweb.ru, даже если они висят
>>на одном адресе и на одном порту, прокся тут не причем....
>>
>
>Прокси не причем - не спорю.
>А как он попадает на локальный сайт шлюза мне тоже не понятно.
>
>В апаче слущается только внутрений итерфейс, виртуальных хостов нет.

Ну так создайте виртуальные хосты, пропишите в днс
external_ip virtual_host1(внешний сайт)
internal_ip virtual_host2(внутрений сайт)

и все, все обращение к external_ip 80 заворачиваете на вебсервер, он по заголовку (virtual_host1) выдает внешний сайт
внутренние пользователи при обращении в внешнему сайту пойдут наравне со внешними через прокси, а при обращеннии к внутреннему сайту в обход фаервола на запрос virtual_host2 будут получать внутренний сайт



"перенаправление 80 порта"
Отправлено slv , 05-Апр-05 07:12 
Спасибо за советы. Видимо так и придется сделать.