网络缓存涵盖DNS解析、路由转发、ARP映射等多个环节,以下是针对不同缓存类型的常用清理方法:
DNS缓存用于存储域名与IP地址的映射关系,过期或不准确的缓存会导致网络访问延迟或失败。根据系统使用的DNS缓存服务,选择对应命令:
sudo systemd-resolve --flush-caches # 清除DNS缓存
sudo resolvectl statistics # 查看缓存状态(可选)
sudo systemctl restart dnsmasq # 重启dnsmasq服务以清除缓存
sudo systemctl restart nscd # 重启nscd服务清除DNS缓存
sudo rndc flush # 清除BIND缓存
sudo systemctl restart NetworkManager # 重启NetworkManager服务(部分发行版会同步清除DNS缓存)
ARP(地址解析协议)缓存存储IP地址与MAC地址的对应关系,当网络设备变更时,需清除旧缓存以获取最新映射:
sudo ip -s -s neigh flush all # 清除所有ARP缓存条目(Linux主流发行版通用)
或针对特定接口(如eth0):
sudo ip neigh flush dev eth0 # 清除指定接口的ARP缓存
路由表缓存存储数据包转发的路径信息,网络拓扑变化时需清除旧路由:
sudo ip route flush cache # 清除路由表缓存(Linux 2.6+内核通用)
若需重启路由服务(如Debian/Ubuntu的networking服务):
sudo systemctl restart networking # 重启网络服务(部分发行版)
TCP Socket缓存存储已建立的连接信息,连接过多或异常时需重置:
sudo sysctl -w net.ipv4.tcp_mem="0 0 0" # 清除TCP内存缓存(设置缓存大小为0)
sudo sysctl -w net.ipv4.tcp_rmem="0 0 0" # 清除TCP读缓存
sudo sysctl -w net.ipv4.tcp_wmem="0 0 0" # 清除TCP写缓存
或重启网络接口(如eth0):
sudo ifdown eth0 && sudo ifup eth0 # 关闭再启动接口(Debian/Ubuntu)
sudo systemctl restart network # 重启网络服务(CentOS/Fedora)
sudo或root权限。cp /etc/resolv.conf /etc/resolv.conf.bak)。resolvectl statistics查看DNS缓存、ip neigh show查看ARP缓存)。