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

DNSmasq使用总结相关推荐

  1. 最新dnsmasq安装部署详解(centos6)

    介绍Dnsmasq Dnsmasq是一个很实用的小工具,解决局域网的需求看来非常合适,特别是网关和防火墙上. 它同时也可以作为一个dns查询服务器,虽然不如bind等完善,但基本功能也够用了. 它可以 ...

  2. dnsmasq搭建简易DNS服务器

    一.dnsmasq简介 dnsmasq是一款小巧且方便地用于配置DNS服务器和DHCP服务器的工具,适用于小型网络,它提供了DNS解析功能和可选择的DHCP功能. dnsmasq可以解决小范围的dns ...

  3. dnsmasq详解手册

    Dnsmasq为小型网络提供网络基础设施:DNS,DHCP,路由器通告和网络引导.它被设计为轻量级且占用空间小,适用于资源受限的路由器和防火墙.它还被广泛用于智能手机和便携式热点的共享,并支持虚拟化框 ...

  4. 使用Dnsmasq加速苹果App Store、iCloud、iTunes、Mac更新等访问速度

    2019独角兽企业重金招聘Python工程师标准>>> 原理 苹果绝大多数服务都使用了CDN,用户发起DNS查询请求时,DNS服务器会根据上游DNS(即你请求的这个DNS)的地址返回 ...

  5. GPL/dnsmasq源代码分析, DNS 部分

    电信规范中要求了DNS解析及支持IPv4 DNS解析有支持IPv6 DNS地址解析,并且LAN PC使用IPv4 Packet请求DNS时, 网关设备DNS代理服务进程优先选用IPV4的DNS ser ...

  6. ChinaDNS 结合DNSMasq防dns挟持

    ChinaDNS 与 DNSMasq 结合起来用,使其更加稳定并且可以支持 TCP 查询,防止dns污染和挟持,DNSMasq 作为主 DNS 服务端,将 ChinaDNS 作为 DNSMasq 的上 ...

  7. ma5626如何进入web配置_如何给Dnsmasq提供一个Web配置界面?

    痛点 平时工作中,经常有同事让我修改Dnsmasq的配置文件(都怪我服务器权限太大),每次有这样的需求,都要放下手中的工作,登录服务器.修改配置文件.重启服务,有时一天有四五次,让我不胜其烦. 解决方 ...

  8. Openstack dnsmasq配置域名解析

    vi /etc/nova/nova.conf 在[DEFAULT]添加 dnsmasq_config_file=/etc/dnsmasq-nova.conf dns_server=8.8.8.8 vi ...

  9. 游戏安全资讯精选 2017年第十期 英国彩票网遭遇DDoS攻击,中断90分钟 DNSMASQ多高危漏洞公告 阿里云协助警方破获国内最大黑客攻击案,攻击峰值690G...

    [本周游戏行业DDoS攻击态势] 国庆期间,针对游戏行业的DDoS攻击放缓,攻击者也在放"小长假",10月8日超过500G的攻击可视作攻击猛烈度恢复的表现. [游戏安全动态] 英国 ...

  10. 35.6. /etc/dnsmasq.d/dnsmasq.address.conf

    vim /etc/dnsmasq.d/dnsmasq.address.confaddress=/www.mydomain.com/172.16.0.254 deny domain address=/w ...

最新文章

  1. MVC ---- DBHelper.ttinclude
  2. php遍历指定目录中的内容2
  3. MYSQL交通系统查询,城市公交查询系统的设计与实现(SSH,MySQL)(含录像)
  4. antiddos翻译_AntiDDoS8000系列DDoS防御系统
  5. win7 oracle启动监听,win7系统oracle监听服务无法打开的解决方法
  6. [Windows] Windows 8.1 取消在任务栏显示应用商店的应用
  7. 《Android 应用案例开发大全(第二版)》——6.1节Android系统的信使:Intent
  8. aftool刷工具提示15天_【15天】【指数600+】关键词百度首页【实战分析】【面授学员】...
  9. Facebook内布拉斯加州数据中心将扩建100万平方英尺
  10. 知识点滴 - 什么是量词
  11. smartadmin_smartadmin官网_smartadmin下载 bootstrap 后台模板 下载-很不错的后台模板
  12. N1刷armbian,安装cups(惠普打印机)
  13. wifi无线破解之跑pin最详细教程 2017
  14. 乐得瑞LDR6282B 支持双C口盲插便携显示器驱动板方案
  15. Pandas之skew,求偏度
  16. html utf 8编码转换器,utf8和gb2312编码在线转换工具
  17. 一些心理上的优势状态和劣势状态
  18. 如何将 bn.bing.com 重定向至 www.bing.com
  19. 数字集成电路设计(五、仿真验证与 Testbench 编写)(一)
  20. Unity安装配置Android环境 SDK,JDK,JIR

热门文章

  1. ISC 2022演讲回顾 | SOAR:为XDR扩展威胁检测响应提供响应解决方案
  2. 俄罗斯成功断开全球互联网背后,电力物联网已成为大国斗争“新战场”!
  3. 苏宁易购正在快速回归稳健发展轨道
  4. 阿里云混合云管理平台多Region架构
  5. AI绘画:快速上手stable diffusion
  6. 张高兴的 Windows 10 IoT 开发笔记:DHT11 温湿度传感器
  7. SQL server数据库监控
  8. SQLAlchemy Async
  9. 将古老的学问带入科技时代
  10. Transitions的动画功能