IPsec over GRE 和GRE over IPsec比较和区别与配置

GRE over IPsec & IPsec over GRE
I
PSec -Over-GRE是先ipsec后gre,这种我没用过。
GRE -Over-IPSec 是先gre后ipsec,也就是说ipsec是最后的承载方式。一般常用的就是这种,解决了ipsec不支持多播的问题。
另外在mtu上也有一些相关,gre是先分段后封装,而ipsec则是先封装再分段。
个人理解。

 
IPsec over GRE 和GRE over IPsec在配置上的区别:
                                      GRE over IPsec                       IPsec over GRE
ACL定义:                             GRE数据流                             内网数据流
IKE Peer中指定的remote-address        对方公网地址                          对方GRE Tunnel地址
应用端口:                            公网出口                              GRE Tunnel上


GRE over IPSEC(传输模式)

IPSEC封装GRE
好处:可以利用GRE封装组播或广播了以及非IP流量,因为如果不使用GRE的话,IPSEC是传不了组播或广播IP流量的
 
IPSEC over GRE(里外)(tunel模式)
IPSEC over GRE:GRE在IPSEC外面,由GRE来封装IPSEC注意!!!IPSEC over GRE的时候,路由协议流量是明文的
注意!!!当指的peer是对等体物理接口地址的时候不是IPSEC over GRE,只有当peer是对等体的lookback是才是真正的IPSEC over GRE

 
 

ipsec over gre配置:


crypto isakmp policy 10
authentication pre-share


crypto isakmp key cisco address 10.1.1.2
!
crypto ipsec transform-set myset esp-des esp-sha-hmac
!
crypto map mymap 10 ipsec-isakmp
set peer 10.1.1.2
set transform-set myset
match address 102
!


interface Serial0
ip address 10.1.1.1 255.255.255.0
clockrate 64000
crypto map mymap
!
ip route 0.0.0.0 0.0.0.0 20.1.1.2
ip route 40.1.1.0 255.255.255.0 Tunnel0


!
access-list 102 permit ip 1.1.1.0 0.0.0.255 1.1.2.0 0.0.0.255
!


interface Tunnel0
ip address 100.1.1.1 255.255.255.0
tunnel source Serial0
tunnel destination 30.1.1.2

crypto map mymap


GRE OVER IPSEC的配置


拓朴结构:
R1 F0/0(172.16.1.1/24)->R2 F0/0(172.16.1.2/24) 模拟外网连接
R1 F1/0(192.168.1.1/24)模拟内网1
R2 F1/0(192.168.2.1/24)模拟内网2
R1:
//定义IKE策略,用于阶段1的SA建立,系统会按对端协商的参数去查找我们定义的policy,直到找到一个各项参数都匹配的policy并使用之,如果没找到会在阶段1失败
crypto isakmp policy 10
 hash md5
 authentication pre-share
 lifetime 3600
crypto isakmp key qhtest address 172.16.1.2
!
//这里定义阶段2所使用的SA,其所使用的加密密钥为随机,并使用阶段1所建立的SA来交换
crypto ipsec transform-set myset esp-3des
!
//定义密码映射
crypto map qh 10 ipsec-isakmp
 set peer 172.16.1.2
 set transform-set myset
 match address 102//这里注意引用了访问列表102,这里对gre包进行加密,而不是如上一篇所做的那样是对内网地址段,实际上是去往内网2的数据包先被封装到GRE包里,再从外网接口出去,并被IPSET加密
!
//下面在接口上应用密码映射
interface FastEthernet0/0
 ip address 172.16.1.1 255.255.255.0
 duplex full
 crypto map qh
!
//这里定义GRE隧道接口
interface Tunnel0
 ip address 192.168.100.1 255.255.255.0
 tunnel source 172.16.1.1
 tunnel destination 172.16.1.2
//由于GRE可以传路由协议,所有我们在隧道接口上启用了路由协议
router ospf 100
 log-adjacency-changes
 redistribute connected subnets
 network 192.168.100.0 0.0.0.255 area 0
//这里的访问列表我们定义了针对GRE的包施行IPSEC加密
access-list 102 permit gre host 172.16.1.1 host 172.16.1.2
 
R2:
crypto isakmp policy 10
 hash md5
 authentication pre-share
 lifetime 3600
crypto isakmp key qhtest address 172.16.1.1
!
!
crypto ipsec transform-set myset esp-3des
!
crypto map qh 10 ipsec-isakmp
 set peer 172.16.1.1
 set transform-set myset
 match address 102
!
interface Tunnel0
 ip address 192.168.100.2 255.255.255.0
 tunnel source 172.16.1.2
 tunnel destination 172.16.1.1
!
interface FastEthernet0/0
 ip address 172.16.1.2 255.255.255.0
 duplex full
 crypto map qh
!
router ospf 100
 log-adjacency-changes
 redistribute connected subnets
 network 192.168.100.0 0.0.0.255 area 0
!
access-list 102 permit gre host 172.16.1.2 host 172.16.1.1
  • 2
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
"get_logger" 是一个常用的函数或方法,用于获取日志记录器(logger)对象。日志记录器是在软件开发中用于记录和输出日志信息的工具。 具体的实现可能会因编程语言和日志库的不同而有所差异。下面是一个 Python 中使用标准库 logging 的示例代码: ```python import logging def get_logger(): logger = logging.getLogger(__name__) logger.setLevel(logging.INFO) formatter = logging.Formatter('%(asctime)s - %(name)s - %(levelname)s - %(message)s') console_handler = logging.StreamHandler() console_handler.setLevel(logging.INFO) console_handler.setFormatter(formatter) logger.addHandler(console_handler) return logger # 使用 get_logger() 函数获取日志记录器 logger = get_logger() # 输出日志信息 logger.info("This is an info message.") logger.warning("This is a warning message.") ``` 在上述示例中,get_logger() 函数返回一个配置好的日志记录器对象。该记录器使用了默认的 "root" 日志名称,并设置日志级别为 INFO。还定义了一个格式化器(formatter),用于指定日志输出的格式。 使用 logger.info() 和 logger.warning() 等方法可以输出相应级别的日志信息。这些信息将根据配置的格式化器和处理器(这里是 console_handler)进行输出。 这只是一个简单的示例,实际使用中可以根据需求进行更多的配置,例如将日志写入文件、设置不同的日志级别等。 希望这个解释对你有所帮助!如有任何进一步的问题,请随时提问。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值