OpenWrt开源软路由项目使用

2022-09-29 17:45:17 浏览数 (1)

0x00 前言简介

2020年9月10日 OpenWrt — building 成为最流行的自由和开源 (FOSS) 无线路由器项目已有16年的成功 — 今天加入 软件自由保护组织(SFC) 作为成员项目. FOSS无线路由器可确保所有互联网用户自由使用软件. 软件自由保护组织将帮助 OpenWrt 继续蓬勃发展并成为其新的财政赞助商. OpenWrt 在软件自由的历史上占有特殊的位置. OpenWrt的创建和发布表明 GPL 强制执行 有效并提高了软件自由度. 在2004年, Linksys发布了WRT54G路由器系列的固件代码时, 编码人员和修补匠重新重新控制了自己的路由器, 并且OpenWrt 根据GPL执法机构发布的资源启动了. 今天, OpenWrt 利用受GPL保护的软件自由与使用无线路由器连接到互联网的每个人共享该自由和控制权.

OpenWrt加入软件自由协会()

关于OpenWrt/LEDE项目

OpenWrt/LEDE是一个为嵌入式设备(通常是无线路由器)开发的高扩展度的GNU/Linux发行版。与许多其他路由器的发行版不同,OpenWrt是一个完全为嵌入式设备构建的功能全面、易于修改的由现代Linux内核驱动的操作系统。在实践中,这意味着您可以得到您需要的所有功能,却仍能避免臃肿。 OpenWrt是什么?

OpenWrt不是一个单一且不可更改的固件,而是提供了一个完全可写的文件系统及软件包管理。这使您可以不使用供应商提供的应用程序选择和配置,而是通过使用软件包来定制设备以适应任何应用程序。对于开发人员来说,OpenWrt是一个构建应用程序的框架,无需在其周围构建完整的固件; 对于普通用户来说,这意味着拥有了完全定制的能力,能以意想不到的方式使用该设备。 重启OpenWrt社区

在2016年,LEDE项目作为OpenWrt项目的副产品而诞生,与OpenWrt共享很多相同的目标。该项目旨在成为一个嵌入式Linux版本,能让开发者、系统管理员或其他Linux爱好者轻松的为嵌入式设备特别是无线路由器构建或定制软件。LEDE这一名称代表Linux Embedded Development Environment。

项目成员与OpenWrt社区活跃成员高度重合,他们计划通过建立一个高度透明、注重协作和去中心化的社区为嵌入式Linux的开发带来新生。

LEDE已公布的目标包括:

代码语言:javascript复制
构造一个的伟大的嵌入式Linux发行版,运行稳定且功能实用
伴随社区设备测试反馈,形成定期、可预期的版本迭代
通过广泛的社区参与和公开会议,建立透明的决策机制

LEDE项目的形成是为解决那些被OpenWrt项目或社区认为无法解决的长远问题

代码语言:javascript复制
活跃核心开发者数量一直很低,而且无法吸引新面孔加入项目。
不可依赖的基础设施,内部不同意和单点故障阻碍了错误修复。
在OpenWrt项目中缺少沟通交流、透明度和协调, 无论是在核心团队内部还是在核心团队和其他团队之间。
没有足够拥有权限的人处理补丁来流,很少关注测试和定期版本。
不重视对稳定性和文档。

为解决这些问题,LEDE项目采用了与OpenWrt不同的组织架构:

代码语言:javascript复制
所有交流频道均是公开的,对非成员只读的频道控制在一个很好的信噪比。
决策过程更公开,拥有投票权的开发者和重度用户数量接近50比50。
大大简化基础设施,确保减少我们的维护工作量。
更开明的合并政策,基于我们在处理Github上OpenWrt软件包反馈信息的经验。
高度重视与简化发布流程合并的自动化测试。

OpenWrt和LEDE宣布合并

2018年1月,OpenWrt和以前的LEDE项目同意以OpenWrt这一名称进行合并。

新的、统一的OpenWrt项目将按照 由前LEDE项目建立的章程 进行管理。以前的LEDE和OpenWrt项目的积极成员将继续在统一的OpenWrt上工作。 共创未来

