• 欢迎访问伊栖物联网社区,聚焦物联网技术和解决方案QQ群:735553309
  • ,从传感器到片上嵌入式系统,无线接入,边缘计算,在这里您可以讨论一切
  • 参加最新的物联网研讨会报名
  • 如果您觉得本站非常有看点,那么赶紧使用Ctrl+D 收藏伊栖Eccee

dnsmasq域名解析的那点事

软件和平台 Selina_ 2年前 (2021-11-24) 1750次浏览 0个评论

dnsmasq是轻量级的域名和dhcp服务器,今天只讨论一下它域名功能的部分。

在国内,请不要以为可以轻易自架一个公网的DNS服务器,因为域名解析服务是严格被禁止的,只有运营商才有资格,所以不要轻易尝试,否则IP有可能被封。但dnsmasq仍可以在内网中使用。在新近的Ubuntu发行版上安装dnsmasq,如果不加配置,是会出错,服务根本无法跑起来,这是因为ubuntu默认已经自带了一个本地的域名解析服务systemd-resolve,它已经监听在127.0.0.53的53端口上,除非你想用dnsmasq取代它,否则是需要配置一下,以便不和systemd-resolve冲突。

查看53端口的占用情况,用lsof命令:

sudo lsof -n -i:53

 

最简单的配置是在/etc/dnsmasq.conf中,把bind-interfaces前的#号去掉,这样dnsmasq服务就可以跑起来,并且鉴定在所有接口的53端口上,不和systemd-resolve冲突,相反,默认地它以127.0.0.53作为上游的dns服务器。

我们可以从dnsmasq的 systemctl状态来分析它的行为:

其中,可以看到dnsmasq使用的上游服务器配置文件/run/dnsmasq/resolv.conf,这个默认是空的,而dnsmasq会把本地的127.0.0.53写入,如果你不想用systemd-resolve,可以直接改写这个文件。而运行时的命令–local-service指定了DNS服务仅限于本地内网(仅在未指定绑定接口或监听IP时有效)。此外,dnsmasq会读取/etc/hosts作为域名解析服务的源。当然你也可以在配置文件/etc/dnsmasq中指定其它专用的域名解析映射源文件。值得注意的是,/etc/hosts也服务于systemd-resolve,所以如果你指定了不同的源文件,可能会有不同的效果,比如当你本机不用自己定义的域名,而仅向内网其它服务器提供域名解析服务。

下面分别来测试一下:

1. 修改/etc/hosts 加上一行 192.168.1.11 mylaptop.local>
上面这个改动,在本机上直接生效了,但要让内网其它机器可查询,需要重启dnsmasq服务

2. 在dnsmasq中指定/etc/additional_hosts作为域名文件
在配置文件中去掉addn-hosts前的注释,并指定配置文件为/etc/additinal_hosts,然后创建这个文件,添加192.168.1.11 ip11.home这一行
重启dnsmasq服务后,效果一样,这是因为dnsmasq也监听在127.0.0.1:53上,

如果指定只监听192.168.1.11呢,在配置文件中添加listen-address=192.168.1.11,就会发现此时本地ping不了ip11.home,但指定该dns服务器的客户机则可以ping通。


ECCEE版权所有丨如未注明 , 均为原创丨本网站采用BY-NC-SA协议进行授权
转载请注明原文链接:dnsmasq域名解析的那点事
喜欢 (0)
发表我的评论
取消评论

表情 贴图 加粗 删除线 居中 斜体 签到

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址