Ubuntu 18.04(ESXi 6.7虚拟机)随机端口连接阻塞问题求助
排查Ubuntu Server在ESXi上间歇性端口无法访问的问题
根据你描述的情况——三台Ubuntu 18.04.3虚拟机都出现能ping通但所有端口失联、重启网卡即可恢复的故障,而同一网络的Windows虚拟机无此问题,我整理了几个针对性的排查方向,你可以依次尝试:
1. 优先排查网卡驱动与硬件卸载兼容性问题
因为只有Ubuntu虚拟机出问题,大概率和Linux网卡驱动与ESXi的适配有关:
- 先确认你的Ubuntu虚拟机使用的是VMXNET3还是E1000e网卡。VMXNET3是ESXi的高性能网卡,但部分旧版本驱动和ESXi 6.7u1可能存在兼容性bug。你可以临时换用E1000e网卡测试,如果故障消失,就说明是VMXNET3的驱动问题。
- 尝试关闭网卡的TCP卸载功能,这是很多类似端口失联问题的元凶:
执行后观察一段时间,如果不再出现故障,可以把这个设置加到开机启动脚本(比如ethtool -K ens160 tx off rx off/etc/rc.local)里永久生效。
2. 从系统日志中找异常线索
故障发生前后,系统日志肯定会留下关键信息:
- 查看内核日志和系统日志,过滤网卡、网络相关的内容:
重点找有没有网卡链路断开、丢包、驱动报错、TCP栈异常的信息——比如grep -i "ens160\|network\|tcp\|link" /var/log/kern.log /var/log/sysloglink down、tx timeout这类关键词。
3. 排查TCP/IP栈与连接状态
虽然ping通说明链路层没问题,但传输层可能存在异常:
- 故障发生时,立即执行以下命令查看TCP连接状态:
看看是不是存在大量TIME_WAIT连接导致端口耗尽,或者服务进程虽运行但无法正常监听端口?不过你提到重启网卡就好,大概率不是进程本身的问题,但还是要确认。ss -tulnp netstat -anp | grep -E "(TIME_WAIT|SYN_RECV)" - 检查是否开启了
tcp_tw_recycle参数(这个参数在NAT环境下容易导致连接异常):
如果值是sysctl net.ipv4.tcp_tw_recycle1,建议关闭:
并写入sysctl -w net.ipv4.tcp_tw_recycle=0/etc/sysctl.conf永久生效。
4. 检查ARP缓存与网络层异常
能ping通但端口连不上,也可能是ARP缓存污染导致的:
- 故障时,在Ubuntu服务器和Windows虚拟机上分别执行:
确认服务器的MAC地址是否正确,有没有出现异常的ARP条目。如果发现异常,可以在Ubuntu上清空ARP缓存:# Ubuntu端 arp -n # Windows端 arp -aip -s -s neigh flush all
5. 再核对ESXi层面的网络配置
虽然你排除了ESXi宿主的问题,但还是可以补充检查几个点:
- 确认ESXi主机的物理网卡没有持续增长的错误计数,在ESXi控制台执行:
替换esxcli network nic stats get -n vmnicXvmnicX为你的物理网卡名称,重点看Rx errors、Tx errors是否异常增长。 - 检查虚拟机所在的端口组是否开启了混杂模式、流量控制等特殊配置,尝试把Ubuntu虚拟机移到一个全新的测试端口组,看故障是否还会出现。
以上几个方向应该能帮你定位到问题,建议先从网卡驱动和TCP卸载功能开始排查,这是这类间歇性端口问题最常见的诱因。
内容的提问来源于stack exchange,提问作者zarkosizer
相关产品推荐
相关产品推荐

