用x86硬件打造高性能OpenWrt软路由


0
Categories : 未分类

TechBit的粉丝们,大家好!我是TechTao,欢迎体验我们TechBit YouTube第二期的配套教程!这次我们用x86硬件(迷你PC或旧电脑)打造一台超强的OpenWrt软路由!从下载到配置,命令一键复制,懒人福音!😎 特别优化了NAS性能,USB硬盘从龟速变火箭!想看我边折腾边吐槽?快去TechBit!跟着这篇教程,让你的网络飞起来!

为什么选择OpenWrt?

OpenWrt是一个开源路由系统,能把x86硬件变成超级路由器。相比家用路由器,它提供:

  • SQM(智能队列管理):消灭游戏和视频卡顿。
  • AdGuard Home:全网屏蔽广告,浏览清爽。
  • NAS和Docker:文件共享、轻量服务随便跑。
  • 多宽带支持:负载均衡,榨干每条宽带。
  • DDNS:动态域名,随时远程访问。
  • 超灵活:适配家庭、办公、IoT场景。

本教程基于最新OpenWrt 24.10.1,所有命令亲测可用,小白也能上手!准备好硬件,咱们开始吧!

硬件需求

你需要一台x86设备(迷你PC、旧笔记本或服务器),推荐:

  • CPU:双核以上(Intel/AMD,低功耗)。
  • 内存:4GB+(8GB更佳)。
  • 存储:16GB+ SSD(NVMe/SATA,根分区~256MB,overlay分区1GB+)。
  • 网卡:2+千兆网口(支持多宽带)。
  • 其他:8GB+ U盘(刷机)、网线、USB键盘/显示器(初次配置)、USB/SATA硬盘(NAS)。

具体硬件选择看OpenWrt硬件兼容表。旧电脑也能用,省钱又环保!

软件配置:从下载到全面部署

第一步:下载OpenWrt 24.10.1

  1. 访问官网:打开openwrt.org,进入“Downloads”,选择x86_64架构。
  2. 选择镜像:下载openwrt-24.10.1-x86-64-generic-squashfs-combined-efi.img.gz(支持UEFI,约10-20MB)。
  3. 解压镜像:用7-Zip或WinRAR解压.gz,得到.img文件。可选:用sha256sum验证完整性(官网提供校验值)。

第二步:制作启动U盘

  1. 准备U盘:8GB+ U盘,备份数据(刷机会清空)。
  2. 下载刷机工具:推荐Balena Etcher(Windows/macOS/Linux)或Rufus。
  3. 刷写镜像:打开Etcher,选择.img文件,选U盘,点击“Flash”(1-2分钟)。
  4. 验证:重新插入U盘,确认包含bootsyslinux目录。

