登录站点

用户名

密码

内网地址重叠环境下部署IPSec VPN

热22已有 493 次阅读  2010-08-30 14:00   标签:  IPSec  VPN  内网  地址  重叠  隧道内  NAT 

内网地址重叠环境下

 

部署IPSec VPN

 

Bati-gol 

 

概述

 

在部署IPSec VPN的过程中,很多时间都是在两端内网地址网段不同的情况下进行部署。不同网段的内网进行互联IPSec VPN也是最常见,用的最多的。

在一些特殊环境下,例如两家公司合并,内网地址是重叠的,同时管理员不想对内部地址进行重新编址时,这个时候就需要在内网地址重叠的环境下部署IPSec VPN。

 

案例分析

 

见如下Topology

 

上述拓扑中,模拟了这样一个环境,两端内网的地址段都为192.168.1.0/24

Site_A

Lan:192.168.1.1/24

Wan:10.1.1.2/24

 

Site_B

Lan:192.168.1.1/24

Wan:172.16.1.2/24

 

Internet Router模拟公网环境,配置IP地址即可,无需添加任何路由,保持有两条直连路由即可。

 

 

部署思路:VPN隧道内NAT

 

在该环境下需要互联相同地址段的内网,就需要在IPSec VPN隧道中采用NAT对地址做转换,对于Site_A来说,需要将Site_B的内网网段转换为10.10.10.0/24,对于Site_B来说,需要将Site_A的内网网段转换为10.5.5.0/24

通过在VPN隧道中启用NAT,当Site_A访问Site_B的内网资源时,目的IP网段为10.10.10.0/24;当Site_B访问Site_A的内网资源时,目的IP网段为10.1.1.0/24。

举例:

Site_A的Client: 192.168.1.100   被转换后IP:10.1.1.100

Site_B的Server:192.168.1.200   被转换后IP:10.10.10.200

 

Site_A Clinet 访问Site_B Srever
源地址:192.168.1.100,目的地址10.10.10.200(Site_B Server 192.168.1.200转换后的IP)

 

Site_B Server 访问 Site_A Client

源地址:192.168.1.200.,目的地址10.1.1.100(Site_A Clinet 192.168.1.100转换后的IP)

 

 

 

 

配置概要

 

Site_A:

 

ip nat inside source static network 192.168.1.0 10.5.5.0 /24

将Site_A的内网网段192.168.1.0/24转换成10.5.5.0/24网段

 

ip nat outside source static network 192.168.1.0 10.10.10.0 /24

将从外部进来,源地址为192.168.1.0/24的网段转化为10.10.10.0/24,用于在数据回包时,将Site_B的内网IP192.168.1.0 转换为10.10.10.0/24网段

通过以上两条NAT转换,实现相同网段的互访。

 

access-list 101 permit ip 10.5.5.0 0.0.0.255 192.168.1.0 0.0.0.255

定义源地址为10.5.5.0/24网段(Site_A转换后的网段),目的地址为192.168.1.0/24(对端已被转换成10.10.10.0/24)的数据进行加密

 

访问方式

Site_A ------------------------> Site_B

源地址                                     目的地址

192.168.1.0/24                         10.10.10.0/24

 

Site_B------------------------->Site_A

源地址                                     目的地址

192.168.1.0/24                         10.5.5.0/24

 

 

 

Site_A配置

Site_A#

 

crypto isakmp policy 10

 hash md5

 authentication pre-share

crypto isakmp key cisco address 172.16.1.2 255.255.255.0

!

!

crypto ipsec transform-set myset esp-des esp-md5-hmac

!

crypto map mymap 10 ipsec-isakmp

 set peer 172.16.1.2

 set transform-set myset

 match address 101

!

!

!

!

interface Serial0/0

 ip address 10.1.1.2 255.255.255.0

 ip nat outside

 ip virtual-reassembly

 serial restart-delay 0

 crypto map mymap

 

interface FastEthernet1/0

 ip address 192.168.1.1 255.255.255.0

 ip nat inside

 ip virtual-reassembly

 duplex auto

 speed auto

!

ip http server

no ip http secure-server

!

ip route 0.0.0.0 0.0.0.0 10.1.1.1(该路由条目是为了让A能找到B的Wan口,以及A访问对端内网的数据丢进VPN隧道)