LEDE分支合并到OpenWrt中将不会改变统一项目所采用的整体技术方向。我们将继续致力于提高稳定性和维护发行版本,同时仍会通过频繁的更新来解决重要的错误和安全问题,就像我们对LEDE 17.01及其之后的17.01.4的发布所做的一样。

旧的15.05以前版本的OpenWrt CC版本将不再受合并项目的支持,这些版本将不再有任何安全性或错误修复。OpenWrt CC 15.05发行版系列将获得有限的安全性和错误修复,但尚未完全集成到发行版自动化中,所以二进制发行版目前没有发布。

LEDE 17.01版本将继续获得对源代码和二进制版本的全面安全性和错误修复支持。 我们正规划在未来几个月内以新名称发行新的主要版本。

合并后的项目将使用基于以前的LEDE项目的代码库。OpenWrt特定的修补程序不会放在LEDE存储库中,但符合LEDE代码质量要求的已集成到新的项目树中。源代码将托管在git.openwrt.org,持续同步的镜像位于Github。原来的OpenWrt代码库已经在Github上存档供将来参考。

不再使用的OpenWrt项目由软件公共利益(SPI) - 美国501(c)(3) 非营利组织 管理我们的OpenWrt商标,处理我们的捐款,帮助我们解决法律问题。

以前在lede-project.org域下提供的基础设施大部分已转移到相应的openwrt.org子域,并将在适当的时候实施重定向。 名字来历 The OpenWrt logo OpenWrt这一名字可以追溯到开放路由运动的开端。适用于WRT54G路由的第一个白俄罗斯版本的发布, 标志着无线路由固件开发进入新时代。 The LEDE logo LEDE是Linux Embedded Development Environment的缩写。因其高度的可定制性和嵌入式buildroot的源头,LEDE超越无线路由和网络应用领域而成为嵌入式Linux应用的可靠选择。 会议记录

您可以在这里,查看LEDE分支举行的IRC会议记录。

参考地址: https://openwrt.org/zh/about

0x01 安装部署

固件下载地址 OpertWrt : https://downloads.openwrt.org/releases/ Openwrt LEDE : http://firmware.koolshare.cn/LEDE_X64_fw867/

安装方法

代码语言:javascript复制
下载后可直接在LEDE WEB升级。也可解压缩后使用ImageWriter等工具直接将img写入U盘或者硬盘。
如果原来已经刷过openwrt系统,可将Lede-*.img上传到tmp,然后使用命令: dd if=/tmp/Lede-*.img of=/dev/sda写入。此命令将会清除原盘所有数据和分区,请注意备份。
默认WEB:192.168.1.1 用户名:root 密码:koolshare
(1) VMware 部署

描述: VMware 部署OpenWrt大致分为两种方式一种是利用U盘安装另外一种则是通过刻录镜像到虚拟机镜像磁盘安装,简单的说就是U盘可以随声携带更方便,而通过虚拟机虚拟磁盘安装更稳定;

方式1.U盘引导部署

环境准备:

代码语言:javascript复制
- combined-ext4.img.gz : https://downloads.openwrt.org/releases/19.07.4/targets/x86/64/openwrt-19.07.4-x86-64-combined-ext4.img
- VMware WorkStantion 15
- U盘 ( >= 1G )
- 镜像刻录 Roadkil's Disk Image

安装流程: Step 1.解压openwrt-19.07.4-x86-64-combined-ext4.img.gz采用镜像刻录工具进行openwrt-19.07.4-x86-64-combined-ext4.img刻录到U盘;

WeiyiGeek.刻录U盘

Step 2.在VMware建立虚拟机(简单过程不多说)其注意点为下, 创建完成后启动即可

代码语言:javascript复制
- 系统选择 Linux 4.x
- 网络选择 仅主机模式网络
- 磁盘选择 使用现有物理磁盘(适用于高级用户即权限为administrator)

WeiyiGeek.虚拟机创建

