Как настроить vsftpd на virtualbox? 500 Illegal PORT command [Решено]

Изображение пользователя Dexel.

Здравствуйте.
Порты проброшены на виртуалке:
tcp 127.0.0.1:55021 на 10.0.2.15:21

ifconfig на госте:

На хост машине в /etc/hosts:
127.0.0.1 ubuntu

$ ftp ubuntu 55021
Connected to localhost.
220 (vsFTPd 3.0.2)
Name (ubuntu:dexel): dextral
331 Please specify the password.
Password:
230 Login successful.
Remote system type is UNIX.
Using binary mode to transfer files.
ftp> dir
<b>500 Illegal PORT command.
ftp: bind: Address already in use
</b>ftp> ls
<b>500 Illegal PORT command.</b>
ftp>

Конфиг:
listen=YES
anonymous_enable=NO
local_enable=YES
dirmessage_enable=YES
use_localtime=YES
xferlog_enable=YES
connect_from_port_20=YES
secure_chroot_dir=/var/run/vsftpd/empty
userlist_enable=YES
userlist_file=/etc/ftpusers
pam_service_name=vsftpd
rsa_cert_file=/etc/ssl/certs/ssl-cert-snakeoil.pem
rsa_private_key_file=/etc/ssl/private/ssl-cert-snakeoil.key

+2
MacLeod - 13 Апрель, 2014 - 16:19
Изображение пользователя MacLeod.

Почитайте про работу FTP протокола, для начала. Соединение на порт 21 является только управляющим, данные идут по отдельным соединениям.
Используйте sftp. Оно же передача файлов через ssh, есть отдельная команда scp (аналог cp для копирования), ставить дополнительно ничего не нужно.

0
lord_i - 14 Апрель, 2014 - 08:43
Изображение пользователя lord_i.

Настройка vsftpd имеет массу нюансов и, как правильно заметил уважаемый MacLeod, одного порта может быть недостаточно. Если в двух словах - есть два режима работы фтп сервера. Активный - это когда после удачного хендшейка для передачи данных сервер соединяется с открытым портом клиента, и пассивный - это когда сервер предоставляет клиенту порт для соединения. Активный режим далеко не всегда подходит клиенту - многие сидят за натом и открыть порт для передачи данных не в состоянии. Для нормальной работы пассивного режима сервера необходимо дополнительно прокинуть порт (пул портов) для передачи данных. Ну и, соответственно, включить пассивный режим в vsftpd. Как-то так:
pasv_enable=YES
pasv_min_port=60000
pasv_max_port=60100
pasv_address=your.ip.addres

Хочу заметить, что vsftpd - весьма надежная и стабильная программа. Есть также, ее форк с очень приятными фичами, которых нет в оригинале.
Вобщем, как по мне, vsftpd очень достойный выбор.
ЗЫ Поддерживает ssl шифрование хендшейка и трафика.
ЗЫЫ to MacLeod: по поводу sftp - достаточно часто пользователю требуется классический фтп.

0
Dexel - 14 Апрель, 2014 - 09:48
Изображение пользователя Dexel.

Да, про диапазон портов min_port..max_port читал. Но не доходит как диапазон сделать на virtualbox. В нём один порт можно пробросить. NAT включен на виртуалке. И пассивный режим я включал прежде чем написать вопрос, и диапазон портов mix_max в конфиге, а толку если в виртуалке они не проброшены.
MacLeod, мерси за совет с sftp, работает. FTP хочу ;)
Как диапазон портов пробросить на виртуалке?

0
lord_i - 14 Апрель, 2014 - 11:17
Изображение пользователя lord_i.

В Виртуалбоксе из гуя - по одному я думаю. Делается один раз... Предполагается одновременно много клиентов для фтп? На каждого по одному порту вполне достаточно.

0
Dexel - 14 Апрель, 2014 - 17:12
Изображение пользователя Dexel.

Какие?
Один уже пробрасывал, до фени.
Диапазон пробросить нужно.
Один клиент, ну два. А портов на два клиента сколько нужно? Сто или 200?
Какие, как пробрасывать?

0
MacLeod - 14 Апрель, 2014 - 14:03
Изображение пользователя MacLeod.

Начните с простого. Сделайте "виртуальный адаптер хоста" (чтобы были прямые подключения в отдельной подсети, пока без NAT), в гесте настройте FTP, попробуйте подключаться к нему и смотреть, что происходит, какие подключения и на какие порты. Потом попробуйте на хосте поднять прокси, потом NAT. Когда вы все это пощупаете руками и поймете суть, для вас не будет никакой проблемы делать пробросы =)
to Lord_i: я же не спорю, но в случае ТСа это был самый простой способ :)

