День добрый! Прочитал немало тем на этом форуме, но так и не смог решить свою проблему, возможно из-за малограмотности в сфере юникс.
Итак, имеется сервер FreeBSD с 2 интерфейсами - один смотрит в интернет и имеет реальный IP, второй в локалку. Для выхода в инет настроенны natd + ipfw. Также в локальной сети имеется настроенный сервер радио, скажем 192.168.1.5 на порту 8000. Я не могу попасть на этот сервер из своей локальной сети, грубо говоря 192.168.1.100 -> <мой внешний IP:8000> -> 192.168.1.5. Сервер отвергает. Хотя если зайти извне, то шлюз нормально редиректит на этот радио-сервер. Не работает только из локалки!
Вообще-то когда хосты в одной сети общаются, шлюзы отдыхают. Значит радиосервак как-то решает, кого пускать, кого нет. Копать на нём. Или на клиенте.
> этот сервер из своей локальной сети, грубо говоря 192.168.1.100 -> <мой
> внешний IP:8000> -> 192.168.1.5. Сервер отвергает. Хотя если зайти извне, то
> шлюз нормально редиректит на этот радио-сервер. Не работает только из локалки!А зачем попадать на сервер находящийся в ЛВС с ПК из состава той же ЛВС через внешний канал то?
> А зачем попадать на сервер находящийся в ЛВС с ПК из состава
> той же ЛВС через внешний канал то?Дело в том, что кнопка радио висит на сайте, к кнопке прикреплена ссылка на мой внешний IP. Поэтому я из локальной своей сети нажимаю на кнопку и попадаю к себе же, но на внешний IP и не работает. Остальные вне локальной сети, с интернета слушают радио нормально... Однозначно проблема где-то в ipfw или natd
> Дело в том, что кнопка радио висит на сайте, к кнопке прикреплена
> ссылка на мой внешний IP. Поэтому я из локальной своей сети
> нажимаю на кнопку и попадаю к себе же, но на внешний
> IP и не работает. Остальные вне локальной сети, с интернета слушают
> радио нормально... Однозначно проблема где-то в ipfw или natdХорошо. Покажите тогда как организован проброс порта внутрь ЛВС
> Хорошо. Покажите тогда как организован проброс порта внутрь ЛВСnatd.conf:
same_ports yes
use_sockets yes
redirect_port tcp 192.168.1.5:8000 8000ipfw.conf:
<тут подключение NAT>
/sbin/ipfw add 40 allow tcp from any to 192.168.1.5 dst-port 8000 in via <внутренний интерфейс>
<остальные правила>
>> Хорошо. Покажите тогда как организован проброс порта внутрь ЛВС
> natd.conf:
> same_ports yes
> use_sockets yes
> redirect_port tcp 192.168.1.5:8000 8000блин, как все любят эти грабли.
если вы пробрасываете соединения обратно в локалку, то сервер ответит клиенту на прямую, а не через шлюз, куда слал запрос клиент и соответственно клиенту такой ответ не понравится> ipfw.conf:
> <тут подключение NAT>
> /sbin/ipfw add 40 allow tcp from any to 192.168.1.5 dst-port 8000 in
> via <внутренний интерфейс>чета на nat не похоже
> <остальные правила>
> этот сервер из своей локальной сети, грубо говоря 192.168.1.100 -> <мой
> внешний IP:8000> -> 192.168.1.5. Сервер отвергает. Хотя если зайти извне, то
> шлюз нормально редиректит на этот радио-сервер. Не работает только из локалки!Используйте ДНС сервер с соответствующими настройками (внутренние сервера, внешние).
Все IP адреса на веб сервере замените на имена.
> Используйте ДНС сервер с соответствующими настройками (внутренние сервера, внешние).
> Все IP адреса на веб сервере замените на имена.Кстати да, это вариант. Можно даже просто это имя прописать в файле hosts на ПК в ЛВС, указав, что radio.ru имеет адрес 192.168.1.5
>> Используйте ДНС сервер с соответствующими настройками (внутренние сервера, внешние).
>> Все IP адреса на веб сервере замените на имена.
> Кстати да, это вариант. Можно даже просто это имя прописать в файле
> hosts на ПК в ЛВС, указав, что radio.ru имеет адрес 192.168.1.5Хотелось бы обойтись без дополнительной настройки DNS, а особенно во всей локальной сети.
>>> Используйте ДНС сервер с соответствующими настройками (внутренние сервера, внешние).
>>> Все IP адреса на веб сервере замените на имена.
>> Кстати да, это вариант. Можно даже просто это имя прописать в файле
>> hosts на ПК в ЛВС, указав, что radio.ru имеет адрес 192.168.1.5
> Хотелось бы обойтись без дополнительной настройки DNS, а особенно во всей локальной
> сети.Настройка ДНС производится на сервере, и изменения в отдаваемых адресах будут действенны для всей сети. Если конечно они пользуются именно этим днс :)
Решение с днс- самое правильное вообщето.Потому что в текущей реализации - у вас на шлюз ложится дополнительная нагрузка, которой можно легко избежать просто отдавая в ДНС внутренним хостам внутренний адрес вашего внутреннего сервера а не внешний.
> Настройка ДНС производится на сервере, и изменения в отдаваемых адресах будут действенны
> для всей сети. Если конечно они пользуются именно этим днс :)
> Решение с днс- самое правильное вообщето.
> Потому что в текущей реализации - у вас на шлюз ложится дополнительная
> нагрузка, которой можно легко избежать просто отдавая в ДНС внутренним хостам
> внутренний адрес вашего внутреннего сервера а не внешний.Ну если так, то буду читать маны как настроить ДНС, у меня он щас поднят просто как перенаправляющий на вышестоящий у провайдера. А зону я не настраивал ни разу на юниксах.
>> Настройка ДНС производится на сервере, и изменения в отдаваемых адресах будут действенны
>> для всей сети. Если конечно они пользуются именно этим днс :)
>> Решение с днс- самое правильное вообщето.
>> Потому что в текущей реализации - у вас на шлюз ложится дополнительная
>> нагрузка, которой можно легко избежать просто отдавая в ДНС внутренним хостам
>> внутренний адрес вашего внутреннего сервера а не внешний.
> Ну если так, то буду читать маны как настроить ДНС, у меня
> он щас поднят просто как перенаправляющий на вышестоящий у провайдера. А
> зону я не настраивал ни разу на юниксах.Она одинаково настраивается на любой платформе.
> Хотелось бы обойтись без дополнительной настройки DNS, а особенно во всей локальной
> сети.Вам ответили как: можно даже просто это имя прописать в файле hosts на ПК в ЛВС, указав, что radio.ru имеет адрес 192.168.1.5
Просто думаю, что с DNS Вам будет сложно. Хотя, конечно, нужно развиваться )
> Вам ответили как: можно даже просто это имя прописать в файле hosts
> на ПК в ЛВС, указав, что radio.ru имеет адрес 192.168.1.5
> Просто думаю, что с DNS Вам будет сложно. Хотя, конечно, нужно развиваться
> )По поводу развиваться согласен, помучаюсь пару дней, да настрою )) В винде настроил бы на раз, два, три... с юниксами плохо знаком, только изучаю
Посидел подумал, поправьте где не прав:
На данный момент у меня имеется только IP адрес внешний x.x.x.x, к нему не привязан ни один домен, т.е. имени нет. Радио висит на сайте (не моем), а на сайте просто ссылка-кнопка вида http://x.x.x.x:8000/32, т.е. обращаться исключительно по IP. Все, кто сидят вне локальной сети, в других интернетах :) они нормально редиректятся через NAT на сервер радио внутри локальной сети 192.168.1.5:8000. Мои пользователи если нажмут на ссылку - получат шиш, ошибку "сервер недоступен". Если я поднимаю внутренний ДНС сервер, условно radio.ru, то, при нажатии на ссылку http://x.x.x.x:8000/32 они также попадут на сервер-радио? Вот тут не могу допонять
> Посидел подумал, поправьте где не прав:
> На данный момент у меня имеется только IP адрес внешний x.x.x.x, к
> нему не привязан ни один домен, т.е. имени нет. Радио висит
> на сайте (не моем), а на сайте просто ссылка-кнопка вида http://x.x.x.x:8000/32,
> т.е. обращаться исключительно по IP. Все, кто сидят вне локальной сети,
> в других интернетах :) они нормально редиректятся через NAT на сервер
> радио внутри локальной сети 192.168.1.5:8000. Мои пользователи если нажмут на ссылку
> - получат шиш, ошибку "сервер недоступен". Если я поднимаю внутренний ДНС
> сервер, условно radio.ru, то, при нажатии на ссылку http://x.x.x.x:8000/32 они также
> попадут на сервер-радио? Вот тут не могу допонятьНет, не попадут. Поскольку там прописан конкретный айпишник. Предполагалось что у вас есть возможность указать доменное имя вместо айпишника.
Ну, можно например повесить там две ссылки - для всех и для локальных пользователей.
Или если сайт на php или хотябы ssi включено -можно формировать строку с апишником в зависимости от того откуда пришел клиент.
> Нет, не попадут. Поскольку там прописан конкретный айпишник. Предполагалось что у вас
> есть возможность указать доменное имя вместо айпишника.
> Ну, можно например повесить там две ссылки - для всех и для
> локальных пользователей.
> Или если сайт на php или хотябы ssi включено -можно формировать
> строку с апишником в зависимости от того откуда пришел клиент.Проблема в том, что сайт московский, мы лишь представители, поэтому москва сказала дать ссылку, они там ковырять ничего не будут в коде сайта - это точно... Поэтому DNS мне и не подойдет, но должен же быть способ как показать шлюзу, что клиенты из локальной сети ломятся
> же быть способ как показать шлюзу, что клиенты из локальной сети
> ломятсяВам человек ответил выше см:"..Вообще-то когда хосты в одной сети общаются, шлюзы отдыхают..."
правила ipfw:#!/bin/sh
fwcmd="/sbin/ipfw"
natdcmd="/sbin/natd"
int_if="em1"
ext_if="em0"
localnet="192.168.1.0/24"
wan_ip="x.x.x.x"${fwcmd} -f flush
${natdcmd} -s -m -u x.x.x.x${fwcmd} add 10 allow all from any to any via lo0
${fwcmd} add 20 divert natd ip from ${localnet} to any out via ${ext_if}
${fwcmd} add 30 divert natd ip from any to ${wan_ip} in via ${ext_if}
${fwcmd} add 40 allow tcp from any to 192.168.1.3 dst-port 21 in via ${int_if}
${fwcmd} add 41 allow tcp from any to 192.168.1.5 dst-port 8000 in via ${int_if}
${fwcmd} add 50 allow ip from ${wan_ip} to any out xmit ${ext_if}
${fwcmd} add 60 allow ip from any to ${wan_ip} in via ${ext_if}
${fwcmd} add 70 allow tcp from any to any established${fwcmd} add 80 allow ip from ${localnet} to ${localnet} via ${int_if}
${fwcmd} add 90 allow ip from ${localnet} to any in via ${int_if}
${fwcmd} add 100 allow ip from ${localnet} to any out via ${ext_if}
${fwcmd} add 110 allow ip from any to ${localnet} in via ${ext_if}
${fwcmd} add 120 allow ip from any to ${localnet} out via ${int_if}${fwcmd} add 130 allow udp from any to any via ${int_if}
${fwcmd} add 140 deny log ip from any to anyМожет где-то что-то и некорректно, но по крайней мере работает
>[оверквотинг удален]
> ${fwcmd} add 60 allow ip from any to ${wan_ip} in via ${ext_if}
> ${fwcmd} add 70 allow tcp from any to any established
> ${fwcmd} add 80 allow ip from ${localnet} to ${localnet} via ${int_if}
> ${fwcmd} add 90 allow ip from ${localnet} to any in via ${int_if}
> ${fwcmd} add 100 allow ip from ${localnet} to any out via ${ext_if}
> ${fwcmd} add 110 allow ip from any to ${localnet} in via ${ext_if}
> ${fwcmd} add 120 allow ip from any to ${localnet} out via ${int_if}
> ${fwcmd} add 130 allow udp from any to any via ${int_if}
> ${fwcmd} add 140 deny log ip from any to any
> Может где-то что-то и некорректно, но по крайней мере работаетhttp://www.opennet.me/openforum/vsluhforumID1/92684.html#16
вы вообще то знаете как сеть работает?
сделайте, для пакетов которые вы пробрасываете, nat на внутреннем интерфейсе
> вы вообще то знаете как сеть работает?
> сделайте, для пакетов которые вы пробрасываете, nat на внутреннем интерфейсеНу я не настраивал фаерволы для юниксов, поэтому могу в правилах запутаться... Подскажите что прописать надо конкретно для внутреннего NAT
> День добрый! Прочитал немало тем на этом форуме, но так и не
> смог решить свою проблему, возможно из-за малограмотности в сфере юникс.
> Итак, имеется сервер FreeBSD с 2 интерфейсами - один смотрит в интернет
> и имеет реальный IP, второй в локалку. Для выхода в инет
> настроенны natd + ipfw. Также в локальной сети имеется настроенный сервер
> радио, скажем 192.168.1.5 на порту 8000. Я не могу попасть на
> этот сервер из своей локальной сети, грубо говоря 192.168.1.100 -> <мой
> внешний IP:8000> -> 192.168.1.5. Сервер отвергает. Хотя если зайти извне, то
> шлюз нормально редиректит на этот радио-сервер. Не работает только из локалки!Настройте кнопку на radio.mydomain.ru:8000 и сделайте чтобы снаружи radio.mydomain.ru:8000 разрешался в <мой внешний IP:8000>, а изнутри в 192.168.1.5:8000, т.е. дело только в DNS.
> Настройте кнопку на radio.mydomain.ru:8000 и сделайте чтобы снаружи radio.mydomain.ru:8000
> разрешался в <мой внешний IP:8000>, а изнутри в 192.168.1.5:8000, т.е. дело
> только в DNS.Не получается у меня с DNS... настроить хоть как-то...
> Не получается у меня с DNS... настроить хоть как-то...Вспомни, что про файл hosts тебе говорили.
> День добрый! Прочитал немало тем на этом форуме, но так и не
> смог решить свою проблему, возможно из-за малограмотности в сфере юникс.
> Итак, имеется сервер FreeBSD с 2 интерфейсами - один смотрит в интернет
> и имеет реальный IP, второй в локалку. Для выхода в инет
> настроенны natd + ipfw. Также в локальной сети имеется настроенный сервер
> радио, скажем 192.168.1.5 на порту 8000. Я не могу попасть на
> этот сервер из своей локальной сети, грубо говоря 192.168.1.100 -> <мой
> внешний IP:8000> -> 192.168.1.5. Сервер отвергает. Хотя если зайти извне, то
> шлюз нормально редиректит на этот радио-сервер. Не работает только из локалки!Натом тут не решить он не для того есть порт на фрее называется rinetd работает примерно так в фаерволе необходимо написать правило все входящие с анутренего интерфейса на внешний ип и порт такой то слать на локальный порт 2244 (к примеру) а его слушает ринетд и собственно он то через конфиг уже знает что отправлять нужно на внутренний внешний или любой другой ип на определенный порт описания в нете много но есть нюанс
Три внутренних юзера одновременно юзают ринетд в результате в логах будет только внутренний интерфейс и разграничить ресурсы не получиться если это вебсервер