CentOS "Dropped"问题解决方法(网络丢包/连接中断场景)
ip link show命令查看接口是否处于UP状态(如state UP)。若接口为DOWN,用sudo ip link set <接口名> up(如ens33)激活接口。ip addr show检查接口是否有有效IP地址(inet行,如192.168.1.100/24)。ip route show确认默认网关是否存在(如default via 192.168.1.1 dev ens33)。/etc/sysconfig/network-scripts/ifcfg-<接口名>(如ifcfg-ens33),确保以下参数正确:BOOTPROTO=dhcp # 或static(静态IP需配置IPADDR、NETMASK、GATEWAY)
ONBOOT=yes # 开机自启
NAME=ens33 # 接口名(与ip link一致)
DEVICE=ens33
保存后重启网络服务:sudo systemctl restart NetworkManager。netstat -s或ip -s link show <接口名>查看丢包统计(如dropped计数)。重点关注:
RX dropped(接收丢包):可能因网卡缓冲区满、驱动问题或物理层故障。TX dropped(发送丢包):可能因网络拥塞、防火墙拦截或路由问题。ethtool <接口名>(如ethtool ens33)查看网卡状态:
Speed(速度,如1000Mb/s)和Duplex(双工,如Full)是否与交换机匹配。sudo ethtool -s <接口名> speed 1000 duplex full调整(需交换机支持)。RX/TX errors(接收/发送错误计数),若数值持续增长,可能需更换网卡驱动或硬件。top、htop或vmstat 1查看CPU、内存、磁盘I/O使用率。若资源占用过高(如CPU>80%、内存剩余<10%),可能导致网络处理能力下降,需优化应用或升级硬件。ip_conntrack: table full错误,需扩大连接跟踪表大小:/etc/sysctl.conf,添加:net.ipv4.netfilter.ip_conntrack_max = 100000 # 最大连接数
net.ipv4.netfilter.ip_conntrack_hashsize = 100000 # 哈希表大小
运行sudo sysctl -p使配置生效。/etc/sysctl.conf,调整TCP缓冲区参数:net.core.rmem_max = 16777216 # 接收缓冲区最大值
net.core.wmem_max = 16777216 # 发送缓冲区最大值
net.ipv4.tcp_rmem = 4096 87380 16777216 # 接收缓冲区分段(min/default/max)
net.ipv4.tcp_wmem = 4096 65536 16777216 # 发送缓冲区分段
net.ipv4.tcp_mem = 786432 1048576 26777216 # TCP内存阈值
net.ipv4.tcp_fin_timeout = 30 # FIN等待超时(秒)
net.ipv4.tcp_keepalive_time = 120 # 保活时间(秒)
运行sudo sysctl -p生效。/etc/security/limits.conf,添加:* soft nofile 65536 # 单个用户最大文件描述符(软限制)
* hard nofile 65536 # 单个用户最大文件描述符(硬限制)
重新登录用户使配置生效。firewalld,用firewall-cmd --list-all查看规则,确保允许必要端口(如80/tcp、443/tcp):sudo firewall-cmd --add-port=80/tcp --permanent
sudo firewall-cmd --reload
iptables,用sudo iptables -L -n查看规则,避免误拦截。临时关闭防火墙测试(生产环境慎用):sudo systemctl stop firewalld # 或 sudo service iptables stop
若关闭后问题消失,需调整防火墙规则。Enforcing模式,可能阻止网络服务。编辑/etc/selinux/config,将SELINUX=enforcing改为SELINUX=permissive(临时生效),或用setenforce 0(立即生效)。测试后若问题解决,需调整SELinux策略或保持permissive模式。使用journalctl -xe(实时日志)或grep -i error /var/log/messages(历史错误日志)查看与网络相关的错误信息(如network service failed、eth0: link down)。根据日志提示进一步排查,例如:
device eth0 does not seem to be present,可能网卡驱动未加载,需用lspci | grep -i ethernet查看网卡型号,安装对应驱动。systemctl status network(CentOS 7)或systemctl status NetworkManager(CentOS 8+)检查网络服务状态。若未运行,用sudo systemctl start <服务名>启动,并设置开机自启:sudo systemctl enable <服务名>。