0
Dexel - 14 Апрель, 2014 - 17:17
Изображение пользователя Dexel.

Смотреть то как? Куда? На системник? :)
Пробрасывать нужно хотябы потому, что хост-машина тоже имеет ftp вход, с 21 порта. А виртуалка сама по себе вообще не видит что происходит снаружи, на хост-машине те.
Вот и нужно пробросить. Чё, куда, хез.
Если переключить в виртуалке на "виртуальный адаптер хоста", то ошибка высвечивается "Не вырбан сетевой адаптер хоста".
И селектор пустой при этом. Т.е. не из чего выбрать.

0
MacLeod - 15 Апрель, 2014 - 09:49
Изображение пользователя MacLeod.

Если переключить в виртуалке на "виртуальный адаптер хоста", то ошибка высвечивается "Не вырбан сетевой адаптер хоста". И селектор пустой при этом.
В главном окне Файл -> Настройки -> Сеть -> Виртуальные сети хоста.

Смотреть то как? Куда? На системник? :)
Ну, можно, конечно, и так...)
А можно использовать netstat, wireshark, iptables и т.д.
Я не говорил конкретное решение, я говорил, как можно получить много опыта с сетями и начать понимать, как оно работает :)

0
Dexel - 15 Апрель, 2014 - 13:53
Изображение пользователя Dexel.

как можно получить много опыта с сетями и начать понимать, как оно работаетЭто главная моя цель.
Если б проблема была пересылке файлов, мне бы общей папки, или sftp хватило.
Вот бы книжку в PDF типа "Грэм Гласс, Кинг Эйблс. Unix для программистов и пользователей" кто посоветовал. В указанной - хрен ночевал в плане сетевого администрирования :(

+1
MacLeod - 15 Апрель, 2014 - 14:30
Изображение пользователя MacLeod.

Можно и книжку поискать, а можно и спрашивать у гугла, причем прямым текстом, вроде "как поднять NAT в linux", "настройка сетевых интерфейсов linux", "настройка роутера iptables" и т.д. Результатом будет куча статей и блогов, где много чего можно почерпнуть, ну а более подробно по командам почитать в man.
Изучите ifconfig, netstat (очень мощное средство, с кучей параметров и возможностей), iptables на примерах, экспериментируя на виртуальных сетях vbox, а там и книжки не понадобятся.

0
Dexel - 18 Апрель, 2014 - 18:23
Изображение пользователя Dexel.

Спасибо за напутствие, вместо медвежьей услуги :)
Сделал FTP.
Наружная сеть гостя через NAT.
Внутренняя - виртуальный адаптер vboxnet0 со статическим ip.
Маска 24, в одной подсети получается виртуалка, за счёт этого диапазон адресов открыт, вместо проброса портов как раннее делал.
И прописан этот статический ip в hosts хост-машины.
Вобщем interfaces хост-машины:

interfaces гость-машины:

ifconfig -a хост-машины:

ifconfig гость-машины:

