osnosn

  博客园 :: 首页 :: 博问 :: 闪存 :: :: 联系 :: 订阅 订阅 :: 管理 ::

openwrt_imagebuilder_修改缺省配置_system_network_firewall_root密码_制作免配置固件

转载注明来源: 本文链接 来自osnosn的博客,写于 2023-01-29.

参考和方法

用imagebuilder定制固件

  • armvirt:用ImageBuilder打包自定义img
  • Newifi Y1/D2:用imagebuilder打包一个自定义bin文件
  • 修改 system, network, 建议用 uci-defaults 脚本。
    这两个配置文件,如果存在,并且大于0字节,刷机后第一次启动,就不会自动生成,不会被修改。
    其他配置,直接编辑一个新版,覆盖掉原文件就行。
  • 修改 wireless, 也建议用 uci-defaults 脚本。
  • 这是基于 op-21.02 , op-22.03 版。旧版本的openwrt可能不合适。
    样例: /etc/uci-defaults/80-custom-base (脚本无需设置执行权限)
    #!/bin/sh
    #修改root密码
    passwd root << EOI
    pass1234
    pass1234
    EOI
    
    #修改源
    sed -i 's#downloads.openwrt.org#mirrors.aliyun.com/openwrt#g' /etc/opkg/distfeeds.conf
    #sed -i 's#downloads.openwrt.org#mirrors.ustc.edu.cn/openwrt#g' /etc/opkg/distfeeds.conf
    #sed -i 's#downloads.openwrt.org#mirrors.tuna.tsinghua.edu.cn/openwrt#g' /etc/opkg/distfeeds.conf
    
    #修改名称,时区, 添加一个ntp服务地址
    uci -q batch << EOI
    set system.@system[0].hostname='OpenWrt-MY'
    set system.@system[0].zonename='Asia/Shanghai'
    set system.@system[0].timezone='CST-8'
    set system.ntp.enable_server='1'
    add_list system.ntp.server='myntp.server.local'
    commit system
    EOI
    
    #修改lan IP
    uci -q batch << EOI
    set network.lan.ipaddr='192.168.7.1'
    
    #修改wan IP,静态地址
    set network.wan.proto='static'
    set network.wan.ipaddr='10.10.10.99'
    set network.wan.netmask='255.255.255.0'
    set network.wan.gateway='10.10.10.1'
    add_list network.wan.dns='10.10.10.53'
    #如果wan有多个IP
    #add_list network.wan.ipaddr='10.10.10.88'
    #add_list network.wan.ipaddr='10.10.10.99'
    
    #修改wan pppoe
    #set network.wan.proto='pppoe'
    #set network.wan.username='xxx.xxx@xxx.xx'
    #set network.wan.password='YYYYYY'
    #set network.wan.ipv6='auto'
    #如果wan是pppoe,增加一个modem,用于访问光猫
    #set network.modem=interface
    #set network.modem.proto='dhcp'
    #set network.modem.device='wan'
    #set network.modem.defaultroute='0'
    #set network.modem.peerdns='0'
    commit network
    EOI
    
    #添加ipv4静态路由
    uci -q batch << EOI
    add network route
    set network.@route[-1].interface='wan'
    set network.@route[-1].target='10.222.0.0/16'
    set network.@route[-1].gateway='10.101.10.1'
    commit network
    EOI
    
    #ipv4&ipv6, 开放tcp端口, 允许外网访问路由器本身的 22 88
    uci -q batch << EOI
    add firewall rule
    set firewall.@rule[-1].name='allow-ssh-pxy'
    set firewall.@rule[-1].src='wan'
    add_list firewall.@rule[-1].proto='tcp'
    set firewall.@rule[-1].dest_port='22 88'
    set firewall.@rule[-1].target='ACCEPT'
    
    #ipv4, tcp端口映射, 外网8443->192.168.7.1:443
    add firewall redirect
    set firewall.@redirect[-1].name='web-https'
    set firewall.@redirect[-1].src='wan'
    set firewall.@redirect[-1].dest='lan'
    add_list firewall.@redirect[-1].proto='tcp'
    set firewall.@redirect[-1].src_dport='8443'
    set firewall.@redirect[-1].dest_ip='192.168.7.1'
    set firewall.@redirect[-1].dest_port='443'
    set firewall.@redirect[-1].target='DNAT'
    commit firewall  
    EOI
    exit 0
    
    uci batch 后面有空行不影响,会被忽略。#开始的注释行,也会被忽略。
    也可以 add, set, 很多规则/条目之后,再 commit。
    最后一句exit 0,保证退出时返回0,哪怕前一语句有错误。让脚本执行一次后,被顺利删除。否则每次启动都被执行,直至执行无错误,才被删除。
  • 这是基于 op-21.02 , op-22.03 版。旧版本的openwrt可能不合适。
    样例: /etc/uci-defaults/81-custom-wifi (脚本无需设置执行权限)
    #!/bin/sh
    set_2g() {
      local rad="$1"
      uci -q batch <<- EOF >/dev/null
          set wireless.radio${rad}.disabled=0  #激活wifi
          set wireless.radio${rad}.country='CN'
          set wireless.radio${rad}.channel='11'
          set wireless.@wifi-iface[${rad}].mode='ap'
          set wireless.@wifi-iface[${rad}].ssid='MY_WIFI_2G'
          set wireless.@wifi-iface[${rad}].key='2345678901'
          set wireless.@wifi-iface[${rad}].encryption='psk2+ccmp'  #WPA2-PSK + AES
          commit wireless
    EOF
    }
    set_5g() {
      local rad="$1"
      uci -q batch <<- EOF >/dev/null
          set wireless.radio${rad}.disabled=0  #激活wifi
          set wireless.radio${rad}.country='CN'
          set wireless.radio${rad}.channel='36'
          set wireless.@wifi-iface[${rad}].mode='ap'
          set wireless.@wifi-iface[${rad}].ssid='MY_WIFI_5G'
          set wireless.@wifi-iface[${rad}].key='2345678901'
          set wireless.@wifi-iface[${rad}].encryption='psk2+ccmp'
    
          #添加一个企业认证的5g 的wifi
          set wireless.wifinet2=wifi-iface
          set wireless.wifinet2.device='radio${rad}'
          set wireless.wifinet2.mode='ap'
          set wireless.wifinet2.ssid='MY-EAP_5G'
          set wireless.wifinet2.auth_server='127.0.0.1'
          set wireless.wifinet2.auth_secret='key123'
          set wireless.wifinet2.encryption='wpa2+ccmp'
          commit wireless
    EOF
    }
    set_wifi() {
      local rad="$1"
      if [ "$(uci get wireless.radio${rad}.band)" = "2g" ]; then
        set_2g "$rad"
      elif [ "$(uci get wireless.radio${rad}.band)" = "5g" ]; then
        set_5g "$rad"
      fi
    }
    #配置文件不存在,就不执行,跳过。
    [ -s /etc/config/wireless ] && {
      set_wifi 0
      set_wifi 1
    }
    exit 0
    
    最后一句exit 0,保证退出时返回0,前一语句的返回值可能是非0。让脚本执行一次后,被顺利删除。否则每次启动都被执行。
  • 测试脚本时
    修改了 system 或 network,用 reload_config 生效。
    修改了 firewall,用 /etc/init.d/firewall restart生效。
    作为uci-defaults脚本,无需 reload_config。
    因为执行完所有的 uci-defaults 脚本后,会 reload_config 一次。
    firewall 的启动在这些脚本的后面。

----end----


转载注明来源: 本文链接 https://www.cnblogs.com/osnosn/p/17072528.html
来自 osnosn的博客 https://www.cnblogs.com/osnosn/ .


posted on 2023-01-29 18:56  osnosn  阅读(1175)  评论(0编辑  收藏  举报