软路由openwrt使用基本教程

软路由openwrt使用基本教程

注:给自己的教程,自己摸索使用的记录,也摘了网络大神对Openwrt的使用说明

一、openWRT来源及简介

Cisco/Linksys在2003年发布了WRT54G这款无线路由器,同年有人发现它的OS是基于Linux的,然而Linux是基于GPL许可证发布的,按照该许可证Cisco应该把WRT54G 的OS的源代码公开。2003年3月, Cisco迫于公众压力公开了WRT54G的源代码。此后就有了一些基于Cisco源码的第三方路由器固件,OpenWrt就是其中的一个。 
penWrt可以被描述为一个嵌入式的Linux发行版,(主流路由器固件有dd-wrt,tomato,openwrt三类)而不是试图建立一个单一的、静态的系统。OpenWrt的包管理提供了一个完全可写的文件系统,从应用程序供应商提供的选择和配置,并允许您自定义的设备,以适应任何应用程序。
对于开发人员,OpenWrt是使用框架来构建应用程序,而无需建立一个完整的固件来支持;对于用户来说,这意味着其拥有完全定制的能力,可以用前所未有的方式使用该设备。

二、Openwrt项目地址

1、Openwrt原版
中文使用文档:https://openwrt.org/zh/start
稳定发行版下载地址:https://downloads.openwrt.org/releases/
最新稳定版:21.02.1:https://downloads.openwrt.org/releases/21.02.1/targets/x86/64/openwrt-21.02.1-x86-64-generic-ext4-combined.img.gz
下载后是GZ压缩包,内含IMG镜像,可用工具写入硬盘(U盘、TF卡)等启动介质,也可直接转换成vmdk的虚拟硬盘格式,用VMware进行启动
本项目是开源项目,可自行编译,暂不讨论。
2、Koolshare版Openwrt
http://fw.koolcenter.com/
最新版2.37:http://fw.koolcenter.com/LEDE_X64_fw867/
有IMG格式和Vmdk格式,Vmdk只有2.36,可用2.37的img.gz在Web刷写升级

三、安装

安装方式有两种,一种是通过winimage软件向磁盘写入vmdk,vhd等虚拟机磁盘镜像,另外一种就是通过physdiskwrite工具向硬盘写入img格式的文件。我个人比较推荐使用winimage写入vmdk等虚拟机镜像。
1、VMware方式注意事项:
使用桥接
启动后修改IP地址,在终端Enter后输入

vim /etc/config/network

将“option IPaddress”后的IP地址修改为路由同IP段的地址,方便WEB管理,如我改为:192.168.1.199
重启网络服务(也可重启系统:reboot):

/etc/init.d/network restart

/boot分区默认是只读的,要重新挂载为可读写

mount -o rw,remount /boot

web访问192.168.1.199,默认账号为root,密码为空。需修改密码则终端输入passwd修改默认密码

四、网络设置

1、做主路由PPPOE括号设置

2、做旁路由设置
openwrt做旁路由,可实现萪学上网等功能。
Network(网络)——Interfaces(接口)将Wan删除,设置Lan——Edit:
IP:自己本机(openwrt)地址,网关为路由器IP,DNS:114.114.114.114等公用DNS
IPv4地址设置OpenWRT旁路由IP(需要与主路由ROS在同一个网段内)。IPv4网关设置为ROS主路由IP。IPv4广播留空即可。DNS使用公共DNS地址114.114.114.114、 119.29.29.29、223.5.5.5。
第三步:禁用旁路由的DHCP,因为这个OpenWRT只是作为旁路由,DHCP功能是由主路由ROS提供。
DHCP服务器里IPv6的相关服务也都禁用。到目前为止作为旁路由的OpenWRT就可以上网了。
主路由(ROS)无需设置
电脑设置:
电脑的本地连接将IPV4手动设置,DNS为旁路由IP,为保证旁路由关机后也能上网,再设置备用DNS为主路由IP即可。

五、安装插件

更新软件中心源:
系统——软件包——编辑(Configure):注释或删除 option check_signature,并更换软件源(koolshare_openwrt):

