记一次很蠢的云服务器安全组错误

某次测试时发现某些服务器间的vxlan不通,突然坏了。就用了九牛二虎之力来排查这个问题。

服务器是云服务器。

现象

观察到的现象如下:

  • 亲眼目睹一个云服务器的跨vxlan ping从通变成不通
  • 部分服务器的vxlan不通
  • vxlan坏的服务器之间ping包可以通
  • 在出服务器的网卡上抓到了vxlan报文,在入服务器的网卡上却没抓到
  • 手动构造vxlan的报文,结果vxlan好的服务器可以收到报文,vxlan坏的服务器收不到
  • 重启vxlan坏的服务器,vxlan仍然坏

解决

折腾了一两天,实在感觉解决不出来了,就打算去问下云服务商他们底层的设备是不是设置了啥奇怪的规则,导致报文过不去。云服务商从自己的角度提醒我是不是安全组有问题。

我就去找了下设置了我们自定义安全组的服务器和未设置自定义安全组的服务器对比了下,果然未设置自定义的可以通,设置了的不通。

在安全组中添加了UDP端口8472允许出入后,就可以通了。

后来在组内线上聊天时发现是一个师弟在某天晚上换了服务器的安全组,也就是我亲眼目睹一个云服务器的跨vxlan ping从通变成不通的原因了…………

打算的解决方式

本来打算万一还解决不了,怀疑是tcpdump的抓包位置太靠后,打算用XDP抓包,看网卡是否确实收到。

最后

以后遇到这种问题,如果着急解决的话,感觉还是第一时间去先问一下相关人士比较好,说不定一下就解决了。

不过通过这次排错,也学了下scapy如何构包,也更熟悉了vxlan,感觉也比较有收获。