The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]




Версия для распечатки Пред. тема | След. тема
Новые ответы [ Отслеживать ]
Как организовать FTP доступ к машине за firewall-ом ? , !*! Not, 09-Сен-03, 19:37  [смотреть все]
Добрый день!

После несколькодневного перелопачивания opennet решился спросить у All.
Имеется: гейтвей на FreeBSD 4.8? на котором подняты nat + ipfw (уже все настроено)
Проблема в следующем: как можно организовать FTP доступ на машину, к-рая принадлежит внутренней сети, и не имеет реального IP? Притом, необходимо, чтобы и FTP гейтвея был доступен извне.
Пробую так: поднимаю на внутренней тачке FTP на 2121 порт. Алиасю его НАТом снаружи, так чтобы запросы на 2121-порт гейтвея редиректились на 2121-й внутренней тачки. Зараза, коннектится, но LIST не выдает. Ни в active ни в passive mode. Помогите плиз, как обойтись в этой ситуации?

Настройки:
natd.conf:
==========
unregistered_only yes
use_sockets yes
same_ports no
redirect_port tcp 192.168.0.100:2121 2121

rc.firewall:
============
oif - внешний интерфейс
oip - реальный IP смотрящий наружу
inet:imask - внутренняя сеть, 192.168.0.1/255.255.255.0
============
.....
${fwcmd} add divert natd all from any to any via ${oif}
${fwcmd} add divert natd tcp from any to ${oip} 2121 via ${oif}
${fwcmd} add divert natd udp from 192.168.0.100 to any via ${oif}
.....
${fwcmd} add fwd 127.0.0.1,3128 tcp from ${inet}:${imask} to any 80
${fwcmd} add pass tcp from any to any established
${fwcmd} add pass all from any to any frag
${fwcmd} add pass tcp from any to ${oip} 20,21,2121 setup
${fwcmd} add pass udp from any to ${oip} 1024-65534
${fwcmd} add pass tcp from any to ${oip} 22 setup
${fwcmd} add pass tcp from ${oip} 20,21,2121 to any
${fwcmd} add pass udp from ${oip} 20,21,2121 to any keep-state

${fwcmd} add pass tcp from any to any 20,21,2121 setup
${fwcmd} add pass tcp from any to any 1024-65534 setup
${fwcmd} add pass udp from any to any 20,21,2121 via ${oif}

${fwcmd} add pass tcp from any 20,21,2121 to any setup
${fwcmd} add pass tcp from any 1024-65534 to any setup
${fwcmd} add pass udp from any 20,21,2121 to any via ${oif}

${fwcmd} add pass tcp from ${inet}:${imask} to any 1024-65535 keep-state out xmit ${oif}
===================
Кстати, аналогичным образом http траффик можно завернуть с отдельного порта шлюза на 80-й той же самой тачки. А вот FTP - не получается.
При попытке продолбиться снаружи tcpdump выдал следующий набор пакетов (на внутреннем интерфейсе):