PS : 虚拟机的仅主机网络的网卡DHCP需要关闭并且VMware Network Adapter VMnet1与VMware Network Adapter VMnet8适配器需要启用

Step 3.OpenWrt启动完成后的界面

WeiyiGeek.启动OpenWrt

Step 4.访问OpenWrt默认地址192.168.1.1后续根据实际网络可以进行更改;

WeiyiGeek.OpenWrt管理界面

方式2.VMware 磁盘部署

环境准备:

代码语言:javascript复制
- Linux 主机一台此处我采用Ubuntu
- OpenWrt LEDE 镜像-koolshare Lede X64 Nuc(openwrt开发组单独分离出来一个项目取名LEDE功能较OpenWrt有一定的提升)
- VMware Workstation 15

固件特性

代码语言:javascript复制
64位5.4.52内核,4G以上内存和多核心支持,多核NAT;
Intel自动省电降频,自动睿频,AES指令集加速,超线程 ,intel QAT硬件加速,MPTCP;
独有的Koolshare软件中心加成。

固件版本(2.36)以及下载地址: http://firmware.koolshare.cn/LEDE_X64_fw867/openwrt-koolshare-mod-v2.36-r14941-67f6fa0a30-x86-64-generic-squashfs-combined-efi.img.gz

PS: 虽然可以通过官网直接下载虚拟机VMDK格式的虚拟文件, 实际过程中还是建议自动动手安装熟悉过程;

PS: .img或.gz可以直接在Openwrt系统Web升级,如需要转盘或PE写盘请下载转盘文件夹下的镜像

操作流程:

Step 1.生成虚拟集格式的文件

代码语言:javascript复制
# (1) 转换工具安装
sudo apt install -y qemu-utils

# (2) 固件下载
weiyigeek@Ubuntu-PC:~/hardware
> wget http://firmware.koolshare.cn/LEDE_X64_fw867/openwrt-koolshare-mod-v2.36-r14941-67f6fa0a30-x86-64-generic-squashfs-combined-efi.img.gz
> gunzip openwrt-koolshare-mod-v2.36-r14941-67f6fa0a30-x86-64-generic-squashfs-combined-efi.img.gz
# gzip: openwrt-koolshare-mod-v2.36-r14941-67f6fa0a30-x86-64-generic-squashfs-combined-efi.img.gz: decompression OK, trailing garbage ignored
# weiyigeek@Ubuntu-PC:~/hardware
openwrt-koolshare-mod-v2.36-r14941-67f6fa0a30-x86-64-generic-squashfs-combined-efi.img

# (3) 将镜像转换成为vmdk格式的文件
weiyigeek@Ubuntu-PC:~/hardware
> sudo qemu-img convert -f raw -O vmdk openwrt-koolshare-mod-v2.36-r14941-67f6fa0a30-x86-64-generic-squashfs-combined-efi.img openwrt-koolshare-mod-v2.36-r14941-67f6fa0a30-x86-64-generic-efi.vmdk

weiyigeek@Ubuntu-PC:~/hardware
> ls
openwrt-koolshare-mod-v2.36-r14941-67f6fa0a30-x86-64-generic-efi.vmdk
openwrt-koolshare-mod-v2.36-r14941-67f6fa0a30-x86-64-generic-squashfs-combined-efi.img

# (4) 将生成的vmdk文件复制到windows机器上以供VMDK安装
> cp ~/hardware/openwrt-koolshare-mod-v2.36-r14941-67f6fa0a30-x86-64-generic-efi.vmdk /run/user/1000/gvfs/smb-share:server=192.168.1.2,share=temp/

PS: 在Ubuntu升级到20.04后qemu需要分几个包来安装按需安装。

代码语言:javascript复制
# 以mips虚拟机为例
1.如果需要系统级别的虚拟机,就是sudo apt-get install qemu-system-mips
2.如果需要进程级别的虚拟机,就是sudo apt-get install qemu-user
3.如果需要qemu的一些工具比如qemu-img,就是sudo apt-get install qemu-utils

