簡介:
這兩天在除錯一些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裡面刷機不保留配置檔案。
再也不用擔心遠端除錯恢復出廠設定了。恢復出廠設定也是我的定製設定。