Почему делает FTP, пассивный режим требует диапазона портов в противоположность только одному порту?

Для IPSec встроенный клиент OS X может сделать и L2TP и Cisco VPNs. Если одна из этих базовых систем используется затем, созданный в клиенте должен работать с правильными настройками.

В прошлом (когда OS X 10.4 был последней версией), я использовал клиента VPN FortiClient с OS X. Если они используют собственную реализацию IPsec, они должны все еще предоставить клиент OS X к компаниям, которые используют их систему.

Я рекомендую говорить с людьми IT Вашей компании или для опций конфигурации или для клиентского программного обеспечения.

34
задан 18 May 2011 в 02:33
6 ответов

четкое и техническое объяснение относительно нескольких параллельной проблемы сеансов FTP при блокировке порта данных только к одному порту - то, что я больше всего интересуюсь знанием подробно. Когда может он работать, когда будет он не работать, почему это не может быть рекомендовано и т.д.

Это будет произвольным предположением, поскольку я не протестировал его, необходимо попробовать его за себя и видеть, существуют ли некоторые другие проблемы, я, возможно, отсутствовал.

Я предполагаю, что Вы могли ограничить пассивный диапазон портов одним единственным портом. На самом деле Вы видите в этом вопросе, что небольшие диапазоны портов используются на практике. Теоретически, для поддержки нескольких параллельных соединений Вам только нужны 4 значения: локальный IP, локальный порт, удаленный IP, удаленный порт, чтобы быть уникальным. Это - то, как Вы различаете между различными соединениями.

Если Вы блокируете вниз порт на своем сервере к одному единственному значению, то единственная оставленная переменная является портом, используемым клиентом. Это не проблема, пока у клиента есть достаточно большой пул свободных эфемерных портов для выбора из. Если это не делает некоторый тяжелый NAT, Вы не должны волноваться об этом. Теперь, предупредите, что это будет чисто теоретическим материалом: при использовании нескольких портов на сервере Вы могли бы умножить количество гипотетических параллельных соединений путем включения number of ports in range соединения на один клиентский порт. Но этого не произойдет на практике, поскольку я сомневаюсь, что существует любая реализация клиента FTP, который поддерживал бы это (потому что это не имеет большого смысла). Плюс то, если клиент должен совместно использовать свои эфемерные порты таким образом и не может только открыть новый, то у него есть намного более серьезные проблемы для контакта с. Так, с этой точки зрения необходимо быть полностью безопасным использованием единственного порта.

Давайте думать, почему единственный порт не может быть достаточным.

В первую очередь, я мог придумать ситуацию, где действительно ошибочная реализация FTP-сервера использует только локальный номер порта в качестве способа определить передачу клиентских данных. Еще раз я не думаю, что любой достойный FTPd сделал бы это.

Настоящая проблема (да, можно игнорировать все выше как основное отклонение ;-)) то, что пассивный диапазон портов находится в непривилегированном диапазоне.

Это означает, что Ваше число выбранного порта не резервируется по сути, и на самом деле любой пользовательский процесс (не нуждается в полномочиях пользователя root), может захватить его, прежде чем Ваш FTP-сервер сделает. Если у Вас есть богатый пул портов для выбора из, Вы просто захватываете случайный свободный. Если Вы будете обязаны использовать единственный, и он уже используется, то Вы не сможете обработать передачи правильно.

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

20
ответ дан 28 November 2019 в 19:53

FTP полагается на два отдельных соединения, один для потока управления или команды, и один для передачи файлов данных и другой информации, таких как списки каталогов. Поток управления несут по традиционному соединению TCP. Клиент связывает с высоким непривилегированным портом и отправляет запрос на установление соединения в FTP-сервер, который обязан портировать 21. Это соединение используется для передачи команд.

В Режиме порта или активном режиме, клиент говорит th сервер, на каком вторичном, непривилегированном порте он послушает. Сервер затем инициирует передачу данных от порта 20 к непривилегированному порту, который указал клиент.

Пассивный режим, более новый механизм, является значением по умолчанию, когда клиент является веб-браузером. Вместо того, чтобы быть связанным для портирования 20 сервер говорит клиенту который высокий порт использовать для передачи данных. Данные затем передаются по непривилегированным портам между обоими клиентами и серверами.

Для получения дополнительной информации см.:

http://tools.ietf.org/html/rfc959

Править

Относительно блокировки сервера к конкретному единственному порту, это может быть возможно в некоторых серверах. Например, в vsftpd, у Вас есть следующие параметры конфигурации.

   pasv_max_port
          The maximum port to allocate for PASV style data connections. Can be used to specify a narrow port range to assist firewalling.

          Default: 0 (use any port)

   pasv_min_port
          The minimum port to allocate for PASV style data connections. Can be used to specify a narrow port range to assist firewalling.

          Default: 0 (use any port)

