Привет всем! Прошу вашей помощи!
Есть FreeBsd 6.1. Он выполняет роль шлюза между локальной сетью и интернетом. На нём есть: nat, ipfw, squid, netams и прочие дела. Также установлен Proftpd 1.3.0rc3, ставил из портов. Его конфиг:
ServerType standalone
DefaultServer on
ScoreboardFile /var/run/proftpd.scoreboard
#ServerIdent off
RootLogin onIdentLookups off
UseReverseDNS offAllowRetrieveRestart on
AllowStoreRestart onDefaultAddress 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 022MaxInstances 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. Но в этом случае порт тоже не входит в сконфигурированный диапазон портов, но, всётаки подключается.
Спасибо всем кто сможет помочь советом. :)
в фаере сделай:
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 протокола, так что если будешь использовать мало портов, то теоретически жестко ограничишь количество одновременно открытых сокетов.
>в фаере сделай:
>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
Забыл добавить: Если пробовать подключаться в пассиве много раз подряд (больше 10), то соединиться всё-таки получается.
>Забыл добавить: Если пробовать подключаться в пассиве много раз подряд (больше 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 перегружаешь или нет?
>>Забыл добавить: Если пробовать подключаться в пассиве много раз подряд (больше 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).
>>Забыл добавить: Если пробовать подключаться в пассиве много раз подряд (больше 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
Может дело в 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Т.е. идёт несоответствие открываемого порта сервером и порта на который коннектится клиент.
Вот что проделал:
Отключил правила в 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
Всё решилось, спасибо всем! Проблема была в NATе, а точнее в неправильных правилах фаерволла для него.
> Всё решилось, спасибо всем! Проблема была в NATе, а точнее в неправильных
> правилах фаерволла для него.сейчас такая-же беда. Решение можно узнать?