感谢PP提供的资料。
由于PIX和ASA这样的防火墙为了防止TCP会话劫持通常都会对穿越防火墙的tcp会话序列号做主动的扰乱,而BGP会话如果启用了md5认证会把包头部分作为md5 hash计算的一部分,一旦PIX/ASA主动修改了tcp的序列号,那么作为md5 hash计算部分的包头显然也和以前的不一样了。
这时会在路由器上看到类似下面的信息:
%TCP-6-BADAUTH: Invalid MD5 digest from 源IP:源端口 to 目的IP:179
在6.x上的解决办法是针对启用BGP的路由器禁用TCP序列号扰乱功能:
static (inside,outside) a.b.c.d a.b.c.d netmask 255.255.255.255 norandomseq
在7.x上如果只做类似上面这样的配置是仍然有问题的:如果不做特殊配置,用作BGP md5认证的tcp option19会在穿越7.x版本的PIX/ASA防火墙时被直接"抹平"。为了支持带有md5认证的BGP还需要做出类似下面的配置,以便允许TCP option 19穿越防火墙:
class-map BGP-MD5-CLASSMAP
match port tcp eq 179
tcp-map BGP-MD5
tcp-options range 19 19 allow
policy-map global_policy
class BGP-MD5-CLASSMAP
set connection advanced-options BGP-MD5
service-policy global_policy global
更多资料可以参考下面的文档:
1. Sample Configurations of BGP Across a PIX Firewall
2. Guide for Cisco PIX 6.2 and 6.3 Users Upgrading to Cisco PIX Software Version 7.0