Cisco 路由器 NAT 配置中的这三个选项是什么意思?

网络工程 思科 路由器 纳特 思科-ios cisco 命令
2021-07-13 19:12:48

在标准静态 PAT 配置中,一个 IP:Port 组合始终映射到另一个 IP:Port 组合,可以配置内部/外部/源/目标三种可能的组合。

例如,这是一个配置示例:

ip nat inside source static tcp 10.0.20.13 8080 2.2.2.33 80
       ^^^^^^^^^^^^^

通俗地说,此配置允许任何外部主机通过端口 80 启动到 IP 2.2.2.33 的 TCP 连接。当此数据包到达路由器时,目标 IP 地址和端口( 2.2.2.33:80) 被转换为10.0.20.13:8080

反过来也会发生,如果内部主机 10.0.20.13 发送源端口为 8080 的 TCP 数据包,当该数据包穿过路由器时,源 IP 和端口( 10.0.20.13:8080) 被转换为2.2.2.33:80(这通常是一个响应数据包,而不是从内部主机发起的)


以下是上面标记部分的所有三个配置选项:

Router(config)#ip nat inside ?
  destination  Destination address translation
  source       Source address translation

Router(config)#ip nat outside ?
  source  Source address translation

实际上,您可以配置:

  • ip nat inside source static tcp {IP} {Port} {IP} {Port}
  • 目标内部的ip nat静态 tcp {IP} {Port} {IP} {Port}
  • ip nat外部源静态 tcp {IP} {Port} {IP} {Port}

这些选项有何不同,何时使用这三个选项中的每一个?请像我上面那样使用外行的术语来描述每个人如何操纵通过设备传来的数据包。

另外,谁能告诉我为什么没有外部目的地选项?

2个回答

非常仔细地考虑这一点。

内部源意味着您希望从源自网络内部的流量转换源地址。这是典型的“家庭网络”安排,允许您在公共 Internet 上使用私有地址。当然,这并不是这个版本的唯一用途。

内部目的地意味着您希望从外部地址到特定目的地传输协议和端口的流量到达特定内部地址。这就是家庭用户所做的,以允许从公共 Internet 访问具有私有地址的 Web 服务器之类的东西。当然,这并不是这个版本的唯一用途。

外部源将源自外部的流量转换为看起来像是源自内部地址。在具有重叠 IP 地址范围的公司合并并需要开始连接网络的情况下,它非常有用。您可以将源自外部的流量的源地址(通常具有与内部地址冲突的外部源地址)转换为可用内部地址范围内的源地址地址。

外部目的地并没有多大意义,因为它与端口转发相反。这将限制任何源自内部、目的地为特定外部传输协议和端口的流量到单个外部地址。

我们必须从基础开始,所以让我们修改 NAT 术语。NAT 转换 IP 数据包中的 IP 地址,对吗?这意味着什么?基本上,它会产生海市蜃楼——是的,错觉,你知道。例如,在典型的 NAT 配置中,当私有寻址 LAN 主机使用外部路由器接口的公共 IP 地址访问 Internet 时,这些主机对于 Internet 服务器显示为具有此公共 IP(或来自公共 IP 池的 IP)。当然,NAT 不会创建新的物理主机——但它会创建一种新的虚拟实体——在这个例子中,LAN 主机将自己视为 192.168.1.x,但 Internet 服务器将它们视为 203.0.113.x——一组物理主机,但两组 IP 地址。两组不同的(逻辑)主机。光学错觉。术语是这样的:

  • 内部本地- 内部主机的“真实”IP 地址,分配给它们的接口以及它们彼此看到的
  • 全球内部- 外部世界看到的“海市蜃楼”IP地址
  • 外部全局- 外部主机自己和(几乎)整个互联网看到的外部主机的“真实”IP地址
  • 本地外部- 我们看到外部主机时的“海市蜃楼”IP 地址(如果我们要求 NAT 进行相应的转换)

正如您所看到的,我们有义务将我们的网络与 Internet 或其他外部网络区分开来。我们通过将路由器的 IP 接口标记为ip nat insideip nat outside 来做到这一点,同意吗?

现在让我们记住 NAT 通常是如何实现的:它维护包含有关转换条目的特殊表。重要的一点是这些条目可以静态动态创建对于动态创建的条目,流量的方向很重要 - 流量是从内部向外部发起还是从内部发起?对于静态条目,情况并非如此——它们是对称的包含static关键字的NAT 配置语句在将它们放入运行配置后立即创建静态条目;那些使用动态关键字的人会观察有趣的流量并动态创建翻译条目,这些条目最终会超时。

我们已经可以推测您的最后一个问题:为什么没有外部目的地选项?ip nat inside source static创建静态 NAT 条目,该条目完全按照您的描述进行转换,但这不仅包括从特定一侧发起的流量 - 静态 NAT 条目是对称的。因此,IP NAT外的目的地静态会给翻译静态项目的地进入您的网络流量的IP地址的流量从去IP地址的内部-而这正是IP NAT提供内源静命令可以!所以,拥有这个命令简直是多余的。唯一的区别是,当使用一种或另一种形式的基本相同的命令时,您会将源 ip 与目标 ip 互换。

关于您的第一个陈述,“可以配置内部/外部/源/目标的三种可能组合”-事实并非如此。关键是,一般来说,NAT 配置语句不是“数学公式”,应该被整体考虑,而不是从独立的关键字逻辑上构建。因此,每个“组合”都为特定任务提供了解决方案,例如,目标列表中的 ip nat用于配置使用特定算法的服务器 TCP 负载平衡,并且不适用于 UDP。此外,(在现代 IOS 中)目标静态命令中没有ip nat - 您是否真的尝试过使用静态选项?

您可以在此 Cisco 论文中看到使用 NAT 的一些特定场景,包括配置示例:http : //www.cisco.com/c/en/us/td/docs/ios-xml/ios/ipaddr_nat/configuration/12-2sx /nat-12-2sx-book/iadnat-addr-consv.html

最后,我想提一下,有时 NAT 并不是你想要的,例如,看看我对这个“规范问题”的回答:https : //serverfault.com/questions/55611/loopback-to-forwarded-public- ip 地址来自本地网络发夹 nat/733532#733532

PS我应该深入了解更多细节吗?