网络工程师进阶 | VPN的配置脚本和注意事项-MPLS VPN、DMVPN、IPSec VPN、基于GRE的IPSec(思科)

  • 编辑 | 排版 | 制图 | 测试 | ©瑞哥
  • 此文用时1小时49分钟,原创不易,坚持更不易,希望我的每一份劳动成果都可以得到大家的一个【在看】

特别注意:仅供参考,紫色表示配置,蓝色表示show命令,红色表示特别注意

MPLS VPN

1、配置LDP协议

①先保证LDP的transport-address可达(即保证MPLS域的通信,启用一个路由协议)

②LDP协议基本配置命令

ip cef开启cef功能

mpls ip 开启mpls功能(思科路由器默认开启)

mpls label protocol ldp设置标签分配协议为ldp(大多数路由器默认为ldp,思科也是)

mpls ldp router-id loopback 0 指定ldp协议的router-id为loopback 0(只能指定一个接口,不能指定地址)

interface e0/0进入某个接口

mpls ip给该接口启用mpls功能

show mpls interfaces

show mpls ldp neighbor

show mpls ldp bindings

show mpls forwarding-table查看mpls转发表

show ip bgp vpnv4 all labels 查看所有vrf的标签

2、配置VRF

①规划VRF RD RT值

②基本配置命令

ip vrf vrf-name创建一个名字为vrf-name的VRF

rd nn:mm设置该VRF的RD值为nn:mm(即有RD值为nn:mm的路由来自同一个VRF)

route-target export aa:bb设置该VRF的 出RT值 为aa:bb(即该VRF发出的路由的RT为aa:bb)

route-target import cc:dd设置该VRF的 入RT值 为cc:dd(即只接受带有RT为cc:dd的路由)

interface e0/0进入要关联VRF的接口(如果MPLS域运行的协议为OSPF,则可以在OSPF进程中使用

ip vrf forwarding vrf-name将名字为vrf-name的VRF关联到接口e0/0

mpls ldp autoconfig在ospf配置模式下配置,使得所有ospf接口都开启mpls功能)

show ip vrf查看VRF信息

3、配置PE到CE的路由协议

说明:只要到了VRF配置模式里面,配置内容和常规配置几乎一模一样

① 态路由的配置

PE设备:

ip route vrf vrf-name 192.168.1.0 255.255.255.0 12.1.1.1 给名字为vrf-name的VRF配置一条静态路由

CE设备:

ip route 0.0.0.0 0.0.0.0 12.1.1.2 给CE设备配置一条静态路由(按照常规配置即可)

show ip vrf vrf-name route 查看名字为vrf-name的VRF的路由

ping vrf vrf-name destination-address ping某个VRF中的地址

②RIP的VRF

PE设备

router rip进入RIP协议

address-family ipv4 vrf A1进入名字为A1的VRF(配置内容和常规配置几乎一模一样)

network 12.0.0.0

no auto-summary

version 2

exit-address-family

CE设备

按照常规配置即可

③EIGRP的VRF

PE设备

router eigrp 12345进入到AS为12345的EIGRP

address-family ipv4 vrf A2 autonomous-system 56进入到名字为A2的VRF,其vrf的EIGRP的AS为56

network 56.1.1.5 0.0.0.0(配置内容和常规配置几乎一模一样)

exit-address-family

(补充:autonomous-system 56)该进程号也可以在地址簇中指定,该AS好为CE设备的AS号。

CE设备

按照常规配置即可

④OSPF的VRF

补充:当MPLS域两边的PE和CE设备使用OSPF路由协议,并且来两边都宣告为area 0时,路由表中的路由标识有一下两种

O IA两边PE使用进程号相同,即domain id相同时,为O IA

O E2两边PE使用进程号不同,即domain id 不同时,为O E2

原因:使用show ip ospf的条目中有一个domain id,默认domain id等于进程号,修改命令:domain-id X.X.X.X(在相关进程中修改)

PE设备:

router ospf 27 vrf B1进入到名字为B1的VRF的OSPF中,其AS号为27

router-id 2.2.2.22(配置内容和常规配置几乎一模一样)

network 27.1.1.2 0.0.0.0 area 0

CE设备

按照常规配置即可

⑤BGP的VRF

补充:如果MPLS域来两边的CE设备使用的BGP AS号相同,则可能不会接收相关路由(BGP不接收拥有自己AS-path的路由)

解决办法:

①as-override 把AS-path含有的和CE AS相同的AS号全部替换成自己的AS号(在PE设备上配置)

命令:neighbor CE-address as-overrride (在相关地址簇的相关VRF中配置)

②allowas-in 表示允许接收BGP条目中含有几次自己的AS-path(在CE设备上配置)

命令:neighbor PE-address allowas-in number(在相关BGP中配置,number表示次数)

PE设备

router bgp 25进入AS号为25的BGP

