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

Исходное сообщение
"Проброс портов freebsd"

Отправлено xservices , 22-Сен-10 04:29 
Надо сделать divert пакетов из вне
Потом надо отредиректить пакет на внутренний сервер
Скиньте маны по теме. заепался уже все перепробывал чето не получаеться!

Содержание

Сообщения в этом обсуждении
"Проброс портов freebsd"
Отправлено crash , 22-Сен-10 05:34 
>уже все перепробывал чето не получаеться!

что именно перепробовали?
http://www.freebsd.org/doc/ru_RU.KOI8-R/books/handbook/netwo...


"Проброс портов freebsd"
Отправлено xservices , 22-Сен-10 16:54 
>>уже все перепробывал чето не получаеться!
>
>что именно перепробовали?
>http://www.freebsd.org/doc/ru_RU.KOI8-R/books/handbook/netwo...

А если просо natd -ом пробрасывать он будет подменять в заголовке ип с внешнего?
или divert надо?



"Проброс портов freebsd"
Отправлено PavelR , 22-Сен-10 18:14 
>>>уже все перепробывал чето не получаеться!
>>
>>что именно перепробовали?
>>http://www.freebsd.org/doc/ru_RU.KOI8-R/books/handbook/netwo...
>
>А если просо natd -ом пробрасывать он будет подменять в заголовке ип
>с внешнего?
>или divert надо?

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

Исходя из этого, первое сообщение топика является неверным.



"Проброс портов freebsd"
Отправлено xservices , 22-Сен-10 21:02 
>[оверквотинг удален]
>>А если просо natd -ом пробрасывать он будет подменять в заголовке ип
>>с внешнего?
>>или divert надо?
>
>открой для себя понимание, что диверт, это просто метод передачи пакета из
>уровня ядра на уровень приложений, и всё. Натд - это даймон
>уровня приложений, который умеет принимать и передавать пакеты, используя диверт сокеты,
>производя соответствующую корректировку заголовков пакетов.
>
>Исходя из этого, первое сообщение топика является неверным.

Я делаю Natd с пробросом, но пакеты на внутреенний сервер идут от внешнего адреса, тоесть заголовок не меняеться, и веб сервер пытаеться напрямую ответить клиенту.
Разжуйте, ятуплю пипец.



"Проброс портов freebsd"
Отправлено xservices , 22-Сен-10 21:31 
В rc.conf пишу например
gateway_enable="YES"
firewall_enable="YES"
firewall_type="OPEN"
natd_enable="YES"
natd_interface="tun0"
natd_flags="-f /etc/natd.conf"

в natd.conf

redirect_port tcp 192.168.0.2:22 22
redirect_port tcp 192.168.0.3:80 80


На веб сервер идут пакеты с внешним ип клиента


"Проброс портов freebsd"
Отправлено xservices , 22-Сен-10 22:45 
Вот к примеру ipnat
map tap0 from any to any -> 192.168.137.2
rdr tap0 192.168.137.2 port 80 -> 192.168.11.2 port 80 tcp
надо что бы весь трафик пришедший на 192.168.137.2 от клиента подменялся на 192.168.11.1 на редиректился от 192.168.137.2 на 192.168.11.2.
Как?

"Проброс портов freebsd"
Отправлено xservices , 22-Сен-10 23:41 
закрыто

"Проброс портов freebsd"
Отправлено PavelR , 22-Сен-10 23:45 
>[оверквотинг удален]
>>уровня ядра на уровень приложений, и всё. Натд - это даймон
>>уровня приложений, который умеет принимать и передавать пакеты, используя диверт сокеты,
>>производя соответствующую корректировку заголовков пакетов.
>>
>>Исходя из этого, первое сообщение топика является неверным.
>
>Я делаю Natd с пробросом, но пакеты на внутреенний сервер идут от
>внешнего адреса, тоесть заголовок не меняеться, и веб сервер пытаеться напрямую
>ответить клиенту.
>Разжуйте, ятуплю пипец.

бред :-)
Поясняю:
есть s-nat и есть d-nat

