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

Исходное сообщение
"proftpd и непонятки с пассивным режимом"

Отправлено kokerman , 10-Июл-07 21:31 
Привет всем! Прошу вашей помощи!
Есть FreeBsd 6.1. Он выполняет роль шлюза между локальной сетью и интернетом. На нём есть: nat, ipfw, squid, netams и прочие дела. Также установлен Proftpd 1.3.0rc3, ставил из портов. Его конфиг:
ServerType            standalone
DefaultServer            on
ScoreboardFile            /var/run/proftpd.scoreboard
#ServerIdent off
RootLogin on

IdentLookups            off
UseReverseDNS        off

AllowRetrieveRestart        on
AllowStoreRestart        on

DefaultAddress 213.33.216.х

#Foregn adreses
AllowForeignAddress        on

#Safe Ports
PassivePorts            50000 50100

# Port 21 is the standard FTP port.
Port                21

# Umask 022 is a good standard umask to prevent new dirs and files
# from being group and world writable.
Umask                022

MaxInstances            30

# Set the user and group under which the server will run.
User                nobody
Group                nogroup

# To cause every FTP user to be "jailed" (chrooted) into their home
# directory, uncomment this line.
DefaultRoot ~ ftp, !wheel

# Normally, we want files to be overwriteable.
AllowOverwrite        on

# Messages on login
#DisplayConnect /etc/proftpd/ftp_connect.msg
#DisplayLogin /etc/proftpd/ftp_login.msg
AccessDenyMsg "ATTENTION!!! ALL CONNECTIONS LOGED"
AccessGrantMsg "Now apload/download files"
DisplayGoAway "Go Away"

# Time ranges
TimeoutIdle 10000

# Logs
DebugLevel 9
SyslogLevel debug #notice
TransferLog /var/log/proftpd-tranfer.log
SystemLog /var/log/proftpd-error.log
ExtendedLog /var/log/proftpd-extended.log read,write

# Bar use of SITE CHMOD by default
<Limit SITE_CHMOD>  
DenyAll
</Limit>

<Directory /usr/home/ftp>
  <Limit DELE>
    AllowUser root
    DenyAll
  </Limit>
</Directory>

<Directory /usr/home/ftp/cobalt_photo>
  <Limit DELE>
    AllowUser root
    DenyAll
  </Limit>
</Directory>

<Directory /usr/home/ftp/pub>
  <Limit WRITE>
    AllowUser root
    DenyAll
  </Limit>
  <Limit DELE>
    AllowUser root
    DenyAll
  </Limit>
</Directory>

В фаерволе стоят следующие правила (хотя перепробовал уже много всех разных):
02000 allow tcp from any to any established
02900 allow log tcp from any to 213.33.216.х dst-port 21
03000 allow log tcp from 213.33.216.х 21 to any
03500 allow log tcp from any to 213.33.216.х dst-port 50000-50100
03600 allow log tcp from 213.33.216.х 50000-50100 to any
Это то что связано с ftp. 213.33.216.х - внешний IP, на него настроена сетевушка смотрящая в инет.
Проблема в следующем: Не работает пассивный режим если я пытаюсь извне подключиться к своему серверу. Активный работает. Если подключаюсь из локальной сети то и активный и пассивный режимы работают.
При подключении извне FlashFXP пишет следующее:
[R] Connecting to 213.33.216.х -> IP=213.33.216.х PORT=21
[R] Connected to 213.33.216.х
[R] 220 ProFTPD 1.3.0rc3 Server  [213.33.216.х]
[R] USER ftp
[R] 331 Password required for ftp.
[R] PASS (hidden)
[R] 230 Now apload/download files
[R] SYST
[R] 215 UNIX Type: L8
[R] FEAT
[R] 211-Features:
[R]  MDTM
[R]  REST STREAM
[R]  SIZE
[R] 211 End
[R] PWD
[R] 257 "/" is current directory.
[R] TYPE A
[R] 200 Type set to A
[R] PASV
[R] 227 Entering Passive Mode (213,33,216,х,212,212)
[R] Opening data connection IP: 213.33.216.х PORT: 54484
[R] Data Socket Error: Connection timed out
[R] List Error
Помоему не срабатывает директива в конфиге PassivePorts. Диапазон портов пробовал расширять - не помогает. Но, если ставлю директиву MasqueradeAddress с IP сетевухи смотрящей в локальную сеть, то пассивный режим работает ТОЛЬКО если я подключаюсь из дома через моего домашнего провайдера! Никто другой всё равно не может в пассиве подключиться, вот лог:
[R] Connecting to 213.33.216.х -> IP=213.33.216.х PORT=21
[R] Connected to 213.33.216.х
[R] 220 ProFTPD 1.3.0rc3 Server  [193.125.255.х]
[R] USER ftp
[R] 331 Password required for ftp.
[R] PASS (hidden)
[R] 230 Now apload/download files
[R] SYST
[R] 215 UNIX Type: L8
[R] FEAT
[R] 211-Features:
[R]  MDTM
[R]  REST STREAM
[R]  SIZE
[R] 211 End
[R] PWD
[R] 257 "/" is current directory.
[R] TYPE A
[R] 200 Type set to A
[R] PASV
[R] 227 Entering Passive Mode (213,33,216,х,242,185)
[R] Opening data connection IP: 213.33.216.х PORT: 62137
[R] LIST -al
[R] 150 Opening ASCII mode data connection for file list
[R] 226 Transfer complete.
[R] List Complete: 697 bytes in 0,56 seconds (1,2 KB/s)
193.125.255.х - IP сетевухи смотрящей в локалку, и который я указываю в директиве MasquaradeAddress. Но в этом случае порт тоже не входит в сконфигурированный диапазон портов, но, всётаки подключается.
Спасибо всем кто сможет помочь советом. :)


