DNSmasq使用总结

Dnsmasq是一个开源的项目,可以在thekelleys上找到最新版本和源码,它能提供 DNS 、DHCP、TFTP、PXE 等功能。Dnsmasq 的 DNS 服务工作原理是当接收到一个 DNS 请求时Dnsmasq 首先会查找/etc/hosts文件,如果没有查找到,会查询本地 DNS 缓存记录,如果还是未找到对应的记录,则会将请求装发到 /etc/resolv.conf 文件中定义的上游 DNS 服务器中,从而实现对域名的解析。
基于上述原理,我们可以在 /etc/hosts 文件中添加本地内网的域名解析,从而实现本地内网的域名解析。同时我们还可以使用 Dnsmasq 来为一些特定的域名指定 DNS 服务器,或者阻止某些域名的访问。由于 Dnsmasq 会缓存上游 DNS 服务的查询记录,从而可以提高访问过的网址的连接速度。
默认情况下,Dnsmasq 会从 /etc/dnsmasq.conf 读取配置项,我们也可以使用 -C 的启动参数来指定配置文件。下面介绍一下常用的 DNS 和 DHCP 服务的配置参数:

1./etc/hosts 简介
hosts —the static table lookup for host name(主机名查询静态表)
hosts文件是Linux系统上一个负责ip地址与域名快速解析的文件,以ascii格式保存在/etc/目录下。hosts文件包含了ip地址与主机名之间的映射,还包括主机的别名。在没有域名解析服务器的情况下,系统上的所有网络程序都通过查询该文件来解析对应于某个主机名的ip地址,否则就需要使用dns服务程序来解决。通过可以将常用的域名和ip地址映射加入到hosts文件中,实现快速方便的访问
优先级 : dns缓存 > hosts > dns服务
A.hosts格式配置
a. ip地址 主机名/域名 (主机别名)
b. ip地址 主机名/域名
例:

B.主机名和域名的区别在于:
主机名通常在局域网内使用,通过hosts文件,主机名就被解析到对应的ip。在一个局域网中,每台机器都有一个主机名,用于区分主机,便于相互访问。Linux主机名的相关配置文件就是/etc/hosts;这个文件告诉本主机哪些域名对应那些ip,那些主机名对应哪些ip。
域名通常在internet上使用,但是优先级低于hosts文件中内容,因此如果你不想使用internet上的域名解析,可以更改自己的hosts文件,加入自己的域名解析。
C.hosts文件作用
一个主要的作用是:线下环境模拟,通信双方在同一个局域网内想通过internet上的域名相互访问,则只需要修改自己的/etc/hosts文件内容即可。
在这里插入图片描述
在这里插入图片描述

2./etc/dnsmasq.conf
#Dnsmasq cfg
#指定文件的路径须存在,否则会导致服务启动失败!!!
#查看配置文件语法是否正确,可执行命令 dnsmasq --test

#监听的端口,dns默认53端口,如果设置为0,则完全禁止DNS功能
port=53

#server 指定dnsmasq程序使用哪个DNS服务器进行解析,对于不同的网站可以使用不同的
#域名对应解析如下配置
server=/ti.gwm.com.cn/10.255.60.20

#指定domain的IP地址
address=/ti.gwm.com.cn/10.255.60.200

#定义dnsmasq从哪里获取上游DNS服务器的地址,默认是从/etc/resolv.conf获取
#这个是很有用的东西,因为你要做自定义dns控制的话,最好单独独立一份
#dns服务器地址清单,系统默认的/etc/resolv.conf是会变化的,尤其是新
#版本的linux系统会跟随网卡配置变化或者其他网络管理套件变化,为了可
#靠性,单独独立一份出来管理,所以需要打开这个配置
resolv-file=/var/run/dnsmasq.resolv.conf

#strict-order 表示严格按照resolv-file文件中的顺序从上到下进行DNS解析,
#直到第一个解析成功为止.
strict-order