bgp router-id 5.5.5.5

address-family ipv4 vrf B2进入ipv4名字为B2的VRF(默认为unicast,所以可以不用加unicast)

neighbor 58.1.1.8 remote-as 8(配置内容和常规配置几乎一模一样)

neighbor 58.1.1.8 activate

exit-address-family

4、配置MP-BGP协议

补充:no bgp default ipv4-unicast (关闭IPv4地址簇自动激活能力)

router bgp 100开启一个AS为100的bgp

no bgp default ipv4-unicast关闭IPv4地址簇自动激活能力

bgp router-id 2.2.2.2指定bgp的router-id

neighbor 4.4.4.4 remote-as 100指定邻居关系(默认为ipv4单播,但关闭了自动激活,则根据激活地方决定)

neighbor 4.4.4.4 update-source loopback 0指定更新源(一般为traceroute-address)

address-family vpnv4进入vpnv4地址簇

neighbor 4.4.4.4 activate激活指定的邻居(使其成为vpnv4邻居)

neighbor 4.4.4.4 send-community extended用于发送扩展的community(此处的RT值即为扩展commuity,自动生成,不用配置)

show ip bgp vpnv4 all summary查看vpnv4的邻居

5、配置重分布

在相应的地址簇中按照常规重分布即可

如果PE和CE之间运行的都是BGP或者都是相同的路由协议则不用重分布

查看命令

show ip vrf vrf-name route 查看名字为vrf-name的VRF的路由

ping vrf vrf-name destination-address ping某个VRF中的地址

show ip vrf查看VRF信息

show ip bgp vpnv4 all查看vpnv4路由

show ip bgp vpnv4 all labels查看私有标签

show ip bgp vpnv4 all summary查看vpnv4的邻居

show mpls interfaces

show mpls ldp neighbor

show mpls ldp bindings

show mpls forwarding-table查看mpls转发表

show ip bgp vpnv4 all labels 查看所有vrf的标签

排错

1、先查路由——分段式的检查

2、在检查标签

私网标签——只要vpnv4路由有,基本都没有问题

公网标签——标签不连续:注意检查路由是否汇总,如果mpls域使用的IGP是OSPF,注意查看loopback接口是否是通告的实际掩码。

3、mpls中LDP的邻居关系——注意检查应该配置的接口是否开启mpls ip

DMVPN

1、配置tunnel 接口,保证tunnel source互相通信以及设置MGRE,即GRE隧道

HUB+SPOKE

interface s1/0进入公网接口

ip address 123.1.1.1 255.255.255.0给公网接口配置IP地址

ip route 0.0.0.0 0.0.0.0 123.1.1.2保证公网接口(tunnel source)能够通信(其他方式也可)

interface tunnel 0 进入隧道(随便哪个tunnel接口都可以,一般使用tunnel 0)

ip address 172.16.1.1 255.255.255.0给隧道配置一个IP地址(所有的HUB SPOKE的地址要在同一个网段)

tunnel source s1/0关联tunnel source接口(可以用IP地址)

tunnel mode gre multipoint设置tunnel接口的模式为MGRE模式(虽有隧道模式都为MGRE)

tunnel key 10设置一个tunnel的key(所有tunnel接口的key必须相同)

2、配置NHRP

HUB设备

interface tunnel 0

ip address 172.16.1.1 255.255.255.0配置隧道IP地址(上一步做了,可以不用做)

ip nhrp network-id 11network-id每一个设备都必须相同

ip nhrp authentication cisco启用NHRP认证(可选,可以不用配置)

ip nhrp map multicast dynamic 使得HUB设备动态接受组播映射

SPOKE设备

interface tunnel 0

ip address 172.16.1.2 255.255.255.0配置隧道IP地址(上一步做了,可以不用做)

ip nhrp network-id 11network-id每一个设备都必须相同

ip nhrp authentication cisco启用NHRP认证(可选,可以不用配置)

ip nhrp map 172.16.1.1 123.1.1.1所有spoke设备都需要静态配置hub地址映射(前面的是HUB设备的tunnel地址 后面的是tunnel source地址)

ip nhrp map multicast 123.1.1.1所有spoke设备都需要手动映射组播到HUB设备(该地址为HUB的tunnel source地址,作用是:后续的spoke和hub之间建立动态路由协议邻居)

ip nhrp nhs 172.16.1.1 配置server地址(spoke启动以后会到服务器注册自己虚拟隧道地址到公网地址的映射)

3、配置动态路由协议(以EIGRP举例)

HUB SPOKE设备

router eigrp 20 按照常规配置即可

network 172.16.1.0 0.0.0.255宣告tunnel接口的地址(建立动态路由协议的邻居)

network 10.1.1.0 0.0.0.255其他内网地址的宣告

no auto-summary

重要补充:动态协议使用EIGRP,则需要在tunnel 接口关闭水平分割,否则只有HUB和SPOKE之间有EIGRP邻居,SPOKE之间不会有EIGRP邻居。

