("1-NAT")
当收到传入流量时,NAT只会在传入流量来自NAT地址提供的IP地址时转发流量。因此,端口Y上的本地公共接口的IP地址W必须在端口X上发送到dev0,但仅当流量来自远程公共接口IP T端口U.IP T端口U被放置在NAPT中(网络地址端口转换)第一个传出TCP连接时,表,即PAT或NAT)表。
我的答案很大程度上只是劫持了丹尼尔在他的回答中所说的内容,并且(我希望)为了清晰起见略微更具体。但是,这种解释仍然存在端口冲突的可能性,因为从IP地址T到公共接口W端口Y的流量似乎没有办法使其进入DMZ。
那么,除了这种方法("1-NAT")
,我在此添加其他两种方法,("2-LSTN")
并且("3-EPH")
,可以有助于防止这个问题,你说的。
在我的最后一段中,您可以快速总结一下您可能会发现的这个潜在问题。(大多数出售给家庭的路由器将是那些不运行自己的服务器的人。)运行重要服务器的人通常不仅仅转发所有TCP端口,因此他们也不会遇到问题。在确实有可能受到影响的人数较少的情况下,对于那些非常关心调整配置选项的人来说,技术上可以选择。
("2-LSTN")
首先,如果路由器设置了具有公共IP地址W端口Y的端口转发规则,则TCP正在使用该地址。可能没有“ESTABLISHED”连接,但它将在端口上“LISTENING”。为了比较,尝试在Unix或Microsoft Windows上运行“netstat -na”,你可以看到流量是“LISTENING” *.*.*.*:#
(例如,*.*.*.*:443
如果正在收听HTTPS端口)。因此,如果路由器具有DMZ的端口转发规则,则路由器可能会避免从端口Y发送流量。
这个答案有点假设您只是将选择端口发送到网络中被视为DMZ的部分,并通过端口转发执行此操作。如果您只是将所有TCP端口转发到DMZ,这是某些路由器配置屏幕中“DMZ”选项使用的技术,那么这显然不起作用,因为路由器不知道可能的特定服务由DMZ服务器提供。幸运的是,我们还有一个潜在的伎俩。
("3-EPH")
另一件事是,这有助于通常从可能的临时端口列表中选择传出端口Y(也许也称为“动态端口”)。传出流量通常使用短暂端口号范围内的随机数。短暂端口的范围可以变化:IANA建议TCP端口49152或更高(通过TCP的最大值65535),这是由Microsoft Windows Vista和更新版本以及FreeBSD 4.6和更新版本使用。根据临时端口上的维基百科页面, XP使用和BSD系统可以使用1025到5000,根据临时端口上的NcFTP页面(Microsoft Windows部分),可以使用1024到4999 。Linux可以使用32768到61000.这些值是可自定义的,如我在超链接的NcFTP页面上更详细的描述。
只要设备选择的短暂端口范围与DMZ提供的服务不冲突,您就不会发生端口冲突。
现在,由于大多数人都没有修补路由器的短暂端口范围,那么绝对可以防止发生冲突的可能性呢?
我认为,答案是“没有”。但是,从业务角度来看,风险似乎是可以接受的(比如制造路由器的业务)。让我们快速回顾一下。您最关键的服务(如HTTP(S)和SSH)可能在“众所周知的”端口范围(0-1023)中有端口号,因此路由器的临时端口可能不会发生冲突("1-NAT")
。对于其他服务,是的,存在潜在的问题,即来自DMZ的传出流量可能导致NAT使用您希望DMZ能够收听的端口。它只会影响连接到(通过NAT)的传出流量的系统,如果路由器使用IANA推荐的临时端口范围,则您的机率大约为16,384("3-EPH")
。对于在众所周知的(0-1023)端口范围之外的端口使用DMZ的统计数量较少的人来说,这可能只是被视为可接受的赌博,其中许多人可能将其用于个人游戏会话(可能确实如此)没有值得起诉的重大财务后果)。如果游戏玩家受到影响,那么伏都教魔法(尝试随机的东西,比如重新启动设备)可能会导致1/16384机会没有发生。对于这些东西很重要的专业连接,它们有一些选项,比如修补(也就是定制)用于短暂端口范围的值,或者更常见的是,使用更严格的防火墙规则,只转发所需的特定端口,这可能会导致路由器知道不使用该端口号("2-LSTN")
。