【×××系列十】关于如何处理混合环境下PPTP-×××流量的思考与处置

 

 

 

 

 

其中主要涉及两点:

1.两端路由器如何为pptp流量和其它流量,进行nat转换,保证通信正常

2.两端路由器配置的ZFW,如何放行pptp和其它通信转换后的流量,保证通信正常

 ----------------------------------------------------------------------------------------

-----------------------------------------------------------------------------------------

在配置nat之前,pptp客户端拨号时配置的远端ip地址是172.18.10.1(pptp server 真实地址),但是配置为nat之后,需要更改为center router的外网口ip地址,也就是200.0.30.2;否者,pptp拨号链接无效。

关键命令:

ip nat inside source static tcp 172.18.10.1 1723 interface s1/0 1723

如图:

 

如要更改为200.0.10.2(center router 外网口地址)

如图:

 

 

拨号成功:

 

center.router#show ip nat translations
Pro Inside global      Inside local       Outside local      Outside global
tcp 200.0.10.2:1723    172.18.10.1:1723   172.18.101.3:50126 172.18.101.3:50126
tcp 200.0.10.2:1723    172.18.10.1:1723   172.18.101.3:50131 172.18.101.3:50131
tcp 200.0.10.2:1723    172.18.10.1:1723   ---                ---
gre 200.0.10.2:3399    172.18.10.1:3399   172.18.101.3:3399  172.18.101.3:3399
gre 200.0.10.2:64527   172.18.10.1:64527  172.18.101.3:64527 172.18.101.3:64527
udp 200.0.10.2:50824   172.18.100.102:50824 221.228.255.1:53 221.228.255.1:53


 

pptp.server#show vpdn

%No active L2TP tunnels

PPTP Tunnel and Session Information Total tunnels 1 sessions 1

LocID Remote Name     State    Remote Address  Port  Sessions VPDN Group
21945                 estabd   172.18.101.3    50131 1        1

LocID RemID TunID Intf    Username      State   Last Chg Uniq ID
3399  64527 21945 Vi2.1   xuchen         estabd  00:00:16 3


 

 spoke.router#show ip nat translations
Pro Inside global      Inside local       Outside local      Outside global
gre 200.0.30.2:21210   172.18.101.3:21210 200.0.10.2:21210   200.0.10.2:21210
gre 200.0.30.2:26907   172.18.101.3:26907 200.0.10.2:26907   200.0.10.2:26907
tcp 200.0.30.2:50134   172.18.101.3:50134 200.0.10.2:1723    200.0.10.2:1723
udp 200.0.30.2:55197   172.18.101.3:55197 221.228.255.1:53   221.228.255.1:53


可以看到nat转换了pptp相关的TCP 1723端口与GRE 流量,所以pptp能够正常通信

那么防火墙该如何放行流量呢,其实也是类似的过程,只要放行与pptp进程相关联的流量,那么配置就是成功的。

 关键也就是TCP 1723端口与GRE 流量

 ip access-list extended pptp
 permit gre any any
 permit tcp any any eq 1723

 class-map type inspect match-any in.out.class
  match protocol icmp
 match access-group name pptp.gre
 match protocol tcp
 match protocol udp
class-map type inspect match-all out.in.class
 match access-group name pptp

 policy-map type inspect in.out.po
 class type inspect in.out.class
  pass
 class class-default
  drop
policy-map type inspect out.in.po
 class type inspect out.in.class
  pass
 class class-default
  drop

流量穿越防火墙之后,如下结果:

 center.router#show policy-map ty inspect zone-pair se

policy exists on zp out.in.pair
 Zone-pair: out.in.pair

  Service-policy inspect : out.in.po

    Class-map: all.traffic.class (match-any)
      Match: protocol icmp
        0 packets, 0 bytes
        30 second rate 0 bps
      Match: protocol tcp
        1 packets, 32 bytes
        30 second rate 0 bps
      Match: protocol udp
        0 packets, 0 bytes
        30 second rate 0 bps

   Inspect

      Number of Established Sessions = 1
      Established Sessions
        Session 68A43F20 (200.0.30.2:50352)=>(172.18.10.1:1723) tcp SIS_OPEN/TCP_ESTAB
          Created 00:02:09, Last heard 00:00:08
          Bytes sent (initiator:responder) [408:224]


    Class-map: pptp.class (match-all)
      Match: access-group name pptp
      Pass
        176 packets, 13735 bytes

 

    Class-map: class-default (match-any)
      Match: any
      Drop
        0 packets, 0 bytes

policy exists on zp in.out.pair
 Zone-pair: in.out.pair

  Service-policy inspect : in.out.po

    Class-map: all.traffic.class (match-any)
      Match: protocol icmp
        0 packets, 0 bytes
        30 second rate 0 bps
      Match: protocol tcp
        3 packets, 600 bytes
        30 second rate 0 bps
      Match: protocol udp
        0 packets, 0 bytes
        30 second rate 0 bps

   Inspect

    Class-map: pptp.class (match-all)
      Match: access-group name pptp
      Pass
        37 packets, 1977 bytes

    Class-map: class-default (match-any)
      Match: any
      Drop
        0 packets, 0 bytes

policy exists on zp out.self.pair
 Zone-pair: out.self.pair

  Service-policy inspect : out.self.po

    Class-map: out.access.class (match-all)
      Match: access-group name out.access
      Pass
        72 packets, 1592 bytes

    Class-map: pptp.class (match-all)
      Match: access-group name pptp
      Pass
        0 packets, 0 bytes

 

    Class-map: class-default (match-any)
      Match: any
      Drop
        5 packets, 400 bytes

 

上面可以看到pptp 客户端拨号成功之后,所建立的链接信息,zfw防火墙的配置,关键在于三个方向:

1.inside  路由器入站流量

2.outside 路由器出站流量

3.self      路由器自身流量

配置类(class-map)的时候需要考虑好,对应方向应该放行哪些流量。

配置策略(policy-map)的时候需要考虑好,对应哪些流量应该执行哪些动作(inspect、pass、drop)。

结语:

上面基本上就完整实现了,pptp服务端到客户端的流量转变过程,主要是放行tcp1723与GRE流量。还有就是zfw是基于端口配置的防火墙技术,最重要的是选好zone端口,确认哪些端口属于哪个zone,多个端口可以同属于一个zone;同一个zone内的端口不需要配置策略就能相互通信;属于不同zone的端口,默认是deny相互的所有流量,所以需要配置策略放行流量;不属于zone的端口,流量不受影响。所以说zfw是基于端口的防火墙策略,所以这一步相当重要。