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

Исходное сообщение
"Как правильно пробросить фтп"

Отправлено BigElph , 12-Авг-04 16:52 
Пытаюсь пробросить через FreeBSD 4.10 внутрь фтп на винду. В ipfw сделал форвард пакетов с внешнего интерфейса порты 20,21 внутрь на локальные левые адреса и те же 20,21 порт. Результат: идет счетчик на ipfw, но фтп на винде напрочь не ловит никаких пакетов. Было дело стоял файрвол на винде, тот регистрировал, что пакеты приходят, но винда делает вид, что пакеты транзитные и никак их не обрабатывает.

Где я не прав и что можно сделать? :)


Содержание

Сообщения в этом обсуждении
"Как правильно пробросить фтп"
Отправлено Sergey , 12-Авг-04 23:47 
Дело в том, что при форварде у пакетов не меняется dest-addr и поэтому винда думает, что этот пакет не предназначен ей. Для внутреннего прокидывания можно использовать опцию redirect_port в нате. Я сам сегодня столкнулся с подобной проблемой, но несколько посложнее... Мне надо прокидывать наоборот. Т.е. из insid'а в outside. Т.е. грубо говоря надо уметь менять dest-addr исходящего пакета. Как и чем это можно сделать?

>Пытаюсь пробросить через FreeBSD 4.10 внутрь фтп на винду. В ipfw сделал
>форвард пакетов с внешнего интерфейса порты 20,21 внутрь на локальные левые
>адреса и те же 20,21 порт. Результат: идет счетчик на ipfw,
>но фтп на винде напрочь не ловит никаких пакетов. Было дело
>стоял файрвол на винде, тот регистрировал, что пакеты приходят, но винда
>делает вид, что пакеты транзитные и никак их не обрабатывает.
>
>Где я не прав и что можно сделать? :)



"Как правильно пробросить фтп"
Отправлено beep , 13-Авг-04 08:06 
rinetd - делает форвардинг пакетов хоть куда

"Как правильно пробросить фтп"
Отправлено reticon , 13-Авг-04 08:37 
>rinetd - делает форвардинг пакетов хоть куда

он вроде не поддерживает форвардинг фтп


"Как правильно пробросить фтп"
Отправлено beep , 13-Авг-04 10:53 
перекидывает всё по IP хоть куда, TCP точно работает - без разницы для какого сервиса. юзай на здоровье :)

"Как правильно пробросить фтп"
Отправлено alk , 13-Авг-04 11:11 
Sergey прав если стои natd то надо
-redirect_port tcp IP_dst(WIN):20-21 20-21
а проблему  inside outside я не понял если у тебя стоит nat то
он и меняет dst_addr что ты хочешь объясни подробнее?

"Как правильно пробросить фтп"
Отправлено Sergey , 13-Авг-04 15:09 
Объясняю... Есть два компа. Фрюха1 и Фрюха2. Пользователи подключены к Фрюхе2 и шлют пакеты к ней на ethernet. Фрюха1 находится в другой подсети и соединена с Фрюхой2. Я хочу, чтобы пользователи общались на самом деле с фрюхой1, но при этом думали, что общаются с фрюхой2. (т.е. они как бы посылают пакет на локальный адрес тачки Фрюха2, а он приходит на тачку Фрюха1 и эта тачка шлёт назад ответ). Если я делаю простой форвардинг с фрюхи2 на фрюху1, то фрюха1 игнорирует этот пакет, т.к. dest-ip остаётся локальным адресом фрюхи2. Т.е. проброс пакетов происходит без nat'а. Можно конечно сделать это используя nat, но тогда у пользователей подключенных к Фрюхе2 придётся писать gateway или добавлять строку роутинга (а этого бы не хотелось).

>Sergey прав если стои natd то надо
> -redirect_port tcp IP_dst(WIN):20-21 20-21
>а проблему  inside outside я не понял если у тебя стоит
>nat то
>он и меняет dst_addr что ты хочешь объясни подробнее?


"Как правильно пробросить фтп"
Отправлено A Clockwork Orange , 13-Авг-04 15:14 
а запустить на внунтреннем интерфейсе FreeBSD2 natd и сделать при помощи него редирект на FreeBSD1 ?

"Как правильно пробросить фтп"
Отправлено Sergey , 13-Авг-04 15:18 
Нат по сути меняет source-ip. Менять dest-ip он может только в случае, если пакет приходит на Фрюху2 и его надо перебросить на пользователя. Если же надо, чтобы пакет от пользователя ушёл на другой ip с подменой dest-addr, то я не знаю как это сделать средствами natd.

>а запустить на внунтреннем интерфейсе FreeBSD2 natd и сделать при помощи него
>редирект на FreeBSD1 ?



"Как правильно пробросить фтп"
Отправлено A Clockwork Orange , 13-Авг-04 15:33 
так над на внтуреннем интерфейсе
пользователь обращается к FreeBSВ2 на 21 порт, нат делает редирект 21 порта на FreeBSD1 (такие пакеты не должны натится на внешнем интерфейсе), FreeBSD1 получил пакет ip_src_клиента_ ip_dst_адрес FreeBSD1__со_стороны_FreeBSD2, отвечает пакет идет ip_src_адрес FreeBSD1__со_стороны_FreeBSD2, ip_dst_клиента, проходит через внешний интерфейс FreeBSD2 попадает на на внутреннией интерфейс и меняет ip_src на адрес внетренний адрес FreeBSD2.
Где то так, что хотел то и получил