17:51:51.855495 x.x.x.x.63804 > 192.168.0.100.2121: F 47:47(0) ack 216 win 46666 (DF)
17:51:51.855680 192.168.0.100.2121 > x.x.x.x.63804: . ack 48 win 64194 (DF)
17:51:51.855993 192.168.0.100.2121 > x.x.x.x.63804: F 216:216(0) ack 48 win 64194 (DF)
17:51:51.856256 x.x.x.x.63808 > 192.168.0.100.2121: S 3863590945:3863590945(0) win 55808 <mss 1460,nop,wscale 2,nop,nop,sackOK> (DF)
17:51:51.856382 192.168.0.100.2121 > x.x.x.x.63808: S 441313523:441313523(0) ack 3863590946 win 64240 <mss 1460,nop,wscale 0,nop,nop,sackOK> (DF)
17:51:52.014858 x.x.x.x.63804 > 192.168.0.100.2121: . ack 217 win 46666 (DF)
17:51:52.015527 x.x.x.x.63808 > 192.168.0.100.2121: . ack 1 win 46720 (DF)
17:51:52.015777 192.168.0.100.2121 > x.x.x.x.63808: P 1:53(52) ack 1 win 64240 (DF)
17:51:52.070664 x.x.x.x.63808 > 192.168.0.100.2121: P 1:14(13) ack 53 win 46707 (DF)
17:51:52.070867 192.168.0.100.2121 > x.x.x.x.63808: P 53:88(35) ack 14 win 64227 (DF)
17:51:52.126475 x.x.x.x.63808 > 192.168.0.100.2121: P 14:26(12) ack 88 win 46698 (DF)
17:51:52.127021 192.168.0.100.2121 > x.x.x.x.63808: P 88:116(28) ack 26 win 64215 (DF)
17:51:52.226771 x.x.x.x.63808 > 192.168.0.100.2121: P 26:33(7) ack 116 win 46691 (DF)
17:51:52.227290 192.168.0.100.2121 > x.x.x.x.63808: P 116:145(29) ack 33 win 64208 (DF)
17:51:52.340067 x.x.x.x.63808 > 192.168.0.100.2121: P 33:41(8) ack 145 win 46684 (DF)
17:51:52.340292 192.168.0.100.2121 > x.x.x.x.63808: P 145:165(20) ack 41 win 64200 (DF)
17:51:52.432202 x.x.x.x.63808 > 192.168.0.100.2121: P 41:47(6) ack 165 win 46679 (DF)
17:51:52.432938 192.168.0.100.2121 > x.x.x.x.63808: P 165:216(51) ack 47 win 64194 (DF)
17:51:52.717575 x.x.x.x.63808 > 192.168.0.100.2121: . ack 216 win 46666 (DF)
===========================
где - x.x.x.x - реальный внешний адрес с которого шел запрос.

