OpenWrt之dnsmasq工具(DHCP、TFTP、DNS缓存服务器)

OpenWrt之dnsmasq工具(DHCP、TFTP、DNS缓存服务器)

介绍

  • 智能路由器服务于家庭和小型企业网络,当多个人同时上网时,客户机经常进行DNS查询,大多查询会是重复的域名,如果有一个 DNS缓存代理 服务于局域网,这样将减少DNS的因特网存取, 加快DNS访问速度和节省网络流量 ,dnsmasq软件就是这样应运而生的。
  • dnsmasq是轻量级DHCP、TFTP和DNS缓存服务器, 给小型网络提供DNS和DHCP服务 。它的设计目标是轻量级的DNS,并且 占用空间小 ,适用于资源受限的路由器和防火墙,以及智能手机、便携式热点设备等
  • 工作原理: dnsmasq接收DNS请求,并从本地缓存中读取,如果缓存不存在就转发到一个真正的递归 DNS 服务器。它也可以读取/etc/hosts的内容,这样就可以对局域网的主机查询进行DNS查询响应,这些局域网的主机名称不会暴露在全局DNS域中

本地DNS服务器

  • DNS子系统提供网络的本地DNS服务器,即只服务于局域网的DNS服务器。转发所有类型的查询请求到上游递归DNS服务器,并且缓存通用记录类型(A、AAAA、CNAME 和 PTR)。
  • 支持的主要特性有以下几方面:
  • 本地DNS服务器可以通过读取/etc/hosts来定义,或者通过导入DHCP子系统的名字,或者通过各种各样的用户配置
  • 上行服务器可以各种遍历的配置,包括动态配置
  • 认证DNS模式允许本地DNS名称导出到全球DNS区域。dnsmasq作为这个区域的认证服务器,也可以提供区域传送
  • 从上游服务器DNS响应执行DNSSEC验证,防止欺骗和缓存中毒
  • 指定子域名可以继承自它们的上行 DNS 服务器,这样使VPN配置更容易
  • 国际化域名支持等

dnsmasq配置文件(/etc/config/dhcp)

  • dnsmasq配置文件位于 /etc/config/dhcp控制着DNS和DHCP服务选项。默认配置包含一个通用的配置节来指定全局选项,还有一个或多个DHCP来定义动态主机配置服务的网络接口和地址池等。还可以包含多个域名和主机配置,并且提供客户端地址列表来查询。
#cat /etc/config/dhcp
config dnsmasq
        option domainneeded '1'
        option boguspriv '1'
        option filterwin2k '0'
        option localise_queries '1'
        option rebind_protection '1'
        option rebind_localhost '1'
        option local '/lan/'
        option domain 'lan'
        option expandhosts '1'
        option nonegcache '0'
        option authoritative '1'
        option readethers '1'
        option leasefile '/tmp/dhcp.leases'
        option resolvfile '/tmp/resolv.conf.d/resolv.conf.auto'
        option nonwildcard '1'
        option localservice '1'
        option filter_aaaa '1'

config dhcp 'lan'
        option interface 'lan'
        option start '100'
        option limit '150'
        option leasetime '12h'
        option dhcpv6 'server'
        option ra 'server'
        option ra_slaac '1'
        list ra_flags 'managed-config'
        list ra_flags 'other-config'

config dhcp 'wan'
        option interface 'wan'
        option ignore '1'

config odhcpd 'odhcpd'
        option maindhcp '0'
        option leasefile '/tmp/hosts/odhcpd'
        option leasetrigger '/usr/sbin/odhcpd-update'
        option loglevel '4'

  • local和domain选项使得dnsmasq使用/etc/hosts文件里的条目定义来提供解析,如果DHCP配置了lan的域,那么获得地址的客户机也可以通过主机名解析。
  • domainneeded、 boguspriv、localise_qureies、以及expandhosts选项,保证了本地域名的请求,不会转发到上游域名解析服务器上。
  • authoritative选项保证了路由器成为本网络上的唯一一台DHCP服务器;客户机可以更快的获取IP地址的配置。
  • leasefile文件用于保存租约内容,这样如果dnsmasq如果重启的话就可以根据该文件重新维护租约信息。
  • resolvfile定义了dnsmasq使用的文件,该文件用于找到上游服务器,通常由WAN DHCP客户端和PPP客户端创建。
  • enable_tftp打开tftp服务,而tftp_root定义了TFTP服务器的文件根目录。你可以在客户端访问tftp服务器时,需要指定IP。在客户机,通过设定环境变量serverip来定义(e.g. setenv serverip 192.168.1.10)。
  • rebind_protection :通过丢弃上游RFC1918响应来启用DNS重新绑定攻击保护
  • rebind_localhost : 允许上游127.0.0.0/8响应(基于DNS的黑名单服务所需)仅在启用重新绑定保护时生效
  • nonegcache: 禁止缓存否定的“没有这样的域”响应
  • filterwin2k:不要转发公共名称服务器无法响应的请求。如果需要解析SRV记录或使用SIP电话,请确保禁用该功能。
  • readethers:从“/etc/ethers”读取静态租约条目,在SIGHUP上重新读取
  • nonwildcard:只绑定已配置的接口地址,而不是通配符地址。
  • localservice:仅接受来自地址位于本地子网(即服务器上存在接口的子网)的主机的DNS查询。

全局配置

  • 下图所示的是dnsmasq的所有配置选项:
名 称转换后配置含 义 描 述
domainneededdomain-needed不会转发针对不带点的普通文本的A 或AAAA 查询请求到上行的域名 服务器。如果在/etc/hosts 和DHCP 中没有该名称将直接返回“not found”
cachesizecache-size指定缓存的大小。默认是 150
bogusprivbogus-priv所有私有查找如果在/etc/hosts 没找到,将不转发到上行 DNS 服务器
filterwin2kfilterwin2k不转发公共域名不能应答的请求
localise_querieslocalise-queries如果有多个接口,则返回从查询接口来的接口网络的主机 IP 地址。 在同一主机有多个 IP 地址时非常有用,返回查询网段的 IP 地址, 这样源主机和目标主机通信是将不会跨越路由器
rebind_protectionstop-dns-rebind上游域名服务器带有私有 IP 地址范围的响应报文将被丢弃
rebind_localhostrebind-localhost-ok允许上游域名服务器的 127.0.0.0/8 响应, 这是采用 DNS 黑名单时所 需的服务, 这在绑定保护启用时使用
expandhostsexpand-hosts在/etc/hosts 中的名称增加本地域名部分
nonegcacheno-negcache在通常情况下,“no such domain”也会缓存,下次查询时不再转发 到上游服务器而直接应答,这个选项将禁用“no such domain”返回 的缓存
authoritativedhcp-authoritative我们是局域网的唯一的 DHCP 服务器,当收到请求后会立即响应, 而不会等待,如果拒绝的话也会很快拒绝
readethersread-ethers从/etc/ethers 文件中读取静态分配的表项。格式为硬件地址和主机名 或 IP 地址,当收到 SIGHUP 信号时也会重新读取
resolvfileresolv-file指定一个 DNS 配置文件来读取上游域名服务器的地址,默认是从 /etc/resolv.conf 文件读取

DHCP地址池配置

  • 类型为dhcp的配置节指定了每一个接口的DHCP设置,通常最少有一个服务于局域网接口的dhcp配置设置
  • 配置选项如下:
名 称含 义
interface表示服务的网络接口,这个接口名称是 network 中配置的虚拟接口
start分配 IP 的起始地址
limit地址空间范围,默认为 150
leasetimeDHCP 分配IP 地址的租期, start 和limit 在生成dnsmasq 的配置文件时进行组合为dhcp-range
ignorednsmasq 将忽略从该接口来的请求

例如:

config dhcp lan
    option interface lan	#指定了DHCP服务器的服务接口“lan”
    option start 100		#start:100 是客户端分配的IP地址起点 
    option limit 150		#limit: 150 总共可以分配150个IP 地址
    option leasetime 12h	#12h 表示客户端得到的地址租约时间为 12 小时

域名配置

  • dnsmasq 支持自定义主机或者是自定义域名,使用 domain 配置节来管理自定义域名
  • 配置选项如下:
名 称类 型含 义
name字符串主机的域名,这个域名将不在因特网上查询
ipIP 地址域名对应的 IP 地址

例如:

  • 第一步:我们使用uci命令来增加两条自定义域名记录。首先创建一个类型为domain匿名的配置节, 然后设置其名称和 IP 地址
uci add dhcp host
uci set dhcp.@host[-1].ip = "192.168.6.120"
uci set dhcp.@host[-1].mac=" 08:00:27:9d:89:e7"
uci set dhcp.@host[-1].name="buildServer"
uci commit dhcp
  • 第二步:记录被写到/etc/config/dhcp 文件中,但现在功能并未生效。调用重启 dnsmasq 进程命 令来使 dnsmasq 读取这些配置更改

/etc/init.d/dnsmasq restart

  • 第三步:实际的配置将转换为 dnsmasq 的配置,配置文件为/var/etc/dnsmasq.conf,生效后内容如下:
config host
    option ip '192.168.6.120'
    option mac ' 08:00:27:9d:89:e7'
    option name 'buildServer
  • 第四步:然后在 OpenWrt shell 中 ping 主机名称 bjbook.net。这时将访问 192.168.6.20 这个 IP 地址,并从 192.168.6.20 收到响应。这和主机系统的功能完全相同,只是在/etc/hosts 文件 中只在本机生效,如果加载这里就可以服务于家庭网

主机配置

  • DHCP 在分配 IP 时,选择一个未使用的 IP 地址进行分配。假定有一个服务器,也是 通过 DHCP 进行 IP 分配的,这样每次重启后分配的 IP 地址可能发生改变,这在访问服务 器时还需查看其 IP 地址。根据 MAC 地址分配固定 IP 地址可以解决这个问题。在 DHCP 配置文件中使用 host 来配置
  • 配置选项如下:
名 称类 型含 义
ip字符串客户端所获得的 IP 地址
mac字符串主机的网卡 MAC 地址
name字符串DHCP 客户端所获取到的主机名称,是否使用由客户端决策

DHCP客户端信息

  • DHCP 还有一个功能是记录客户端列表。客户端列表显示当前所有通过 DHCP 服务器 获得 IP 地址主机的相关信息,包括客户端主机名称、MAC 地址、所获得的 IP 地址及 IP 地址的有效期。如下列出了所有保存字段的含义,我们可以通过/tmp/dhcp.leases 文件来 查看所有通过 DHCP 服务器获得 IP 地址的计算机信息
  • 配置选项如下:
类 别含 义
有效时间(租期)指客户端计算机获得 IP 地址的有效时间,是指从 1970 年开始的一个秒值,到 这个时间之后地址将失效,客户端软件会在租期到期前自动续约
MAC 地址获得 IP 地址的客户端计算机的 MAC 地址
IP 地址DHCP 服务器分配给客户端计算机的 IP 地址
客户端名称显示获得 IP 地址的客户端计算机的主机名称
  • 3
    点赞
  • 21
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值