动态协议使用OSPF,则需要在tunnel接口将OSPF网络类型改为,点对多点(因为tunnel接口的默认网络类型为点对点),也可以改为广播类型(但是HUB必须为DR)

4、IPSec VPN

HUB SPOKE设备

crypto isakmp policy 10

authentication pre-share

crypto isakmp key cisco address 0.0.0.0 虽有的IPSec部分都是常规配置,只有此处地址使用0.0.0.0(因为邻居地址不知道或者邻居动态过去地址)

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

mode transport由于有GRE隧道,所以不用tunnel模式

crypto ipsec profile ipsecprof

set transform-set cisco

interface Tunnel 0

ip mtu 1400 调整MTU,防止分片

tunnel protection ipsec profile ipsecprof GRE over IPSec配置

5、优化

HUB设备

interface tunnel 0

ip nhrp redirect关闭HUB设备的NHRP重定向

SPOKE设备

interface tunnel 0

ip nhrp shortcut 使得SPOKE设备走最短的路劲

补充:如果不优化,则SPOKE之间通信会经过HUB设备

IPSec VPN

IPSec VPN

1、IKE第一阶段(定义策略)

crypto isakmp policy 10启用策略,其优先级为10

encryption aes配置加密算法

hash md5配置hash算法,默认为SHA

authentication pre-share配置认证方式(pre-share为预共享密钥,用于建立IPSec的设备之间做身份认证的,判断是否为合法用户,这里只是指定认证方式,具体密钥在下面的配置)

group 5配置DH组的长度

lifetime 3600配置生存时间(默认为86400秒)

crypto isakmp key 6 CCIE67 address 13.1.1.3配置相关认证的密码 ,此处的地址为邻居地址,密码为CCIE67(0表示明文密码,6表示密文密码,不写默认为0,该密钥用来判定建立IPSec的设备是否为合法用户,即上面所需)

2、IKE第二阶段(设置IPSec)

crypto ipsec transform-set MYSET esp-aes esp-md5-hmac定义传输级的名字为MYSET+封装协议+封装算法(hash)(规定封装协议和封装算法,主要是ah和esp)

mode tunnel定义传输模式(tunnel可以直接传输,不需要另外的隧道)

access-list 101 permit ip 192.168.1.0 0.0.0.255 192.168.2.0 0.0.0.255 抓取需要通过IPSec隧道的流量(匹配感兴趣流,该流量不能经过NAT)

3、关联感兴趣流(创建ccrypto map)

crypto map MYMAP 10 ipsec-isakmp 调用IPSec,设置一个名字为MYMAP的map,10为序列号,范围1~65535

set peer 13.1.1.3设置一个IPSec对等体(关联第一阶段)

set transform-set MYSET关联transform-set(名字需要匹配上一个步骤中的transform-set的名字,关联第二阶段)

match address 101 关联感兴趣流

4、调用IPSec

int e0/1该接口为出口接口

crypto map MYMAP在接口下调用crypto map,即调用IPSec

5、排错

阶段一 :show crypto isakmp sa

state为QM-IDLE

阶段二 :show crypto ipsec sa

基于GRE的IPSec

首先保证GRE隧道能正常通信

1、IKE第一阶段(定义策略)

crypto isakmp policy 10启用策略,其优先级为10

encryption aes配置加密算法

hash md5配置hash算法,默认为SHA

authentication pre-share配置认证方式(pre-share为预共享密钥,用于建立IPSec的设备之间做身份认证的,判断是否为合法用户,这里只是指定认证方式,具体密钥在下面的配置)

group 5配置DH组的长度

lifetime 3600配置生存时间(默认为86400秒)

crypto isakmp key 6 CCIE67 address 13.1.1.3配置相关认证的密码 ,此处的地址为邻居地址,密码为CCIE67(0表示明文密码,6表示密文密码,不写默认为0,该密钥用来判定建立IPSec的设备是否为合法用户,即上面所需)

2、IKE第二阶段(设置IPSec)

crypto ipsec transform-set MYSET esp-aes esp-md5-hmac定义传输级的名字为MYSET+封装协议+封装算法(hash)(规定封装协议和封装算法,主要是ah和esp)

mode tunnel定义传输模式(tunnel可以直接传输,不需要另外的隧道)

3、创建PROFILE

crypto ipsec profile MYPROFILE 调用IPSec,使用profile,可以不用设置感兴趣流,只要走隧道的流量都会被加密

set transform-set MYSET 关联transform-set

4、调用IPSec

int tunnel 0

tunnel protection ipsec profile MYPROFILE关联IPSec,tunnel的保护适用IPSec来保护

原文发布于微信公众号 - 网络技术联盟站(it666lmz)

原文发表时间:2019-07-02

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

扫码关注云+社区

领取腾讯云代金券