Чому мене виганяють із сеансу 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, він відображається як і будь-яка інша машина в локальній мережі.
Thorbjørn Ravn Andersen

0

Додайте або увімкніть цей рядок у /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.