本文主要探讨多个使用相同网段(或网段地址有交叉)的局域网如何通过ipsec异地组网。

如果是在正常情况,AB两个网络希望实现LAN-TO-LAN,一般的做法是借助ipsec建立点到点连接,并建立防火墙允许策略,感兴趣流量网段里的终端即可直接互访。

回到今天的目标,由于两边的网段相同(或部分重合),感兴趣流量就无法正常配置,而且也无从区分某个ip地址属于哪一侧。

问题的症结在什么地方已经清楚了,那解决方案就比较清晰了:改变ip地址。当然不是改变局域网所使用的网段,而是进行地址转换。

以下是一个典型的IPSEC点到点拓扑(配置就不做了,之前写过范例文章)。图中两个局域网使用不同的IP地址,所以可以在建立隧道以后直接互访对方的局域网地址,但是两侧局域网地址重合的时候,写感兴趣流量就只能抓瞎了。

最终拓扑

以下是调整过的拓扑。调整过的拓扑对原来的局域网络进行了二次NAT,内侧NAT将两侧原本相同网段的IP地址(192.168.10.0/24)映射到不同的新网段(192.168.100.0/24和192.168.110.0/24),这样转换以后,感兴趣流量的策略就可以正常写了。建立IPSEC以后,双方将通过映射出来的外层IP地址通信。

配置点

  • Internet路由器用来模拟公网环境,只需配置IP地址(保证全网互通所必备的基本配置);
  • 所有设备的基础网络配置(保证全网互通所必备的基本配置);
  • Internet路由器除外,为所有路由器配置默认路由(保证全网互通所必备的基本配置);
  • 内层路由器做一层静态NAT映射,将所有需要被访问到的内网地址发布出来;
  • 外层路由器配置NAT,模拟真实网络环境(保证全网互通所必备的基本配置);
  • 外层路由器起IPSEC,与对端建立site-to-site连接。

关键配置

两台PC


#GNS VPC只需要用一条命令配置IP网关即可
#使用相同IP,模拟冲突的场景
ip 192.168.10.2/24 192.168.10.1

左侧、内层路由器R01(用于屏蔽局域网段,并将之发布到新网段以避开冲突)


int f0/0
ip add 192.168.10.1 255.255.255.0
no sh
ip nat in

int f0/1
ip add 192.168.100.1 255.255.255.0
no sh
ip nat out

ip route 0.0.0.0 0.0.0.0 192.168.100.2
#按需配置,需要发布几个就写几条
ip nat inside source static 192.168.10.2 192.168.100.102

左侧、外层路由器R00(作为正常的网关设备、IPSEC设备)


#ACL 100用于NAT转换(先deny掉ipsec流量,让给ACL101进行匹配)
access-list 100 deny   ip 192.168.100.0 0.0.0.255 192.168.110.0 0.0.0.255
access-list 100 permit ip 192.168.100.0 0.0.0.255 any

#ACL 101用于ipsec匹配感兴趣流量
access-list 101 permit ip 192.168.100.0 0.0.0.255 192.168.110.0 0.0.0.255

ip route 0.0.0.0 0.0.0.0 100.1.1.2
ip nat inside source list 100 interface FastEthernet0/1 overload

#IPSEC 配置
crypto isakmp policy 1
 encr aes
 authentication pre-share
 group 2
 lifetime 28800 
crypto isakmp key psk address 100.1.2.2
crypto ipsec transform-set transet esp-3des esp-md5-hmac
crypto map map1 1 ipsec-isakmp
 set peer 100.1.2.2
 set transform-set transet
 match address 101
 
 int f0/0
 ip add 192.168.100.2 255.255.255.0
 ip nat in
 
 int f0/1
 ip add 100.1.1.1 255.255.255.0
 ip nat out
 crypt map map1

右侧、内层路由器R11(用于屏蔽局域网段,并将之发布到新网段以避开冲突)


int f0/0
ip add 192.168.110.2 255.255.255.0
ip nat out

int f0/1
ip add 192.168.10.1 255.255.255.0
ip nat in

ip route 0.0.0.0 0.0.0.0 192.168.110.1
#按需配置,需要发布几个就写几条
ip nat inside source static 192.168.10.2 192.168.110.102

右侧、外层路由器R00(作为正常的网关设备、IPSEC设备)

#ACL 101用于NAT转换(先deny掉ipsec流量,让给ACL101进行匹配)
access-list 101 deny   ip 192.168.110.0 0.0.0.255 192.168.100.0 0.0.0.255
access-list 101 permit ip 192.168.110.0 0.0.0.255 any
#ACL 100用于ipsec匹配感兴趣流量
access-list 100 permit ip 192.168.110.0 0.0.0.255 192.168.100.0 0.0.0.255

ip route 0.0.0.0 0.0.0.0 100.1.2.1
ip nat inside source list 101 interface FastEthernet0/0 overload
#IPSEC 配置
crypto isakmp policy 1
 encr aes
 authentication pre-share
 group 2
 lifetime 28800 
crypto isakmp key psk address 100.1.1.1
crypto ipsec transform-set transet esp-3des esp-md5-hmac
crypto map map1 1 ipsec-isakmp
 set peer 100.1.1.1
 set transform-set transet
 match address 101
  
 int f0/0
 ip add 100.1.2.2 255.255.255.0
 ip nat out
 crypt map map1

 int f0/1
 ip add 192.168.110.1 255.255.255.0
 ip nat in

测试

(访问对端NAT出来的局域网地址)

packet tracert存档文件

GNS存档文件