Loading

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

简介:

这两天在调试一些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里面刷机不保留配置文件。

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

posted @ 2024-11-07 21:48  上官飞鸿  阅读(84)  评论(0编辑  收藏  举报