本文主要探讨多个使用相同网段(或网段地址有交叉)的局域网如何通过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出来的局域网地址)