Проблема с proftpd [SOLVED]

Всем привет! :)
Я столкнулся с неожиданной проблемой установив proftpd на новую машину с gentoo-linux. При попытке зайти на ftp с самой машины всё работает нормально. Но если входить с удалённой машины (любой) вход осуществляется нормально но не возможно выполнит многие простайшие команды, например dir. Выдаётся сообщение

500 Illegal PORT command
ftp: bind: Address already in use

Вот как это выглядит:

[kirx@epsilon ~]$ ftp МОЯ_МАШИНА.ru
Connected to МОЯ_МАШИНА.ru.
220 ProFTPD 1.3.0a Server (ProFTPD on МОЯ_МАШИНА.ru) [АЙПИ_МОЕЙ_МАШИНЫ]
500 AUTH not understood
Name (МОЯ_МАШИНА.ru:kirx): 
331 Password required for kirx.
Password:
230 User kirx logged in.
Remote system type is UNIX.
Using binary mode to transfer files.
ftp> pwd
257 "/" is current directory.
ftp> dir
500 Illegal PORT command
ftp: bind: Address already in use
ftp> 
ftp> 
ftp> 221 Goodbye.
[kirx@epsilon ~]$

Повторюсь, что при заходе на ФТП с самой машины (условно названной МОЯ_МАШИНА.ru) всё работает нормально. Фаервол на машине не установлен.

Если у кого-то есть мысли как решить эту проблему - буду очень признателен. :)

.

может в inetd или xinetd прописана строчка с каким-то фтп сервисом - может он мешает?

Не, это было-бы