如果没有必要访问Internet,可以删除以上路由,替换成

ip route 172.16.1.2 255.255.255.255 s0/0  A必须找到B的Wan口,才能建立VPN

 

ip route 10.10.10.0 255.255.255.0 s0/0  A访问B内网转换过的网段,丢进VPN隧道

 

 

!

ip nat inside source static network 192.168.1.0 10.5.5.0 /24

将Site_A的内网网段192.168.1.0/24转换成10.5.5.0/24网段

 

ip nat outside source static network 192.168.1.0 10.10.10.0 /24

将从外部进来,源地址为192.168.1.0/24的网段转化为10.10.10.0/24,用于在数据回报时,将Site_B的内网IP192.168.1.0 转换为10.10.10.0/24网段

     

access-list 101 permit ip 10.5.5.0 0.0.0.255 192.168.1.0 0.0.0.255

定义源地址为10.5.5.0/24网段(Site_A转换后的网段),目的地址为192.168.1.0/24(对端已被转换成10.10.10.0/24)的数据进行加密

 

 

 

Site_B配置

Site_B#

 

crypto isakmp policy 10

 hash md5

 authentication pre-share

crypto isakmp key cisco address 10.1.1.2 255.255.255.0

!        

!

crypto ipsec transform-set myset esp-des esp-md5-hmac

!

crypto map mymap 10 ipsec-isakmp

 set peer 10.1.1.2

 set transform-set myset

 match address 101

!

!

!

!

interface Serial0/0

 ip address 172.16.1.2 255.255.255.0

 ip nat outside

 ip virtual-reassembly

 serial restart-delay 0

 crypto map mymap

!

interface FastEthernet1/0

 ip address 192.168.1.1 255.255.255.0

 ip nat inside

 ip virtual-reassembly

 duplex auto

 speed auto

!

ip http server

no ip http secure-server

!

ip route 0.0.0.0 0.0.0.0 172.16.1.1 (该路由条目是为了让B能找到A的Wan口建立VPN所必须的,以及A访问对端内网的数据丢进VPN隧道)

如果没有必要访问Internet,可以删除以上路由,替换成

ip route 10.10.10.2 255.255.255.255 s0/0  B必须找到A的Wan口,才能建立VPN

 

ip route 10.5.5.0 255.255.255.0 s0/0  B访问A转换过的内网后,将数据丢进VPN隧道

!

!        

access-list 101 permit ip 192.168.1.0 0.0.0.255 10.5.5.0 0.0.0.255

定义源地址为192.168.1.0网段(Site_B真实网段),目的地址为10.5.5.0/24(Site_A转换后的网段)的数据进行加密

!

control-plane

 

 

测试

 

Site_A#ping 10.10.10.1 source 192.168.1.1

Type escape sequence to abort.

Sending 5, 100-byte ICMP Echos to 10.10.10.1, timeout is 2 seconds:

Packet sent with a source address of 192.168.1.1

!!!!!

Success rate is 100 percent (5/5), round-trip min/avg/max = 120/172/244 ms

10.10.10.1为Site_B内网IP192.168.1.1转换后的IP 10.10.10.1,source为Site_A的真实内网IP

 

Site_B#ping 10.5.5.1 source 192.168.1.1

Type escape sequence to abort.

Sending 5, 100-byte ICMP Echos to 10.5.5.1, timeout is 2 seconds:

Packet sent with a source address of 192.168.1.1

!!!!!

Success rate is 100 percent (5/5), round-trip min/avg/max = 140/156/168 ms

10.5.5.1为Site_A内网IP192.168.1.1转换后的IP 10.10.10.1,source为Site_B的真实内网IP

 

Site_A#show crypto isakmp sa

dst             src             state          conn-id slot status

172.16.1.2      10.1.1.2        QM_IDLE              1    0 ACTIVE

 

Site_A#show crypto ipsec sa detail

