如果我检查 serverA (192.168.1.1) 向 serverB (192.168.2.1) 打开了多少个连接,我会得到以下响应:
[username@serverA ~] $ netstat -n | grep 192.168.2.1
tcp 0 0 192.168.1.1:51846 192.168.2.1:10001 ESTABLISHED
tcp 0 0 192.168.1.1:50872 192.168.2.1:10001 ESTABLISHED
tcp 0 0 192.168.1.1:51824 192.168.2.1:10001 ESTABLISHED
tcp 0 0 192.168.1.1:51848 192.168.2.1:10001 ESTABLISHED
[username@serverA ~] $ netstat -n | grep 10.79.165.145 | wc -l
4
但是,如果我执行相反的操作并检查 serverB 有多少个与 serverA 打开的连接,我会得到以下结果:
[username@serverB ~] $ netstat -n | grep 192.168.1.1
tcp 0 0 192.168.2.1:10001 192.168.1.1:51846 ESTABLISHED
tcp 0 0 192.168.2.1:10001 192.168.1.1:55122 ESTABLISHED
tcp 0 0 192.168.2.1:10001 192.168.1.1:59930 ESTABLISHED
tcp 0 0 192.168.2.1:10001 192.168.1.1:50352 ESTABLISHED
tcp 0 0 192.168.2.1:10001 192.168.1.1:44142 ESTABLISHED
tcp 0 0 192.168.2.1:10001 192.168.1.1:57698 ESTABLISHED
tcp 0 0 192.168.2.1:10001 192.168.1.1:38268 ESTABLISHED
tcp 0 0 192.168.2.1:10001 192.168.1.1:41822 ESTABLISHED
... many more connections ...
tcp 0 0 192.168.2.1:10001 192.168.1.1:43840 ESTABLISHED
tcp 0 0 192.168.2.1:10001 192.168.1.1:50870 ESTABLISHED
tcp 0 0 192.168.2.1:10001 192.168.1.1:34100 ESTABLISHED
tcp 0 0 192.168.2.1:10001 192.168.1.1:34620 ESTABLISHED
tcp 0 0 192.168.2.1:10001 192.168.1.1:41126 ESTABLISHED
tcp 0 0 192.168.2.1:10001 192.168.1.1:49298 ESTABLISHED
tcp 0 0 192.168.2.1:10001 192.168.1.1:50004 ESTABLISHED
tcp 0 0 192.168.2.1:10001 192.168.1.1:51408 ESTABLISHED
[username@serverB ~] $ netstat -n | grep 192.168.1.1 | wc -l
104
我没想到两台服务器之间的连接数量会不匹配,本质上serverB认为有多很多向 serverA 开放的连接,以及 serverA 向 serverB 开放的连接。
这些服务器位于不同的 VLAN 上,并且连接确实穿过防火墙。 serverA 和 serverB 都是在 ESXI 上运行的 RHEL v7 VM。他们不运行任何容器或任何可以进行 NAT 的东西。
造成开放连接数不匹配的原因是什么
答案1
通过针对正在使用的应用程序服务器发布补丁版本解决了这个问题。