"Как правильно пробросить фтп"
Отправлено Sergey , 13-Авг-04 15:41 
Да, всё правильно. Спасибо =) А то я уже начал мудрить с туннелями ))) Сегодня вечером попробую эту схему.

"Как правильно пробросить фтп"
Отправлено BigElph , 17-Авг-04 20:37 
>rinetd - делает форвардинг пакетов хоть куда

Форвард - это конечно хорошо, вот только какую я наблюдаю картину.
Делаю пересылку с 192.168.0.1 20 и 21 на 192.168.0.50 20 и 21.
Фтп сервак на винде воспринимает внешние пакеты как будто они все с адреса 192.168.0.1, я так понимаю, что и ответы он шлет обратно...Потому как ни в прямом, ни в пассивном режиме фтп обратно не получить ни файлов ни даже команды ls. Просто таймаут какбудто ничего не возвращается. Думаю, что так и есть. По-этому еще жду советов :)


"Как правильно пробросить фтп"
Отправлено BigElph , 26-Авг-04 20:13 
Ни у кого нет вариантов? :)


"Как правильно пробросить фтп"
Отправлено Byr , 01-Сен-04 17:39 
>Ни у кого нет вариантов? :)
попробуй ftp-proxy из состава ipf

"Как правильно пробросить фтп"
Отправлено A Clockwork Orange , 01-Сен-04 17:54 
а почему не redirect_port?

"Как правильно пробросить фтп"
Отправлено alk , 02-Сен-04 10:18 
ipfw sh покажи



"Как правильно пробросить фтп"
Отправлено Arifolth , 02-Сен-04 11:35 
>>rinetd - делает форвардинг пакетов хоть куда
>
>Форвард - это конечно хорошо, вот только какую я наблюдаю картину.
>Делаю пересылку с 192.168.0.1 20 и 21 на 192.168.0.50 20 и 21.
>
>Фтп сервак на винде воспринимает внешние пакеты как будто они все с
>адреса 192.168.0.1, я так понимаю, что и ответы он шлет обратно...Потому
>как ни в прямом, ни в пассивном режиме фтп обратно не
>получить ни файлов ни даже команды ls. Просто таймаут какбудто ничего
>не возвращается. Думаю, что так и есть. По-этому еще жду советов
>:)
есть такая прога супер-пупер демон - xinetd =)))
может применяться для пересылки пакета тисипи с хоста/порта на другой хост/порт
могу пример конфига дать
это нужно или я чего-то не понял?

"Как правильно пробросить фтп"
Отправлено BigElph , 02-Сен-04 13:16 
>есть такая прога супер-пупер демон - xinetd =)))
>может применяться для пересылки пакета тисипи с хоста/порта на другой хост/порт
>могу пример конфига дать
>это нужно или я чего-то не понял?

Нужно просто - чтоб снаружи из интернета можно было войти в фтп, коий находится во внутренней сети с левыми адресами.
Пользуюсь rinetd
81.x.x.x 21 10.0.0.50 21
81.x.x.x 20 10.0.0.50 20
81.x.x.x 2048-2096 10.0.0.50 2048-2096
в настройках фтп то же самое указано.

в файрволе разрешено
01900  8952744 1228918252 allow ip from me to any
02000  3881047 3867827387 allow ip from any to me


"Как правильно пробросить фтп"
Отправлено Arifolth , 09-Сен-04 15:34 
>>есть такая прога супер-пупер демон - xinetd =)))
>>может применяться для пересылки пакета тисипи с хоста/порта на другой хост/порт
>>могу пример конфига дать
>>это нужно или я чего-то не понял?
>
>Нужно просто - чтоб снаружи из интернета можно было войти в фтп,
>коий находится во внутренней сети с левыми адресами.
>Пользуюсь rinetd
>81.x.x.x 21 10.0.0.50 21
>81.x.x.x 20 10.0.0.50 20
>81.x.x.x 2048-2096 10.0.0.50 2048-2096
>в настройках фтп то же самое указано.
>
>в файрволе разрешено
>01900  8952744 1228918252 allow ip from me to any
>02000  3881047 3867827387 allow ip from any to me

значит так:
во-первых:я так и не понял чё те нада
во-вторых:
для того чтобы пробросить входящие соединения с внешнего интерфейса во внутреннюю сеть на другой хост(внутренняя сеть са мо са бой на др интерфейсе):
фаерволом ipfw разрешить соединения с портом на внешнем интерфейсе брэндмауэра(хе-хе);
поставить xinetd и заставить слушать его на этом порту:
его конфиг:

defaults
{
instances = 25
log_type = FILE /var/log/servicelog
log_on_success = HOST PID
log_on_failure = HOST
per_source = 5
}
service mredir
{
disable = no
port = 1035              #порт на котором слушаем
bind = 195.131.2.6       #куда вешаемся
socket_type = stream     #tcp
protocol = tcp           #tcp
user = root
redirect = 192.168.255.200 1033 #куда перенаправляем хост/порт
type = UNLISTED
wait = no
}

подробнее - man xinetd, man xinetd.conf
вообщем примерно так