维基百科上说,出口过滤“验证所有出站数据包中的源 IP 地址是否在分配的内部地址块范围内”,而关于 IP 欺骗,则说“理想情况下,网关还会对传出的数据包执行出口过滤,即阻止来自网络内部且源地址不在内部的数据包”。据称它可以防止 IP 欺骗。
但是路由器不是通过将所有内部IP:临时端口进行 NAT/PAT 到外部端口(这些端口总是采用路由器的外部IP的形式)来固有地防止这种情况发生的吗?这意味着无论原始主机将源IP欺骗成什么,源IP都永远不会被欺骗?
答案1
并非所有网络都执行 NAT。您唯一需要做的是有执行 NAT 的前提是,您只有一个具有公网 IP 地址的路由器,而网络的其余部分则具有私有 IP 地址。
这句话并不是关于这些网络边缘的出口过滤。相反,它主要涉及所有设备都连接到的网络上进行过滤已经具有公共地址并且没有 NAT – 例如充满服务器的数据中心,或其中包含所有客户的 ISP 网络。
那么,这些来自客户的欺骗数据包如何到达 ISP 的网络呢?答案是很容易。
- 商业客户可能拥有自己的公共地址池,可分配给个人计算机、服务器、打印机或其他设备。
- 即使是家庭连接,通常只有一个地址,不是实际上必须使用路由器:客户也可以将单台 PC 直接连接到调制解调器,这样该计算机就会立即获得一个外部地址。
- 或者就像已经多次发生的情况一样,廉价路由器本身可能会被恶意软件感染,并自行生成那些欺骗数据包。
最后,即使网络有问题是一个具有 NAT 和私有地址的路由器,问题是它的 NAT 规则是否实际设置为匹配全部源地址...或者只是私有地址。很可能有些路由器只是简单地传递已经具有公共源地址的数据包,假设这些数据包已经“经过 NAT”。