При установке обоих портов на то же, например, pasv_max_port=12345, pasv_min_port=12345, Вы можете получать то, что Вы после. Я подозреваю, что это ограничит количество параллельных сеансов FTP, Вы - сервер, будет поддерживать. Протестируйте, чтобы быть уверенными.

4
ответ дан 28 November 2019 в 19:53

FTP-сервер смог соответствовать соединению Порта данных клиента с их соединением Порта управления на основе одного только исходного IP, а не на основе используемого номера порта.

Это повредило бы FXP (который не может быть плохой вещью), где клиент соединяется с двумя серверами (один в пассивном режиме), затем после получения Информации порта пассивного сервера, передачи, что к серверу активного режима как команда PORT так, чтобы сервер активного режима соединился с пассивным сервером режима.

Я подозреваю, что много серверов не создают сокет данных, пока клиент не запрашивает пассивный режим. В этом случае, если бы два клиента запросили пассивный режим одновременно, то созданным сокетам были бы нужны уникальные номера порта.

Править: думал другая причина, почему FTP-серверы не делают этого: сервер не мог сказать многочисленным пользователям с тем же IP-адресом независимо.

1
ответ дан 28 November 2019 в 19:53

Похоже, вы уже знаете о портах управления и портах данных, поэтому я сразу перейду к делу. Порты управления по своей природе являются импульсным обменом данными, как и порт 80 для веб-сайтов. они могут обрабатывать множество разных запросов (не одновременно, но чертовски близко, так как они выполняются очень быстро). с другой стороны, в портах данных происходит волшебство FTP. Если вы ограничитесь одним портом данных, за раз будет происходить только одна передача данных. рассмотрите передачу больших файлов. Если открыт только один порт данных, никакие другие данные не могут перемещаться до завершения передачи. Это означает, что при передаче второй пользователь даже не сможет просмотреть содержимое каталога ftp-папки. Конечно, они смогут успешно войти в систему, но их поведение будет таким же, как если бы порты данных вообще не были открыты. Если вас это устраивает, вам отлично подойдет один порт. Имейте в виду, что некоторые ftp-клиенты (я могу сразу придумать 1) по умолчанию устанавливают несколько подключений в рамках одного сеанса для загрузки. Итак, для этого клиента, в сценарии с одним портом, рассмотрите пакетную передачу 1 большого файла и 4 маленьких файлов.

Клиент инициирует передачу для первого большого файла, причем все в порядке. Затем, пока идет передача, запускается второй файл. Никаких кубиков. Потом третий, тоже пшик (технический термин). В итоге журнал должен показать 1 успешную и 4 неудачных передачи. Обходной путь будет заключаться в том, чтобы ограничить клиента одним подключением за сеанс, и вам будет хорошо (при условии, что кто-то еще не встал в дверь в ту самую микросекунду, когда завершится одна передача, а другая еще не началась. )

-2
ответ дан 28 November 2019 в 19:53

На портах 21 или 80 (как и на всех хорошо известных портах) существует установленный протокол, который клиент использует, чтобы сообщить, чего он хочет. Таким образом, сервер знает, для чего вы подключаетесь. На порте подключения к данным протокола нет. Все, что знает сервер - единственное, что уникально в этом соединении - это номер порта, к которому вы подключаетесь.

Если бы вы подключались к одному и тому же порту каждый раз, сервер не смог бы определить, какой у вас файл. подключение для. Номер порта служит связующим звеном между запросом передачи в управляющем соединении и соединением для передачи данных.

Если бы два клиента одновременно запросили передачу, когда сервер принимает соединение через один порт, сервер не сможет определить, какой файл передать. Конечно, сервер может использовать клиентский IP-адрес для принятия решения (на самом деле многие FTP-серверы действительно проверяют, что клиентский IP-адрес соответствует IP-адресу, используемому в управляющем соединении, для безопасности).

Но это не сработает для:

  • Несколько подключений с одного компьютера (большинство FTP-клиентов поддерживают параллельные передачи / очереди).
  • Соединение с разных машин в одной (корпоративной) сети, так как они имеют одинаковый внешний IP.

См. Также Повторное использование FTP-соединений для передачи данных .

0
ответ дан 28 November 2019 в 19:53

Я не видел, чтобы об этом здесь упоминалось, поэтому я добавлю его. Назначение диапазона портов должно было быть своего рода функцией безопасности, когда вы не могли контролировать один порт для трафика данных , данные были отправлены на случайный порт в диапазоне, который нелегко определить. Безопасность через безвестность.

-1
ответ дан 28 November 2019 в 19:53

Теги

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