когда делаем проброс - заменяется адрес получателя, тоесть д-нат (дестинейшн)

т.е. всё верно, пакеты на внутренний сервер идут от внешнего адреса.

внешние пакеты - до дната имели один адрес получателя, после дната - имеют адресом получателя адрес внутреннего сервера.

веб-сервер должен напрямую отвечать клиенту :-)

только маршрут пакета должен пройти сквозь натд, и натд обратно подменит адрес отправителя (_отправителя_, которым для ответного пакета является внутренний сервер) на адрес рутера, на которой исходно пришел входящий пакет.


Исходя из этих размышлений, делаем вывод, что либо у вас машина, на которой  происходит днат, не является шлюзом по умолчанию для машины, на которую делается проброс, либо не происходит заворачивание на натд ответных пакетов в ипфв (что характерно для изначально изучивших айпитаблесы линуха, где это делается "автоматически" :-) ).


Ну и далее, надо как-то это дело исправлять.


-------------------

да, можно забить костыль, заменяя во входящем пакете как адрес отправителя, так и адрес получателя, но тогда вебсервер никогда не узнает, с какого адреса к нему пришел исходный запрос - такое решение технически возможно, но я его считаю некорректным :-)
//запускается два натд и делается по два диверта на каждый из них, два диверта для входящего пакета, на первый натд и на второй, и два диверта для ответных пакетов.


"Проброс портов freebsd"
Отправлено xservices , 23-Сен-10 00:17 
Осталась проблемма фтп
Статус:    Сервер отправил пассивный ответ с неопределяемым адресом. Использую существующий адрес сервера.

Сервер отдает клиенту фтп внутренний ип.


"Проброс портов freebsd"
Отправлено PavelR , 23-Сен-10 09:21 
>Осталась проблемма фтп
>Статус: Сервер отправил пассивный ответ с неопределяемым адресом. Использую существующий адрес сервера.
>
>
>Сервер отдает клиенту фтп внутренний ип.

я использую

alias_ftp_load="YES" в loader.conf

и скрипт, кусок которого приведен ниже:

ipfw nat 1 config ip $IP_NATD1 same_ports
ipfw nat 2 config ip $IP_NATD2 same_ports \
redirect_port tcp 10.60.0.122:3389 3389 \
redirect_port tcp 10.60.0.122:4899 4899


ipfw add 04410 nat 1 all from any to $IP_NATD1 in via $IFACE
ipfw add 05410 nat 2 all from any to any in via $IFACE2
#
ipfw add 06050 nat 1 all from $IP_NATD1 to any out via $IFACE
ipfw add 06051 nat 1 all from $IP_NATD1 to any out via $IFACE2
#
ipfw add 06060 nat 2 all from $IP_NATD2 to any out via $IFACE
ipfw add 06061 nat 2 all from $IP_NATD2 to any out via $IFACE2
#
ipfw add 06100 nat 2 tcp from 10.60.0.122 3389 to any out
ipfw add 06105 nat 2 tcp from 10.60.0.122 4899 to any out
#
ipfw add 06110 nat 1 all from 10.60.0.0/24 to any out via $IFACE
#
ipfw add 06310 nat 2 all from 10.60.4.0/24 to any out via $IFACE
ipfw add 06315 nat 2 all from 10.60.4.0/24 to any out via $IFACE2
#
#
#
ipfw add 06910 allow ip from $IP_NATD1 to $IFACE_NET out via $IFACE
ipfw add 06911 fwd $IFACE_GW ip from $IP_NATD1 to any out via $IFACE
ipfw add 06912 fwd $IFACE_GW ip from $IP_NATD1 to any out via $IFACE2
#
ipfw add 06930 allow ip from $IP_NATD2 to $IFACE2_NET out via $IFACE2
ipfw add 06931 fwd $IFACE2_GW ip from $IP_NATD2 to any out via $IFACE
ipfw add 06932 fwd $IFACE2_GW ip from $IP_NATD2 to any out via $IFACE2


(тут работает тема "фряха и два провайдера". На самом деле провайдеров - 4 :)