在过去的几天中,我一直在VMware中设置Windows Server 2008 R2。 我通过使用Web服务器(IIS) -role来安装标准的FTP服务器。
一切工作正常与访问我的FTP站点与Firefox中的 ftp://localhost 。 我也可以通过我的服务器的本地 IP访问它。 其实一切工作正常在我的局域网。
但是这是我的问题:
我想使用外部IP或dyndns -URL访问“外部”。 我有一个LinkSys -Router在我的服务器前,因此我转发所有重要的端口。
如果你现在可能会认为“这个白痴可能已经忘记了一些端口”,我一定会感到失望的。 它甚至可以访问我的服务器网站,并在一些WebInterfaces中搞乱。
问题是我的被动FTP (主动为我工作)。 当例如FileZilla等待对LIST命令的响应时,我总是得到一个超时。 我得不到的一件大事是,为什么我的服务器发送一个响应PASV命令,命名一个像40918这样的端口,即使我已经限制了被动FTP的数据端口范围(在IISpipe理器中 )例如[ 5000-5009 ]。
我只是不想打开和转发所有可能的数据端口!
另一件事是,我不能指定一个静态的外部IP地址为我的服务器,因为我没有任何。
我已经尝试了这些解决scheme:
有一个想法在我心中升起:
当我使用FileZilla通过被动模式进行连接时,我总是得到如下的东西:
227 Entering Passive Mode (192,168,1,102,160,86)
根据Rhinosof文章FZ试图连接端口“160 * 256 + 86 = 41046 ”,虽然我已经限制了数据端口(如上所述)。 这可能是由路由器造成的,不直接转发出端口,而是使用不同的端口?
( – >给出的IP地址是本地的,因为我不能在IIS-Mgr中定义一个静态外部)
我有一个关于通过netsh interface更改dynamicnetsh interface的想法,但甚至没有帮助文本给出的例子本身工作。 我想我会放弃IIS -FTP,然后使用FileZilla-Server 。
结论:你好免费软件,再见“成本,但只是作品” – Windows *咳嗽*。
在Windows中更改dynamic端口范围将无济于事。 它唯一要做的就是限制socket连接的客户端使用哪个端口。
你需要做的是限制IIS的FTP服务器使用的端口范围。 在MSDN上有一个相当不错的博客文章 ,但这里有一个高点:
如果您使用的是内置的FTP服务器,则需要先安装“IIS 6元数据库兼容性”angular色服务(以及相关联的扫描工具),然后使用以下命令来设置正确的元数据库属性:
adsutil.vbs设置/ MSFTPSVC / PassivePortRange“5500-5525”
不pipe如何,你仍然需要在你的NAT网关设备上将整个范围端口转移到外部连接上。 大多数下降防火墙/ NAT设备为FTP包含了协议助手,这将允许他们识别PASV命令并作出相应的反应,但不是所有的都行(如果您使用非标准端口进行FTP命令渠道)。
PS如果你在NAT后面,你应该考虑使用不同于FTP的协议:你不能在没有丑陋和危险的解决方法的情况下工作。 我build议你调查SFTP或WebDAV。
你有没有尝试把FTP服务器放在你的路由器的DMZ中去查看是否丢弃数据包? 试试看
此外,打开Windows防火墙日志logging(控制面板 – >pipe理工具 – > Windows防火墙和高级安全,右键单击控制台中的“Windows防火墙和高级安全性”,转到属性,然后启用日志logging丢弃数据包)看看您的networking外的计算机是否能够要求正确的端口。
netsh advfirewall设置全局StatefulFtp启用
netsh advfirewall防火墙添加规则名称=“FTP for IIS”服务= ftpsvc行动=允许协议= TCP dir =在
对于那些正在使用Microsoft Azure Cloud Service托pipe的Windows服务器的用户,如果您使用的是Network Security Group,则还需要在那里创build一个入站规则,该规则与您在“FTP防火墙支持”部分设置的端口范围相匹配在IIS中。