Всё работает. Не уверен что правильно.
Статический адрес интерфейса 192.168.56.1 у хост-машины? Тогда откуда в ifconfig хост-машины диапазон 0..255 - не понятно. Вот здесь:
inet addr:192.168.56.1 Bcast:192.168.56.255
так понимаю Bcast означает максимальный ip по которому можно обратиться к виртуалке? А маска 24 означает что вся подсеть от 192.168.56.0 до 192.168.56.255 доступна хост-машине, и сие будет виртуалка? хез, не понятен момент :(

0
Dexel - 18 Апрель, 2014 - 23:22
Изображение пользователя Dexel.

PS. Вдруг кому понадобится...
После перезагрузки инет на хост-машине отсутствует.
Лечение.
Вычистить нах секцию касающуюся vboxnet0. Оставить только кольцевой интерфейс, т.е. то что было изкоробочно.
У меня:
auto lo
iface lo inet loopback

Создать интерфейс командой:
# vboxmanage hostonlyif create ipconfig vboxnet0 --ip 192.168.56.1 --netmask 255.255.255.0
На всякий случай приведу команду удаления:
# vboxmanage hostonlyif remove vboxnet1
Просмотр:
vboxmanage list hostonlyifs
Вот что получается:
Name:            vboxnet0
GUID:            786f6276-656e-4074-8000-0a0027000000
DHCP:            Disabled
IPAddress:       192.168.56.1
NetworkMask:     255.255.255.0
IPV6Address:    
IPV6NetworkMaskPrefixLength: 0
HardwareAddress: 0a:00:27:00:00:00
MediumType:      Ethernet
Status:          Down

Далее после первого запуска виртуалки, статус из Down установится в Up.

Большое спасибо MacLeod.

+1
MacLeod - 19 Апрель, 2014 - 00:42
Изображение пользователя MacLeod.

Подсеть /24 - это класс С, пространством в 256.
Для сети 192.168.56.0/24 это диапазон от 192.168.56.1 до 192.168.56.254, не забывайте, 192.168.56.0 служит названием, а 192.168.56.255 - бродкаст (широковещательный) адрес.
Естественно, класс С может быть во многих других диапазонах, например 192.168.57.0/24, 172.16.1.0/24, 10.0.0.0/24 (диапазоны для частных сетей) или во внешней сети.
Виртуальный адаптер виртуалбокса - можете представить его как отдельную сетевую карточку в компе. Раздавая интернет через NAT гостевой машине, у вас хост превращается в маршрутизатор с двумя сетевыми карточками. Одна "смотрит" во внешний мир, другая - туда, где виртуалка(и). Если виртуальных (или, допустим, реальных) машин в вашем диапазоне было бы больше - они все видели бы друг друга напрямую.
Ну, и, судя по вашим конфигам, eth0 на вашем гесте - лишний, он получает адрес от виртуального маршрутизатора с DHCP виртуалбокса, но, по сути никак не используется.

0
Dexel - 19 Апрель, 2014 - 03:54
Изображение пользователя Dexel.

Аналогично настроил вторую виртуалку, 12.04 server.
По логике да, eth0 не нужен. Только нет наружной сети без него. Вот в этой, второй виртуалке, сначала сделал вирт.адаптер - небыло инета. Добавил eht0 - появился.
А что Вы писали за прокси? Зачем он здесь?
И если нужен, то какой именно?

0
MacLeod - 19 Апрель, 2014 - 12:38
Изображение пользователя MacLeod.

Только нет наружной сети без него.
Вы имеете в виду, что из гостевой недоступен интернет?
Для этих целей я и предлагал вручную попробовать настроить прокси или NAT.
Представьте схему:
ГОСТЬ(сетевая карта с адресом 192.168.56.101) -кабель- (сетевая карта с адресом 192.168.56.1)ХОСТ(сетевая карта с адресом 46.119.175.19).
Так вот, на 192.168.56.1 вы можете поднять прокси или включить NAT для предоставления гостям выхода в интернет, сделав его шлюзом. Все как в реальной жизни, а не виртуальном vbox =)

0
Dexel - 19 Апрель, 2014 - 13:23
Изображение пользователя Dexel.

из гостевой недоступен интернет?
Да.
Всё понял на счёт прокси. Буду разбираться.

0
Dexel - 22 Апрель, 2014 - 15:00
Изображение пользователя Dexel.

MacLeod, а какой тип интерфейса создавать под сию задачу?
продолжение

0
dyug - 15 Апрель, 2014 - 10:04

Уважаемые дамы и господа!
Есть у меня мнение, что вы не совсем понимаете, как именно работает протокол ftp вообще, и в частности разницу между "пассивным" и "активным" режимами.

И тот и другой режимы относятся к взаимодействию ТОЛЬКО с клиентом.
активный режим - это когда сервер нормально открывает соединение передачи данных на адрес и порт КЛИЕНТА

Пассивный режим - это когда КЛИЕНТ не может принимать соединения напрямую с сервера, и должен их инициировать самостоятельно, для приема информации.
То есть в активном режиме - передача инициируется сервером методом открытия соединения на адрес порт.
В пассивном, по управляющему каналу, приходит предложение открыть соединение на соответствующий адрес и порт сервера, и уже по этому соединению принимать данные.

Исходя из этого:
Сервер НЕ МОЖЕТ быть за натом по определению.
Настройте ВБ на отдельный адрес в этой же сети,и у вас нормально заработает фтп сервер.

Во избежание - это мной проверялось неоднократно на разных видах фтп серверов.
Это - принципы протокола Файл Трасфер Протокола.

0
MacLeod - 15 Апрель, 2014 - 11:00
Изображение пользователя MacLeod.

Уважаемый господин Злой Дюг!
У ТСа кабель от провайдера подключен к компьютеру с линухом, поэтому в той же сети адрес выдать нельзя.
Я же предложил сделать отдельную виртуальную сеть между хостом и гестом. Но, при таком подходе, гест потеряет доступ во внешние просторы. Чтобы его дать, я предложил поднять прокси или NAT на хосте. ИМХО, при этом ТС получит достаточно опыта, чтобы понимать, как, где и при каких обстоятельствах возможна работа протокола и сам ее принцип. Не пощупаешь руками - прозрачного понимания не будет :)
З.Ы. Проброс до внутреннего FTP за NAT'ом возможен. Если маршрутизатор на Linux/FreeBSD (iptables, ipfw, pf) - так точно, решается подгрузкой определенных модулей ядра, для заворачивания пакетов.