src/gz openwrt_koolshare_router_core https://openwrt.cc/snapshots/targets/x86/64/packages
src/gz openwrt_koolshare_router_base https://openwrt.cc/snapshots/packages/x86_64/base
src/gz openwrt_koolshare_router_luci https://openwrt.cc/snapshots/packages/x86_64/luci
src/gz openwrt_koolshare_router_packages https://openwrt.cc/snapshots/packages/x86_64/packages
src/gz openwrt_koolshare_router_routing https://openwrt.cc/snapshots/packages/x86_64/routing
src/gz openwrt_koolshare_router_telephony https://openwrt.cc/snapshots/packages/x86_64/telephony

Koolshare OpenWrt 2.37 一键安装常用萪学插件ssrp+、passwall、openclash

wget https://openwrt.netlify.com/ksop.sh -O ksop.sh && sh ksop.sh

官网原生op 21.02 X64稳定版一键安装常用萪学插件ssrp+、passwall、openclash

wget https://openwrt.netlify.com/ssrp.sh -O ssrp.sh && sh ssrp.sh

KoolShare 2.37和官方原生21.02 X64 OpenWrt非efi固件一键扩容脚本

wget https://openwrt.netlify.com/resize.sh -O resize.sh && sh resize.sh

扩容后会不识别,可用Diskgeniu最新版将原版VMDK的rootfs分别克隆过来,即可识别

一键解决安装插件时提示kernel不兼容无法安装的问题

wget https://openwrt.netlify.com/fixkernel.sh -O fixkernel.sh && sh fixkernel.sh

ipk插件安装脚本,自动换源、打内核补丁,最大程度保证常用插件成功安装

wget https://openwrt.netlify.com/ipk-install.sh -O ipk-install.sh && sh ipk-install.sh

六、相关问题

1、离线安装包名有非法关键词
终端输入命令:

sed -i 's/\tdetect_package/\t# detect_package/g' /koolshare/scripts/ks_tar_install.sh

2、openwrt 软件源配置提示错误和问题解决
出现的错误:更新软件列表错误
Collected errors:
opkg_conf_load: Could not lock /var/lock/opkg.lock: Resource temporarily unavailable
解决方法:
ssh链接路由器输入下面命令:

echo "nameserver 114.114.114.114">/tmp/resolv.conf
rm -f /var/lock/opkg.lock
opkg update

OpenWrt 网络拨号设置

访问 http://192.168.1.1/ 控制台,默认没有设置密码,直接以 root 用户名和空密码登录。

点击“网络”菜单下的“接口”,编辑 WAN 接口配置,切换到 PPPoE 协议,填写宽带帐号。步骤见下图。

OpenWrt 网络拨号步骤一编辑 WAN 接口配置

OpenWrt 网络拨号步骤二切换 PPPoE 协议

OpenWrt 网络拨号步骤三设置宽带拨号帐号

保存设置后,回到上一界面点击“保存并应用”,之后就可以上网了。

OpenWrt 开启 Wi-Fi

OpenWrt 默认没有开启无线网络,需要手动配置激活。

在“网络”菜单下点击“无线”,编辑 wlan0 wlan1 配置(如果只支持 2.4GHz,则只有 wlan0)。

一般只需要修改两个设置:

  • “基本设置”里的 ESSID(无线网络名称)
  • 无线安全里的加密方式(选择 WPA2-PSK 加密并设置密码)

OpenWrt 设置无线网路步骤一编辑 WLAN 接口配置

OpenWrt 设置无线网路步骤二设置无线网络名称

OpenWrt 设置无线网路步骤三设置加密方式和密码

保存设置后,回到上一界面点击“保存并应用”,然后点击“启用”无线网路便可使用。

OpenWrt 安装中文语言包

方法一

在“系统”下拉菜单点击“Software”,点击“Update lists”更新软件索引,然后搜索 luci-i18n-base-zh-cn 语言包安装。

OpenWrt 安装中文语言包

安装后控制台会自动显示中文。如果没有,到系统“语言和界面”里设置。

方法二

如果知道怎么 SSH 登录系统,可以直接用下面命令安装。

# 更新软件索引
opkg update

# 安装中文语言包
opkg install luci-i18n-base-zh-cn

OpenWrt 定期重启

方法一

