В течение последних нескольких дней я настраивал Windows Server 2008 R2 в VMware. Я установил на него стандартный FTP-сервер с помощью Веб-сервер (IIS)-роль.
Все работает нормально с доступом к моему FTP-сайту с ftp://localhost
в Fire Fox. Я также могу получить к нему доступ через местный IP моего Сервера. Собственно у меня в локальной сети все работает нормально.
Но вот моя проблема:
Я хочу получить доступ "извне", используя внешний IP или dyndns-URL. у меня есть LinkSys-Маршрутизатор перед моим сервером, поэтому я перенаправляю все важные порты.
Если вы теперь думаете, что «этот идиот, вероятно, забыл некоторые порты», я должен вас разочаровать. Он даже работает, получая доступ к моему серверу-веб-сайту и возясь с некоторыми веб-интерфейсами.
Проблема моя пассивный FTP (у меня активно работает). Я всегда получаю тайм-аут, например, когда FileZilla ждет ответа на LIST
-команда. Я не понимаю, почему мой сервер отправляет ответ на PASV
-команда, называющая порт как 40918, даже если я ограничил диапазон портов данных для моего пассивного FTP (в IIS-менеджер), например, [5000-5009].
Я просто не хочу открывать и пересылать все возможные порты данных!
И еще одно: я не могу указать статический внешний IP-адрес для моего сервера, так как у меня его нет.
Я уже пробовал эти решения:
Мне приходит в голову одна идея:
Когда я использую FileZilla для подключения в пассивном режиме, я всегда получаю что-то вроде этого:
227 Entering Passive Mode (192,168,1,102,160,86)
Согласно статье Rhinosof FZ пытается подключиться к порту "160 * 256 + 86 = 41046", хотя я ограничил порты данных (как упоминалось выше). Может ли это быть вызвано маршрутизатором, который не пересылает исходящие порты напрямую, а использует другие?
(-> Указанный IP-адрес является локальным, так как я не могу определить статический внешний в IIS-Mgr)
У меня появилась идея изменить dynamicportrange
через netsh interface
, но даже не примеры, приведенные Помогите-текст сам работал. Думаю, я откажусь от этого IIS-FTP и затем используйте FileZilla-Сервер.
Заключение: Здравствуйте, бесплатное ПО, пока "стоит, но просто работает"-Windows * кашляет *.
Тем из вас, кто использует сервер Windows, размещенный с помощью облачной службы Microsoft Azure, если вы используете группу сетевой безопасности, вам также потребуется создать там правило для входящего трафика, которое соответствует диапазону портов, который вы настроили в разделе Поддержка брандмауэра FTP. в IIS.
netsh advfirewall устанавливает глобальное включение StatefulFtp
netsh advfirewall firewall добавить имя правила = "FTP для IIS" service = ftpsvc action = разрешить протокол = TCP dir = in
Вы пытались поместить FTP-сервер в DMZ вашего маршрутизатора, чтобы проверить, не отбрасывает ли он пакеты именно тот маршрутизатор? Попробуй это.
Кроме того, включите ведение журнала брандмауэра Windows (Панель управления -> Инструменты администратора -> Брандмауэр Windows и расширенная безопасность, щелкните правой кнопкой мыши «Брандмауэр Windows и расширенная безопасность» в консоли, перейдите в Свойства, затем включите ведение журнала для отброшенных пакетов), чтобы проверьте, может ли ваш компьютер вне сети запрашивать правильные порты.
Изменение диапазона динамических портов в windows не поможет. Единственное, что он делает, - это ограничивает, какой порт будет использоваться для клиентской стороны сокет-соединения.
Что вам нужно сделать, так это ограничить диапазон портов, используемых FTP-сервером IIS. Есть довольно хороший Сообщение блога об этом в MSDN, но вот основные моменты:
Если вы используете встроенный FTP-сервер, вам необходимо сначала установить службу роли «Совместимость с метабазой IIS 6» (а также связанные с ней инструменты для создания сценариев), а затем использовать следующую команду для установки правильного свойства метабазы:
набор adsutil.vbs / MSFTPSVC / PassivePortRange "5500-5525"
Независимо от вышесказанного, вам все равно потребуется перенаправить весь диапазон на вашем устройстве шлюза NAT для работы внешних подключений. Большинство устройств брандмауэра / NAT имеют встроенные помощники протокола для FTP, которые позволяют им идентифицировать команду PASV и реагировать соответствующим образом, но не все это делают (и обычно это не сработает, если вы используете нестандартный порт для команды FTP. канал).
P.S. Если вы находитесь за NAT, вам следует подумать об использовании протокола, отличного от FTP: вы не сможете заставить его работать без уродливых и рискованных обходных решений. Я предлагаю вам изучить SFTP или WebDAV.