根据目的地转换为 Cisco 路由器上的不同地址

网络工程 思科 纳特
2022-03-02 07:25:11

我有一个配置了隧道的 Cisco 路由器:

# sh ip int brief
FastEthernet0/1 192.168.1.1
Dialer1         1.2.3.4
Tunnel1         169.254.1.10

Dialer1是一个 pppoe 互联网连接和Tunnel1一个到另一个网络的 VPN 连接 - 172.16.1.0/24。路由配置为 192.168.1 和 172.16.1。网络在这两个网络之间以及 192.168 和互联网之间按预期工作(ip nat outside在 dialer1 上,在 fa0/1 上,和ip nat inside source list 192-168-1-0 dialer1 overload

但是,我无法从路由器本身连接到 172.16.1 网络 - 源地址来自 169.254.xy 的隧道接口 IP 我可以在远程网络上添加 169.254 的路由,但更希望数据包来自路由器将源地址转换为 192.168.1.1。是否有可能做到这一点?

3个回答

NAT 将地址从内部接口转换为外部接口。所以来自路由器的数据包不会被翻译。

由于其他网络已经在 169.254.xy 上有一个接口,我认为添加路由不会有帮助。

玩了好久,终于搞定了。要完成的高级步骤如下:

  1. 为到 Internet 和远程网络的内部流量创建通用 NAT 访问列表(使用允许和拒绝规则)
  2. 创建特定的 NAT 访问列表以匹配源自路由器的流量
  3. 将外部匹配器添加到隧道接口
  4. 创建 2 个 nat 规则,为上面 #1 和 #2 中的每个访问列表创建 1 个。

这是配置:

ip access-list extended INSIDE_TO_OUTSIDE_GENERAL
 deny ip 192.168.1.0 0.0.0.255 172.16.1.0 0.0.0.255 ! Match local private to remote private traffic - deny translation
 permit ip 192.168.1.0 0.0.0.255 any ! translate all other local traffic
ip access-list extended FROM_ROUTER_DOWN_TUNNEL
 permit ip host 169.254.1.10 172.16.1.0 0.0.0.255 ! allow traffic with source address matching tunnel interface and a destination of remote private

ip nat inside source list INSIDE_TO_OUTSIDE_GENERAL interface Dialer1 overload ! attach inside to outside traffic - excludes pvt to pvt
ip nat inside source list FROM_ROUTER_DOWN_TUNNEL interface FastEthernet0/1 overload ! traffic from local tunnel interface to remote private gets translated to FA0/1 (i.e. inside private) IP.
int Tunnel1
  ip nat outside

对第一个访问列表的调整(添加deny)允许我将 添加ip nat outside到隧道中,而不是将 192.168 流量转换为 172.16。第二个访问列表允许我识别前往远程私有网络的路由器发起的流量,第二个ip nat inside规则确保从隧道 IP 到私有内部 IP (.1.1) 的转换。

像魅力一样工作。

正如@RonTrunk 指出的那样,NAT 从内部接口转换为外部接口。路由器可以使用正确的命令从接口获取很多东西。您可以创建要翻译的地址的访问列表,在访问列表中添加环回作为内部接口,并尝试从中获取您想要翻译的内容。

例如,一些源命令:

ip tftp source-interface Loopback0
ip ftp source-interface Loopback0
ip ssh source-interface Loopback0
ip tacacs source-interface Loopback0
ip domain lookup source-interface Loopback0
logging source-interface Loopback0
snmp-server trap-source Loopback0
ntp source Loopback0