在openwrt环境下配置dnsmasq

openwrt环境提供了uci方式配置dnsmasq,配置文件是/etc/config/dhcp.conf,dnsmasq本身也有配置文件,比如/etc/dnsmasq.conf,它们之间的关系怎样,如何运作?似乎找到些线索,与大家分享。

  • 主要配置文件

    • uci配置文件:/etc/config/dhcp.conf

      该文件能够通过luci界面进行修改,后台把它转换成dnsmasq能够识别的配置项。
    • dnsmasq本身的配置文件:/etc/dnsmasq.conf

      通常情况下,dnsmasq运行时会读取该文件,但默认情况下,该文件全是注释#,看似不起任何作用。
    • 运行时配置文件:/var/dnsmasq.conf.cfgxxxx

      ps命令查看dnsmasq进程信息,可看到如下内容:
      ps | grep dns
      ......
      1056 dnsmasq 1344 S /usr/sbin/dnsmasq -C /var/etc/dnsmasq.conf.cfg01411c
      ......
      查看这个文件,真相浮出水面
      cat /var/etc/dnsmasq.conf.cfg01411c
      # auto-generated config file from /etc/config/dhcp
      conf-file=/etc/dnsmasq.conf
      ......
      可以看出,dnsmasq运行时读取的配置文件是/var/dnsmasq.conf.cfgxxxx,该配置文件由/etc/config/dhcp.conf转换而来;从文件中的配置项conf-file=/etc/dnsmasq.conf来看,dnsmasq运行时还会读取/etc/dnsmasq.conf
  • 结论

    从配置文件情况,可以这样配置openwrt:通过luci界面配置dnsmasq,或通过修改/etc/dnsmasq.conf文件配置dnsmasq。

    配置原则:尽量使用luci界面配置dnsmasq,如果出现luci界面不支持的配置项,则考虑在/etc/dnsmasq.conf中进行配置。

    注:luci不支持的配置项,比如srv-host、rebind-domain-ok等。