背景 XX市某公司公司使用我们AD做服务器负载。通过我们AD插入X-forwarded-for字段来记录客户端访问源IP。 问题现象客户那边服务器需要记录客户端源IP,客户反馈在服务器上有时能看到源IP有时看不到。 网络拓扑网络拓扑如图所示,AD旁路在核心,核心划分VLAN接不同的服务器,服务器网关直接指向核心交换机。 注:AD IP为:,客户端IP为,需要调度的服务器IP为:
排错1、 由于客户端流量进过AD之后做了SNAT,因此在服务器应该能看到AD的地址。因此先在AD抓取客户端访问的流量,同时在服务器上抓取AD访问的流量,但是两边都没有抓到数据包。 2、 既然客户反映在服务器上有时可以看到源IP,有时看不到,那么就在PC上抓包。
3、 初一看数据包没有什么异常,客户端也正常和AD交互。那就继续向下看数据包吧。往下一看好像是有点不对劲了!!!为啥客户端就直接和服务器通信了呢?
4、 AD内心表示一万个……,前面和我联系的好好的突然就爱上了别人。AD表示不服,一定要找出是哪里出了幺蛾子! 5、 在往前看数据包,发现AD回给客户端一个2某公司 OK以后客户端就开始直接和服务器通信了,于是直接看一下这个2某公司 OK的数据包。
6、 看完数据包终于找到了元凶,是客户业务接口写了一个重定向location:
结论通过抓包终于服务器记录不到源IP的真相,是由于客户业务接口的原因导致,于是协调客户那边开发,把业务接口location的地址再指向AD即可,由此大功告成。 |