Пассивный FTP на Windows Server 2008 R2 с использованием FTP-сервера IIS7

В течение последних нескольких дней я настраивал Windows Server 2008 R2 в VMware. Я установил на него стандартный FTP-сервер, используя роль веб-сервера (IIS).

Все работает нормально с доступом к моему FTP-сайту с ftp://localhost в Firefox. Я также могу получить доступ к нему через локальный IP-адрес моего Сервера. На самом деле все отлично работает в моей локальной сети.

Но вот моя проблема:
Я хочу получить доступ "извне", используя внешний IP или dyndns -URL. У меня есть сервер LinkSys -Router, поэтому я пересылаю все важные порты.

Если вы сейчас думаете, что "этот идиот, вероятно, забыл некоторые порты", я должен вас разочаровать. Это даже работает, получая доступ к моему Серверу-Веб-сайту и возясь в некоторых WebInterfaces.

Проблема в моем пассивном FTP (у меня работает active). Я всегда получаю тайм-аут, когда, например, FileZilla ожидает ответа на LIST -command. Одна большая вещь, которую я не понимаю, это то, почему мой Сервер отправляет ответ на PASV -команда, называя порт как 40918, даже если я ограничил диапазон портов данных для моего пассивного FTP (в IIS-Manager), например, [ 5000-5009 ].

Я просто не хочу открывать и пересылать все возможные порты данных!

И еще одна вещь, я не могу указать статический внешний IP-адрес для моего сервера, так как у меня нет ни одного.

Я уже попробовал эти решения:

--- РЕДАКТИРОВАТЬ: ---

В моей голове возникает одна идея:
Когда я использую FileZilla для подключения в пассивном режиме, я всегда получаю что-то вроде этого:
227 Entering Passive Mode (192,168,1,102,160,86)
Согласно статье Rhinosof FZ пытается подключиться через порт "160 * 256 + 86 = 41046 ", хотя я ограничил порты данных (как упомянуто выше). Может ли это быть вызвано маршрутизатором, который не перенаправляет внешние порты напрямую, а использует другие?
(-> Указанный IP-адрес является локальным, поскольку я не могу определить статический внешний элемент в IIS-Mgr)

--- РЕДАКТИРОВАТЬ 2: ---

У меня была идея об изменении dynamicportrange с помощью netsh interface, но даже примеры, приведенные в справке, не сработали. Я думаю, что я оставлю это с IIS -FTP и затем использую FileZilla-Server.
Вывод: Здравствуйте, бесплатное ПО, пока "стоит, но просто работает" - Windows * кашляет *.

4 ответа

Вы пытались поместить FTP-сервер в DMZ вашего маршрутизатора, чтобы посмотреть, сбрасывает ли маршрутизатор пакеты? Попробуй это.

Кроме того, включите ведение журнала брандмауэра Windows (Панель управления -> Инструменты администратора -> Брандмауэр Windows и расширенная безопасность, щелкните правой кнопкой мыши "Брандмауэр Windows и расширенная безопасность" в консоли, перейдите в Свойства, затем включите ведение журнала для отброшенных пакетов), чтобы просто посмотрите, смог ли ваш компьютер за пределами сети запросить правильные порты.

Netsh advfirewall устанавливает глобальное включение StatefulFtp

netsh advfirewall firewall добавить имя правила ="FTP для IIS" service=ftpsvc action= разрешить протокол =TCP dir=in

Изменение диапазона динамического порта в Windows не поможет. Единственное, что он делает, это ограничивает, какой порт будет использоваться для клиентской части сокетного соединения.

Что вам нужно сделать, это ограничить диапазон портов, используемых FTP-сервером IIS. На MSDN есть довольно хороший пост в блоге, но вот основные моменты:

  • Если вы используете встроенный FTP-сервер, вам необходимо сначала установить службу роли "Совместимость с метабазой IIS 6" (а также соответствующие инструменты скритинга), а затем использовать следующую команду, чтобы установить правильное свойство метабазы:

    набор adsutil.vbs /MSFTPSVC/PassivePortRange "5500-5525"

    • Если вы используете загружаемый FTP-модуль IIS 7.5 (тот, который вы получаете с этой страницы), тогда все, что вам нужно, это открыть редактор конфигурации сервера и отредактировать свойство "Диапазон портов канала данных" в разделе "Поддержка брандмауэра FTP> Диапазон портов канала данных". "в приложении Host.config.

Независимо от вышесказанного, вам все равно нужно будет перенести весь диапазон на устройстве шлюза NAT для работы внешних подключений. В большинстве спускаемых устройств Firewall/NAT есть встроенные помощники протокола для FTP, которые позволяют им идентифицировать команду PASV и реагировать соответствующим образом, но не все это делают (и обычно это не будет работать, если вы используете нестандартный порт для команды FTP канал).

PS Вам следует рассмотреть возможность использования протокола, отличного от FTP, если вы находитесь за NAT: вы не можете заставить его работать без безобразных и рискованных обходных путей. Я предлагаю вам изучить SFTP или WebDAV.

Для тех из вас, кто использует сервер Windows, размещенный с помощью облачной службы Microsoft Azure, если вы используете группу сетевой безопасности, вам также необходимо создать правило для входящих подключений, соответствующее диапазону портов, который вы настроили в разделе "Поддержка брандмауэра FTP". в IIS.

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