Не, это было-бы слишком просто... :( Там inetd не запущен.

Нашёл на

Нашёл на каклм-то форуме совет добавить в proftpd.conf директиву
AllowForeignAddress on
Попробовал, и это действительно как-то повлияло: теперь пишет что "200 PORT command successful" но содержимое папки всё равно не показывает, уже с формулировкой: "425 Unable to build data connection: No route to host".

[kirx@epsilon winefk]$ ftp МОЯ_МАШИНА.ru
Connected to МОЯ_МАШИНА.ru.
220 ProFTPD 1.3.0a Server (ProFTPD on МОЯ_МАШИНА.ru) [АЙПИ_МОЕЙ_МАШИНЫ]
500 AUTH not understood
Name (МОЯ_МАШИНА.ru:kirx):
331 Password required for kirx.
Password:
230 User kirx logged in.
Remote system type is UNIX.
Using binary mode to transfer files.
ftp> dir
200 PORT command successful
425 Unable to build data connection: No route to host
ftp>
ftp> 221 Goodbye.
[kirx@epsilon winefk]$

Уф, теперь

Уф, теперь кажется всё работает!
Похоже проверяя командой ftp я не устанавливал пассивный режим, а без него с "серых" адресов ничего и не должно работать. Это на сколько я понял. Вот с таким proftpd.conf я стал счастливым:

ServerName                      "ProFTPD"
ServerType                      standalone
DefaultServer                   on
Port                            21
Umask                           022
MaxInstances                    30
User                            nobody
Group                           nogroup
DefaultRoot ~
IdentLookups  off
UseReverseDNS off
PassivePorts 60000 61000
AllowForeignAddress on
MasqueradeAddress       АЙПИ_АДРЕС_МОЕЙ_МАШИНЫ   # using an IP address
AllowOverwrite          on
<Anonymous ~ftp>
  User                          ftp
  Group                         ftp

  UserAlias                     anonymous ftp

  MaxClients                    10

  DisplayLogin                  welcome.msg
  DisplayFirstChdir             .message   

  <Limit READ CWD RETR CWD>
    AllowAll
  </Limit>  
  <Limit WRITE>
    DenyAll
  </Limit> 
  <Directory uploads/*>
   <Limit STOR MKD RMD XMKD XRMD>
    AllowAll
   </Limit> 
  </Directory>
</Anonymous> 

Порты 60000 61000 открыты.

ProFTPD

Не могу зайти на FTP сервер даже локальным пользователем. Настроил все по HOWTO: emerge -av proftpd с флагами -ipv6 ncurses pam ssl. Добавил группу и юзера. Скопировал файл proftpd.conf.sample в proftpd.conf. Открыл 21 порт: -A INPUT -p tcp -m state --state NEW -m tcp --dport 21 -j ACCEPT. Запустил proftpd -nd 4. При запуске сервер на конфиг не ругался. Вроде все путем. Вхожу рутом и юзером нормально, но НИ ОДНА команда не отрабатывает кроме pwd. На нее сервер бодро отвечает: ftp://localhost. Далее делаю ls ...тишина...и через некоторое время: Could not read reply from control connection -- timed out.
List failed. В логах сервера: localhost (localhost[127.0.0.1]) - dispatching PRE_CMD command 'PWD' to mod_tls
localhost (localhost[127.0.0.1]) - dispatching PRE_CMD command 'PWD' to mod_corelocalhost (localhost[127.0.0.1]) - dispatching PRE_CMD command 'PWD' to mod_corelocalhost (localhost[127.0.0.1]) - dispatching CMD command 'PWD' to mod_core
localhost (localhost[127.0.0.1]) - dispatching LOG_CMD command 'PWD' to mod_log . Где-то недокрутил, а где не знаю. Может кто встречался. P.S. Сервер обычный не анонимный.

Re: ProFTPD

voleyr написал(а):
List failed. В логах сервера: localhost (localhost[127.0.0.1]) - dispatching PRE_CMD command 'PWD' to mod_tls
localhost (localhost[127.0.0.1]) - dispatching PRE_CMD command 'PWD' to mod_corelocalhost (localhost[127.0.0.1]) - dispatching PRE_CMD command 'PWD' to mod_corelocalhost (localhost[127.0.0.1]) - dispatching CMD command 'PWD' to mod_core
localhost (localhost[127.0.0.1]) - dispatching LOG_CMD command 'PWD' to mod_log . P.S. Сервер обычный не анонимный.

1 Posadite ego na eth a ne na lo
2 USE="-ssl" dla proverki (mod_tls)(i minus lishnee vrode libclamav -
nastroite -dobavte)
3 polzovatela NE dolzno bit v /etc/ftpusers (root ne hodit na ftp)

Re: ProFTPD

slepnoga написал(а):
1 Posadite ego na eth a ne na lo
2 USE="-ssl" dla proverki (mod_tls)(i minus lishnee vrode libclamav -
nastroite -dobavte)
3 polzovatela NE dolzno bit v /etc/ftpusers (root ne hodit na ftp)

1. Не понял... Сервер посадить на eth ? Хост он и есть хост. "Зайти" на него можно через разные интерфейсы. Насколько я понимаю, команда ncftp localhost читает из /etc/hosts , а там естесно 127.0.0.1 localhost. Впрочем...Для чистоты эксперимента попробовал присвоить localhost свой IP - не прошло. Опять выпал по таймауту. Я до того, как сюда постить, уже пробовал зайти на сервер "криво" т.е. через тырнет (ncftp <мой_IP>) пускать-пускает, а дальше...бесполезно. Анамнез тот же. 2. Раза три перекомпиливал с разными флагами и без флагов-бесполезно. clamav и его библиотек вообще нет, в этом месте все чисто. 3. Ни юзера ftp, ни юзеров в /etc/ftpusers НЕТ (про root-а я не допер - мозги уже кипят). Права доступа на директории юзеров установил уже 777 (заходи кто хошь, делай чего хошь) :-D . Где накосячил не пойму. Какие еще есть мысли, советы?

Буквально

Буквально вчера пришлось мне пройтись ещё раз мордой по этим же граблям на другой машине. Хорошо что я уже привык. Итак, фишка в том что для работы по фтп нужно 2 (ДВА) открытых порта, для комманд (стандартный порт - 21) и для передачи данных (стандартный порт - 20). Так что если стоит задача "зайти по фтп к самому себе" проще всего открыть 20й порт. Если же стоит задача сделать фтп-сервер, нормально видимый из любой точки интернета то нужно чтобы фтп-демон умел использовать пассивный режим. Для этого ему надо выделить диапазон (почему?) портов и открыть их в файерволе.
Пример настройки proftpd в подобной ситуации есть тут:
http://www.castaglia.org/proftpd/doc/contrib/ProFTPD-mini-HOWTO-NAT.html

pocemu diapazonpo protokolu

pocemu diapazon
po protokolu FTP v pass rezime klient prosit okrit kakie-to porti
dla dannih, a ne rabotat 4erez 20 port,(po komande PORT server vidaet nomera c4erez kotorie budut idti dannie sootv kolvo portov ravno
(koli4estvo klientov)*(kolicestvo potokov zakacki na 1 klienta)
PS. pro 20 port nu eto klassika smotret /etc/services

Ну вот и

Ну вот и все...Проблема была в файрволе и решилась открытием ТОЛЬКО 21 порта и загрузкой модуля modprobe ip_conntrack_ftp. Модуль сам разруливает пакеты по портам и в активном режиме и в пассивном. Второй режим пока не опробовал, а в активном всё летает. Естественно, для автозагрузки модуля при старте системы стоит сделать: echo ip_conntrack_ftp >> /etc/modules.autoload.d/kernel-2.X

Modul

Modul mozno i sredstvami IPtables podgruzit opcija --modprobe

Настройки просмотра комментариев

Выберите нужный метод показа комментариев и нажмите "Сохранить установки".