怎么看服务器连的F5:先分清是“看得到”还是“连得上”
判断服务器是否连接F5,核心不在于看网络通不通,而在于确认流量路径上是否真的经过了F5,以及F5上的会话表里是否有对应的连接记录。很多人一上来就ping网关、telnet端口,结果F5在前面做的是半透明代理,你以为连上了,实际上数据根本没走那条路。
服务器与F5连接异常排查:第一步先分清谁主动
确认连接存在:两种带内验证方式
服务器连F5,场景通常分两种:一是服务器作为后端节点,主动向F5发起健康检查响应;二是客户端通过F5转发访问服务器,你要看的连接,取决于你现在站在哪一侧。
- 如果服务器上装有F5的Endpoint Discovery代理,直接看代理状态即可
- 如果没装代理,就用系统自带的工具验证
最直接的方法是登录F5的命令行,执行show sys session,查看是否有从服务器IP发来的会话记录,如果服务器IP在会话表里没有任何条目,说明F5压根没跟这台服务器建立过连接。
从F5侧看连接:tmsh命令的完整脉络
F5的排查入口是tmsh,这是它的管理shell,登录SSH后,依次执行以下命令:
tmsh
show ltm virtual
show ltm pool
show sys session
先看virtual是否正常监听,再看pool里的成员是否标记为绿色可用,最后看session表里有没有实际流量,这三个层级缺一不可,光看pool成员在线,不代表连接就一定经过F5。
服务器侧怎么配合验证
在服务器上执行netstat -an | grep <F5地址>,看是否存在与F5管理地址或虚拟服务地址的TCP连接,如果服务器是被动等待F5转发过来的请求,那么netstat里通常会显示ESTABLISHED或TIME_WAIT状态,什么都没有,说明F5的请求根本没到服务器网卡上。
F5连接状态与网络故障对比:别把链路问题算到F5头上
看双向流量,别只盯一个方向
服务器连F5,是个双向过程,F5转发请求到服务器,服务器响应回F5,再由F5返回给客户端,任何一个方向断了,表现都是“连不上”,但根因可能完全不同。
| 现象 | 可能原因 | 排查方向 |
|---|---|---|
| 服务器能ping通F5,但业务不通 | SNAT未开启,回程路由指向了网关而非F5 | 检查服务器的默认路由和F5的SNAT配置 |
| F5能看到TCP握手,但请求超时 | 服务器防火墙拦截了F5的源IP | 在服务器上临时放行F5的IP段测试 |
| 会话表里有连接,但响应缓慢 | 服务器负载过高或应用线程阻塞 | 查看服务器CPU、内存和连接队列 |
连接池与源地址转换的干扰项
行业共识认为,F5在使用SNAT(源地址转换)时,服务器看到的源IP是F5的浮动IP,而非客户端真实IP,这会导致你在服务器上抓包时,发现来源全是F5的地址,误以为连接正常,反过来,如果没开SNAT,服务器回包走默认路由出公网,F5永远等不到响应,连接就会一直在SYN_RECV状态。
抓包验证的实操位置
在服务器上抓包,命令很简单:
tcpdump -i eth0 host <F5虚拟服务IP> -nn
重点看三个标志位:SYN、SYN-ACK、ACK,三次握手完整出现,说明F5到服务器的链路没问题,如果只有SYN没有SYN-ACK,问题出在服务器防火墙或者应用端口没监听,如果三次握手完成但立刻有RST,说明服务器应用主动拒连,这跟F5关系不大。
数据中心F5巡检经验:平时不烧香,临时抱佛脚没用
巡检清单与频率
F5连接问题高发于变更之后,比如版本升级、配置改动、网络割接,与其等故障了再查,不如把“怎么看连接”变成日常巡检脚本,建议每月至少做一次主动审计:
- 用
tmsh show ltm pool <pool名>检查成员健康状态 - 用
tmsh show sys session统计会话数是否异常增长 - 对比F5上的连接数与服务器上的ESTABLISHED连接数,差距超过一定比例就要警惕
变更前快照与回退方案
做任何F5配置变更前,先跑一遍tmsh save sys config,把当前配置存档,同时记录一下变更前的连接数基线,如果变更后连接数骤降或激增,立刻回滚配置,再重新执行上述排查命令,这是最省时间的路径,比你事后翻日志快得多。
日志的辅助判断
F5的/var/log/ltm文件记录了虚拟服务的访问日志,但默认级别可能不够详细,排查时可以用tmsh modify sys db log.pool.status调整日志级别,看到pool成员的上下线记录,不过做完记得改回来,不然日志量会很大。
服务器连F5的常见疑问解答
服务器上能看到F5的连接吗?
能,但要看F5是否开启了SNAT,开启SNAT时,服务器看到的源IP全是F5的地址,client IP被隐藏了,关闭SNAT时,服务器能看到真实客户端IP,但必须保证服务器回程路由经过F5,否则连接建立不起来。
F5上的连接数比服务器多,正常吗?
多数情况下正常,F5为每个客户端请求可能建立多个后端连接,也可能因为keep-alive超时设置不同,导致两侧连接数不匹配,真正要关注的是连接数是否在持续增长且不回落,那可能意味着有连接泄漏。
健康检查算不算连接?
F5的monitor健康检查走的是ICMP或TCP端口探测,会短暂出现在连接表里,但不承载业务流量,如果服务器只看到F5健康检查的连接而没有业务连接,说明F5能探测到服务器,但虚拟服务的流量没有正确分发过来,重点检查virtual server的pool绑定关系和irule规则。
首发原创文章,作者:王坚,如若转载,请注明出处:https://idctop.com/article/785920.html


