为什么 ip nat {in,out}side?

网络工程 思科 路由器 snat
2021-07-31 09:34:22

尽管我了解 Cisco 上的 NAT 是如何配置的,但关于其背后的原因出现了一个更广泛的问题。

当配置例如 NAT 过载时,您指定几个项目:

  • 访问列表...

    ip access-list extended LAN_ACL permit ip 192.168.0.0 0.0.0.255 any

  • ...以及 NAT 配置本身:

    ip nat inside source list LAN_ACL interface Fa0 overload

  • 除此之外,您显然需要连接到指定的网络:

interface Vlan1
  ip address 192.168.0.1 255.255.255.0
interface Fa0
  ip address 203.0.113.23 255.255.255.0

我不完全理解的是为什么您需要进一步指定ip nat insideip nat outside在接口上。

NAT 语句中提到了接口名称,ACL 所在的网络在路由器上必须是唯一的(VRF 技术除外)。系统不能通过给定的内容来确定哪个是内外?

任何见解表示赞赏。

3个回答

如果您只有一个使用内部源 NAT 的内部接口和一个外部接口,那么您可能是对的。问题是您可能有多个外部和内部接口。发生转换的接口不需要是外部或内部接口。

例如,您可以有两个路由器,并且路由器不能共享 NAT 表。假设在 R1 上,您在 Loopback0 上执行 NAT。您可以将 FastEthernet0/0 作为 WAN 接口,即外部接口,将 FastEthernet0/1 作为与同样具有 WAN 接口的 R2 的连接。您可以将两个 FastEthernet 接口配置为外部接口,因此从它们返回的任何流量都会发送到 Loopback0 以进行转换查找。这种情况在非对称路由中很常见。

还有多个版本的 NAT,例如内部源、内部目标、外部源。

接口上的“ip nat inside”和“ip nat outside”是触发 NAT 处理的原因。

触发 NAT 处理后,您可以查找“IP nat inside source list LAN_ACL...”命令来识别要测试的访问列表,以查看是否应该发生 NAT 转换。

ACL 可能匹配也可能不匹配数据包。ACL 上的源地址与您的路由器接口无关。您可以在使用 Internet 可路由空间的 ISP 网关上对 10.xxx 桌面主机进行 NAT。事实上,这是一种常见的部署。您使用外部接口 IP 进行 NAT 过载的示例仅适用于小型部署。大型部署将改为使用池(真正大型部署将使用 ASA...IOS 无法进行可扩展的 NAT...ASA 在 NAT 方面比防火墙更好 :-)

不在每个接口上都启用 NAT 也很有帮助。NAT 使用大量 TCAM 资源,如果与同一接口上的 ACL 结合使用,可能会“爆炸”。按接口启用 NAT 接口是应该的方式。请注意路由协议现在是如何在 IPv6 中逐个接口启用的。

我赞成你的问题,因为你包含了配置:-)

接口上提到了 ip nat inside & ip nat outside 是因为第 3 层或路由器不知道哪个接口被认为是内部接口,哪个接口被认为是外部接口。这就是我们通过分配清楚地告诉路由器的原因

Int ethernet 1/1
Ip nat inside 
No shutdown

Int ethernet 1/2
Ip nat outside 
No shutdown

如果我们提到上面的状态路由器将考虑 1/1 作为内部接口 & 1/2 作为外部接口