interface: Serial0/0
    Crypto map tag: mymap, local addr 10.1.1.2

   protected vrf: (none)
   local  ident (addr/mask/prot/port): (10.5.5.0/255.255.255.0/0/0)      本地为10.5.5.0/24
   remote ident (addr/mask/prot/port): (192.168.1.0/255.255.255.0/0/0)  远端为192.168.1.0/24

   current_peer 172.16.1.2 port 500
     PERMIT, flags={origin_is_acl,}
    #pkts encaps: 9, #pkts encrypt: 9, #pkts digest: 9
    #pkts decaps: 9, #pkts decrypt: 9, #pkts verify: 9
    #pkts compressed: 0, #pkts decompressed: 0
    #pkts not compressed: 0, #pkts compr. failed: 0
    #pkts not decompressed: 0, #pkts decompress failed: 0
    #pkts no sa (send) 1, #pkts invalid sa (rcv) 0
    #pkts encaps failed (send) 0, #pkts decaps failed (rcv) 0
    #pkts invalid prot (recv) 0, #pkts verify failed: 0
    #pkts invalid identity (recv) 0, #pkts invalid len (rcv) 0
    #pkts replay rollover (send): 0, #pkts replay rollover (rcv) 0
    ##pkts replay failed (rcv): 0
    #pkts internal err (send): 0, #pkts internal err (recv) 0

     local crypto endpt.: 10.1.1.2, remote crypto endpt.: 172.16.1.2
     path mtu 1500, ip mtu 1500, ip mtu idb Serial0/0
     current outbound spi: 0x153C47D6(356272086)

     inbound esp sas:
      spi: 0x7890B629(2022749737)
        transform: esp-des esp-md5-hmac ,
        in use settings ={Tunnel, }
        conn id: 2001, flow_id: SW:1, crypto map: mymap
        sa timing: remaining key lifetime (k/sec): (4530262/3355)
        IV size: 8 bytes
        replay detection support: Y
        Status: ACTIVE

     inbound ah sas:

     inbound pcp sas:

     outbound esp sas:
      spi: 0x153C47D6(356272086)
        transform: esp-des esp-md5-hmac ,
        in use settings ={Tunnel, }
        conn id: 2002, flow_id: SW:2, crypto map: mymap
        sa timing: remaining key lifetime (k/sec): (4530262/3355)
        IV size: 8 bytes
        replay detection support: Y
        Status: ACTIVE

     outbound ah sas:

     outbound pcp sas:

 

 

Site_B#show crypto ipsec sa detail

interface: Serial0/0
    Crypto map tag: mymap, local addr 172.16.1.2

   protected vrf: (none)
   local  ident (addr/mask/prot/port): (192.168.1.0/255.255.255.0/0/0)   本端为192.168.1.0/24
   remote ident (addr/mask/prot/port): (10.5.5.0/255.255.255.0/0/0)      远端为10.5.5.0/24
   current_peer 10.1.1.2 port 500
     PERMIT, flags={origin_is_acl,}
    #pkts encaps: 9, #pkts encrypt: 9, #pkts digest: 9
    #pkts decaps: 9, #pkts decrypt: 9, #pkts verify: 9
    #pkts compressed: 0, #pkts decompressed: 0
    #pkts not compressed: 0, #pkts compr. failed: 0
    #pkts not decompressed: 0, #pkts decompress failed: 0
    #pkts no sa (send) 0, #pkts invalid sa (rcv) 0
    #pkts encaps failed (send) 0, #pkts decaps failed (rcv) 0
    #pkts invalid prot (recv) 0, #pkts verify failed: 0
    #pkts invalid identity (recv) 0, #pkts invalid len (rcv) 0
    #pkts replay rollover (send): 0, #pkts replay rollover (rcv) 0
    ##pkts replay failed (rcv): 0
    #pkts internal err (send): 0, #pkts internal err (recv) 0

     local crypto endpt.: 172.16.1.2, remote crypto endpt.: 10.1.1.2
     path mtu 1500, ip mtu 1500, ip mtu idb Serial0/0
     current outbound spi: 0x7890B629(2022749737)

     inbound esp sas:
      spi: 0x153C47D6(356272086)
        transform: esp-des esp-md5-hmac ,
        in use settings ={Tunnel, }
        conn id: 2001, flow_id: SW:1, crypto map: mymap
        sa timing: remaining key lifetime (k/sec): (4484569/3187)
        IV size: 8 bytes
        replay detection support: Y
        Status: ACTIVE

     inbound ah sas:

     inbound pcp sas:

     outbound esp sas:
      spi: 0x7890B629(2022749737)
        transform: esp-des esp-md5-hmac ,
        in use settings ={Tunnel, }
        conn id: 2002, flow_id: SW:2, crypto map: mymap
        sa timing: remaining key lifetime (k/sec): (4484569/3187)
        IV size: 8 bytes
        replay detection support: Y
        Status: ACTIVE

     outbound ah sas:

     outbound pcp sas:

 

