当我位于动态 PAT 防火墙后面时,跟踪路由到 Internet 地址?

网络工程 路由器 防火墙 纳特
2021-07-05 03:18:36

考虑这个网络图:

在此处输入图片说明

在这种情况下,路由器正在执行“动态 PAT”(我使用的是Cisco 的定义),其中所有“真实”或“内部”地址都映射到我的 ISP 提供的单个外部地址。主机 192.168.1.20 可以跟踪路由 108.180.223.48 和 8.8.8.8 之间的跃点吗?

从谷歌我看到许多线程表明,如果只有正确配置 NAT 和访问列表,许多人似乎希望这会起作用——但我不明白这是怎么可能的。原因如下:

Traceroute依赖于ICMP Time Exceeded在收到 TTL 为 1 的数据包时返回给 ICMP 回显或 UDP 数据包的发送方的数据包。当从 192.168.1.20 启动跟踪路由时,路由器会构建 ICMP 回显或 UDP 会话以期待来自目标并将源地址转换为 108.180.223.48。ICMP Time Exceeded packet从每一跳发回时,该数据包不是 ICMP 回显或 UDP 会话的预期部分。如果没有任何花哨的事情发生,路由器似乎无法明确知道ICMP Time Exceeded数据包属于哪个 ICMP 回显或 UDP 会话路由器既不知道允许 Time Exceeded 数据包通过,也不知道将它发送到哪个主机。

我在这里错过了什么吗?路由器或防火墙可以做一些奇特的事情来使跟踪路由在动态 PAT 防火墙后面工作吗?如果是这样,如何?

1个回答

是的,你错过了一些东西。是的,“一些奇特的事情”正在发生。路由器的 NAT 状态表将为 traceroute 探测映射内外转换。(通常为 UDP)正如 ICMP 穿越任何防火墙所要求的那样,ICMP 错误消息将被允许作为已建立流的一部分。“奇特”部分是 ICMP 错误携带导致错误的数据包的报头这一事实,因此路由器可以将其与它的 NAT 表进行匹配,以转换为正确的主机。

注意:Cisco 的防火墙产品 (ASA) 不会映射 icmp 错误,除非配置为这样做:

policy-map global_policy
 class inspection_default
  ...
  inspect icmp error

IOS 无需任何特定配置即可执行此操作。