Почему меня выгнали из сеанса FTP после запуска команды?

12

Почему меня выгнали из сеанса FTP после запуска команды? Кажется, что после успешного входа в систему на сервере после выполнения команды, такой как «ls», появляется следующее (я включил часть ошибки в теги «[ERROR]»):

allen92@allen92-VirtualBox:~/Videos$ ftp -n ftp.FreeBSD.org
Connected to ftp.FreeBSD.org.
220 beastie.tdk.net FTP server (Version 6.00LS) ready.
ftp> user
(username) anonymous
331 Guest login ok, send your email address as password.
Password: 
230 Guest login ok, access restrictions apply.
Remote system type is UNIX.
Using binary mode to transfer files.
ftp> ls
[ERROR]
421 Service not available, remote server has closed connection
[ERROR]
ftp> 

Кажется, это происходит на любом удаленном FTP-сервере. Все работает нормально, когда я захожу на локальный компьютер и запускаю команды FTP. Если на самом деле ошибка «421» является общей ошибкой, есть ли способ выяснить источник проблемы? Любые выводы по этому вопросу будут оценены. Я не смог найти поддержки по этому конкретному вопросу. Кто-нибудь с подобной проблемой, пожалуйста, поделитесь своими мыслями.

ПРИМЕЧАНИЕ: у меня установлен VSFTPD .

AllenD
источник

Ответы:

13

Скорее всего, между вами и серверами, на которых проявляется симптом, имеется NAT-брандмауэр. (NAT-брандмауэры скрывают всю сеть за одним IP-номером).

Проблема заключается в том, что ftp хочет отправить данные, полученные в результате выполнения команды, в новом отдельном соединении TCP / IP, которое не может пройти через брандмауэр, потому что ему нужно перейти с сервера на вас, а вы скрыты за брандмауэром, который имеет Понятия не имею, что данные предназначены для вашей машины. Когда был разработан протокол FTP, многие современные устройства, такие как NAT-маршрутизатор (что стало необходимо, когда устройств было больше, чем доступных IP-адресов), еще не были изобретены.

Используйте pasvкоманду (может называться как-то по-другому на вашем клиенте), чтобы перейти к пассивному соединению, при котором соединения для передачи данных передаются от вас к серверу.

См. Http://slacksite.com/other/ftp.html для более подробного объяснения.

Турбьерн Равн Андерсен
источник
Большое спасибо. В случае VSFTPD команда для входа в пассивный режим является «пассивной». Кажется, сейчас это работает. Я думаю, что вся эта ситуация связана с тем, что я запускаю установку Linux на виртуальной машине и ее нестандартные настройки. Я собираюсь выяснить, как включить «пассивный» режим по умолчанию. Как только я узнаю, я отправлю сообщение для всех, кто заинтересован.
AllenD
Весьма распространено, что сетью по умолчанию для виртуальных машин является своего рода NAT, поэтому машина не отображается. Для VirtualBox изменение на Bridged заставляет его показываться как любая другая машина в локальной сети.
Турбьёрн Равн Андерсен
-1

Добавьте или включите эту строку в /etc/vsftpd.conf

seccomp_sandbox = НЕТ

Андрей Севчникар
источник
Этот ответ решил мою проблему, но у меня все еще есть вопросы по поводу этой недокументированной конфигурации.
A1rPun
Почему seccomp_sandbox=NOправильный ответ при определенных обстоятельствах задокументирован в /etc/vsftpd.confфайле: `` `# seccomp_sanbox добавить дополнительный уровень безопасности, ограничивающий количество # системных вызовов, можно выполнить через vsftpd. Однако может случиться, что белый список # не разрешит допустимый вызов (обычно косвенно инициируемый сторонней библиотекой #, например, pam или openssl), и процесс останавливается ядром. # # Поэтому, если ваш сервер умирает в обычных ситуациях (загрузка файла, выгрузка), # раскомментируйте следующую строку и не забудьте открыть ошибку на # bugzilla.novell.com se
GSchukat