Site_A#show ip nat translations

Pro Inside global      Inside local       Outside local      Outside global

--- ---                ---                10.10.10.1         192.168.1.1

--- ---                ---                10.10.10.0         192.168.1.0

icmp 10.5.5.1:14       192.168.1.1:14     10.10.10.1:14      192.168.1.1:14

--- 10.5.5.1           192.168.1.1        ---                ---

--- 10.5.5.0           192.168.1.0        ---                ---

 

 

 

数据VPN隧道内NAT分析

 

debug查看NAT在VPN隧道中转换的效果

Site_A#debug ip nat detailed  

Site_A#ping 10.10.10.1 source 192.168.1.1

Type escape sequence to abort.
Sending 5, 100-byte ICMP Echos to 10.10.10.1, timeout is 2 seconds:
Packet sent with a source address of 192.168.1.1
!!!!!

 

*Mar  1 01:08:14.147: NAT: i: icmp (192.168.1.1, 37) -> (10.10.10.1, 37) [163]     

源地址为192.168.1.1 访问目的10.10.10.1(B内网被转换后的内网)


 

*Mar  1 01:08:14.151: NAT: s=192.168.1.1->10.5.5.1, d=10.10.10.1 [163]

第一条NAT  ip nat inside source static network 192.168.1.0 10.5.5.0 /24起作用

将源地址192.168.1.1NAT成10.5.5.1,目的地仍为10.10.10.1


*Mar  1 01:08:14.151: NAT: s=10.5.5.1, d=10.10.10.1->192.168.1.1 [163]

第二条NAT ip nat outside source static network 192.168.1.0 10.10.10.0 /24起作用

将目的地址为10.10.10.1NAT成192.168.1.1,

 

最终源地址为10.5.5.1,目的地址为192.168.1.1。也就符合感兴趣流量ACL

access-list 101 permit ip 10.5.5.0 0.0.0.255 192.168.1.0 0.0.0.255

 

最终IPSec VPN正常访问

 

 

 

 

总结

 

    通过在隧道内进行NAT地址转换实现地址重叠环境下的IPSec VPN互联,NAT转换只用在一台路由器上做设置。

        ip nat inside source static network 192.168.1.0 10.5.5.0 /24

        ip nat outside source static network 192.168.1.0 10.10.10.0 /24

    将A的内网换成10.5.5.0/24,B的内网换成10.10.10.0/24,当A访问B时,源地址为192.168.1.0/24,目的地址为10.10.10.0/24;当B访问A时,源地址为192.168.1.0/24,目的地址为10.5.5.0/24。

    另外,A,B上的默认路由不是为了访问互联网用的,只是为了让A能找到B,A访问B转换后的内网数据丢进隧道,B访问A转换后的内网丢进隧道。如果没有必要访问Internet,可以将A,B上的默认路由替换成两条静态路由:

A:ip route 0.0.0.0 0.0.0.0 10.1.1.1

    替换成

    ip route 172.16.1.2 255.255.255.255 s0/0  A必须找到B的Wan口,才能建立VPN

    ip route 10.10.10.0 255.255.255.0 s0/0  A访问B内网转换过的网段,丢进VPN隧道

 

B:ip route 0.0.0.0 0.0.0.0 172.16.1.1

   替换成

   ip route 10.10.10.2 255.255.255.255 s0/0  B必须找到A的Wan口,才能建立VPN

   ip route 10.5.5.0 255.255.255.0 s0/0  B访问A转换过的内网后,将数据丢进VPN隧道

 

    除了路由器可以在隧道内做NAT,一些防火墙如juniper,fortigate等也支持在隧道内做NAT转换实现内网地址重叠环境下IPSec VPN的互联。

 

参考文档

Cisco Document ID: 107992

《IPsec Between Two IOS Routers with Overlapping Private Networks Configuration Example》

分享 举报