#不使用上游nameserver配置文件(/etc/resolv.conf和resolv-file)
#no-resolv

#当/etc/resolv.conf或resolv-file文件变化,不重新加载
#no-poll

#不使用/etc/hosts,开启后expand-hosts不生效
#no-hosts

#支持一个域名对应多个IP,就必须使用 addn-hosts 选项了
#addn-hosts=/etc/dnsmasq.d/dnsmasq.host.conf

#指定监听某个接口,例如某张网卡
#interface=eth0

#指定服务不在以下网卡上运行
#except-interface=eth0

#绑定了网卡之后会保证dnsmasq不去骚扰其他网卡,保证请求不乱发,一般跟
#interface一起使用
#bind-interfaces

#这个是重要选项,监听地址,要写上ip地址加上127.0.1.1,因为IP地址是给你
#的client机用的,127.0.1.1是给dnsmasq用的,为什么呢,是因为你要做dns缓
#存,要访问自己即是本机,格式就是ip,127.0.1.1
#如果想允许所有的用户使用你的DNS解析服务器,把listen-address去掉即可
#指定监听的 IP 地址,多个 IP 地址可用 , 分割(默认是监听所有网卡)
#做DNS缓存服务器,上游/etc/resolv.conf要使用此缓存服务器作为DNS服务器
#listen-address=
listen-address=127.0.1.1

#记录日志,如果打开日志,要及时清理
log-queries
log-facility=/var/log/dnsmasq.log

#启用异步日志记录,缓解阻塞提高性能.默认队列长度为5,合理值为5-25,最大限制为100
log-async=20

#DNS缓存地址数目,提高速
cache-size=10000

#自动加载目录配置
#conf-dir=/etc/dnsmasq.d
conf-file=/var/run/dnsmasq.intranet.conf

3./etc/dnsmasq.host.conf
支持一个域名对应多个IP,就必须使用 addn-hosts 选项了
在这里插入图片描述
4.TFTP 复位配置参数
#对于绝大多数的配置,仅需指定 enable-tftp 和 tftp-root 选项即可。
#是否启用内置的 tftp 服务器,可以指定多个逗号分隔的网络接口
#enable-tftp[=[,]]
#enable-tftp
#enable-tftp=enp3s0,lo
#指定 tftp 的根目录,也就是寻找传输文件时使用的相对路径,可以附加接口,
#tftp-root=[,]
#tftp-root=/var/lib/tftpboot/
#如果取消注释,那么即使指定的 tftp-root 无法访问,仍然启动 tftp 服务。
#tftp-no-fail
#附加客户端的 IP 地址作为文件路径。此选项仅在正确设置了 tftp-root 的情况下可用,
#示例:如果 tftp-root=/tftp,客户端为 192.168.1.15 请求 myfile.txt 文件时,
#将优先请求 /tftp/192.168.1.15/myfile.txt 文件, 其次是 /tftp/myfile.txt 文件。
#感觉没什么用。
#tftp-unique-root
#启用安全模式,启用此选项,仅允许 tftp 进程访问属主为自己的文件。
#不启用此选项,允许访问所有 tftp 进程属主可读取的文件。
#如果 dnsmasq 是以 root 用户运行,tftp-secure 选项将允许访问全局可读的文件。
#一般情况下不推荐以 root 用户运行 dnsmasq。
#在指定了 tftp-root 的情况下并不是很重要。
#tftp-secure
#将所有文件请求转换为小写。对于 Windows 客户端来说非常有用,建议开启此项。
#注意:dnsmasq 的 TFTP 服务器总是将文件路径中的“\”转换为“/”。
#tftp-lowercase
#允许最大的连接数,默认为 50 。
#如果将连接数设置的很大,需注意每个进程的最大文件描述符限制,详见文档手册。
#tftp-max=
#tftp-max=50
#设置传输时的 MTU 值,建议不设置或按需设置。
#如果设定的值大于网络接口的 MTU 值,将按照网络接口的 MTU 值自动分片传输(不推荐)。
#tftp-mtu=
#停止 tftp 服务器与客户端协商 “blocksize” 选项。启用后,防止一些古怪的客户端出问题。
#tftp-no-blocksize
#指定 tftp 的连接端口的范围,方便防火墙部署。
#tftp 侦听在 69/udp ,连接端口默认是由系统自动分配的,
#非 root 用户运行时指定的连接端口号需大于 1025 最大 65535。
#tftp-port-range=,
###############################################################################
#conf-dir=[,…]
#conf-file=/etc/dnsmasq.more.conf
conf-dir=/etc/dnsmasq.d
#servers-file=