0
dyug - 15 Апрель, 2014 - 11:20

Аха, аха.

Ну как у тс все включено, я не нашел, но вполне Вам доверяю.
Мысль о виртуальной сети для хоста и гостя - одобряю.
Прокси для фтп? бррр... Честно говоря, лучше нат. (как мой склероз подсказывает, вроде существенно проще сделать)
Проброс для внутреннего фтп - да, модули на хосте уже точно есть.
названия я не помню, ибо ненада. :-)

Тем более, я кажется описал общие принципы работы, и указал одно из решений, в частности, тех что у меня работает.

0
MacLeod - 15 Апрель, 2014 - 11:26
Изображение пользователя MacLeod.

Про кабель было в другой теме про vbox)
Прокси или NAT нужен для того, чтобы на гесте был доступ в интернет, а не для FTP. FTP будет доступен напрямую, т.к. будет общая отдельная подсеть и адреса хоста и геста в ней.
Повторюсь, я рекомендую ТСу поиграться со всем этим исключительно для понимания и приобретения опыта =)

0
dyug - 15 Апрель, 2014 - 13:51

Про кабель было в другой теме про vbox)
А.. не знал.
Прокси или NAT нужен для того, чтобы на гесте был доступ в интернет, а не для FTP.
мы опять мягкое с теплым путаем? :-)
Впрочем....
Черт с ним, пусть будет, как хотите.
Минус то поставьте, хоть.

0
MacLeod - 15 Апрель, 2014 - 14:33
Изображение пользователя MacLeod.

Да какой минус?) Зачем? Вы написали с точки зрения практичности, а ТСа больше интересует изучение вопроса. Вот я и пытался объяснить направление своих советов, я тут предмета для споров вообще не вижу =)

0
lord_i - 15 Апрель, 2014 - 12:54
Изображение пользователя lord_i.


Сервер НЕ МОЖЕТ быть за натом по определению.

Странно ... А почему у меня за натом роутера vsftpd прекрасно живет уже вот лет пять ... Притом и активный режим и пассивный и ssl шифрование ... Наверное я что-то не так делаю, точно точно ...

ЗЫ И в чем, простите, Ваше видение работы протокола фтп отличается от моего (см выше), чтоб утверждать что:

Есть у меня мнение, что вы не совсем понимаете, как именно работает протокол ftp вообще, и в частности разницу между "пассивным" и "активным" режимами.

0
dyug - 15 Апрель, 2014 - 13:56

смотреть прошивку роутера на предмет уже загруженных модулей.
Желательно по слову ftp в конце.
будешь очень сильно удивлен..
/lib/modules/3.13.0-24-generic/kernel/net/netfilter# ls -1|grep ftp
nf_conntrack_ftp.ko
nf_conntrack_tftp.ko
nf_nat_ftp.ko
nf_nat_tftp.ko

Это из текущего ядра в 14.04, и они там уже были с времен, когда я пользовался еще слкаварью. а это до 2006 года. :-)

0
lord_i - 15 Апрель, 2014 - 14:00
Изображение пользователя lord_i.

А причем тут прошивка роутера? Роутеры менялись за это время абсолютно без ущерба работы сервера, который к роутеру подключен ...

0
dyug - 15 Апрель, 2014 - 15:21

обьясняю: с 2008 года примерно я не знаю ни одного роутера, где бы не проброса портов фтп, и соответственно поднятия модулей нат и контрак. для фтп.
и именно поэтому у тебя нет проблем с получением доступа к фтп снаружи.
Для эксперимента - рекомендую взять любой комп, собрать на нем роутер, и убедиться, что без этих модулей ничего работать не будет. :-)
Да, я это уже проходил, и именно в варианте комп, как роутер.

0
lord_i - 15 Апрель, 2014 - 19:21
Изображение пользователя lord_i.

Ну это-то все понятно ... Непонятно почему вдруг

Сервер НЕ МОЖЕТ быть за натом по определению.

когда, сделав проброс портов на роутере, то есть

поднятия модулей нат и контрак. для фтп.

мы добились того, чего хотели - работающий сервер фтп за натом ...
ЗЫ Что касается конкретного случая, указанного ТС - я лично не пробовал, но думаю если в оракле сделали возможность пробросить порты, то они позаботились чтоб все работало так как должно работать. Проверять лень. :) Пусть ТС потеет ...

0
dyug - 15 Апрель, 2014 - 21:01

Эмм, но это уже не тот нат. проброс портов - это дополнительная функция.

Отправить комментарий

CAPTCHA на основе изображений
Введите цифры