发表评论 评论 (29 个评论)

  • mophis 2010-08-30 15:30
    好文章呀,学习了!
  • Bati-gol 2010-08-30 15:44
    mophis: 好文章呀,学习了!
  • net_ko 2010-08-30 16:11
    通常我怕麻烦,先P一顿客户的IT,然后告诉他改掉一端的内网IP。HOHO 有些歹毒。。。。。。欣赏Bati同志的辛苦总结
  • Bati-gol 2010-08-30 16:38
    net_ko: 通常我怕麻烦,先P一顿客户的IT,然后告诉他改掉一端的内网IP。HOHO 有些歹毒。。。。。。欣赏Bati同志的辛苦总结
    要是能说服IT人员把网段改了最好,不愿意改,只能隧道里NAT了,哈哈!
  • zdh1207 2010-08-30 17:06
    不错!学习!
    有个路由的问题请楼主赐教:当VPN通道建立之后,SiteA要访问SiteB使用哪条路由?还走那条缺省路由吗?由于互联网路由器不是VPN内网设备,它还能为SiteA路由吗?以前我在SiteA和SiteB之间建立GRE通道来解决这个问题.楼主这个的方法大大简化了这个步骤,不知实现原理是什么?
  • Bati-gol 2010-08-30 17:16
    zdh1207: 不错!学习!
    有个路由的问题请楼主赐教:当VPN通道建立之后,SiteA要访问SiteB使用哪条路由?还走那条缺省路由吗?由于互联网路由器不是VPN内网设备,它还能为SiteA路
    VPN连接后,Site_A和Site_B相当于直连的两台路由器,如果需要访问互联网,Site_A和Site_B的Wan可以为公网地址;当VPN互访时,中间的互联网路由器不参与路由选择,因为中间的路由器只是透明的隧道,相当于A.B路由器直连。
    一旦VPN连接后,Site_A主机访问Site_B的数据转发路径,不会出现互联网路由器的任何IP,数据从A的Wan口出来后,直接穿越VPN隧道被转发至B的Wan口,到B的内网。
    A--->B
    第一跳为A的Lan口IP,第二跳的Wan口IP,最后到B的内网Server
  • zdh1207 2010-08-30 17:32
    还是不太明白.是这样:首先,SiteA在访问SiteB时(反过来一样),它要不要查路由表?我想肯定要查的.假定它要访问一个10.10.10.10/24的主机,它先看目的地址,目的地址是10.10.10.10,再查路由表.只有一条,匹配0.0.0.0 0.0.0.0 下一跳10.1.1.1;数据包被转发到了互联网路由器.由于互联网路由器没有到达10.10.10.10/24的路由,于是包被丢弃了;其次,由于VPN通道的数据包被加密,目的地址可能无法被互联网路由器读到,在这种情况下,数据包还是要丢弃的.由于你是通过实验验证的,所以我肯定错了.能告诉我错在哪儿吗?
  • Bati-gol 2010-08-30 17:50
    zdh1207: 还是不太明白.是这样:首先,SiteA在访问SiteB时(反过来一样),它要不要查路由表?我想肯定要查的.假定它要访问一个10.10.10.10/24的主机,它先看目的地址,目的地址是
    当VPN连接好之后,A和B相当于有一条线路直连
    这个时候VPN连接好后,ACL告诉A到对端的数据直接放进VPN隧道,可以理解成被强制丢进VPN隧道,而不是走默认路由到公网路由器,放进隧道后到B,再到B的内网。VPN建立好优先走VPN隧道

    类似防火墙的VPN,有两种,一种是基于路由,一种是基于策略
    基于路由的VPN是需要配置到对端内网指定自己的Tunnel接口出去,这种是需要A查路由表的
    基于策略的VPN,只要指定源和目的,将数据强制丢进VPN隧道中即可,无需查找路由,因为只有一条默认路由,只要将数据通过策略方式丢进VPN隧道即可

    上面的例子就类似于基于策略的VPN,不是通过路由丢进隧道,而是通过ACL将数据优先丢进了VPN隧道,因为这个时候VPN隧道已经建立
    A------>B 第一跳:A的Lan IP 第二跳 B的WanIP 最后到B的内网



    如果这个时候同时需要访问Internet的话,需要通过ACL将数据进行分割
    ACL permie A内网到B内网,被调用丢进VPN

    ACL2  deny A内网到B内网
    ACL2 permit any any
    ACL2调用访问Internet

    这样访问对端的被丢进隧道,访问互联网走默认路由到互联网
  • zdh1207 2010-08-30 18:04
    Bati-gol: 当VPN连接好之后,A和B相当于有一条线路直连
    这个时候VPN连接好后,ACL告诉A到对端的数据直接放进VPN隧道,可以理解成被强制丢进VPN隧道,而不是走默认路由到公
    好像明白了,多谢!回头我自己也搞搞实验看一下.
  • zdh1207 2010-08-30 18:04
    还有一个问题要请教:SiteA上关于VPN感兴趣流量的定义是这样的:access-list 101 permit ip 10.5.5.0 0.0.0.255 192.168.1.0 0.0.0.255.意即访问192.168.1.0/24这个网段的流量都要走VPN.问题是:192.168.1.0/24就是SiteA本身的内网,以192.168.1.0/24这个网段为目的地址的数据包在内网就走就完事了,它可能根本就不会到达路由器SiteA,更到不了SiteB.请问您做这个定义是如何起作用的呢?
  • Bati-gol 2010-08-30 18:05
    ip nat inside source static network 192.168.1.0 10.5.5.0 /24

    将Site_A的内网网段192.168.1.0/24转换成10.5.5.0/24网段



    ip nat outside source static network 192.168.1.0 10.10.10.0 /24

    将从外部进来,源地址为192.168.1.0/24的网段转化为10.10.10.0/24,用于在数据回报时,将Site_B的内网IP192.168.1.0 转换为10.10.10.0/24网段

          

    access-list 101 permit ip 10.5.5.0 0.0.0.255 192.168.1.0 0.0.0.255

    定义源地址为10.5.5.0/24网段(Site_A转换后的网段),目的地址为192.168.1.0/24(对端已被转换成10.10.10.0/24)的数据进行加密

    主要是隧道中的NAT起了作用,A如果访问192.168.1.0/24的确会在自己内部转,但是由于B内网已经被NAT成10.10.10.0/24,所以访问目的地改成了10.10.10.0/24网段,ping 10.10.10.1 source 192.168.1.1,这样数据就会走进隧道
    如果B访问A,目的地变成了10.5.5.0/24,源地址还是B的192.1681.0/24
  • Bati-gol 2010-08-30 18:06
    zdh1207: 好像明白了,多谢!回头我自己也搞搞实验看一下.
    呵呵,这个实验很好玩!
  • zdh1207 2010-08-30 23:57
    Bati-gol: ip nat inside source static network 192.168.1.0 10.5.5.0 /24

    将Site_A的内网网段192.168.1.0/24转换成10.5.5.0/24网段



    ip nat outside source static
    看来我不亲自做下实验是不行了。你这个实验解释快把我绕死在里面了,呵呵!厉害。不管我怎么理解都打不开那个死结。你要是从原理上讲一讲就好了。比方说,SiteA的内网户访问192.168.1.0/24这个段的地址,网络是怎么识别目的地就一定是SiteB而不是SiteA?如果你不能说明这个问题,我只能理解为:当SiteA的内网用户要访问SiteB的内网用户时,他只能访问10.10.10.0/24这个段的地址(因为只有这样才能到达网关)。但是,SiteA上的感兴趣流量的定义的目的地址是192.168.1.0/24!VPN通道怎么建立呢?

    你能把这个实验从路由、VPN及NAT三个技术层面进行一个分门别类的、详细的解释吗?
  • Bati-gol 2010-08-31 10:19
    zdh1207: 看来我不亲自做下实验是不行了。你这个实验解释快把我绕死在里面了,呵呵!厉害。不管我怎么理解都打不开那个死结。你要是从原理上讲一讲就好了。比方说,SiteA
    其实A和B中的默认路由可以删除,改成
    A:ip route 172.1.1.2 255.255.255.255 S0/0
       ip route 10.10.10.0 255.255.255.0 S0/0

    B:ip route 10.1.1.2 255.255.255.255 s0/0
       ip route 10.5.5.0 255.255.255.0 s0/0
    第一条路由是为了让A的Wan口找到B的Wan口建立VPN
    第二条是为了把到对端内网的数据丢进VPN

    这样理解比较清晰了,呵呵!
  • zdh1207 2010-08-31 10:26
    Bati-gol: 其实A和B中的默认路由可以删除,改成
    A:ip route 172.1.1.2 255.255.255.255 S0/0
       ip route 10.10.10.0 255.255.255.0 S0/0

    B:ip route 10.1.1.2 255.255.2
    那么VPN感兴趣流怎么解释呢?
  • Bati-gol 2010-08-31 10:35
    zdh1207: 那么VPN感兴趣流怎么解释呢?
    当把默认路由换成两条静态路由
    将A的默认路由换成
    A:ip route 172.1.1.2 255.255.255.255 S0/0
       ip route 10.10.10.0 255.255.255.0 S0/0
    这时是可以正常通信的,如果删除其中任何一条,清除VPN连接后重连,都是无法连接的

    我的理解是这样的,首先路由器通过ACL匹配到感兴趣数据流,然后查找路由,丢进VPN隧道
    首先ip route 172.1.1.2 255.255.255.255 S0/0让A找到B,然后
    ip route 10.10.10.0 255.255.255.0 S0/0让被ACL匹配的数据丢进VPN
  • Bati-gol 2010-08-31 10:39
    zdh1207: 那么VPN感兴趣流怎么解释呢?
    我将博文中默认路由的地方重新修改了,你可以看一下

    换成两条静态路由后,可以正常通信,如果删除任何一条,debug ip packet detail会显示数据包不可路由,所以换成两条路由是可以的。当然这个时候只能访问VPN
  • Bati-gol 2010-08-31 10:42
    zdh1207: 看来我不亲自做下实验是不行了。你这个实验解释快把我绕死在里面了,呵呵!厉害。不管我怎么理解都打不开那个死结。你要是从原理上讲一讲就好了。比方说,SiteA
    隧道中的两条NAT条目起了作用,
    Site_A#debug ip nat detailed
    Site_A#ping 10.10.10.1 source 192.168.1.1
    查看NAT debug info

    *Mar  1 01:00:49.679: NAT: i: icmp (192.168.1.1, 36) -> (10.10.10.1, 36) [158]     
    *Mar  1 01:00:49.683: NAT: s=192.168.1.1->10.5.5.1, d=10.10.10.1 [158]
    *Mar  1 01:00:49.683: NAT: s=10.5.5.1, d=10.10.10.1->192.168.1.1 [158]
    *Mar  1 01:00:49.887: NAT*: o: icmp (192.168.1.1, 36) -> (10.5.5.1, 36) [158]
    *Mar  1 01:00:49.887: NAT*: s=192.168.1.1->10.10.10.1, d=10.5.5.1 [158]
    *Mar  1 01:00:49.887: NAT*: s=10.10.10.1, d=10.5.5.1->192.168.1.1 [158]

    首先源地址192.168.1.1被NAT称10.5.5.1
    源地址变成10.5.5.1,目的地址为10.10.10.1(第一个NAT
    ip nat inside source static network 192.168.1.0 10.5.5.0 /24起作用了)

    然后源地址为10.5.5.1,目的地10.10.10.1被NAT称192.168.1.1(第二条NAT
    ip nat outside source static network 192.168.1.0 10.10.10.0 /24 起作用)
    最终变成10.5.5.0/24 访问192.168.1.0/24 也就是ACL匹配的流量
  • Bati-gol 2010-08-31 11:09
    zdh1207: 看来我不亲自做下实验是不行了。你这个实验解释快把我绕死在里面了,呵呵!厉害。不管我怎么理解都打不开那个死结。你要是从原理上讲一讲就好了。比方说,SiteA
    关于感兴趣流量和NAT转换的分析,已经在博文中添加了,分析下要清晰多了,呵呵!
  • zdh1207 2010-08-31 13:50
    Bati-gol: 隧道中的两条NAT条目起了作用,
    Site_A#debug ip nat detailed
    Site_A#ping 10.10.10.1 source 192.168.1.1
    查看NAT debug info

    *Mar  1 01:00:49.679: NAT: i
    NAT及感兴趣流清楚了.但是路由....
    由于经过一系列的NAT转换,源目IP地址分别变成了10.5.5.0/24及192.168.1.0/24.也就是说SiteA路由器的路由表需要有到达SiteB的192.168.1.0/24的路由条目.但是,它在哪儿呢?虽然我们看到了:
    ip route 172.1.1.2 255.255.255.255 S0/0
    ip route 10.10.10.0 255.255.255.0 S0/0
    这两条路由.但它们怎么理解呢?第一条用于建立VPN的peer,我想;第二条的用处是什么呢?是为了到达SiteB吗?但是目标地址是192.168.1.0/24,不是10.10.10.0/24,对于SiteA路由器来说,它不应该把数据包转发到SiteB,而是留在本地,因为192.168.1.0是SiteA的本地直连路由。除非...
    路由在NAT转译之前就进行了匹配。当第一个nat发生后,源目地址是10.5.5.0/24及10.10.10.0/0,这时路由表开始匹配,完了之后第二个nat开始生效,这时源目地址变成了10.5.5.0/24及192.168.1.0/24。但是路由仍不变.当数据包到达SiteB之后,SiteB再路由到192.168.1.0.但是不做GRE,我很怀疑这种方法的可行性.
  • Bati-gol 2010-08-31 15:09
    zdh1207: NAT及感兴趣流清楚了.但是路由....
    由于经过一系列的NAT转换,源目IP地址分别变成了10.5.5.0/24及192.168.1.0/24.也就是说SiteA路由器的路由表需要有到达SiteB的
    第一条是找到peer,第二条是让A访问B转换过的内网,因为如果A直接访问B的192.168.1.0/24,必定是在自己交换机内部转,因为ip nat outside source static network 192.168.1.0 10.10.10.0这条NAT将外部192.168.1.0转换成了10.10.10.0/24,所以对于A的目的地是10.10.10.0/24网段,所以需要一条路由
    ip route 10.10.10.0 255.255.255.0 S0/0将数据丢进VPN

    还有在第二个NAT匹配后,源地址和目的地址变成10.5.5.0/24及192.168.1.0/24这个时候这个条目正好和VPN感兴趣数据流ACL匹配,被丢进了VPN,而不是再次查询路由丢进了A自己的内网

    做一个测试
    如果把A的感兴趣数据流ACL删除,这时测试,两种NAT也会进行,只是这个时候没有了ACL,所以不得不查询路由,查找路由后丢给公网路由器,不可达,这个时候在
    Internet Router上可以看到
    *Mar  1 00:18:07.691: IP: s=10.5.5.1 (Serial0/0), d=192.168.1.1, len 100, unroutable
    由于Internet Router没有回包路由,所以不可达

    但是如果加上ACL这个时候,在Internet Router debug ip packet时,没有任何信息输出,说明A访问B的数据直接穿越了Internet Router,走的VPN


    所以我认为,第一条路由告诉A找到B
    第二条路由告诉A访问B转换后的内网10.10.10.0/24走VPN

    建议自己做个试验,就知道这样做是可行的,建议自己做个试验,就清楚了,呵呵!
  • zdh1207 2010-08-31 17:07
    Bati-gol: 第一条是找到peer,第二条是让A访问B转换过的内网,因为如果A直接访问B的192.168.1.0/24,必定是在自己交换机内部转,因为ip nat outside source static networ
    嗯,VPN下的NAT的真是个好东西,学习了!
  • Bati-gol 2010-08-31 17:12
    zdh1207: 嗯,VPN下的NAT的真是个好东西,学习了!
    恩,很多防火墙也支持VPN隧道内NAT,就是很少用到,呵呵
    建议自己做个实验,比较清晰,呵呵!
  • zdh1207 2010-08-31 17:17
    Bati-gol: 恩,很多防火墙也支持VPN隧道内NAT,就是很少用到,呵呵
    建议自己做个实验,比较清晰,呵呵!
    嗯,一定做下.(...景仰...如滔滔江水,绵绵不绝)
  • zdh1207 2010-08-31 17:54
    能否把show ip crypto sa的信息发上来看看?
  • Bati-gol 2010-08-31 18:10
    zdh1207: 能否把show ip crypto sa的信息发上来看看?
    A和B的 show crypto ipsec sa detail 已经添加在文中
  • pbcq 2010-09-01 10:43
    这个要MARK一下,以备不时之需哈哈
  • Bati-gol 2010-09-01 13:18
    pbcq: 这个要MARK一下,以备不时之需哈哈
  • TP3 2010-11-11 10:13
    景仰~~~~~~~
涂鸦板