最简单的定制openwrt,用在线编译来做一个不怕恢复出厂设置的rom
简介:
这两天在调试一些openwrt设备,但是调错了怎么办?恢复出厂设置是最简单的。
可是一顿操作猛如虎,远程调试openwrt,这么恢复出厂设置呢?连pppoe拨号都没有了,动态域名也没有了,怎么办?
定制rom是唯一的出路。
官方说明:
官方示例:
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
在线自定义构建
输入你的路由器型号,筛选并选中对应的路由器。
点开这个定制包和首次运行脚本的箭头
安装的包和第一次启动的脚本。
安装的包
这个就仁者见仁智者见智了,我也就改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里面刷机不保留配置文件。
再也不用担心远程调试恢复出厂设置了。恢复出厂设置也是我的定制设置。