При размещении FTP-сервера за NAT вам нужно не только перенаправить порт 21/TCP на сервер, вам также необходим NAT-шлюз с FTP ALG, который поддерживает FTP-серверы за NAT (примечание: это редкая функция, и редко рекламируется на коробке или на странице технических характеристик или даже в руководстве) и знает, как наблюдать поток управляющих данных FTP для команд от клиентов, которые указывают, что клиент хочет, чтобы FTP-сервер использовал пассивный режим (где запускается FTP-сервер). прослушивание TCP-соединения для передачи данных на другом порту, отправка этого номера порта клиенту и пассивное ожидание, когда клиент инициирует TCP-соединение для передачи данных на сервер). FTP ALG должен следить за тем, к какому порту сервер указывает клиенту подключаться, а затем автоматически создавать временную запись переадресации портов, чтобы это соединение могло попасть на сервер.
В основном, пассивный режим FTP, который хорош, когда клиент находится за NAT, является большой проблемой, когда сервер находится за NAT. Если окажется, что ваш клиент НЕ находится за NAT, то скажите ему, чтобы он использовал традиционный FTP "активного" режима, и вам не нужно иметь сложный "сервер за NAT" FTP ALG в вашем NAT-шлюзе.
Другой вариант - сделать ваш FTP-сервер вашим DMZ-хостом (он же "хост по умолчанию", "бастионный хост"). Поскольку все непредвиденные попытки входящего соединения пересылаются в DMZ, все эти TCP-данные в пассивном режиме TCP-соединения будут автоматически отправляться на ваш FTP-сервер.