Как использовать определенный IP с vsftpd?

Вот сценарий:

  • У нас есть один сервер AWS Ubuntu Server
  • Этот сервер работает как клиент ftp
  • Теперь, когда мы пытаемся подключиться к Ftp-сервер XYZ использует этот сервер AWS в качестве клиента, он отправляет свой локальный IP-адрес при подключении к ftp-серверу, из-за чего не работает список каталогов.
  • Журнал показывает, что мы подключены к FTP-серверу + мы аутентифицированы правильно ... список портов проходит успешно + ошибка только в каталоге.
  • мы можем предоставить конкретный IP в FTP, используя filezilla, который он будет использовать при выходе из шлюза.
  • здесь мы не можем использовать это, потому что у него нет GUI & amp; он будет использоваться php-скриптом.
  • Эта проблема также существовала в Windows в то время, когда мы решили ее, присвоив FileZilla эластичный IP-адрес. до решения, которое мы использовали, чтобы получить ошибку & amp; журнал показал как это. этот пункт добавлен только для того, чтобы дать вам больше деталей. & Амп; та же проблема с Ubuntu & amp; мы хотим дать эластичный IP где-нибудь в ftp, чтобы он начал работать ... мы надеемся, что по крайней мере. ;)

Последние обновления

  • , пожалуйста, нажмите здесь для файла vsftpd.conf.
  • немного больше пояснений:

    В этом случае машина «A» является нашим FTP-сервером (который является сервером AWS Ubuntu) для внутреннего использования, из-за большого количества других процессов и данных, которые регулярно загружены на этот FTP-сервер (компьютер "A") & amp; Машина "B" - это FTP-сервер нашего клиента, который они используют для своих внутренних целей. Теперь нам нужно извлечь некоторые данные с нашего клиентского FTP-сервера (то есть компьютера «B») на наш сервер (то есть компьютера «A») и затем обработать его. после этого нам нужно поместить обработанные данные обратно на FTP-сервер клиента (т.е. на компьютер "B"). это то, что не работает

  • Журналы межсетевого экрана клиентов, когда мы пытались соединиться с машиной «B», как показано на рисунке ниже.

Firewall Log 1

Firewall Log 2

2
задан 8 October 2013 в 08:41

2 ответа

Это - мое понимание Вашего сценария:

  • У Вас есть Машина в Вашей Сети с FTP-сервером и Клиентом FTP;
  • Вы хотите вытянуть файлы от Машины B, который находится в Сети Клиента;
  • Существует брандмауэр в Вашей Сети и возможно в Сети Клиента;
  • Вы будете использовать клиент FTP, чтобы продвинуть и вытянуть файлы от Машины B.

Network

FTP работает в двух режимах:

- Активный режим -

В активном режиме FTP клиент соединяется от случайного неспециализированного порта (N> 1023) к порту команды FTP-сервера, порт 21. Затем клиент начинает слушать порт N+1 и отправляет ПОРТУ команды FTP N+1 в FTP-сервер. Сервер затем соединится назад с указанным портом данных клиента (...)

Пример:

  1. Клиент FTP в машине "A" соединяется с FTP-сервером в машине "B" на порте 21;
  2. Машина "A" отправляет "ls" на машину "B", но потому что это - Активный режим, результат "ls" будет обеспечен порту N+1 (N> 1023) машины "A";
  3. Это перестало работать, потому что клиент FTP в машине "A" просит, чтобы машина "B" соединилась с частным IP. Даже если IP общедоступен, порты N+1 должны быть открыты в брандмауэре.

- Пассивный режим -

В пассивном режиме FTP клиент инициирует оба соединения с сервером, решая проблему с брандмауэрами, фильтрующими входящее соединение порта данных с клиентом с сервера. При открытии соединения FTP клиент открывает два случайных неспециализированных порта локально (N> 1023 и N+1). Первый порт связывается с сервером на порте 21, но вместо того, чтобы затем дать команду PORT и позволить серверу соединяться назад со своим портом данных, клиент даст команду PASV. Результат этого состоит в том, что сервер затем открывает случайный неспециализированный порт (P> 1023) и передает P обратно клиенту в ответ на команду PASV. Клиент затем инициирует соединение от порта N+1 до порта P на сервере для передачи данных. (...)

Пример:

  1. Клиент FTP в машине "A" соединяется с FTP-сервером в машине "B" на порте 21;
  2. Машина "A" отправляет "ls" на машину "B";
  3. На этот раз результат не будет обеспечен порту N+1 машины "A". Вместо этого машина "B" сообщает машине "A", что результат ожидает, чтобы быть выбранным в данном IP и порте машины "B".
  4. Это перестало работать, когда этот IP является частным, и порт не открыт в брандмауэре клиента. Именно поэтому клиент должен настроить свой FTP-сервер для использования общедоступного IP и известного порта (см. ответ Cubiq).

Это решения, которые Вы имеете:

  1. Используя Активный режим (полагающий, что машина имеет IP 175.41.135.142): прямо после соединения и аутентификации, дайте эту команду: ПОРТ 175 41 135 142 14 178 Вам будет нужно к открытому порту 3762 в Вас брандмауэр. 14,178 прибывает из convertion октетов к десятичному числу ((14*256) + 178).
  2. Использование Пассивного Режима: Чтобы этот метод работал, у клиента должна быть конфигурация как ответ Cubiq. Прямо после соединения и аутентификации, дайте эту команду: пассивный

Теперь необходимо смочь к "ls".

Можно читать больше о том, как FTP работает здесь: http://slacksite.com/other/ftp.html

Эта страница также хороша для понимания режимов FTP: http://www.deskshare.com/resources/articles/ftp-how-to.aspx

3
ответ дан 8 October 2013 в 08:41

Добавьте в свой конфигурационный файл vsftpd (/etc/vsftpd.conf):

pasv_enable=YES
port_enable=YES
pasv_min_port=<port-start>
pasv_max_port=<port-end>
pasv_address=<your-machine-ip>
pasv_addr_resolve=NO

. В конфигурации безопасности вашего экземпляра откройте порт 20-21 для FTP, также включите пассивные порты в указанном вами диапазоне. выше (pasv_min / max_port, например: 64000-64100).

Перезапустите vsftpd.

если это не сработает, вы можете попробовать заменить две последние строки на:

pasv_address=<public-address>
pasv_addr_resolve=YES
0
ответ дан 8 October 2013 в 08:41

Другие вопросы по тегам:

Похожие вопросы: