Ubuntu 提升网络速度的实用步骤
问题澄清与总体思路
你提到的“Dropped”更可能是指网络“掉包/丢包”(packet drops)或网页“卡顿”。提升速度通常从三方面入手:先排除链路与 DNS 问题,再优化系统与协议栈参数,最后针对虚拟机场景做专项设置。
一 快速排查与定位
- 查看接口与链路状态:ip addr show、ip route show;必要时用 sudo lshw -numeric -class network 确认网卡型号与驱动。
- 测试连通与路径:ping -c 4 8.8.8.8(纯 IP 测试网络层),ping -c 4 www.ubuntu.com(测试 DNS 解析与链路),traceroute www.ubuntu.com(定位在哪一跳变慢/丢包)。
- 检查本机与上游 DNS:cat /etc/resolv.conf;若解析慢或偶发超时,优先更换为公共 DNS(如 223.5.5.5、8.8.8.8)。
- 虚拟机场景:确认 VMware/VirtualBox 使用 NAT/桥接 等合适模式,并在 Ubuntu 内用 ip a、ip route 校验是否拿到地址与默认路由。
以上命令与路径可快速判断是“链路/路由问题”“DNS 问题”还是“虚拟机网络模式问题”。
二 优化 DNS 解析
- 症状与判断:网页首屏慢、重复访问仍慢,多为 DNS 解析慢或缓存未命中。
- 方案 A(轻量推荐):安装本地 DNS 缓存 dnsmasq
- sudo apt-get install -y dnsmasq
- 编辑 /etc/dnsmasq.conf:设置 resolv-file=/etc/resolv.dnsmasq.conf;确保 /etc/resolv.conf 里有上游 DNS(如 223.5.5.5、8.8.8.8)。
- 生成上游文件:sudo cp /etc/resolv.conf /etc/resolv.dnsmasq.conf
- 将 /etc/resolv.conf 的 nameserver 指向本地:nameserver 127.0.0.1(若被 systemd-resolved 管理,需改为使用本地 stub 或改用方案 B)。
- 重启服务:sudo systemctl restart dnsmasq(或 sudo /etc/init.d/dnsmasq restart)。
- 方案 B(替代):使用 pdnsd 做本地缓存
- sudo apt-get install -y pdnsd
- 配置 /etc/pdnsd.conf 的 server 段指向上游 DNS,设置超时与探活;
- /etc/resolv.conf 首行写入 nameserver 127.0.0.1;
- 启动:sudo /etc/init.d/pdnsd start;用 dig baidu.com +short 或查看查询耗时验证命中缓存。
DNS 缓存能显著减少重复域名解析时间,对网页打开速度尤为明显。
三 系统与协议栈优化
- 备份当前 sysctl 配置:sudo cp /etc/sysctl.conf /etc/sysctl.conf.bak
- 编辑 /etc/sysctl.conf,按需加入(数值为示例,可按带宽/延迟微调):
- 加速回收 TIME_WAIT:net.ipv4.tcp_tw_reuse=1;net.ipv4.tcp_fin_timeout=15
- 增大 TCP 缓冲区(提升高带宽时延积场景):net.core.rmem_max=4194304;net.core.wmem_max=4194304;net.ipv4.tcp_rmem=4096 87380 4194304;net.ipv4.tcp_wmem=4096 16384 4194304
- 选择更激进的拥塞控制(有线高带宽可用 bbr):net.core.default_qdisc=fq;net.ipv4.tcp_congestion_control=bbr
- 减少连接建立/保持开销:net.ipv4.tcp_syn_retries=3;net.ipv4.tcp_keepalive_time=600;net.ipv4.tcp_keepalive_intvl=60;net.ipv4.tcp_keepalive_probes=5
- 应用:sudo sysctl -p
- 说明:这些调整针对“长肥管道/高并发短连接/高丢包”等场景收益更明显;笔记本电池模式或弱网环境不建议过度激进。
上述参数覆盖 TCP 缓冲区、TIME_WAIT 回收、拥塞控制与 KeepAlive,是 Linux 通用且有效的性能优化项。
四 虚拟机与网络配置要点
- 选择正确模式:
- NAT:共享宿主机网络,部署简单、兼容性好;
- 桥接:虚拟机直连局域网,便于与同网段设备互通;
- 仅主机:仅与宿主机通信,适合测试。
- Ubuntu 侧配置:
- 使用 netplan(/etc/netplan/*.yaml)设置静态 IP/DNS 后执行 sudo netplan apply;
- 用 nmcli 管理连接:nmcli con mod “Wired connection 1” ipv4.addresses 192.168.1.110/24 ipv4.gateway 192.168.1.1 ipv4.dns “223.5.5.5 8.8.8.8” ipv4.method manual;nmcli con up “Wired connection 1”。
- 代理与防火墙:
- 若曾配置代理导致无法上网,执行:unset http_proxy https_proxy HTTP_PROXY HTTPS_PROXY;
- 按需开启防火墙:sudo ufw enable;sudo ufw allow ssh。
- 验证:ip a 看地址、ip route 看默认路由、ping/traceroute 验证连通与路径质量。
以上步骤可确保虚拟机网络模式与系统侧配置一致,避免“能上网但很慢/丢包”的配置错配。
五 验证与持续监控
- 测速与路径:speedtest-cli(或浏览器测速)、ping/traceroute 对比优化前后 RTT 与丢包率。
- 资源占用与连接:iftop(按连接带宽)、nethogs(按进程流量)、tcpdump(抓包定位异常)。
- 吞吐基准:iperf3(服务端/客户端对测)、netperf(面向特定协议的吞吐/时延)。
- DNS 命中:dig example.com +short 观察 Query time 是否接近 0ms(命中本地缓存)。
通过前后对比这些指标,可量化优化成效并持续观测稳定性。