简介
Dnsmasq是一个轻量级的,易于配置的dns转发器和dhcp服务器。它旨在为一个小型网络提供DNS和DHCP。它可以服务于不在全局DNS中的本地机器的名称。DHCP和DNS服务器集成,分配IP地址的同时下发指定的DNS服务器地址。Dnsmasq支持静态和动态的DHCP租赁,以及BOOTP用于无磁盘机器的网络引导。它已经在OpenWrt上安装和预配置了。
配置
dnsmasq的配置文件是/etc/config/dhcp,可以与/etc/dnsmasq.conf一起使用,同时还可以根据配置文件中的设置使用/etc/ether和/etc/host文件。
/etc/config/dhcp
/etc/config/dhcp是一个UCI配置文件,几乎所有的设置都可以用它来配置。dhcp文件分为如下几个section。
dnsmasq
dnsmasq section的部分指定每个dnsmasq实例,及与dnsmasq实例的整体操作相关的值和选项,以及所服务的所有接口上的DHCP选项。下表列出了所有可用的选项、它们的默认值,以及相应的dnsmasq命令行选项。有关更多细节,请参阅dnsmasq手册页面。
以下是常用选项的默认设置:
# uci -N show dhcp.@dnsmasq[0] dhcp.@dnsmasq[0]=dnsmasq dhcp.@dnsmasq[0].domainneeded='1' dhcp.@dnsmasq[0].boguspriv='1' dhcp.@dnsmasq[0].filterwin2k='0' dhcp.@dnsmasq[0].localise_queries='1' dhcp.@dnsmasq[0].rebind_protection='1' dhcp.@dnsmasq[0].rebind_localhost='1' dhcp.@dnsmasq[0].local='/lan/' dhcp.@dnsmasq[0].domain='lan' dhcp.@dnsmasq[0].expandhosts='1' dhcp.@dnsmasq[0].nonegcache='0' dhcp.@dnsmasq[0].authoritative='1' dhcp.@dnsmasq[0].readethers='1' dhcp.@dnsmasq[0].leasefile='/tmp/dhcp.leases' dhcp.@dnsmasq[0].resolvfile='/tmp/resolv.conf.d/resolv.conf.auto' dhcp.@dnsmasq[0].nonwildcard='1' dhcp.@dnsmasq[0].localservice='1' |
Options:
local 和domain:允许dnsmasq服务/etc/host的条目,以及在局域域下配置的DHCP客户端名称。
domainneeded, boguspriv, localise_queries, and expandhosts:确保对本地主机名的请求不会转发到上游DNS服务器。
authoritative :使路由器成为这个网络上唯一的DHCP服务器;通过这种方式,客户端获得IP租赁要快得多。
leasefile:租赁文件将租赁时间存储在一个文件中,因此当重新启动dnsmasq时,它们可以再次被获取。
resolvfile :resolvfile告诉dnsmasq使用此文件查找上游名称服务器;它由WAN DHCP或PPP客户端创建。
enable_tftp和tftp_root :打开TFTP服务器,并从tftp_root提供文件。
可能需要在客户端上设置服务器的IP,通过设置服务器(例如,服务器服务器192.168.1.10)来更改它。
dhcp
dhcp section的部分指定每个接口租赁池和服务dhcp请求的设置。通常,在/etc/config/dhcp文件中至少有一个这种类型的部分来覆盖lan接口。
通过在相应的部分中指定忽略选项,您可以禁用特定接口的租赁池。
下面列出了一个dhcp部分的一个最小示例:
# uci -N show dhcp.@dhcp[0]
dhcp.@dhcp[0]=dhcp
dhcp.@dhcp[0].interface='lan'
dhcp.@dhcp[0].start='100'
dhcp.@dhcp[0].limit='150'
dhcp.@dhcp[0].leasetime='12h'
force: 当网络中已经存在一个dhcp服务器的情况下,也开启dhcp服务,否则,检测到已经有一个DHCP服务器的情况下,不再开启dhcp服务。
ignor:表示wan口不开启dhcp服务。
/etc/dnsmasq.conf
可以将传统的/etc/dnsmasq.conf配置文件与/etc/config/dhcp中的选项混合。
dnsmasq.conf文件在默认情况下不存在,但如果它存在,则将由dnsmasq在启动时进行处理。注意,/etc/config/dhcp中的选项多于dnsmasq.conf,因为它们被转换为命令行参数。
示例:默认情况下,Dnsmasq被配置为将主机放入.lan域。这在配置文件中被指定为:
你可以把它改变成任何你想要的域名。此外,如果您希望您的主机可以通过您的主域使用,而不必在/etc/hosts文件中指定域,请将扩展主机指令添加到您的/etc/dnsmasq.conf文件中。
例如,如果没有扩展主机,你只能访问router, ubuntu-desktop 和ubuntu-laptop。有了扩展主机,你就可以到达router, router.lan, ubuntu-desktop, ubuntu-desktop.lan,等。这可能符合你想要的东西。
如果没有此设置,您将不得不添加.lan条目到您的/etc/主机。
/etc/ethers
用于做静态绑定。您可以根据使用主机部分的MAC(硬件)地址为网络上的主机分配固定的IP地址。本节中的配置选项用于为dnsmasq构造一个-G选项。
/etc/hosts
在/etc/host中配置了DNS条目。Dnsmasq将利用这些条目来回答您的网络上的DNS查询。
格式为:
[IP_address] host_name host_name_short ...
例如:
192.168.1.1 router OpenWrt localhost
192.168.1.2 debian-server
192.168.1.3 ubuntu-laptop
排障
网络过载导致dhcp响应丢失
有时,当接口处于容量边缘(特别是较长距离的WiFi)时,DHCP请求无法及时响应。因此,DHCP客户端将无法接收到适当的网络设置。一个可能的解决方案是使用静态IPs或非常长的DHCP租赁(超过12小时)。当你有几个使用DHCP的WiFi中继器,并且彼此距离遥远或不容易访问时,这一点尤为重要。
dhcpinfor/dhcpack日志垃圾邮件
Windows 7等公司要求使用DHCP进行代理设置。问题是,他们在得到答案之前不会停止询问。这导致日志中包含了大量关于这些请求的信息,下面可以找到一个例子。
解决方案:
uci add_list dhcp.lan.dhcp_option='252,"\n"' uci commit dhcp service dnsmasq restart |
静态租赁问题
Windows 7推出了一项新的微软增强功能。它不会将从DHCP服务器获得的IP地址分配给一个接口,如果该IP以前被用于另一个接口,即使该其他接口当前不是活动的(即电缆断开)。这种行为是唯一的,在旧的Windows版本、Mac OS和Linux中都没有报道。
如果你尝试在路由器上配置MAC地址热交换,Windows 7客户端将最终进入一个无限的DORA循环。
解决方案:
从客户端上的无线和以太网接口创建一个网桥
将桥接口的MAC地址添加到/etc/config/dhcp中
由于桥接可能会改变你的以太网MAC地址,你将失去wifi界面上的SLAAC,使你的笔记本电脑ipv6时,只有无线禁用。
另一个解决方案是IPv6友好的,你不需要创建一个桥,也不需要添加MAC地址到dnsmasq配置文件,但它涉及到用户交互:
插入以太网电缆时,将禁用控制面板中的无线接口(不会关闭无线电源)。
拔下以太网电缆时,请启用无线功能并禁用以太网。
uci add dhcp host uci set dhcp.@host[-1].name="example-host" uci set dhcp.@host[-1].ip="192.168.1.230" uci set dhcp.@host[-1].mac="00:a0:24:5a:33:69 00:11:22:33:44:55 02:a0:24:5a:33:69 02:11:22:33:44:55" uci commit dhcp service dnsmasq restart |
Adguard DNS和dnsmasq问题
如果您使用Adguard DNS作为转发器(为了有一个廉价和高效的网络广告拦截器),您需要禁用重新绑定保护,以避免由于Rebin保护而导致的延迟或站点不可访问。
如果没有,您可以在系统.log中看到许多此日志,并存在延迟或主机无法访问的问题。
DNSMasq调试
将log记录到syslog中
开启之后,dnsmasq源代码中自带的调试信息会记录到syslog中,此方式依赖于syslog功能,命令如下:
dnsmasq --addn-host=/var/dnsmasq.hosts --log-queries
将log记录到文件中
开启之后,dnsmasq源代码中自带的调试信息会记录到指定的文件中,命令如下:
dnsmasq --addn-host=/var/dnsmasq.hosts --log-facility /tmp/dnsmasq.log --log-queries
日志内容如下:
admin@OpenWrt:/tmp# cat dnsmasq.log
May 12 10:00:54 dnsmasq[1283]: started, version 2.80 cachesize 150
May 12 10:00:54 dnsmasq[1283]: DNS service limited to local subnets
May 12 10:00:54 dnsmasq[1283]: compile time options: IPv6 GNU-getopt no-DBus no-i18n no-IDN DHCP no-DHCPv6 no-Lua TFTP no-conntrack no-ipset no-auth no-DNSSEC no-ID loop-detect inotify dumpfile
May 12 10:00:54 dnsmasq[1283]: using local addresses only for domain test
May 12 10:00:54 dnsmasq[1283]: using local addresses only for domain onion
May 12 10:00:54 dnsmasq[1283]: using local addresses only for domain localhost
May 12 10:00:54 dnsmasq[1283]: using local addresses only for domain local
May 12 10:00:54 dnsmasq[1283]: using local addresses only for domain invalid
May 12 10:00:54 dnsmasq[1283]: using local addresses only for domain bind
May 12 10:00:54 dnsmasq[1283]: using nameserver 223.5.5.5#53
May 12 10:00:54 dnsmasq[1283]: using nameserver 114.114.114.114#53
May 12 10:00:54 dnsmasq[1283]: using local addresses only for domain lan
May 12 10:00:54 dnsmasq[1283]: no servers found in /tmp/resolv.conf.auto, will retry
May 12 10:00:54 dnsmasq[1283]: read /etc/hosts - 4 addresses
May 12 10:00:54 dnsmasq[1283]: read /tmp/hosts/dhcp.cfg01411c - 0 addresses
May 12 10:01:04 dnsmasq[1283]: exiting on receipt of SIGTERM
May 12 10:01:09 dnsmasq[2427]: started, version 2.80 cachesize 150
May 12 10:01:09 dnsmasq[2427]: DNS service limited to local subnets
May 12 10:01:09 dnsmasq[2427]: compile time options: IPv6 GNU-getopt no-DBus no-i18n no-IDN DHCP no-DHCPv6 no-Lua TFTP no-conntrack no-ipset no-auth no-DNSSEC no-ID loop-detect inotify dumpfile
May 12 10:01:09 dnsmasq-dhcp[2427]: DHCP, IP range 192.168.1.100 -- 192.168.1.249, lease time 12h
May 12 10:01:09 dnsmasq[2427]: using local addresses only for domain test
May 12 10:01:09 dnsmasq[2427]: using local addresses only for domain onion
May 12 10:01:09 dnsmasq[2427]: using local addresses only for domain localhost
May 12 10:01:09 dnsmasq[2427]: using local addresses only for domain local
May 12 10:01:09 dnsmasq[2427]: using local addresses only for domain invalid
May 12 10:01:09 dnsmasq[2427]: using local addresses only for domain bind
May 12 10:01:09 dnsmasq[2427]: using nameserver 223.5.5.5#53
May 12 10:01:09 dnsmasq[2427]: using nameserver 114.114.114.114#53
May 12 10:01:09 dnsmasq[2427]: using local addresses only for domain lan
May 12 10:01:09 dnsmasq[2427]: no servers found in /tmp/resolv.conf.auto, will retry
May 12 10:01:09 dnsmasq[2427]: read /etc/hosts - 4 addresses
May 12 10:01:09 dnsmasq[2427]: read /tmp/hosts/dhcp.cfg01411c - 2 addresses
May 12 10:01:09 dnsmasq-dhcp[2427]: read /etc/ethers - 0 addresses
May 12 10:01:11 dnsmasq[2427]: query[A] 1.openwrt.pool.ntp.org from 127.0.0.1
May 12 10:01:11 dnsmasq[2427]: config error is REFUSED
May 12 10:01:11 dnsmasq[2427]: query[AAAA] 1.openwrt.pool.ntp.org from 127.0.0.1
May 12 10:01:11 dnsmasq[2427]: config error is REFUSED
May 12 10:01:14 dnsmasq[2427]: query[A] 1.openwrt.pool.ntp.org from 127.0.0.1
May 12 10:01:14 dnsmasq[2427]: config error is REFUSED
May 12 10:01:14 dnsmasq[2427]: query[AAAA] 1.openwrt.pool.ntp.org from 127.0.0.1
May 12 10:01:14 dnsmasq[2427]: config error is REFUSED
May 12 10:01:14 dnsmasq[2427]: reading /tmp/resolv.conf.auto
May 12 10:01:14 dnsmasq[2427]: using local addresses only for domain test
May 12 10:01:14 dnsmasq[2427]: using local addresses only for domain onion
May 12 10:01:14 dnsmasq[2427]: using local addresses only for domain localhost
May 12 10:01:14 dnsmasq[2427]: using local addresses only for domain local
May 12 10:01:14 dnsmasq[2427]: using local addresses only for domain invalid
May 12 10:01:14 dnsmasq[2427]: using local addresses only for domain bind
May 12 10:01:14 dnsmasq[2427]: using nameserver 223.5.5.5#53
May 12 10:01:14 dnsmasq[2427]: using nameserver 114.114.114.114#53
May 12 10:01:14 dnsmasq[2427]: using local addresses only for domain lan
May 12 10:01:14 dnsmasq[2427]: using nameserver 202.101.172.35#53
May 12 10:01:14 dnsmasq[2427]: using nameserver 202.101.172.47#53
May 12 10:01:14 dnsmasq[2427]: query[PTR] 254.67.16.172.in-addr.arpa from 127.0.0.1
May 12 10:01:14 dnsmasq[2427]: config 172.16.67.254 is NXDOMAIN
May 12 10:01:14 dnsmasq[2427]: query[PTR] 254.67.16.172.in-addr.arpa from 127.0.0.1
May 12 10:01:14 dnsmasq[2427]: config 172.16.67.254 is NXDOMAIN
May 12 10:01:14 dnsmasq[2427]: query[PTR] 254.67.16.172.in-addr.arpa from 127.0.0.1
May 12 10:01:14 dnsmasq[2427]: config 172.16.67.254 is NXDOMAIN
May 12 10:01:15 dnsmasq[2427]: query[PTR] 254.67.16.172.in-addr.arpa from 127.0.0.1
May 12 10:01:15 dnsmasq[2427]: config 172.16.67.254 is NXDOMAIN
May 12 10:01:16 dnsmasq[2427]: query[PTR] 254.67.16.172.in-addr.arpa from 127.0.0.1
May 12 10:01:16 dnsmasq[2427]: config 172.16.67.254 is NXDOMAIN
May 12 10:01:16 dnsmasq[2427]: query[PTR] 254.67.16.172.in-addr.arpa from 127.0.0.1
May 12 10:01:16 dnsmasq[2427]: config 172.16.67.254 is NXDOMAIN
May 12 10:01:16 dnsmasq[2427]: query[PTR] 254.67.16.172.in-addr.arpa from 127.0.0.1
May 12 10:01:16 dnsmasq[2427]: config 172.16.67.254 is NXDOMAIN
May 12 10:01:16 dnsmasq[2427]: query[A] 2.openwrt.pool.ntp.org from 127.0.0.1
May 12 10:01:16 dnsmasq[2427]: forwarded 2.openwrt.pool.ntp.org to 223.5.5.5
May 12 10:01:16 dnsmasq[2427]: forwarded 2.openwrt.pool.ntp.org to 114.114.114.114
May 12 10:01:16 dnsmasq[2427]: forwarded 2.openwrt.pool.ntp.org to 202.101.172.35
May 12 10:01:16 dnsmasq[2427]: forwarded 2.openwrt.pool.ntp.org to 202.101.172.47
May 12 10:01:16 dnsmasq[2427]: query[AAAA] 2.openwrt.pool.ntp.org from 127.0.0.1
May 12 10:01:16 dnsmasq[2427]: forwarded 2.openwrt.pool.ntp.org to 223.5.5.5
May 12 10:01:16 dnsmasq[2427]: forwarded 2.openwrt.pool.ntp.org to 114.114.114.114
May 12 10:01:16 dnsmasq[2427]: forwarded 2.openwrt.pool.ntp.org to 202.101.172.35
May 12 10:01:16 dnsmasq[2427]: forwarded 2.openwrt.pool.ntp.org to 202.101.172.47
May 12 10:01:16 dnsmasq[2427]: reply 2.openwrt.pool.ntp.org is 84.16.73.33
May 12 10:01:16 dnsmasq[2427]: reply 2.openwrt.pool.ntp.org is 185.209.85.222
May 12 10:01:16 dnsmasq[2427]: reply 2.openwrt.pool.ntp.org is 5.79.108.34
May 12 10:01:16 dnsmasq[2427]: reply 2.openwrt.pool.ntp.org is 202.118.1.81
May 12 10:01:16 dnsmasq[2427]: reply 2.openwrt.pool.ntp.org is 2001:1600:3:6::123
May 12 10:01:16 dnsmasq[2427]: reply 2.openwrt.pool.ntp.org is 2a03:8600::ee
May 12 10:01:16 dnsmasq[2427]: reply 2.openwrt.pool.ntp.org is 2001:1600:4:1::123
May 12 10:01:16 dnsmasq[2427]: reply 2.openwrt.pool.ntp.org is 2600:3c01::f03c:91ff:fec8:5c8
May 12 10:01:16 dnsmasq[2427]: query[A] 3.openwrt.pool.ntp.org from 127.0.0.1
May 12 10:01:16 dnsmasq[2427]: forwarded 3.openwrt.pool.ntp.org to 202.101.172.35
May 12 10:01:16 dnsmasq[2427]: query[AAAA] 3.openwrt.pool.ntp.org from 127.0.0.1
May 12 10:01:16 dnsmasq[2427]: forwarded 3.openwrt.pool.ntp.org to 202.101.172.35
May 12 10:01:16 dnsmasq[2427]: reply 3.openwrt.pool.ntp.org is 162.159.200.1
May 12 10:01:16 dnsmasq[2427]: reply 3.openwrt.pool.ntp.org is 193.182.111.14
May 12 10:01:16 dnsmasq[2427]: reply 3.openwrt.pool.ntp.org is 193.182.111.143
May 12 10:01:16 dnsmasq[2427]: reply 3.openwrt.pool.ntp.org is 193.182.111.12
May 12 10:01:16 dnsmasq[2427]: reply 3.openwrt.pool.ntp.org is NODATA-IPv6
May 12 10:01:17 dnsmasq[2427]: query[PTR] 254.67.16.172.in-addr.arpa from 127.0.0.1
May 12 10:01:17 dnsmasq[2427]: config 172.16.67.254 is NXDOMAIN
May 12 10:01:17 dnsmasq[2427]: query[PTR] 254.67.16.172.in-addr.arpa from 127.0.0.1
May 12 10:01:17 dnsmasq[2427]: config 172.16.67.254 is NXDOMAIN
May 12 10:01:17 dnsmasq[2427]: query[PTR] 254.67.16.172.in-addr.arpa from 127.0.0.1
May 12 10:01:17 dnsmasq[2427]: config 172.16.67.254 is NXDOMAIN
May 12 10:01:17 dnsmasq[2427]: query[PTR] 254.67.16.172.in-addr.arpa from 127.0.0.1
May 12 10:01:17 dnsmasq[2427]: config 172.16.67.254 is NXDOMAIN
May 12 10:01:17 dnsmasq[2427]: query[PTR] 254.67.16.172.in-addr.arpa from 127.0.0.1
May 12 10:01:17 dnsmasq[2427]: config 172.16.67.254 is NXDOMAIN
May 12 10:01:18 dnsmasq[2427]: query[A] 1.openwrt.pool.ntp.org from 127.0.0.1
May 12 10:01:18 dnsmasq[2427]: forwarded 1.openwrt.pool.ntp.org to 202.101.172.35
May 12 10:01:18 dnsmasq[2427]: query[AAAA] 1.openwrt.pool.ntp.org from 127.0.0.1
May 12 10:01:18 dnsmasq[2427]: forwarded 1.openwrt.pool.ntp.org to 202.101.172.35
May 12 10:01:18 dnsmasq[2427]: reply 1.openwrt.pool.ntp.org is 84.16.67.12
May 12 10:01:18 dnsmasq[2427]: reply 1.openwrt.pool.ntp.org is 120.25.115.20
May 12 10:01:18 dnsmasq[2427]: reply 1.openwrt.pool.ntp.org is 202.112.31.197
May 12 10:01:18 dnsmasq[2427]: reply 1.openwrt.pool.ntp.org is 36.110.235.196
May 12 10:01:18 dnsmasq[2427]: reply 1.openwrt.pool.ntp.org is NODATA-IPv6
May 12 10:01:18 dnsmasq[2427]: query[A] 0.openwrt.pool.ntp.org from 127.0.0.1
May 12 10:01:18 dnsmasq[2427]: forwarded 0.openwrt.pool.ntp.org to 202.101.172.35
May 12 10:01:18 dnsmasq[2427]: query[AAAA] 0.openwrt.pool.ntp.org from 127.0.0.1
May 12 10:01:18 dnsmasq[2427]: forwarded 0.openwrt.pool.ntp.org to 202.101.172.35
May 12 10:01:18 dnsmasq[2427]: reply 0.openwrt.pool.ntp.org is 78.46.102.180
May 12 10:01:18 dnsmasq[2427]: reply 0.openwrt.pool.ntp.org is 193.182.111.143
May 12 10:01:18 dnsmasq[2427]: reply 0.openwrt.pool.ntp.org is 139.199.214.202
May 12 10:01:18 dnsmasq[2427]: reply 0.openwrt.pool.ntp.org is 5.79.108.34
May 12 10:01:18 dnsmasq[2427]: reply 0.openwrt.pool.ntp.org is NODATA-IPv6
May 12 10:02:20 dnsmasq[2427]: query[PTR] 254.67.16.172.in-addr.arpa from 127.0.0.1
May 12 10:02:20 dnsmasq[2427]: config 172.16.67.254 is NXDOMAIN
May 12 10:02:20 dnsmasq[2427]: query[PTR] 254.67.16.172.in-addr.arpa from 127.0.0.1
May 12 10:02:20 dnsmasq[2427]: config 172.16.67.254 is NXDOMAIN
May 12 10:02:20 dnsmasq[2427]: query[PTR] 254.67.16.172.in-addr.arpa from 127.0.0.1
May 12 10:02:20 dnsmasq[2427]: config 172.16.67.254 is NXDOMAIN
May 12 10:02:20 dnsmasq[2427]: query[PTR] 254.67.16.172.in-addr.arpa from 127.0.0.1
May 12 10:02:20 dnsmasq[2427]: config 172.16.67.254 is NXDOMAIN
May 12 10:02:20 dnsmasq[2427]: query[PTR] 254.67.16.172.in-addr.arpa from 127.0.0.1
May 12 10:02:20 dnsmasq[2427]: config 172.16.67.254 is NXDOMAIN
May 12 10:02:20 dnsmasq[2427]: query[PTR] 254.67.16.172.in-addr.arpa from 127.0.0.1
May 12 10:02:20 dnsmasq[2427]: config 172.16.67.254 is NXDOMAIN
May 12 10:02:20 dnsmasq[2427]: query[PTR] 254.67.16.172.in-addr.arpa from 127.0.0.1
May 12 10:02:20 dnsmasq[2427]: config 172.16.67.254 is NXDOMAIN
May 12 10:02:21 dnsmasq[2427]: query[PTR] 254.67.16.172.in-addr.arpa from 127.0.0.1
May 12 10:02:21 dnsmasq[2427]: config 172.16.67.254 is NXDOMAIN
May 12 10:02:21 dnsmasq[2427]: query[PTR] 254.67.16.172.in-addr.arpa from 127.0.0.1
May 12 10:02:21 dnsmasq[2427]: config 172.16.67.254 is NXDOMAIN
May 12 10:02:21 dnsmasq[2427]: query[PTR] 254.67.16.172.in-addr.arpa from 127.0.0.1
May 12 10:02:21 dnsmasq[2427]: config 172.16.67.254 is NXDOMAIN
May 12 10:02:21 dnsmasq[2427]: query[PTR] 254.67.16.172.in-addr.arpa from 127.0.0.1
May 12 10:02:21 dnsmasq[2427]: config 172.16.67.254 is NXDOMAIN
May 12 10:02:21 dnsmasq[2427]: query[PTR] 254.67.16.172.in-addr.arpa from 127.0.0.1
May 12 10:02:21 dnsmasq[2427]: config 172.16.67.254 is NXDOMAIN
May 12 10:02:21 dnsmasq[2427]: query[PTR] 254.67.16.172.in-addr.arpa from 127.0.0.1
May 12 10:02:21 dnsmasq[2427]: config 172.16.67.254 is NXDOMAIN
May 12 10:02:21 dnsmasq[2427]: query[PTR] 254.67.16.172.in-addr.arpa from 127.0.0.1
May 12 10:02:21 dnsmasq[2427]: config 172.16.67.254 is NXDOMAIN
May 12 10:02:22 dnsmasq[2427]: query[PTR] 254.67.16.172.in-addr.arpa from 127.0.0.1
May 12 10:02:22 dnsmasq[2427]: config 172.16.67.254 is NXDOMAIN
在我们的网关中,一直在发送172.16367.254的PTR请求?
原因是172.16.67.254没有对应的域名,导致DNSMAQS一直在发送改地址的发现DNS解析,才导致UPD系统的UDP会话异常增多,在/etc/hosts文件中增加如下记录后,UDP会话数量正常:
所以该问题不是网关问题,而是172.16.67.254没有合法域名问题。
DNS反向解析
DNS的正向解析是将域名转化为IP地址
DNS的反向解析式将IP地址转化为域名
DNS的正向解析简单的说就是先注册一个域名,然后将一个IP地址指向这个域名,这就叫做正向解析。
DNS反向解析,DNS服务器里有两个区域,即“正向查找区域”和“反向查找区域”,反向查找区域即是这里所说的IP反向解析,它的作用就是通过查询IP地址的PTR记录来得到该IP地址指向的域名,当然,要成功得到域名就必需要有该IP地址的PTR记录。
反向DNS的作用
反向DNS主要用于确保邮件交换记录的有效性,用于拦截邮件服务系统中的垃圾邮件。
一般情况下,垃圾邮件发送者使用动态分配的 IP 地址或者没有注册域名的 IP 地址来发送垃圾邮件,通过反向解析可以判断邮件的合法性。当邮件服务器收到邮件时,邮件服务器会查看邮件由哪个 IP 地址发出,然后根据这个 IP 地址进行反向解析,如果反向解析得到的域名与发送方邮件的域名不一致则认为邮件发送者不是从真正的邮件服务器发出,则可以拒绝接收此邮件。比如当 [email protected] 收到一份来自 [email protected] 的邮件时,qq邮件服务器会查看邮件来源的 IP,根据 IP 进行反向解析,如果解析到的域名和 163.com 一致,则接收邮件,否则认为邮件来源 IP 伪造成了163服务器 IP ,则拒绝这封邮件。
尽管 rDNS 记录可以阻止垃圾邮件,但主要用作额外保护,它不是一种可靠的方法。需要注意的是,仅启用 rDNS 仍可能由于各种原因导致消息被拒绝。此外,rDNS 还用于分析和日志记录,帮助提供人们可读的数据,而不是完全由 IP 地址组成的日志。
反向 DNS 查找过程
由于正向 DNS 将主机名映射到 IP 地址,因此 rDNS(或反向 DNS)表明将服务器 IP 地址映射回主机名。
使用 rDNS,将 IP 地址反转,然后将in-addr.arpa添加到末尾。
例如,如果我们使用 IPv4 地址 142.250.192.196,使用 rDNS,它将变为 196.192.250.142.in-addr.arpa
这种 IP 地址进行反向 DNS 解析的方法用到的是 PTR 记录。如果域有 PTR 记录。
增加自己的打印到串口中
如果源码自带的调试打印不能满足需求,需要增加自己的打印,直接打印到串口,命令如下:
dnsmasq --addn-host=/var/dnsmasq.hosts --no-daemon
此命令指定前台运行,如果要后台,需要增加&