带有路由映射的 Cisco 静态 NAT

网络工程 思科 纳特
2021-07-13 23:18:53

更新:

似乎路由映射只匹配 IP 地址,而不匹配端口。本周在不同的设备、型号和软件版本上遇到了另一种情况。最终将 NAT 语句更改为:

源静态 tcp 192.168.1.20 3389 xxxx 3389内的 ip nat

然后我基于 ACL 而不是路由映射来限制访问。定义条件 NAT 本来很好,但它似乎不起作用。


因此,我们有一个非常标准的 NAT 盒设置,可为许多客户提供托管 NAT 解决方案。

这是基本的拓扑:

拓扑

Cisco IOS 软件、C2900 软件 (C2900-UNIVERSALK9-M),版本 15.2(4)M3,发布软件 (fc2)

我遇到的问题与 NAT 语句的路由映射部分有关。

ip nat inside source static tcp 10.1.10.201 22 x.x.x.x 22 vrf Customer1-vrf route-map Customer1-portforwarding extendable

ip access-list extended Customer1-forwarding-acl
 permit tcp host 10.1.10.201 host a.a.a.a eq 22
 permit tcp host 10.1.10.201 host b.b.b.b eq 22

route-map Customer1-portforwarding permit 10
 match ip address Customer1-forwarding-acl

我相信我对路线图的理解是正确的。它旨在指定允许 NAT 和不允许 NAT 的内容。我基本上是在尝试将其设置为仅允许来自特定公共源地址的翻译。它似乎没有这样做。它似乎允许从任何公共地址进行翻译。

我将 ACL 完全更改为“deny ip any any”语句,但它仍然允许。我有点不知所措。看来路线图没有做任何事情。

任何帮助将不胜感激!

干杯,

H

4个回答

我相信问题出在 VRF 配置本身,所以请检查下一个
1. 在 NAT 所涉及的接口配置“ip vrf forwarding Customer1-portforwarding”(nat inside,nat external interfaces)
2. 如果您的访问列表将使用VRF 路由表,因此您需要在路由映射配置下添加“set vrf Customer1-portforwarding”命令以利用 VRF 路由表
3. 通过设置下一跳使您的路由映射更加具体
4. 使用 'sh ip 验证 NATing nat 翻译命令

利用这些 URL
NAT over VRF
Route-map over VRF

我意识到这篇文章很旧,但我想跟进这个帖子,以防万一你有这个问题。

只是好奇您在全球范围之外尝试此 NAT 的 IP 地址是否也与客户端位于同一 VRF 上。如果是这样,您可能想尝试:match-in-vrf

ip nat inside source static tcp 10.1.10.201 22 x.x.x.x 22 vrf Customer1-vrf route-map Customer1-portforwarding match-in-vrf

我还会尝试其他两种方法:1.) 修改路由映射的 ACL,使其与要对它们进行 NAT 的 IP 具有相同的源。如果我们从左到右阅读 NAT 规则,它可能不会在转换发生之前对此进行分析。2.) 在源静态 tcp 之外尝试 ip nat ......我不确定哪个会起作用,但看到如下调试会很好:

access-list 99 permit host 10.1.10.201
access-list 99 permit host x.x.x.x
!
debug ip nat 99
!
terminal length 0
!
show log

尝试从以下位置删除端口 22:

ip nat inside source static tcp 10.1.10.201 22 x.x.x.x 22 vrf Customer1-vrf route-map Customer1-portforwarding extendable

在 NAT 语句中,您指示内部地址上的 SOURCE 端口为 22,但在您的 ACL 中,您将“eq 22”放在 DESTINATION 端。尝试从您的路由映射 ACL 中完全删除“eq 22”,或者将其放在正确的一侧(源)以匹配您的 NAT 语句。