# 检查当前网络连接状态
ip addr show
ip route show
# 测试基本连通性
ping -c 10 8.8.8.8 # 测试到Google DNS的连通性
ping -c 10 your.router.ip # 测试到本地路由器的连通性
# 检查DNS解析
nslookup example.com
dig example.com
# 使用mtr进行路由追踪和丢包检测
mtr -rw 8.8.8.8
# 检查TCP连接质量
tcptraceroute 8.8.8.8 80
# 查看网络接口统计信息
ip -s link show
# 查看网络错误统计
netstat -i
ethtool eth0
检查网卡状态和协商速率# 更新网卡驱动
sudo apt update && sudo apt upgrade # Debian/Ubuntu
sudo yum update # RHEL/CentOS
# 检查驱动信息
ethtool -i eth0
lspci -v | grep -i ethernet
# 临时调整(重启失效)
sudo sysctl -w net.ipv4.tcp_sack=1
sudo sysctl -w net.ipv4.tcp_fack=1
sudo sysctl -w net.ipv4.tcp_window_scaling=1
sudo sysctl -w net.ipv4.tcp_timestamps=1
# 永久调整(添加到/etc/sysctl.conf)
echo "net.ipv4.tcp_sack=1" | sudo tee -a /etc/sysctl.conf
echo "net.ipv4.tcp_fack=1" | sudo tee -a /etc/sysctl.conf
echo "net.ipv4.tcp_window_scaling=1" | sudo tee -a /etc/sysctl.conf
echo "net.ipv4.tcp_timestamps=1" | sudo tee -a /etc/sysctl.conf
sudo sysctl -p
# 检查当前设置
sysctl net.core.rmem_max net.core.wmem_max
# 增加缓冲区大小
sudo sysctl -w net.core.rmem_max=4194304
sudo sysctl -w net.core.wmem_max=4194304
sudo tcpdump -i eth0 -w packet_capture.pcap
# 使用Wireshark分析生成的pcap文件
dmesg | grep -i eth0
journalctl -u NetworkManager --no-pager | tail -50
cat /var/log/syslog | grep -i network
# 检查无线信号强度
iwconfig wlan0
iwlist wlan0 scan | grep -i quality
# 尝试固定频段(避免自动切换)
sudo iwconfig wlan0 channel 6
# 启用TCP BBR拥塞控制算法
echo "net.core.default_qdisc=fq" | sudo tee -a /etc/sysctl.conf
echo "net.ipv4.tcp_congestion_control=bbr" | sudo tee -a /etc/sysctl.conf
sudo sysctl -p
# 验证BBR是否启用
sysctl net.ipv4.tcp_congestion_control
ethtool -K eth0 tso off gso off
# 安装iftop(实时带宽监控)
sudo apt install iftop # Debian/Ubuntu
sudo yum install iftop # RHEL/CentOS
# 使用iftop
sudo iftop -i eth0
# 安装nload(简单带宽监控)
sudo apt install nload
nload eth0
#!/bin/bash
# 保存为network_monitor.sh
INTERFACE="eth0"
LOG_FILE="/var/log/network_monitor.log"
echo "$(date) - Starting network monitoring on $INTERFACE" >> $LOG_FILE
while true; do
# 检查丢包率
RX_ERRORS=$(cat /sys/class/net/$INTERFACE/statistics/rx_errors)
TX_ERRORS=$(cat /sys/class/net/$INTERFACE/statistics/tx_errors)
RX_PACKETS=$(cat /sys/class/net/$INTERFACE/statistics/rx_packets)
TX_PACKETS=$(cat /sys/class/net/$INTERFACE/statistics/tx_packets)
RX_LOSS=$(echo "scale=2; $RX_ERRORS * 100 / ($RX_PACKETS + $RX_ERRORS)" | bc)
TX_LOSS=$(echo "scale=2; $TX_ERRORS * 100 / ($TX_PACKETS + $TX_ERRORS)" | bc)
echo "$(date) - RX Loss: $RX_LOSS%, TX Loss: $TX_LOSS%" >> $LOG_FILE
sleep 60
done
通过以上系统化的诊断和解决方案,您应该能够有效解决Linux系统中的网络不稳定和丢包问题。建议从基础检查开始,逐步深入排查,直到找到问题根源。