Содержание

Сообщения в этом обсуждении
"proftpd и непонятки с пассивным режимом"
Отправлено pal , 11-Июл-07 08:47 
в фаере сделай:
03600 allow log tcp from any to any 50000-50100
И попробуй в /etc/rc.conf добавить:
ip_portrange_first=50000
ip_portrange_last=50100

А вообще сделай промежуток пассивных портов чуть по больше, тысячу например...
во-первых одновременных коннектов будет больше предусмотрено
во-вторых директивы ip_portrange_... в rc.conf действует для всего ip протокола, так что если будешь использовать мало портов, то теоретически жестко ограничишь количество одновременно открытых сокетов.


"proftpd и непонятки с пассивным режимом"
Отправлено kokerman , 11-Июл-07 10:52 
>в фаере сделай:
>03600 allow log tcp from any to any 50000-50100
>И попробуй в /etc/rc.conf добавить:
>ip_portrange_first=50000
>ip_portrange_last=50100
>
>А вообще сделай промежуток пассивных портов чуть по больше, тысячу например...
>во-первых одновременных коннектов будет больше предусмотрено
>во-вторых директивы ip_portrange_... в rc.conf действует для всего ip протокола, так что
>если будешь использовать мало портов, то теоретически жестко ограничишь количество одновременно
>открытых сокетов.

Привет!
Сделал, как ты говорил - не получается:
ftp> passive
Passive mode on.
ftp> ls
ftp: connect: Operation timed out
Это я пробую приконнектиться из шелла хостинговой компании. В логах вот что:
Jul 11 10:46:16 wolgate kernel: ipfw: 2900 Accept TCP 194.186.36.206:2262 213.33.216.х:21 in via ste1
Jul 11 10:46:32 wolgate kernel: ipfw: 3500 Accept TCP 194.186.36.206:2331 213.33.216.х:50443 in via ste1
Jul 11 10:46:42 wolgate last message repeated 3 times
Jul 11 10:46:45 wolgate kernel: ipfw: 3500 Accept TCP 194.186.36.206:2331 213.33.216.х:50443 in via ste1
ul 11 10:46:48 wolgate kernel: ipfw: 3500 Accept TCP 194.186.36.206:2331 213.33.216.х:50443 in via ste1


"proftpd и непонятки с пассивным режимом"
Отправлено kokerman , 11-Июл-07 11:19 
Забыл добавить: Если пробовать подключаться в пассиве много раз подряд (больше 10), то соединиться всё-таки получается.

"proftpd и непонятки с пассивным режимом"
Отправлено pal , 11-Июл-07 11:50 
>Забыл добавить: Если пробовать подключаться в пассиве много раз подряд (больше 10),
>то соединиться всё-таки получается.


