Почему меня выгнали из сеанса 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 .

Ответы:


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
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.