5.DHCP 服务配置参数
#指定分配的 IP 端和续约时间
dhcp-range=192.168.1.50,192.168.1.100,12h
#同上,指定了子网掩码
dhcp-range=192.168.8.50,192.168.8.150,255.255.255.0,12h
#指定网关地址
dhcp-option=3,192.168.0.1
#指定 DNS 服务器,net:eth1 用来指定网卡
dhcp-option=net:eth1,6,114.114.114.114,8.8.8.8
dhcp-option=net:wlano,6,114.114.114.114,8.8.8.8
#DHCP 所在的 domain
domain=gz.cvte.com
#静态地址绑定
dhcp-host=00:0C:29:5E:F2:6F,192.168.1.201,os02
dhcp-host=00:0C:29:15:63:CF,192.168.1.202,os03
#忽略一下 MAC 地址主机的请求
dhcp-host=11:22:33:44:55:66,ignore
#租期保存文件
dhcp-leasefile=/var/lib/dnsmasq/dnsmasq.leases

dhcp-option 常用取值及含义

opt 作用
1: 设置子网掩码选项
3: 设置网关地址选项
6: 设置DNS服务器地址选项
12: 设置域名选项
15: 设置域名后缀选项
33: 设置静态路由选项。该选项中包含一组有分类静态路由(即目的地址的掩码固定为自然掩码,不能划分子网),客户端收到该选项后,将在路由表中添加这些静态路由。如果存在Option121,则忽略该选项
44: 设置NetBios服务器选项
46: 设置NetBios节点类型选项
50: 设置请求IP选项
51: 设置IP地址租约时间选项
52: 设置Option附加选项
53: 设置DHCP消息类型
54: 设置服务器标识
55: 设置请求参数列表选项。客户端利用该选项指明需要从服务器获取哪些网络配置参数。该选项内容为客户端请求的参数对应的选项值
58: 设置续约T1时间,一般是租期时间的50%
59: 设置续约T2时间。一般是租期时间的87.5%
60: 设置厂商分类信息选项,用于标识DHCP客户端的类型和配置
61: 设置客户端标识选项
66: 设置TFTP服务器名选项,用来指定为客户端分配的TFTP服务器的域名
67: 设置启动文件名选项,用来指定为客户端分配的启动文件名
77: 设置用户类型标识
121: 设置无分类路由选项。该选项中包含一组无分类静态路由(即目的地址的掩码为任意值,可以通过掩码来划分子网),客户端收到该选项后,将在路由表中添加这些静态路由
148: EasyDeploy中Commander的IP地址
149: SFTP和FTPS服务器的IP地址
150: 设置TFTP服务器地址选项,指定为客户端分配的TFTP服务器的地址

6.测试
1.DNS 缓存
测试查询速度,请访问一个 dnsmasq 启动后没有访问过的网站:

dig www.alibaba.com| grep “Query time” 在这里插入图片描述
再次运行命令,因为使用了缓存,查询时间应该大大缩短
2.查看DNSMASQ启动状态
netstat -tunlp |grep 53
在这里插入图片描述
3.多个 Dnsmasq
静态:要让每个 interface 有独立的 dnsmasq,用 interface 和 bind-interface 选项来实现。
动态:像下面这样可以指定排除某个 interface,而其他的 interface 将会拥有各自的 dnsmasq。
except-interface=lo
bind-dynamic

  • 0
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值