Jul 11 10:46:32 wolgate kernel: ipfw: 3500 Accept TCP 194.186.36.206:2331 213.33.216.х:50443 in via ste1

Странно, открывается порт 50443, хотя ты указал промежуток 50000-50100...
После правки конфига proftpd перегружаешь или нет?


"proftpd и непонятки с пассивным режимом"
Отправлено kokerman , 11-Июл-07 14:21 
>>Забыл добавить: Если пробовать подключаться в пассиве много раз подряд (больше 10),
>>то соединиться всё-таки получается.
>
>
>Jul 11 10:46:32 wolgate kernel: ipfw: 3500 Accept TCP 194.186.36.206:2331 213.33.216.х:50443 in
>via ste1
>
>Странно, открывается порт 50443, хотя ты указал промежуток 50000-50100...
>После правки конфига proftpd перегружаешь или нет?

Я сделал как ты посоветовал: увеличил диапазон портов: 50000-51000.
Проблема в том что в логах security вроде как всё нормально - открывается порт из диапазона выделенных портов, но клиент коннектится не на него, даже не на порт попадающий в сконфигурированный диапазон, а куда то совсем в другой (см. пой певый пост с логом от flashFXP).


"proftpd и непонятки с пассивным режимом"
Отправлено kokerman , 11-Июл-07 14:23 
>>Забыл добавить: Если пробовать подключаться в пассиве много раз подряд (больше 10),
>>то соединиться всё-таки получается.
>
>
>Jul 11 10:46:32 wolgate kernel: ipfw: 3500 Accept TCP 194.186.36.206:2331 213.33.216.х:50443 in
>via ste1
>
>Странно, открывается порт 50443, хотя ты указал промежуток 50000-50100...
>После правки конфига proftpd перегружаешь или нет?


Перезагружаю конечно: killall -HUP proftpd или reload


"proftpd и непонятки с пассивным режимом"
Отправлено kokerman , 12-Июл-07 13:08 
Может дело в NAT?
Клиент пишет вот что:
ftp> debug
Debugging on (debug=1).
ftp> ls
---> EPSV
229 Entering Extended Passive Mode (|||45995|)
ftp: connect: Operation timed out

а в логах вот что:
Jul 12 13:05:26 wolgate kernel: ipfw: 2900 Accept TCP 194.186.36.206:4516 213.33.216.х:21 in via ste1
Jul 12 13:05:37 wolgate kernel: ipfw: 3500 Accept TCP 194.186.36.206:4600 213.33.216.х:50537 in via ste1
Jul 12 13:05:53 wolgate last message repeated 5 times

Т.е. идёт несоответствие открываемого порта сервером и порта на который коннектится клиент.


"proftpd и непонятки с пассивным режимом"
Отправлено kokerman , 12-Июл-07 17:53 
Вот что проделал:
Отключил правила в ipfw: firewall_type="OPEN", после этого пассивный режим заработал извне отовсюду, ура! Значит режет что то мой фаерволл, теперь знаю куда копать! Но, клиент всё равно подключался не в тот диапазон портов, получается директива PassivePorts не работает!???
Debugging on (debug=1).
ftp> ls
---> EPSV
229 Entering Extended Passive Mode (|||56575|)
---> LIST
150 Opening ASCII mode data connection for file list
-rw-r--r--   1 admin    admin     5715549 Jun 10 15:38 2_pac_-_ghetto_gospel.mp3
-rw-------   1 root     admin        5962 Jun 24 11:29 security.7.bz2
-rw-------   1 root     admin        8158 Jun 24 11:30 security.8.bz2
226 Transfer complete

"proftpd и непонятки с пассивным режимом"
Отправлено kokerman , 13-Июл-07 12:23 
Всё решилось, спасибо всем! Проблема была в NATе, а точнее в неправильных правилах фаерволла для него.

"proftpd и непонятки с пассивным режимом"
Отправлено Wagner , 23-Июн-12 21:00 
> Всё решилось, спасибо всем! Проблема была в NATе, а точнее в неправильных
> правилах фаерволла для него.

сейчас такая-же беда. Решение можно узнать?