Помогите, пожалуйста. Видно, сказывается нехватка теоретических знаний.

  • Как организовать FTP доступ к машине за firewall-ом ? , !*! Dor, 17:52 , 10-Сен-03 (1)
    >Добрый день!
    >
    >После несколькодневного перелопачивания opennet решился спросить у All.
    >Имеется: гейтвей на FreeBSD 4.8? на котором подняты nat + ipfw (уже
    >все настроено)
    >Проблема в следующем: как можно организовать FTP доступ на машину, к-рая принадлежит
    >внутренней сети, и не имеет реального IP? Притом, необходимо, чтобы и
    >FTP гейтвея был доступен извне.
    >Пробую так: поднимаю на внутренней тачке FTP на 2121 порт. Алиасю его
    >НАТом снаружи, так чтобы запросы на 2121-порт гейтвея редиректились на 2121-й
    >внутренней тачки. Зараза, коннектится, но LIST не выдает. Ни в active
    >ни в passive mode. Помогите плиз, как обойтись в этой ситуации?
    >
    >
    >Настройки:
    >natd.conf:
    >==========
    >unregistered_only yes
    >use_sockets yes
    >same_ports no
    >redirect_port tcp 192.168.0.100:2121 2121
    >
    >rc.firewall:
    >============
    >oif - внешний интерфейс
    >oip - реальный IP смотрящий наружу
    >inet:imask - внутренняя сеть, 192.168.0.1/255.255.255.0
    >============
    >.....
    >${fwcmd} add divert natd all from any to any via ${oif}
    >${fwcmd} add divert natd tcp from any to ${oip} 2121 via ${oif}
    >
    >${fwcmd} add divert natd udp from 192.168.0.100 to any via ${oif}
    >.....
    >${fwcmd} add fwd 127.0.0.1,3128 tcp from ${inet}:${imask} to any 80
    >${fwcmd} add pass tcp from any to any established
    >${fwcmd} add pass all from any to any frag
    >${fwcmd} add pass tcp from any to ${oip} 20,21,2121 setup
    >${fwcmd} add pass udp from any to ${oip} 1024-65534
    >${fwcmd} add pass tcp from any to ${oip} 22 setup
    >${fwcmd} add pass tcp from ${oip} 20,21,2121 to any
    >${fwcmd} add pass udp from ${oip} 20,21,2121 to any keep-state
    >
    >${fwcmd} add pass tcp from any to any 20,21,2121 setup
    >${fwcmd} add pass tcp from any to any 1024-65534 setup
    >${fwcmd} add pass udp from any to any 20,21,2121 via ${oif}
    >
    >${fwcmd} add pass tcp from any 20,21,2121 to any setup
    >${fwcmd} add pass tcp from any 1024-65534 to any setup
    >${fwcmd} add pass udp from any 20,21,2121 to any via ${oif}
    >
    >${fwcmd} add pass tcp from ${inet}:${imask} to any 1024-65535 keep-state out xmit
    >${oif}
    >===================
    >Кстати, аналогичным образом http траффик можно завернуть с отдельного порта шлюза на
    >80-й той же самой тачки. А вот FTP - не получается.
    >
    >При попытке продолбиться снаружи tcpdump выдал следующий набор пакетов (на внутреннем интерфейсе):
    >
    >
    >17:51:51.855495 x.x.x.x.63804 > 192.168.0.100.2121: F 47:47(0) ack 216 win 46666 (DF)
    >17:51:51.855680 192.168.0.100.2121 > x.x.x.x.63804: . ack 48 win 64194 (DF)
    >17:51:51.855993 192.168.0.100.2121 > x.x.x.x.63804: F 216:216(0) ack 48 win 64194 (DF)
    >17:51:51.856256 x.x.x.x.63808 > 192.168.0.100.2121: S 3863590945:3863590945(0) win 55808 <mss 1460,nop,wscale 2,nop,nop,sackOK> (DF)
    >17:51:51.856382 192.168.0.100.2121 > x.x.x.x.63808: S 441313523:441313523(0) ack 3863590946 win 64240 <mss 1460,nop,wscale 0,nop,nop,sackOK> (DF)
    >17:51:52.014858 x.x.x.x.63804 > 192.168.0.100.2121: . ack 217 win 46666 (DF)
    >17:51:52.015527 x.x.x.x.63808 > 192.168.0.100.2121: . ack 1 win 46720 (DF)
    >17:51:52.015777 192.168.0.100.2121 > x.x.x.x.63808: P 1:53(52) ack 1 win 64240 (DF)
    >17:51:52.070664 x.x.x.x.63808 > 192.168.0.100.2121: P 1:14(13) ack 53 win 46707 (DF)
    >17:51:52.070867 192.168.0.100.2121 > x.x.x.x.63808: P 53:88(35) ack 14 win 64227 (DF)
    >17:51:52.126475 x.x.x.x.63808 > 192.168.0.100.2121: P 14:26(12) ack 88 win 46698 (DF)
    >17:51:52.127021 192.168.0.100.2121 > x.x.x.x.63808: P 88:116(28) ack 26 win 64215 (DF)
    >17:51:52.226771 x.x.x.x.63808 > 192.168.0.100.2121: P 26:33(7) ack 116 win 46691 (DF)
    >17:51:52.227290 192.168.0.100.2121 > x.x.x.x.63808: P 116:145(29) ack 33 win 64208 (DF)
    >17:51:52.340067 x.x.x.x.63808 > 192.168.0.100.2121: P 33:41(8) ack 145 win 46684 (DF)
    >17:51:52.340292 192.168.0.100.2121 > x.x.x.x.63808: P 145:165(20) ack 41 win 64200 (DF)
    >17:51:52.432202 x.x.x.x.63808 > 192.168.0.100.2121: P 41:47(6) ack 165 win 46679 (DF)
    >17:51:52.432938 192.168.0.100.2121 > x.x.x.x.63808: P 165:216(51) ack 47 win 64194 (DF)
    >17:51:52.717575 x.x.x.x.63808 > 192.168.0.100.2121: . ack 216 win 46666 (DF)
    >===========================
    >где - x.x.x.x - реальный внешний адрес с которого шел запрос.
    >
    >Помогите, пожалуйста. Видно, сказывается нехватка теоретических знаний.
    а где поток данных для управляющего потока на порту 2121?
    его тоже нужно маппить... так как в пассив моде порт не известен, то маппить придется 20 порт(актив мода), перед этим выключить локальный ftp.





Партнёры:
PostgresPro
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2024 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру