Skip to content

Openwrt详解

Openwrt

OpenWrt是一个基于Linux的操作系统,主要用于嵌入式设备,如路由器。它与传统的路由器固件不同,提供了一个完全可写的具有软件包管理的文件系统。这允许用户通过安装特定应用的软件包来自定义其路由器的功能,并使用户摆脱了供应商的限制。OpenWrt还通常比原始固件支持设备更长时间,并提供了一个大型的、有帮助的社区.

以下是OpenWrt的一些主要方面:

安装和基本配置

  • 硬件要求: 选择用于OpenWrt的新路由器时,建议寻找具有“大于8兆字节的闪存和大于64兆字节的RAM”的设备,以确保操作系统和GUI的全部功能。
  • 固件选择: 必须为路由器的特定型号和硬件版本选择正确的固件文件(例如,“WR841N”硬件版本“8”),因为使用错误的文件可能会“砖化”设备。正确的固件文件将以“factory.bin”结尾.
  • 刷写过程: 刷写是通过路由器的Web界面完成的,用户应使用以太网电缆连接,并且必须转到“系统工具”->“固件升级”页面。
  • 初始访问: 安装后,通过路由器的IP地址(通常为192.168.1.1)通过Web界面LuCI访问OpenWrt。
  • 安全加固: 安装后的第一步应该是设置root密码以提高安全性,并将设备设置为Wi-Fi接入点。
  • 无线设置: 默认情况下,无线是关闭的,必须在LuCI界面中手动打开无线才能使无线接入点功能正常工作。
  • 基本网络配置: OpenWrt允许配置DHCP租约、网络接口和设置端口转发。
  • 更改LAN IP地址: 该教程演示了如何更改路由器的默认LAN IP地址(例如,更改为192.168.9.1)。但是,必须手动编辑DHCP设置以防止冲突.

高级配置和功能

  • 无线客户端模式(AP客户端): OpenWrt可以配置为无线客户端,以连接到现有网络,然后将该连接重新分配给LAN上的设备,此功能对于扩展现有网络覆盖范围很有用。
  • 系统日志: OpenWrt存储全面的日志,可以提供有关网络运行情况的实时信息,例如哪些设备已收到IP地址和常规活动。这些日志提供了当前网络配置的良好概述.
  • LuCI应用: 该教程介绍了luci-app-statistics的安装,该应用提供了“路由器历史数据图表的良好视图”,例如CPU、RAM、ping时间和系统正常运行时间。
  • 配置文件: OpenWrt的配置文件使用节和选项/值结构,并且位于/etc/config/中。
    • 通用语法是config [""]用于节,option ""用于选项。这些文件由shell解析。
  • 网络配置: 网络接口配置存储在/etc/config/network中。这些可以设置为“none”、“static”、“dhcp”或“pppoe”协议。使用静态方法时,ipaddr和netmask选项是强制性的.
  • 交换机配置: OpenWrt支持用于设置VLAN的交换机配置。
    • 交换机配置存储在/etc/config/network中.
    • 在Broadcom硬件上,节名称需要为eth0。
    • 每个VLAN都需要具有名称vlan,其中n是VLAN号。这些值可以包括:*(用于设置默认VLAN),u(未标记)和t(已标记)。Broadcom硬件上的CPU端口为端口5。
  • 无线配置: WiFi设置在/etc/config/wireless中配置,每个无线驱动程序在/lib/wifi/.sh中都有一个配置文件。
    • 您可以为wifi设备设置的一些选项包括:distance, mode, diversity, rxantenna, txantenna, txpower.
    • wifi接口的选项包括:network, device, mode, ssid和bssid。
    • 支持的模式包括:接入点、客户端、ad-hoc、监视器和WDS点对点。
  • 802.1x身份验证: OpenWrt支持802.1x身份验证(客户端和接入点配置),EAP类型为TLS、TTLS或PEAP.

开发和自定义

  • 构建系统: OpenWrt构建系统使开发人员能够使用交叉编译过程创建自定义固件映像。
  • 源代码: OpenWrt可通过Subversion存储库获得。主要目录包括tools、toolchain、package和target。
  • 构建映像: 命令make menuconfig用于配置构建过程,包括选择平台、工具链和所需的软件包。
  • 软件包: OpenWrt固件中的几乎所有内容都是软件包(.ipk)。可以将这些软件包添加到固件中以提供新功能,也可以删除以节省空间。
  • 构建环境: OpenWrt提供了一种使用命令./scripts/env为多个配置构建映像的方法。
  • 创建软件包: 通过创建一个makefile来创建一个软件包,该makefile会在下次运行make menuconfig时自动显示在菜单中.
    • 您可以配置的一些选项是:PKG_NAME、PKG_VERSION、PKG_RELEASE、PKG_SOURCE、PKG_SOURCE_URL、PKG_MD5SUM、PKG_CAT、PKG_BUILD_DIR。
    • 您还可以添加诸如DEPENDS、BUILDONLY Package//conffiles之类的信息。
    • 您还需要定义Build/Compile、Build/Install和Package//install选项。
  • 创建内核模块软件包: 可以为随主线内核一起提供的模块以及通过定义KernelPackage节来创建外部内核模块。
    • 可以配置的选项包括TITLE、DESCRIPTION、SUBMENU、KCONFIG、FILES和AUTOLOAD。
  • 故障排除: 命令TOPDIR=$PWD make -C package/ DUMP=1 V=99 可以帮助诊断软件包是否正确显示在menuconfig中。您还可以使用诸如make package/ /clean V=99或make package/ /install V=99之类的命令来清除或安装特定的软件包.
  • 添加平台支持: 许多设备运行Linux操作系统,即使固件不对消费者开放。可以通过发现它们是否已经运行Linux并查找开发人员工具包来将OpenWrt移植到这些设备。
    • 检查此项的有用技术包括:操作系统指纹识别、端口扫描、分析二进制固件映像、检查闪存量和插入串行端口。
    • 找到开发人员工具包后,可以为OpenWrt调整内核补丁和二进制驱动程序,并且可以开发新的闪存映射驱动程序和固件构建工具.
  • 报告错误: OpenWrt使用Trac系统进行错误报告。
    • 报告者可以针对错误、新软件包或请求的功能打开工单。
    • 开发人员可以关闭、接受和修复工单。

其他信息

  • SSH: 通常使用SSH完成对OpenWrt的命令行访问。
  • 文本编辑器: vi和vim可用于在命令行中编辑文本文件。常见快捷方式可以在FAQ中找到.
  • Windows管理工具: 可以使用cmder、SmarTTY、PuTTY和WinSCP之类的工具从Windows管理OpenWrt。
  • WAN和WAN6接口: WAN和WAN6接口分别用于网络上游侧的IPv4和IPv6连接。LAN接口处理下游侧的IPv4和IPv6,从而无需单独的LAN6接口.
  • Hotplug: 可以通过hotplug根据事件动态配置OpenWrt,hotplug是使用脚本配置的。
  • Init脚本: 所有init脚本都需要作为/etc/init.d/name安装,并使用/etc/rc.common作为包装器。这些脚本用于启动系统服务.
  • 网络脚本: 可以通过包含/lib/network来访问网络脚本。这些脚本有助于管理接口,并具有诸如find_config和setup_interface之类的功能.