Количество подключений VSFTP в пассивном режиме

Количество подключений VSFTP в пассивном режиме

При работе в пассивном режиме, если мы установим pasv_max_port на 10100 и pasv_min_port на 10090. Означает ли это, что сервер VSFTP может обслуживать только 10 клиентов одновременно?

Можно ли задать один и тот же номер порта для pasv_max_port и pasv_min_port? Если возможно, сколько клиентов может обрабатывать сервер VSFTP одновременно? Только один?

решение1

Для упрощения, я бы сказал да, и именно так это и следует рассматривать (по моему мнению).

Ограничение диапазона портов ограничит одновременные клиентские соединения в соответствии с количеством портов, которые у вас есть между мин. и макс. Таким образом, вы избежите странного поведения.

Но, на самом деле, это неправда и требует модерации :-)

Если говорить более подробно и конкретно:ограничение портов влияет на одновременное использование канала данных.

Обратите внимание, что для нового запроса на подключение необходим доступный канал передачи данных.

Я не знаю обо всех командах FTP, которые используют канал данных, но в основном для команд upload (STOR), download (RETR), list (LIST)требуется канал данных.


Чтобы проиллюстрировать это, я только что провел тест в лабораторных условиях (который вы можете воспроизвести) с моим сервером vsftpd и следующими настройками:

pasv_max_port=10100
pasv_min_port=10100

1. Первый тест:

  • Я подключаюсь к Client1: ok
  • Я подключаюсь к Client2, пока Client1 все еще подключен: ok
  • Я подключаюсь к Client3, пока Client1 и Client2 все еще подключены: ok

Почему ?

  • Клиенту 2 удалось подключиться, поскольку Клиент 1 ничего не делал (простаивал) и не использовал канал передачи данных, поэтому сервер назначил порт Клиенту 2.
  • Клиенту 3 удалось подключиться, поскольку Клиент 1 и Клиент 2 бездействовали и не использовали канал передачи данных, поэтому сервер назначил порт Клиенту 3.

2. Второй тест:

  • Я подключаюсь к Client1 и начинаю загрузку файла: ok, идет загрузка файла
  • Я подключаюсь к Client2, пока загрузка Client1 все еще выполняется: ОШИБКА, не удается подключиться
  • Я жду окончания загрузки Client1
  • После завершения загрузки Client1 я смог подключиться к Client2.

Почему ?

  • Поскольку Клиент1 использовал канал данных для загрузки, Клиент2 не смог подключиться, поскольку на стороне сервера не было больше доступных портов для его обслуживания.
  • После завершения загрузки Client1 сервер освободил порт канала данных, и Client2 смог использовать его для подключения.

3. Третий тест:

  • Я подключаюсь к Client1: ok
  • Я подключаюсь к Client2, пока Client1 все еще подключен: ok
  • Я начинаю загрузку на ftp-сервер с Client1: ok, идет загрузка
  • Я начинаю загрузку на ftp-сервер с Client2, пока загрузка с Client1 все еще выполняется: ОШИБКА соединение закрыто сервером. Передача не удалась.

Почему ?

Смесь теста 1 и теста 2:

  • Клиенту 2 удалось подключиться, поскольку Клиент 1 ничего не делал (простаивал) и не использовал канал передачи данных, поэтому сервер назначил порт Клиенту 2.
  • Клиент 1 может загрузить файл, поскольку Клиент 2 бездействует, поэтому сервер назначил порт Клиенту 1 для его загрузки.
  • Клиент 2 не может загрузить файл, так как порт передачи данных уже используется Клиентом 1 для его загрузки.

Теперь вы понимаете, почему я говорил о «странном» поведении в начале.

Надеюсь, это поможет!

Связанный контент