安装下面这个软件可以监测网络状态决定是否需要重启(也可以设置定期重启)。

opkg install luci-app-watchcat luci-i18n-watchcat-zh-cn

安装后在“服务”菜单里点击“Watchcat”设置。

方法二

也可以不安装软件,直接创建 Cron 计划任务来定期重启。

# 检查 Cron 服务是否已设置开机启动(这会列出所有启动项状态)
for F in /etc/init.d/* ; do $F enabled && echo $F on || echo $F **disabled**; done

# 如果没有设置 Cron 启动项,手动设置并运行服务
/etc/init.d/cron start
/etc/init.d/cron enable

# 添加 Cron 计划任务(内容应以空行结束)
crontab -e

# 例如每天凌晨 0 点 30 分关闭 Wi-Fi
30 0 * * * wifi down

# 然后每天凌晨 4 点 30 分重启路由器(会同时启用 Wi-Fi。延迟 70 秒执行,以避免循环重启问题)
30 4 * * * sleep 70 && touch /etc/banner && reboot

# 如果不需要重启路由器,仅改为每天凌晨 4 点 30 分启用 Wi-Fi,则如下
30 4 * * * wifi up

# 重启 Cron 服务使设置生效
/etc/init.d/cron restart

如果要查看 Cron 日志,使用 logread -e cron 命令。

opkg 常用命令

opkg 是 OpenWrt 的软件包管理器,可以通过它安装管理软件。以下是一些常用命令。

作用 命令
更新软件索引 (重启路由器会丢失索引,需要重新创建) opkg update
安装软件 opkg install packagename
卸载软件 opkg remove packagename
更新软件 opkg upgrade packagename
查看软件详情 opkg info packagename
查询可更新软件 opkg list-upgradable
查询已安装软件 opkg list-installed
以关键词查询软件 `opkg list
以关键词搜索软件 opkg search packagename

更多 opkg 命令用法可参考此文档

更改软件源镜像

如果下载软件速度慢,可以更改使用中科大软件源镜像,只需运行下面命令。

# 备份配置文件
cp /etc/opkg/distfeeds.conf /etc/opkg/distfeeds.conf.backup

# 更改软件源镜像
sed -i 's|downloads.openwrt.org|mirrors.ustc.edu.cn/lede|' /etc/opkg/distfeeds.conf

# 更新软件索引
opkg update

为OpenWrt添加service,自启动问题

记得去年,写过一个程序,是运行在OpenWrt上的,想让程序开机自启动,最后费了9牛二虎之力,模仿别人的总算写出来了。但是一直没有明白为什么要这样,刚刚看open的官网,一下子恍然大悟。网址如 http://wiki.openwrt.org/doc/devel/packages

在“Packging a service”一节中,对这个问题进行说明。大意是如果你想在openwrt上运行一个服务(当然,这个服务是开机自启动的),你需要为这个服务写一个自启动脚本放在/etc/init.d/目录下,同时你需要把启动脚本中设置 START=20/STOP=90。下面是一个例子,在/etc/init.d/foo

#!/bin/sh /etc/rc.common
# "new" style init script
# Look at /lib/functions/service.sh on a running system for explanations of what other SERVICE_
# options you can use, and when you might want them.

START=80
APP=mrelay
SERVICE_WRITE_PID=1
SERVICE_DAEMONIZE=1

start() {
        service_start /usr/bin/$APP
}

stop() {
        service_stop /usr/bin/$APP
}

如果程序是和系统同时编译并安装进去的,不需要另外设置,服务就会开机自启动。但是,如果你是利用opkg安装这个程序,则需要运行/etc/init.d/下的启动脚本,对于上面的启动脚本,必须要运行如下代码,服务才能够实现开机自启动

/etc/init.d/foo enable

此时会发现rc.d/目录下多出了关于foo的一个链接,如果链接出现,证明开机自启动ok了。取消开机子启动命令如下,执行完后/rc.d/下的链接会消失。

/etc/init.d/foo disable

转载请注明来源,欢迎对文章中的引用来源进行考证,欢迎指出任何有错误或不够清晰的表达。可以在下面评论区评论,也可以邮件至 vault@coolxy.cn

×

喜欢就点赞,疼爱就打赏

github