防止静态 NAT 响应 ARP 请求

网络工程 纳特 思科-ios cisco-isr
2021-08-02 08:13:13

我们正在尝试合并 2 个具有重叠 IP 空间的网络:这是迄今为止的配置:

interface Tunnel1
 description VPN Port CompanyA
 ip vrf forwarding LAN
 ip address 172.18.0.79 255.255.255.0
 ip nat enable
 tunnel source GigabitEthernet0/1
 tunnel destination 1.1.1.2
 tunnel vrf DSL
end

interface GigabitEthernet0/0
 description LAN Port CompanyB
 ip vrf forwarding LAN
 ip address 172.16.1.110 255.255.0.0 secondary
 ip address 172.16.1.98 255.255.0.0
 ip nat enable
end

ip nat source static 172.16.222.110 172.16.1.110 vrf LAN
ip nat source static 172.16.1.10 172.16.168.10 vrf LAN

思路如下:

IP_A:172.16.222.110(物理服务器A) IP_B:172.16.168.10(虚拟服务器B) IP_C:172.16.1.10(物理服务器B) IP_D:172.16.1.110(虚拟服务器A)

Server1 (IP_A) ping Server2 (IP_B) 的虚拟 IP。在 NAT 转换中,IP_A 被 IP_D 替换,IP_B 被 IP_C 替换。这样,我们想屏蔽两个地方的 IP。这应该允许 2 个服务器直接通信。到目前为止,这有效。在 NAT 路由器上,当启用 ip nat debug 时,我可以看到正确的输出:

one ICPM echo from Server1 to Server2
*Feb 27 16:01:27.307: NAT: s=172.16.222.110->172.16.1.110, d=172.16.168.10 [22]
*Feb 27 16:01:27.308: NAT: s=172.16.1.110, d=172.16.168.10->172.16.1.10 [22]
one ICPM echo response from Server1 to Server2
*Feb 27 16:01:27.317: NAT: s=172.16.1.10->172.16.168.10, d=172.16.1.110 [22]
*Feb 27 16:01:27.318: NAT: s=172.16.168.10, d=172.16.1.110->172.16.222.110 [22]

另一边也一样。如果 Server2 (IP_C) Ping 来自 Server1 (IP_D) 的虚拟地址,则转换将按照您预期的相反顺序完成:

one ICPM echo from Server2 to Server1
*Feb 27 16:04:14.066: NAT: s=172.16.1.10->172.16.168.10, d=172.16.1.110 [20]
*Feb 27 16:04:14.067: NAT: s=172.16.168.10, d=172.16.1.110->172.16.222.110 [20]
one ICPM echo respnse from Server2 to Server1
*Feb 27 16:04:14.126: NAT: s=172.16.222.110->172.16.1.110, d=172.16.168.10 [20]
*Feb 27 16:04:14.127: NAT: s=172.16.1.110, d=172.16.168.10->172.16.1.10 [20]

现在是奇怪的部分。如果所有转换都被清除,并且我从 Server2 (IP_C) ping Server1 的物理 IP (IP_A),我预计通信会失败,因为 IP_A 可能是 Server2 所在的本地网络中的设备。但事实证明,正在形成动态 NAT 规则,并且允许流量到达另一端:

*Feb 27 16:36:09.674: NAT*: s=172.16.1.10->172.16.168.10, d=172.16.222.110 [10]
*Feb 27 16:36:09.720: NAT: s=172.16.222.110, d=172.16.168.10->172.16.1.10 [10]

NAT 转换看起来与来自另一端的流量相同:

NATROUTER#show ip nat nvi translations vrf LAN
Pro Source global      Source local       Destin  local      Destin  global
icmp 172.16.168.10:3   172.16.1.10:3      172.16.222.110:3   172.16.222.110:3
--- 172.16.168.10      172.16.1.10        ---                ---
icmp 172.16.222.110:3  172.16.222.110:3   172.16.168.10:3    172.16.1.10:3
--- 172.16.1.110       172.16.222.110     ---                ---

我们可以看到路由器响应了这个IP的arp请求。在 Server2 上看到:

Server2#show ip arp 
Protocol  Address          Age (min)  Hardware Addr   Type   Interface
Internet  172.16.1.10             -   0c52.53ee.5300  ARPA   GigabitEthernet0/0
Internet  172.16.1.98             3   0c52.5310.8300  ARPA   GigabitEthernet0/0
Internet  172.16.1.110            3   0c52.5310.8300  ARPA   GigabitEthernet0/0
Internet  172.16.222.110          0   0c52.5310.8300  ARPA   GigabitEthernet0/0

这不是最佳的,因为在这个设置中,我们仍然需要检查 companyA 的服务器使用的 IP 是否被 companyB 使用。否则我们会在 companyB 的 LAN 上有重复的 IP,因为我们的路由器和具有此 IP 的潜在服务器都会解析 arp 请求。是否有可能禁用这种动态功能?

1个回答

我们可以看到路由器响应了这个IP的arp请求。

在路由器 ( no ip proxy-arp)上禁用代理 ARP,以便路由器不会为不同网络上的设备应答 ARP。代理 ARP 是一个安全漏洞,无论如何都应该禁用。


Cisco 实际上有一种特殊类型的 NAT,专为重叠网络(外部源)而设计。看到这个问题