18.1.4 GRE的安全机制

18.1.4 GRE的安全机制

GRE本身提供两种基本的安全机制:校验和验证,识别关键字。

1.校验和验证

校验和验证是指对封装的报文进行端到端校验。

若GRE报文头中的C位置1,则校验和有效。发送方将根据GRE 头及Payload信息计算校验和,并将包含校验和的报文发送给对端。接收方对接收到的报文计算校验和,并与报文中的校验和比较,如果一致则对报文进行进一步处理,否则丢弃。

隧道两端可以根据实际应用的需要决定配置校验和或禁止校验和。如果本端配置了校验和而对端没有配置,则本端将不对接收到的报文进行校验和检查,但对发送的报文计算校验和;相反,如果本端没有配置校验和而对端已配置,则本端将对从对端发来的报文进行校验和检查,但对发送的报文不计算校验和。

2.识别关键字

识别关键字验证是指对Tunnel接口进行校验。通过这种弱安全机制,可以防止错误识别、接收其他地方来的报文。

RFC1701中规定:若GRE 报文头中的K 位为1,则在GRE 头中插入一个4字节长的关键字字段,收发双方将进行识别关键字的验证。

关键字的作用是标识隧道中的流量,属于同一流量的报文使用相同的关键字。在报文解封装时,GRE将基于关键字来识别属于相同流量的数据报文。只有Tunnel两端设置的识别关键字完全一致时才能通过验证,否则丢弃报文。这里的“完全一致”是指两端都不设置识别关键字,或者两端设置相同的关键字。