Step 2.虚拟机创建及环境配置:

代码语言:javascript复制
创建新的虚拟机 =>
自定义(高级) =>
虚拟机硬件兼容性默认无需更改 =>
稍后安装操作系统 =>
Linux 版本:其他Linux 5.x 内核 =>
保存位置默认即可也可以自定义 =>
处理器默认即可 =>
内存建议大于1GB =>
使用桥接网络 =>
LSI Logic =>
SCSI =>
使用现有虚拟磁盘 =>
选择下载好的虚拟机版本vmdk文件(将上一步生成`openwrt-koolshare-mod-v2.36-r14941-67f6fa0a30-x86-64-generic-efi.vmdk`文件进行选择) =>
保持现有格式 =>
自定义硬件 =>
网络适配器(勾选复制物理网络连接状态) =>
完成

PS : 注意此处采用UEFI模式进行启动;

Step 3.如果虚拟磁盘太小则可以进行(extroot)扩容处理(注意此时一定不要开虚拟机), 先通过DG磁盘管理工具进行扩展数据盘的扩展(因为默认只有500MB),我们利用其打开刚才扩容后的vmdk虚拟文件跳转参数;

WeiyiGeek.

Step 4.启动虚拟后控制台显示界面

WeiyiGeek.openwrt-koolshare虚拟机启动

Step 5. 无痕模式访问默认WEB:192.168.1.1(注意:首次登录一定要无痕模式方式访问否则将一致提示密码错误)

用户名:root 密码:koolshare

Step 6.登录成功后的后台界面

WeiyiGeek.Koolshare后台

Step 7.修改访问地址注意此处需要修改VMware 0的虚拟网卡地址以及Koolshare网络接口地址;

代码语言:javascript复制
# eth0
协议: 静态地址
运行时间: 0h 12m 51s
MAC: 00:0C:29:C1:ED:A9
接收: 1.40 MB (10030 数据包)
发送: 8.31 MB (11661 数据包)
IPv4: 192.168.151.1/24
IPv6: undefined/0

# eth1
协议: DHCP 客户端
运行时间: 0h 0m 27s
MAC: 00:0C:29:C1:ED:B3
接收: 24.15 KB (261 数据包)
发送: 18.94 KB (121 数据包)
IPv4: 192.168.150.101/24

WeiyiGeek.网卡接口设置

Step 8.LEDE第三方软件插件中心列表(这也是软路由最重要的部分), 以及扩容后安装软件空间大小;

WeiyiGeek.第三方软件插件

总结 整个过程相比于挂载新分区简单很多,只是再写入img文件后马上进行分区扩容即可。

另外需要说明的是,将img文件写入硬盘后必须马上去扩容分区,如果你重启进入过OpenWrt系统后再进行分区将不会有任何效果。

PS: Openwrt 文件系统扩容实战补充

(1) 从终端查看文件系统大小以及扇区数量

代码语言:javascript复制
root@Openwrt:~# lsblk
NAME     MAJ:MIN RM   SIZE RO TYPE MOUNTPOINT
loop0      7:0    0 452.1M  0 loop /overlay
sda        8:0    0     5G  0 disk
├─sda1     8:1    0   200M  0 part /boot
├─sda2     8:2    0   500M  0 part /rom
└─sda128 259:0    0   239K  0 part
sr0       11:0    1  1024M  0 rom

root@Openwrt:~# fdisk /dev/sda
Command (m for help): p
# Disk /dev/sda: 5 GiB, 5368709120 bytes, 10485760 sectors
# Disk model: VMware Virtual S
# Units: sectors of 1 * 512 = 512 bytes
# Sector size (logical/physical): 512 bytes / 512 bytes
# I/O size (minimum/optimal): 512 bytes / 512 bytes
# Disklabel type: gpt
# Disk identifier: 09CF104A-C9D5-215C-8C04-670347F0CF00

# Device       Start     End Sectors  Size Type
# /dev/sda1      512  410111  409600  200M EFI System
# /dev/sda2   410624 1434623 1024000  500M Microsoft basic data
# /dev/sda128     34     511     478  239K BIOS boot

