首页 > 其他分享 >最简单的定制openwrt,用在线编译来做一个不怕恢复出厂设置的rom

最简单的定制openwrt,用在线编译来做一个不怕恢复出厂设置的rom

时间:2024-11-07 21:42:46浏览次数:3  
标签:set wlan rom firewall 出厂 wireless openwrt password uci

简介:

这两天在调试一些openwrt设备,但是调错了怎么办?恢复出厂设置是最简单的。

可是一顿操作猛如虎,远程调试openwrt,这么恢复出厂设置呢?连pppoe拨号都没有了,动态域名也没有了,怎么办?

定制rom是唯一的出路。

官方说明:

[OpenWrt Wiki] UCI默认设置

官方示例:

cat << "EOF" > /etc/uci-defaults/99-custom
uci -q batch << EOI
set network.lan.ipaddr='192.168.178.1'
set wireless.@wifi-device[0].disabled='0'
set wireless.@wifi-iface[0].ssid='OpenWrt0815'
add dhcp host
set dhcp.@host[-1].name='bellerophon'
set dhcp.@host[-1].ip='192.168.2.100'
set dhcp.@host[-1].mac='a1:b2:c3:d4:e5:f6'
rename firewall.@zone[0]='lan'
rename firewall.@zone[1]='wan'
rename firewall.@forwarding[0]='lan_wan'
EOI
EOF

在线自定义构建

OpenWrt Firmware Selector

 

 输入你的路由器型号,筛选并选中对应的路由器。

 

点开这个定制包和首次运行脚本的箭头

 安装的包和第一次启动的脚本。

安装的包

这个就仁者见仁智者见智了,我也就改dnsmasq为dnsmasq-full

# 添加中文界面:
# luci-i18n-base-zh-cn luci-i18n-opkg-zh-cn luci-i18n-firewall-zh-cn
# 添加uhttpd upnp
# luci-i18n-upnp-zh-cn luci-i18n-uhttpd-zh-cn

首次启动脚本

这个就复杂点了,先抄个别人的。

首次启动时运行的脚本(uci-defaults)

# Beware! This script will be in /rom/etc/uci-defaults/ as part of the image.
# Uncomment lines to apply:
#
wlan_name="OpenWrt"
wlan_password="12345678"

root_password="111111" lan_ip_address="192.168.1.1"
pppoe_username="111111" pppoe_password="111111" # log potential errors exec >/tmp/setup.log 2>&1 if [ -n "$root_password" ]; then (echo "$root_password"; sleep 1; echo "$root_password") | passwd > /dev/null fi # Configure LAN # More options: https://openwrt.org/docs/guide-user/base-system/basic-networking if [ -n "$lan_ip_address" ]; then uci set network.lan.ipaddr="$lan_ip_address" uci commit network fi # Configure WLAN # More options: https://openwrt.org/docs/guide-u ... ic#wi-fi_interfaces if [ -n "$wlan_name" -a -n "$wlan_password" -a ${#wlan_password} -ge 8 ]; then uci set wireless.@wifi-device[0].disabled='0' uci set wireless.@wifi-iface[0].disabled='0' uci set wireless.@wifi-iface[0].encryption='psk2' uci set wireless.@wifi-iface[0].ssid="$wlan_name" uci set wireless.@wifi-iface[0].key="$wlan_password" uci commit wireless fi # Configure PPPoE # More options: https://openwrt.org/docs/guide-u ... e_ppp_over_ethernet if [ -n "$pppoe_username" -a "$pppoe_password" ]; then uci set network.wan.proto=pppoe uci set network.wan.username="$pppoe_username" uci set network.wan.password="$pppoe_password" uci commit network fi echo "All done!"

最上面设置了一些需要的变量,后面脚本就是判断变量存在,就执行uci命令来完成对openwrt的设置。

这是一个简单的示例,用于设置管理员密码、LAN IP地址、SSID、启用Wi-Fi、PPPOE拨号。 一旦脚本成功运行并干净地退出(退出状态为0),它将从/etc/uci-defaults中删除。 如果需要,仍然可以在/rom/etc/uci-defaults中查看原始脚本,文件名大概率是99-99-asu-defaults,至少我做的时候是这个文件名。

自定义启动脚本

这不太够用啊,我还想设置防火墙策略,我wifi是双频的,这才设置一个wifi[0]。

不懂也没关系,可以找地方抄。

例如:添加一个防火墙通信规则,允许IPV6访问本机的22,18080,18443端口。

  在通信规则创建好对应的规则。

 

 

 

注意右上角的未保存的配置,点开看看

 这就是需要的uci命令,直接复制进第一次启动脚本就好了。

当然,设置各种东西都可以这样抄命令。

除了wifi设置有个启用抄不到命令,我提供给你就好了。

主要是disabled='0'那行,你配置wifi时自动生成代码来确定你是radio0还是什么。

