Поскольку FTP отправляет IP-адреса и порты внутри таких сообщений (а не только в заголовках пакетов), он не является протоколом, дружественным к NAT.
Из-за этого шлюзы NAT часто имеют специальный код для обработки FTP. Этот код известен как FTP «шлюз прикладного уровня», или ALG. FTP ALG ищут сообщения, такие как команда PASV, и перезаписывают IP-адрес для представления общедоступного IP-адреса шлюза NAT, чтобы обеспечить работу связи.
Если ваш FTP-клиент находится за шлюзом NAT, а ваш FTP-сервер - нет, то использование пассивного режима - это способ обойти плохой NAT-шлюз, у которого нет FTP ALG.
Если ваш FTP-клиент НЕ находится за NAT-шлюзом, а ваш FTP-сервер ЕСТЬ, то вы можете без проблем использовать обычный активный FTP, но в этом случае пассивный режим фактически прервется, если шлюз NAT перед FTP-сервером не имеет хороший FTP ALG. Многие шлюзы NAT имеют наполовину сломанные FTP ALG, которые активируют работу FTP только для FTP-клиентов за NAT, но не обрабатывают случай «FTP- сервер за NAT». Очевидно, многие поставщики шлюзов NAT не думают и не заботятся о случае «сервер за NAT».
Если и ваш FTP-клиент, и ваш FTP-сервер находятся за отдельными шлюзами NAT, которые не имеют FTP ALG, активный FTP будет заблокирован NAT клиента, а пассивный FTP будет заблокирован NAT сервера, поэтому вы просто не сможете в этом случае вообще используйте обычный FTP, и вам нужно будет установить какой-то туннель или другой обходной путь. Переключение на зашифрованный FTP будет работать, потому что зашифрованные протоколы FTP были разработаны после того, как шлюзы NAT были распространены, и авторы знали, что шлюз NAT не сможет видеть или связываться с внутренностями протокола, поэтому они должны были спроектировать его для работы во всех различных сценариях NAT.