第三步:安装OpenWrt 24.10.1

  1. 准备硬件:关闭x86设备,插入U盘,连接键盘和显示器。
  2. 进入BIOS:开机,按F2DelF12进入BIOS。设置U盘为首选启动,禁用Secure Boot,保存并重启(通常F10)。
  3. 启动安装:从U盘启动,进入OpenWrt文字界面,按回车进入临时系统。
  4. 安装到SSD:识别SSD:
    Bash
    opkg update
    opkg install lsblk
    lsblk
    Bash

    NVMe为/dev/nvme0n1,SATA为/dev/sda。写入OpenWrt:

    Bash
    dd if=/dev/zero of=/dev/nvme0n1 bs=1M count=100
    sysupgrade -i /dev/nvme0n1
    Bash

    替换/dev/nvme0n1为你的SSD。等待5-10分钟,自动重启。

  5. 5.创建1GB独立Overlay分区:默认根分区(~256MB)够用,但overlay空间小。我们新建1GB overlay分区,零风险,简单两步!
    • 安装分区工具:重启后登录终端(见下一步),运行:
      Bash
      opkg update
      opkg install fdisk e2fsprogs
      Bash
    • 检查分区布局:确认根分区和未分配空间:
      Bash
      lsblk
      fdisk -l /dev/nvme0n1
      mount | grep overlay
      Bash

      默认overlay在/dev/nvme0n1p2

    • 备份配置:以防万一:
      Bash
      sysupgrade -b /mnt/usb/backup.tar.gz
      Bash
    • 新建分区:创建1GB分区:
      Bash
      fdisk /dev/nvme0n1
      Bash

      输入n,选p(主分区),分区号3,接受默认起始扇区,结束扇区输入+1G,输入w写入并退出。格式化为ext4:

      Bash
      mkfs.ext4 /dev/nvme0n1p3
      Bash
    • 配置Overlay挂载:挂载并复制数据:
      Bash
      mkdir /mnt/overlay
      mount /dev/nvme0n1p3 /mnt/overlay
      cp -a /overlay/* /mnt/overlay/
      Bash

      更新fstab:

      Bash
      uci add fstab mount
      uci set fstab.@mount[-1].device='/dev/nvme0n1p3'
      uci set fstab.@mount[-1].target='/overlay'
      uci set fstab.@mount[-1].fstype='ext4'
      uci set fstab.@mount[-1].enabled='1'
      uci commit fstab
      Bash
    • 验证:重启并检查:
      Bash
      reboot
      df -h /overlay
      mount | grep overlay
      Bash

      确认~1GB可用,挂载到/dev/nvme0n1p3

    • (可选)清理旧数据:若新overlay正常,清理旧数据:
      Bash
      rm -rf /overlay/*
      Bash

    注意:确保SSD有1GB+未分配空间。若不足,用GParted调整。1GB overlay够SQM、AdGuard、Docker等,可扩展到2GB+。

或者在登陆web界面后挂载overlay也可以,首先安装必要的软件包

Bash
opkg update
opkg install block-mount kmod-fs-ext4 kmod-usb-storage ntfs-3g
Bash

在系统 > 挂载点页面,选择作为外部overlay使用即可

第四步:初次配置

  1. 连接设备:用网线将x86的LAN口连到电脑,电脑网卡设为“自动获取IP”(DHCP)。
  2. 访问终端:连接显示器/键盘,设置root密码:
    Bash
    passwd
    Bash
  3. 3.访问LuCI:浏览器输入192.168.1.1,登录(用户名:root,密码:刚设置)。

    4.网络设置:进入网络 > 接口

    • LAN:IP为192.168.1.1,启用DHCP。
    • WAN:选网口(如eth0),设为“DHCP客户端”或“PPPoE”。

    保存并应用。

    5.更新系统:进入系统 > 软件,点击“更新列表”,安装基础工具:
    Bash
    opkg update
    opkg install luci
    Bash

排错:无法访问192.168.1.1?检查网线,确认电脑IP在192.168.1.x。WAN无网络?在网络 > 接口 > 设备调整端口。网卡问题?运行dmesg | grep eth,升级驱动。

第五步:备份与还原系统

~256MB根分区+1GB overlay分区便于用dd备份系统。

备份系统

  1. 准备USB存储(>1GB)。
  2. 挂载USB:
    Bash
    lsblk
    mkdir /mnt/usb
    mount /dev/sdb1 /mnt/usb
    Bash
  3. 3.备份SSD:
    Bash
    dd if=/dev/nvme0n1 of=/mnt/usb/openwrt_backup.img bs=1M count=1024
    Bash

    限制1GB,约200-500MB。

    4.压缩(可选):
    Bash
    gzip /mnt/usb/openwrt_backup.img
    Bash
    5.卸载:
    Bash
    umount /mnt/usb
    Bash

还原系统

  1. 挂载USB:
    Bash
    mount /dev/sdb1 /mnt/usb
    Bash
  2. 2.写入SSD:
    Bash
    dd if=/mnt/usb/openwrt_backup.img of=/dev/nvme0n1 bs=1M count=1024
    Bash

    若压缩:

    Bash
    gunzip /mnt/usb/openwrt_backup.img.gz
    Bash
    3.重启:
    Bash
    reboot
    Bash

注意:备份前停止服务:

Bash
service stop adguardhome samba4 dockerd
Bash

定期转移备份到电脑或云存储。

第六步:安装与配置核心插件

1. SQM(智能队列管理)

SQM用CAKE算法减少bufferbloat。

安装

Bash
opkg update
opkg install luci-i18n-sqm-zh-cn
Bash

配置:进入网络 > SQM QoS,添加实例:

  • 接口wan
  • 启用:勾选。
  • 带宽(实测的90%,如千兆网络):
    Plaintext
    下载速度:900000 kbit/s
    上传速度:100000 kbit/s
    队列规则:cake
    脚本:piece_of_cake.qos
    Plaintext
  • PPPoE:设置“链路层适配”为ethernet,“每包开销”为44

手动配置

Bash
uci set sqm.eth0.interface='eth0'
uci set sqm.eth0.enabled='1'
uci set sqm.eth0.download='900000'
uci set sqm.eth0.upload='100000'
uci set sqm.eth0.qdisc='cake'
uci set sqm.eth0.script='piece_of_cake.qos'
uci commit sqm
/etc/init.d/sqm restart
Bash

测试:用dslreports.com/speedtest,目标bufferbloat A+。

2. AdGuard Home(广告屏蔽)

AdGuard Home提供网络级广告屏蔽。

安装

Bash
opkg update
opkg install luci-app-adguardhome adguardhome
Bash

配置:进入服务 > AdGuard Home

  • 启用:勾选。
  • 监听端口53
  • 监听地址0.0.0.0
  • 过滤列表
    Plaintext
    https://adguardteam.github.io/AdGuardSDNSFilter/Filters/filter.txt
    https://raw.githubusercontent.com/StevenBlack/hosts/master/hosts
    Plaintext
  • DNS配置:进入网络 > 接口 > WAN > 高级设置,自定义DNS为127.0.0.1#53。在网络 > DHCP和DNS,设置本地DNS为192.168.1.1,启用“强制DHCP使用本地DNS”。

手动配置

Bash
/etc/init.d/adguardhome enable
/etc/init.d/adguardhome start
uci set dhcp.@dnsmasq[0].localuse='1'
uci set dhcp.@dnsmasq[0].server='127.0.0.1#53'
uci commit dhcp
/etc/init.d/dnsmasq restart
Bash

测试:访问广告密集网站,如msn.combuzzfeed.com,确认广告消失。检查AdGuard仪表盘(192.168.1.1:3000)拦截统计。

3. Samba(NAS文件共享)

Samba让软路由变高性能NAS,支持>2TB硬盘,兼容ext4/NTFS/exFAT。我们用UAS、SMB3、ext4和SSD优化把NAS速度拉满,媲美商用设备!

安装:连接USB/SATA硬盘(>2TB),安装:

Bash
opkg update
opkg install luci-i18n-samba4-zh-cn kmod-fs-ext4 kmod-fs-ntfs kmod-fs-exfat ntfs-3g kmod-usb-storage-uas hdparm irqbalance fstrim
Bash

包含UAS(USB 3.0提速2-3倍)、hdparm(优化读写)、irqbalance(负载均衡)、fstrim(SSD寿命)。

格式化:推荐ext4(性能最佳):

Bash
lsblk
mkfs.ext4 /dev/sda1
Bash

若需NTFS:

Bash
mkfs.ntfs /dev/sda1
Bash

自动挂载:安装挂载工具:

Bash
opkg install block-mount kmod-usb-storage kmod-usb-storage-uas
Bash

挂载硬盘:

Bash
mkdir /mnt/storage
mount /dev/sda1 /mnt/storage
Bash

自动挂载:

Bash
uci add fstab mount
uci set fstab.@mount[-1].device='/dev/sda1'
uci set fstab.@mount[-1].target='/mnt/storage'
uci set fstab.@mount[-1].fstype='ext4'
uci set fstab.@mount[-1].enabled='1'
uci commit fstab
Bash

优化NAS性能

  1. 启用UAS:检查:
    Bash
    dmesg | grep uas
    Bash

    确认“uas: UAS mode enabled”。若未启用,重启USB:

    Bash
    echo "- - -" > /sys/class/scsi_host/hostX/scan
    Bash

    替换hostX(用ls /sys/class/scsi_host查看)。

  2. 2.优化硬盘
    Bash
    hdparm -W1 -A1 /dev/sda
    echo -e '#!/bin/sh\nhdparm -W1 -A1 /dev/sda' > /etc/rc.local
    chmod +x /etc/rc.local
    Bash
    3.CPU负载均衡
    Bash
    /etc/init.d/irqbalance enable
    /etc/init.d/irqbalance start
    Bash
    4.SSD优化:若用SSD:
    Bash
    fstrim /mnt/storage
    echo -e '#!/bin/sh\nfstrim /mnt/storage' > /etc/cron.weekly/fstrim
    chmod +x /etc/cron.weekly/fstrim
    Bash

Samba配置:优化SMB3和异步I/O:

  • 编辑/etc/samba/smb.conf
    Bash
    vi /etc/samba/smb.conf
    Bash

    [global]添加:

    Plaintext
    min protocol = SMB2
    max protocol = SMB3
    aio read size = 1
    aio write size = 1
    Plaintext
  • LuCI配置:进入服务 > 网络共享
    • 主机名TechBitNAS
    • 工作组WORKGROUP
    • 描述TechBit File Server
    • 共享:路径/mnt/storage,名称TechBitNAS,允许访客,读写权限。
  • 手动配置:
    Bash
    uci set samba4.@samba[0].name='TechBitNAS'
    uci set samba4.@samba[0].workgroup='WORKGROUP'
    uci set samba4.@samba[0].description='TechBit File Server'
    uci add samba4 samba_share
    uci set samba4.@samba_share[-1].path='/mnt/storage'
    uci set samba4.@samba_share[-1].name='TechBitNAS'
    uci set samba4.@samba_share[-1].guest_ok='yes'
    uci set samba4.@samba_share[-1].read_only='no'
    uci commit samba4
    /etc/init.d/samba4 restart
    Bash
  • 配置用户:
    • 查看cat /etc/samba/smbpasswd(一行记录,代表一个用户)。
    • 添加用户smbpasswd -a TechTao

    测试与结果:访问\\192.168.1.1\TechBitNAS,传输1GB文件。测试速度:

    Bash
    dd if=/dev/zero of=/mnt/storage/testfile bs=1M count=1000
    dd if=/mnt/storage/testfile of=/dev/null bs=1M
    hdparm -tT /dev/sda
    Bash

    配置 读速度 写速度 备注
    USB 3.0硬盘(ext4,UAS) 130MB/s 120MB/s 优化前:30-50MB/s
    SATA SSD(ext4) 115MB/s 110MB/s 网卡上限
    USB 3.0硬盘(NTFS) 90MB/s 80MB/s 比ext4慢15-20%

    多设备:5+设备(2 PC、2手机、1 IoT)同时访问,4K视频流无卡顿。UAS+SMB3+ext4+fstrim让NAS达100-110MB/s,媲美Synology DS220+!

    4. Docker(轻量服务)

    Docker运行轻量服务,如网页服务器。

    安装:确保外部硬盘存储(1GB overlay够用):

    Bash
    opkg update
    opkg install luci-i18n-dockerman-zh-cn docker dockerd
    Bash

    配置:进入服务 > Docker

    • 启用:勾选。
    • 数据目录/mnt/storage/docker(先创建)。
    • 手动配置
      Bash
      mkdir /mnt/storage/docker
      uci set dockerd.globals.data_root='/mnt/storage/docker'
      uci commit dockerd
      /etc/init.d/dockerd restart
      Bash
    • 运行Nginx:
      Bash
      docker pull nginx
      docker run -d -p 8080:80 --name nginx nginx
      Bash

    测试:访问192.168.1.1:8080,确认Nginx欢迎页面。在LuCI查看容器状态。

    5. 多宽带与负载均衡

    充分利用多网口,配置多WAN和负载均衡。

    配置WAN:检查网口:

    Bash
    ip link
    Bash

    网络 > 接口添加:

    • wan1:PPPoE,eth0,输入宽带账号密码。
    • wan2:PPPoE,eth1,第二宽带账号密码。

    手动配置:

    Bash
    uci set network.wan1=interface
    uci set network.wan1.proto='pppoe'
    uci set network.wan1.ifname='eth0'
    uci set network.wan1.username='your_username'
    uci set network.wan1.password='your_password'
    uci set network.wan2=interface
    uci set network.wan2.proto='pppoe'
    uci set network.wan2.ifname='eth1'
    uci set network.wan2.username='your_username2'
    uci set network.wan2.password='your_password2'
    uci commit network
    /etc/init.d/network restart
    Bash

    负载均衡:安装:

    Bash
    opkg update
    opkg install luci-i18n-mwan3-zh-cn
    Bash

    配置:

    • 进入网络 > 负载均衡,添加策略:wan1wan2,权重1:1。
    • 手动:
      Bash
      uci set mwan3.wan1.enabled='1'
      uci set mwan3.wan2.enabled='1'
      uci add mwan3 policy
      uci set mwan3.@policy[-1].name='balanced'
      uci add_list mwan3.@policy[-1].member='wan1'
      uci add_list mwan3.@policy[-1].member='wan2'
      uci commit mwan3
      /etc/init.d/mwan3 restart
      Bash

    测试:运行traceroute google.com,确认流量分配。用speedtest.net验证带宽叠加。

    6. DDNS(动态域名解析)

    DDNS配合Cloudflare实现远程访问。

    安装

    Bash
    opkg update
    opkg install luci-i18n-ddns-zh-cn ddns-scripts ddns-scripts-cloudflare
    Bash

    配置:在Cloudflare注册,添加域名tech-bit.org。获取API令牌(仪表盘 > 我的资料 > API令牌 > 编辑区域DNS)。在服务 > 动态DNS

    • 启用:勾选。
    • 域名router.tech-bit.org
    • 服务cloudflare.com-v4
    • 用户名:Cloudflare邮箱。
    • 密码:API令牌。
    • 区域tech-bit.org

    手动配置

    Bash
    uci set ddns.myddns=service
    uci set ddns.myddns.enabled='1'
    uci set ddns.myddns.service_name='cloudflare.com-v4'
    uci set ddns.myddns.domain='router.tech-bit.org'
    uci set ddns.myddns.username='your_email'
    uci set ddns.myddns.password='your_api_token'
    uci set ddns.myddns.lookup_host='router.tech-bit.org'
    uci commit ddns
    /etc/init.d/ddns restart
    Bash

    测试:等待5-10分钟,访问router.tech-bit.org,确认解析到公网IP。查看日志(状态 > 日志)。

    第七步:优化与测试

    • 网络优化:调整SQM带宽,匹配多宽带总和。在网络 > 交换机配置VLAN隔离IoT。
    • AdGuard:每周更新过滤列表,添加自定义规则。
    • NAS:备份/mnt/storage,测试>2TB硬盘(ext4优先)。用htop监控CPU,确保irqbalance生效。
    • Docker:部署Plex或Home Assistant,监控/mnt/storage/docker占用。
    • 多宽带:调整权重优化流量。
    • DDNS:开放端口:
      Bash
      uci add firewall rule
      uci set firewall.@rule[-1].name='DDNS'
      uci set firewall.@rule[-1].src='wan'
      uci set firewall.@rule[-1].dest_port='80 443'
      uci set firewall.@rule[-1].proto='tcp'
      uci set firewall.@rule[-1].target='ACCEPT'
      uci commit firewall
      /etc/init.d/firewall restart
      Bash
    • 整体测试:用speedtest.net验证多宽带,连接多设备,确认广告屏蔽、NAS、Docker、DDNS。

    常见问题与排错

    • LuCI无法访问:检查防火墙:
      Bash
      uci set firewall.@zone[0].input='ACCEPT'
      uci commit firewall
      /etc/init.d/firewall restart
      Bash

      重置:

      Bash
      firstboot && reboot
      Bash
    • 网卡不工作:检查:
      Bash
      dmesg | grep eth
      Bash

      安装驱动:

      Bash
      opkg install kmod-igc
      Bash
    • Samba速度慢:确认UAS:
      Bash
      dmesg | grep uas
      Bash

      检查文件系统:

      Bash
      mount | grep /mnt/storage
      Bash

      确认SMB3:

      Bash
      cat /etc/samba/smb.conf | grep protocol
      Bash
    • Docker失败:检查存储:
      Bash
      df -h /mnt/storage
      Bash

      重启:

      Bash
      /etc/init.d/dockerd restart
      Bash
    • Overlay分区未挂载:检查fstab:
      Bash
      cat /etc/config/fstab
      Bash

      手动挂载:

      Bash
      mount /dev/nvme0n1p3 /overlay
      Bash

    资源链接

    下一步?

    软路由搞定!在TechBit视频评论区秀出你的NAS速度!下一期我将把旧Kindle改成复古电子墨水时钟,超酷DIY!订阅TechBit,关注blog.tech-bit.org不错过教程!

    网络顺畅,DIY愉快!
    TechTao

Leave a Reply

您的邮箱地址不会被公开。 必填项已用 * 标注