Command (m for help): n
Partition number (3-127, default 3):
First sector (410112-10485726, default 1435648):
Last sector,  /-sectors or  /-size{K,M,G,T,P} (1435648-10485726, default 10485726):  3.3G
Created a new partition 3 of type 'Linux filesystem' and of size 3.3 GiB.

Command (m for help): n
Partition number (4-127, default 4):
First sector (410112-10485726, default 8425472):
Last sector,  /-sectors or  /-size{K,M,G,T,P} (8425472-10485726, default 10485726):
Created a new partition 4 of type 'Linux filesystem' and of size 1006 MiB.

Command (m for help): t
Partition number (1-4,128, default 128): 4
Partition type (type L to list all types): 19

Changed type of partition 'Linux filesystem' to 'Linux swap'.

Command (m for help): w
The partition table has been altered.
Syncing disks.


fdisk -l
Disk /dev/loop0: 452.6 MiB, 474021888 bytes, 925824 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes


Disk /dev/sda: 5 GiB, 5368709120 bytes, 10485760 sectors
Disk model: VMware Virtual S
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type: gpt
Disk identifier: 09CF104A-C9D5-215C-8C04-670347F0CF00

Device        Start      End Sectors  Size Type
/dev/sda1       512   410111  409600  200M EFI System
/dev/sda2    410624  1434623 1024000  500M Microsoft basic data
/dev/sda3   1435648  8425471 6989824  3.3G Linux filesystem
/dev/sda4   8425472 10485726 2060255 1006M Linux swap
/dev/sda128      34      511     478  239K BIOS boot

/dev/sda3 /overlay ext4 rw,relatime 0 0

(2) 格式化与挂载我们的数据盘

代码语言:javascript复制

root@Openwrt:~# mkfs.ext4 /dev/sda3
mke2fs 1.45.6 (20-Mar-2020)
Creating filesystem with 873728 4k blocks and 218592 inodes
Filesystem UUID: b64f1114-e353-4fcf-8337-7e50fd49b9d9
Superblock backups stored on blocks:
        32768, 98304, 163840, 229376, 294912, 819200

Allocating group tables: done
Writing inode tables: done
Creating journal (16384 blocks): done
Writing superblocks and filesystem accounting information: done


root@Openwrt:~# mkswap /dev/sda4
Setting up swapspace version 1, size = 1054846464 bytes

root@Openwrt:~# swap
swaplabel  swapoff    swapon
root@Openwrt:~# swapon /dev/sda4
root@Openwrt:~# free
              total        used        free      shared  buff/cache   available
Mem:        2037784       98988     1828264        3648      110532     1888936
Swap:       1030120           0     1030120
root@Openwrt:~# swapon -s
Filename                                Type            Size    Used    Priority
/dev/sda4                               partition       1030120 0       -2

lsblk
NAME     MAJ:MIN RM   SIZE RO TYPE MOUNTPOINT
loop0      7:0    0 452.1M  0 loop /overlay
sda        8:0    0     5G  0 disk
├─sda1     8:1    0   200M  0 part /boot
├─sda2     8:2    0   500M  0 part /rom
├─sda3     8:3    0   3.3G  0 part /overlay
├─sda4     8:4    0  1006M  0 part [SWAP]
└─sda128 259:0    0   239K  0 part
sr0       11:0    1  1024M  0 rom


mkdir -vp /mnt/overlay
mount /dev/sda3 /mnt/overlay ; tar -C /overlay -cvf - . | tar -C /mnt/overlay -xf - ; 
umount /mnt/overlay


mkfs.ext4 /dev/sda3
atguigu
DEVICE="/dev/sda3"
eval $(block info "${DEVICE}" | grep -o -e "UUID=S*")
uci -q delete fstab.overlay
uci set fstab.overlay="mount"
uci set fstab.overlay.uuid="${UUID}"
uci set fstab.overlay.target="/overlay"
uci commit fstab
  
  

