当BGP要穿越防火墙时,两个对等体要建立BGP邻居时,提示:%TCP-6-BADUTH:Invalid md5 digesc from 112168。原因主要是因为两个对等体之间的MD5认证不成功。
主要原因就是:双方进行BGP邻居建立时,会把自己的消息首先进行HASH,得到一个哈希值并一起发过去,并且把TCP头部中的序列号字段置为19,告诉对端要执行MD5认证。PIX 6.x不会修改或清除(clear)该选项位,因此,BGP穿越PIX6.x的防火墙进行MD5认证时完全可以正常工作。但是在ASA 7.x之后,防火墙默认情况下会将该选项位清除掉,因此就会导致,A在通信时要求进行MD5认证,但是B收到后却不会进行MD5认证,进而导致两个对等体之间会话通信失败。因此,我们必须通过修改ASA默认行为,使其不清除TCP选项位19。而另外一个原因就是,当TCP连接穿 越防火墙时,防火墙会将原来的SYN号,清空自己生成一个新的序列号,而对于BGP的MD5认证来说,这个SYN也是其中的参数,改变之后,对端收到之后计算出来的MD5值将会不一样,同样也不能进行认证成功。所以要关闭防火墙的序列号随机的功能。
具体配置 如下:
一、 使用ACL将BGP流量匹配出来
ciscoasa(config)#access-list 100 extended permit tcp any any eq bgp
二、 定义一个TCP-map
ciscoasa(config)#tcp-map authbgp
ciscoasa (config-tcp-map)# tcp-options range 19 19 allow
三、 定义一个class-map
ciscoasa (config)# class-map authbgp
ciscoasa (config-cmap)# match access-list 100
四、 定义一个policy-map
ciscoasa (config)# policy-map authbgp
ciscoasa (config-pmap)# class authbgp
ciscoasa (config-pmap-c)# set connection advanced-options authbgp
五、 将policy-map应用到全局或接口下
ciscoasa (config)# service-policy authbgp global/ interface
另外,由于ASA会为BGP的连接重新生成一个随机的序列号,而序列号也是HASH算法的一个参数,因此为了保证HASH值相同,还必须将序列号随机的功能关闭掉(这里我们就关全局的):
ciscoasa (config)# policy-map authbgp
ciscoasa (config-pmap)# class authbgp
ciscoasa (config-pmap-c)#set connection random-sequence-number disable
具体配置 如下:
一、 使用ACL将BGP流量匹配出来
ciscoasa(config)#access-list 100 extended permit tcp any any eq bgp
二、 定义一个TCP-map
ciscoasa(config)#tcp-map authbgp
ciscoasa (config-tcp-map)# tcp-options range 19 19 allow
三、 定义一个class-map
ciscoasa (config)# class-map authbgp
ciscoasa (config-cmap)# match access-list 100
四、 定义一个policy-map
ciscoasa (config)# policy-map authbgp
ciscoasa (config-pmap)# class authbgp
ciscoasa (config-pmap-c)# set connection advanced-options authbgp
五、 将policy-map应用到全局或接口下
ciscoasa (config)# service-policy authbgp global/ interface
另外,由于ASA会为BGP的连接重新生成一个随机的序列号,而序列号也是HASH算法的一个参数,因此为了保证HASH值相同,还必须将序列号随机的功能关闭掉(这里我们就关全局的):
ciscoasa (config)# policy-map authbgp
ciscoasa (config-pmap)# class authbgp
ciscoasa (config-pmap-c)#set connection random-sequence-number disable