Пытаюсь пробросить через FreeBSD 4.10 внутрь фтп на винду. В ipfw сделал форвард пакетов с внешнего интерфейса порты 20,21 внутрь на локальные левые адреса и те же 20,21 порт. Результат: идет счетчик на ipfw, но фтп на винде напрочь не ловит никаких пакетов. Было дело стоял файрвол на винде, тот регистрировал, что пакеты приходят, но винда делает вид, что пакеты транзитные и никак их не обрабатывает.Где я не прав и что можно сделать? :)
Дело в том, что при форварде у пакетов не меняется dest-addr и поэтому винда думает, что этот пакет не предназначен ей. Для внутреннего прокидывания можно использовать опцию redirect_port в нате. Я сам сегодня столкнулся с подобной проблемой, но несколько посложнее... Мне надо прокидывать наоборот. Т.е. из insid'а в outside. Т.е. грубо говоря надо уметь менять dest-addr исходящего пакета. Как и чем это можно сделать?>Пытаюсь пробросить через FreeBSD 4.10 внутрь фтп на винду. В ipfw сделал
>форвард пакетов с внешнего интерфейса порты 20,21 внутрь на локальные левые
>адреса и те же 20,21 порт. Результат: идет счетчик на ipfw,
>но фтп на винде напрочь не ловит никаких пакетов. Было дело
>стоял файрвол на винде, тот регистрировал, что пакеты приходят, но винда
>делает вид, что пакеты транзитные и никак их не обрабатывает.
>
>Где я не прав и что можно сделать? :)
rinetd - делает форвардинг пакетов хоть куда
>rinetd - делает форвардинг пакетов хоть кудаон вроде не поддерживает форвардинг фтп
перекидывает всё по IP хоть куда, TCP точно работает - без разницы для какого сервиса. юзай на здоровье :)
Sergey прав если стои natd то надо
-redirect_port tcp IP_dst(WIN):20-21 20-21
а проблему inside outside я не понял если у тебя стоит nat то
он и меняет dst_addr что ты хочешь объясни подробнее?
Объясняю... Есть два компа. Фрюха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 что ты хочешь объясни подробнее?
а запустить на внунтреннем интерфейсе FreeBSD2 natd и сделать при помощи него редирект на FreeBSD1 ?
Нат по сути меняет source-ip. Менять dest-ip он может только в случае, если пакет приходит на Фрюху2 и его надо перебросить на пользователя. Если же надо, чтобы пакет от пользователя ушёл на другой ip с подменой dest-addr, то я не знаю как это сделать средствами natd.>а запустить на внунтреннем интерфейсе FreeBSD2 natd и сделать при помощи него
>редирект на FreeBSD1 ?
так над на внтуреннем интерфейсе
пользователь обращается к FreeBSВ2 на 21 порт, нат делает редирект 21 порта на FreeBSD1 (такие пакеты не должны натится на внешнем интерфейсе), FreeBSD1 получил пакет ip_src_клиента_ ip_dst_адрес FreeBSD1__со_стороны_FreeBSD2, отвечает пакет идет ip_src_адрес FreeBSD1__со_стороны_FreeBSD2, ip_dst_клиента, проходит через внешний интерфейс FreeBSD2 попадает на на внутреннией интерфейс и меняет ip_src на адрес внетренний адрес FreeBSD2.
Где то так, что хотел то и получил
Да, всё правильно. Спасибо =) А то я уже начал мудрить с туннелями ))) Сегодня вечером попробую эту схему.
>rinetd - делает форвардинг пакетов хоть кудаФорвард - это конечно хорошо, вот только какую я наблюдаю картину.
Делаю пересылку с 192.168.0.1 20 и 21 на 192.168.0.50 20 и 21.
Фтп сервак на винде воспринимает внешние пакеты как будто они все с адреса 192.168.0.1, я так понимаю, что и ответы он шлет обратно...Потому как ни в прямом, ни в пассивном режиме фтп обратно не получить ни файлов ни даже команды ls. Просто таймаут какбудто ничего не возвращается. Думаю, что так и есть. По-этому еще жду советов :)
Ни у кого нет вариантов? :)
>Ни у кого нет вариантов? :)
попробуй ftp-proxy из состава ipf
а почему не redirect_port?
ipfw sh покажи
>>rinetd - делает форвардинг пакетов хоть куда
>
>Форвард - это конечно хорошо, вот только какую я наблюдаю картину.
>Делаю пересылку с 192.168.0.1 20 и 21 на 192.168.0.50 20 и 21.
>
>Фтп сервак на винде воспринимает внешние пакеты как будто они все с
>адреса 192.168.0.1, я так понимаю, что и ответы он шлет обратно...Потому
>как ни в прямом, ни в пассивном режиме фтп обратно не
>получить ни файлов ни даже команды ls. Просто таймаут какбудто ничего
>не возвращается. Думаю, что так и есть. По-этому еще жду советов
>:)
есть такая прога супер-пупер демон - xinetd =)))
может применяться для пересылки пакета тисипи с хоста/порта на другой хост/порт
могу пример конфига дать
это нужно или я чего-то не понял?
>есть такая прога супер-пупер демон - 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
>>есть такая прога супер-пупер демон - 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
вообщем примерно так