# 配置WLAN
if [ -n "$wlan_name0" -a -n "$wlan_password" -a ${#wlan_password} -ge 8 ]; then
  uci set wireless.radio0.disabled='0'
  uci set wireless.radio0.htmode='HT40'
  uci set wireless.radio0.channel='auto'
  uci set wireless.radio0.cell_density='0'
  uci set wireless.default_radio0.ssid="$wlan_name0"
  uci set wireless.default_radio0.encryption='sae-mixed'
  uci set wireless.default_radio0.key="$wlan_password"
fi

 

完整配置

#预安装的软件包:
# 替换dnsmasq 为dnsmasq-full
# 添加中文界面:
# luci-i18n-base-zh-cn luci-i18n-opkg-zh-cn luci-i18n-firewall-zh-cn
# 添加uhttpd upnp
# luci-i18n-upnp-zh-cn luci-i18n-uhttpd-zh-cn 


#首次启动时运行的脚本(uci-defaults)
#设置lan ip地址
#设置管理员密码
#设置wifi
#设置pppoe拨号
#设置时区

# Beware! This script will be in /rom/etc/uci-defaults/ as part of the image.
# Uncomment lines to apply:
# 复制该行以后的为启动脚本
#!/bin/sh # 设置变量 wlan_name0="Kumquat_2.4G" wlan_name1="Kumquat_5G" wlan_password="88888888" root_password="66666666" lan_ip_address="192.168.2.1" pppoe_username="*********" pppoe_password="123123" hostname="YLC_Router" # 记录潜在错误 exec >/tmp/setup.log 2>&1 # 设置管理员密码 if [ -n "$root_password" ]; then (echo "$root_password"; sleep 1; echo "$root_password") | passwd > /dev/null fi # 配置LAN if [ -n "$lan_ip_address" ]; then uci set network.lan.ipaddr="$lan_ip_address" uci set network.lan.netmask="255.255.255.0" uci commit network fi # 配置WLAN if [ -n "$wlan_name0" -a -n "$wlan_password" -a ${#wlan_password} -ge 8 ]; then uci set wireless.radio0.disabled='0' uci set wireless.radio0.htmode='HT40' uci set wireless.radio0.channel='auto' uci set wireless.radio0.cell_density='0' uci set wireless.default_radio0.ssid="$wlan_name0" uci set wireless.default_radio0.encryption='sae-mixed' uci set wireless.default_radio0.key="$wlan_password" fi if [ -n "$wlan_name1" -a -n "$wlan_password" -a ${#wlan_password} -ge 8 ]; then uci set wireless.radio1.disabled='0' uci set wireless.radio1.htmode='VHT80' uci set wireless.radio1.channel='auto' uci set wireless.radio1.cell_density='0' uci set wireless.default_radio1.ssid="$wlan_name1" uci set wireless.default_radio1.encryption='sae-mixed' uci set wireless.default_radio1.key="$wlan_password" fi uci commit wireless # 配置PPPoE if [ -n "$pppoe_username" -a -n "$pppoe_password" ]; then uci set network.wan.proto='pppoe' uci set network.wan.username="$pppoe_username" uci set network.wan.password="$pppoe_password" uci commit network fi # 设置主机名 if [ -n "$hostname" ]; then uci set system.@system[0].hostname="$hostname" uci commit system fi # 设置时区 uci set system.@system[0].zonename='Asia/Shanghai' uci set system.@system[0].timezone='CST-8' # 手动设置静态 DHCP uci add dhcp host uci set dhcp.@host[-1].name='TmallGenie' uci add_list dhcp.@host[-1].mac='18:BC:5A:18:81:E7' uci set dhcp.@host[-1].ip='192.168.2.254' # 重启网络服务 /etc/init.d/network restart # 重启无线网络服务 wifi up #设置本机防火墙 uci add firewall rule uci set firewall.@rule[-1].name='Allow_Local' uci set firewall.@rule[-1].family='ipv6' uci set firewall.@rule[-1].src='wan' uci set firewall.@rule[-1].dest_port='22 18080 18443' uci set firewall.@rule[-1].target='ACCEPT' #设置WireGuard区域防火墙 uci add firewall rule uci set firewall.@rule[-1].name='Allow_VPN' uci set firewall.@rule[-1].family='ipv6' uci set firewall.@rule[-1].src='wan' uci set firewall.@rule[-1].dest_port='52080' uci set firewall.@rule[-1].target='ACCEPT' #设置LAN转发 uci add firewall rule uci set firewall.@rule[-1].name='Allow_LAN' uci set firewall.@rule[-1].family='ipv6' uci set firewall.@rule[-1].src='wan' uci set firewall.@rule[-1].dest='lan' uci set firewall.@rule[-1].dest_port='22 8006 8069 9090 18080 18443' uci set firewall.@rule[-1].target='ACCEPT'
#添加uhttpd监听端口
uci add_list uhttpd.main.listen_http='[::]:18080'
uci add_list uhttpd.main.listen_https='[::]:18443'
echo "All done!"

 

未来功能

 

把我的cfddns也加进去,就是echo写三个文件:

cfddns.sh ddns主脚本

cfconfig.json  ddns配置文件

crontab  计划任务脚本

今天懒的写了。

在线编译

点击REQUEST BUILD按钮即可

 完成标志 Build successful

 自定义的下载,一般sysupgrade就行了,在openwrt里面刷机不保留配置文件。

 再也不用担心远程调试恢复出厂设置了。恢复出厂设置也是我的定制设置。

标签:set,wlan,rom,firewall,出厂,wireless,openwrt,password,uci
From: https://www.cnblogs.com/jackadam/p/18534067

相关文章

  • 这款Chrome 插件,使浏览器页面快速滑动到最底部和最顶部,并且还能...
    前言前几日我在使用谷歌浏览器,也就是chrome的时候,浏览一个内容很长的页面,由于页面上的内容有前后关联,所以我必须不停地切换到上面和下面。这非常不方便。使我非常抓狂。后来,我灵机一动,去谷歌浏览器的插件市场上搜索了一下有没有快速回到底部和顶部的插件,结果,还真有。这下就方便了......
  • 论文翻译 | Evaluating the Robustness of Discrete Prompts
    摘要        离散提示已被用于调整预训练语言模型,以适应不同的NLP任务。特别是,从一小组训练实例中生成离散提示的自动方法已经报告了优越的性能。然而,仔细观察习得的提示会发现,它们包含嘈杂和反直觉的词汇结构,而这些在手工写的提示中是不会遇到的。这提出了一个重要......
  • LLM的Prompt竟然是图灵完备的?LLM提示范式的第一个研究 | 重磅
    LLM的Prompt竟然是图灵完备的?LLM提示范式的第一个研究|重磅原创 AI修猫Prompt AI修猫Prompt 2024年11月07日08:10 北京点击上方蓝字关注我本文:5100字阅读 12分钟 开创性研究揭示Prompt的理论基础近日,伊利诺伊大学香槟分校的研究团队发布了一篇开创性论文,首次从......
  • 使用chromedriver抓取网页截图
    前提:1、电脑安装了谷歌浏览器2、下载chromedriver-win64,放到C:\ProgramFiles\Google\Chrome\chromedriver-win64  安装路径chromedriver-win64 下载地址:ChromeforTestingavailability3、importorg.apache.commons.io.FileUtils;importorg.openqa.selenium.Outp......
  • Zabbix 和 Prometheus 选型对比
    开源的监控产品有很多,其中最知名的,当属早期的Zabbix和现在的Prometheus。Zabbix是2001年发布的,至今已经20多年,很多细节打磨的相当到位,Prometheus是2014年发布的,相对年轻,依托于之前GoogleBorgmon的先进经验和灵感,Prometheus在云原生监控领域有着非常好的表现。咦?......
  • Prometheus Alert Manager -- Difference between group_wait, group_interval, and r
    Definitiongroup_interval:group_interval dictateshowlongtowaitbeforesendingnotificationsaboutnewalertsthatareaddedtoagroupofalertsthathavebeenalertedonbefore。repeat_interval:IfthereisnothingchangeintheAlertGroup......
  • AI对话魔法|Prompt Engineering 探索指南
    作者:京东物流李雪婷一、什么是PromptEngineering?想象一下,你在和一个智能助手聊天,你需要说出非常清晰和具体的要求,才能得到你想要的答案。PromptEngineering就是设计和优化与AI对话的“提示词”或“指令”,让AI能准确理解并提供有用的回应。  PromptEngineering主要......
  • prompt模版
    一、ElavisSaravia框架Instruction(指令)明确模型需要执行不同的特定任务。Context(上下文)为模型提供理解请求所需的背景信息。InputData(输入数据)模型处理的具体数据。OutputIndicator(输出指示)指示期望的输出类型或格式。二、CRISPE框架Capacityandrole(能力......
  • 这款Chrome 插件,帮助我们复制网页上不能复制的内容
    前言最近在上网查找博客时,经常遇到想要复制网页上的内容,但是,一点击复制,就会弹出来各种各样的弹框,导致复制不能继续,非常麻烦。这时,我想到了一个办法,那就是下载安装一个chrome插件,那今天就介绍给大家,让大家上网复制文本时可以任性。如何复制首先,我们需要安装一个插件,SimpleAl......
  • arkUI:Column和Rom的间距设置(列向,横向)
    arkUI:Column和Rom的间距设置(列向,横向)1主要内容说明2相关内容举例和说明2.1Column的间距(列的间距)2.1.1源码1(Column的间距)2.1.2源码1运行效果2.2Row的间距(横向间距)2.2.1源码2(Row的间距)3.结语4.定位日期1主要内容说明Column:垂直布局组件,子组件从上到下依次......