mount /dev/sda3 /mnt
cp -f -a /rom/overlay/. /mnt
umount /mnt

https://blog.chaos.run/dreams/openwrt-extroot/ https://blog.csdn.net/zhangzejin3883/article/details/108904399?utm_medium=distribute.pc_relevant.none-task-blog-title-2&spm=1001.2101.3001.4242 https://blog.msm.moe/mount-sd-card-to-overlay-on-openwrt/ https://openwrt.org/docs/guide-user/additional-software/extroot_configuration https://www.codeleading.com/article/13741048867/ https://garywu520.github.io/blog/2020/09/05/ESXI双网卡openwrt配置并扩容/ https://oldtang.com/3424.html


0x02 基础配置

(1) 部署必要配置

1.设置OpenWrt登陆密码

路径:System -> Administrator -> Router Password

2.设置网络接口(注意如果是虚拟机则可以新增网卡,如果是物理机则需要多网口支持)

路径:Network -> Interfaces

WeiyiGeek.网络接口

3.启用SSH服务端口也可以设置公钥登陆

路径:System -> Administrator -> SSH Access # 保持网络已连通状态: BusyBox v1.30.1 () built-in shell (ash) _______ ________ __ | |.-----.-----.-----.| | | |.----.| |_ | - || _ | -__| || | | || _|| _| |_______|| __|_____|__|__||________||__| |____| |__| W I R E L E S S F R E E D O M ----------------------------------------------------- OpenWrt 19.07.4, r11208-ce6496d796 ----------------------------------------------------- root@OpenWrt:~# 与使用普通密码相比,公钥允许无密码的SSH登录,具有更高的安全性。

WeiyiGeek.OpenWrt

4.OpenWrt语言设置,因为刚刷完固件只有英语可以选我们需要安装中文包;

代码语言:javascript复制
# 方式1
System -> Software -> Actions(Update Lists-更新软件包依赖) -> Filter(luci-i18n-base-zh-cn) -> Install (下载)

# 方式2
root@OpenWrt:~# opkg update
root@OpenWrt:~# opkg install luci-i18n-base-zh-cn
Installing luci-i18n-base-zh-cn (git-20.306.44214-6ad517e-1) to root...
Downloading http://downloads.openwrt.org/releases/19.07.4/packages/x86_64/luci/luci-i18n-base-zh-cn_git-20.306.44214-6ad517e-1_all.ipk
Configuring luci-i18n-base-zh-cn.

5.OpenWrt 界面UI主题更换

代码语言:javascript复制
# 可用主题
root@OpenWrt:~# opkg list | grep "theme"
luci - git-20.306.44214-6ad517e-1 - Standard OpenWrt set including full admin with ppp support and the default Bootstrap theme
luci-nginx - git-20.306.44214-6ad517e-1 - Standard OpenWrt set including full admin with ppp support and the default Bootstrap theme
luci-theme-bootstrap - git-20.306.44214-6ad517e-1 - Bootstrap Theme (default)
luci-theme-material - git-20.306.44214-6ad517e-1 - Material Theme
luci-theme-openwrt - git-20.306.44214-6ad517e-1 - LuCI OpenWrt.org theme
# 主题下载(也可安装4中的方法在software中下载)
root@OpenWrt:~# opkg install luci-theme-material
Installing luci-theme-material (git-20.306.44214-6ad517e-1) to root...
Downloading http://downloads.openwrt.org/releases/19.07.4/packages/x86_64/luci/luci-theme-material_git-20.306.44214-6ad517e-1_all.ipk
Configuring luci-theme-material.
(2) 驱动安装
USB 驱动

脚本命令:

代码语言:javascript复制
opkg update
opkg install comgt kmod-usb-serial kmod-usb-serial-option kmod-usb-serial-wwan usb-modeswitch
opkg install kmod-usb-net-rndis usb-modeswitch
opkg install usbutils
opkg install kmod-libphy
opkg install kmod-mii
opkg install kmod-usb-net
opkg install kmod-usb-net-rtl8152 # 根据usb设备不同而不同

0 人点赞