今天我们sa配置了一台安装服务器,整个机房的人和网段可以通过此服务器来进行批量安装。所以需要将此服务器的网口配置成trunk。服务器上逻辑出多个vlan的子接口,并且tag上相应的vlanID,,并且服务器上面配置了一个默认网关。上联交换机配置成trunk模式,如下:
int g0/3
switch trunk encap dot1q
switch mode trunk
spanning-tree portfast
spanning-tree bpduguard enable
no shutdown
上述实现完毕后,整个机房内的系统安装一切正常。但是从机房某些vlan ssh这台安装服务器却不通,于是针对此服务器的各个子接口进行抓包分析,比如从104网段服务器A ssh安装服务器的101地址情形,抓包命令为tcpdump –ni bond.101 host a.b.c.d和tcpdump –ni bond.108 host a.b.c.d(bond.108为默认网关接口)。针对安装服务器的子接口101进行抓包可以看到源地址为A目的地址为101的地址,正常。但是在此子接口上面没有看到返回的数据包,而在子接口108上面可以抓到相应返回的数据包,而且源地址也为101地址目的地址为服务器A的地址,说明服务器封包正确,但是走错了接口了。那么为什么会走错接口呢?于是查看路由表,发现此安装服务器只有一个默认网关,所以不管从哪个子接口收到的数据包,其返回的数据肯定是查找路由表,根据arp和mac表项封包后从这个默认网关的接口返回。这样的话显然有问题。如果这样的逻辑没有经过类似防火墙这类的状态检测时,是不会有问题的。但是一旦经过了防火墙的状态检测后就会报防火墙丢弃。这也是为什么icmp包不受限制,有tcp的就会出现问题的原因。
解决方法:需要保证服务器的数据包正常转发,即从哪个子接口收到数据包就从这个子接口返回数据包。可以在服务器上面配置源地址路由。