CentOS 7 部署 dnsmasq
(1)概述
在本博客中,将介绍如何在CentOS 7上部署和配置dnsmasq,一个轻量级的DNS和DHCP服务器。dnsmasq可以用于本地域名解析、网络地址分配和DNS缓存等功能。
(2)dnsmasq的解析流程
dnsmasq的解析流程如下:
- 首先,不管是pc还是服务器都是会解析
hosts
文件,其中包含了一些自定义的域名和IP地址的映射关系。 - 然后,dnsmasq会解析
/etc/dnsmasq.d/
目录下的*.conf
文件,这些文件中可以定义更多的域名解析规则,这些规则的优先级高于dnsmasq.conf
文件。 - 如果以上解析步骤都没有找到对应的解析结果,dnsmasq会查询上游DNS服务器,即在
resolv.dnsmasq.conf
文件中定义的DNS服务器。
如果你不想使用hosts
文件进行解析,可以在/etc/dnsmasq.conf
中添加no-hosts
语句,这样dnsmasq将直接查询上游DNS服务器。同样,如果你不想进行上游查询,可以添加no-resolv
语句。
(3)重要参数说明
下面是一些经常修改的重要参数说明:
参数 | 说明 |
---|---|
resolv-file | 定义dnsmasq从哪里获取上游DNS服务器的地址,默认从/etc/resolv.conf 获取。 |
strict-order | 表示严格按照resolv-file 文件中的顺序从上到下进行DNS解析,直到第一个解析成功为止。 |
listen-address | 定义dnsmasq监听的地址,默认是监控本机的所有网卡上。 |
address | 启用泛域名解析,即自定义解析A记录。例如:address=/long.com/192.168.115.10 ,访问long.com 时的所有域名都会被解析成192.168.115.10 。 |
bogus-nxdomain | 对于任何被解析到此IP的域名,将响应NXDOMAIN使其解析失效。可以多次指定,通常用于对于访问不存在的域名,禁止其跳转到运营商的广告站点。 |
server | 指定使用哪个DNS服务器进行解析,对于不同的网站可以使用不同的域名对应解析。例如:server=/google.com/8.8.8.8 表示对于google.com 的服务,使用谷歌的DNS解析。 |
(4)部署dnsmasq
以下是在CentOS 7上安装和配置dnsmasq的示例步骤:
-
安装dnsmasq:
yum install -y dnsmasq
-
修改dnsmasq配置文件
/etc/dnsmasq.conf
:vi /etc/dnsmasq.conf
在配置文件中添加以下内容:
strict-order cache-size=10000 resolv-file=/etc/resolv.dnsmasq.conf addn-hosts=/etc/dnsmasq/hosts listen-address=10.0.0.35 log-facility=/data/dnsmasq_log/dnsmasq.log
-
创建dnsmasq的
hosts
文件:cp /etc/hosts /etc/dnsmasq/hosts
-
修改网卡的DNS配置文件(例如
ifcfg-eth0
):vi /etc/sysconfig/network-scripts/ifcfg-eth0
在配置文件中添加以下内容:
DNS1=223.5.5.5 DNS2=8.8.8.8
-
填写上游DNS服务器IP:
vim /etc/resolv.dnsmasq.conf
在文件中添加以下内容:
nameserver 8.8.8.8 nameserver 223.5.5.5
-
启动dnsmasq服务:
systemctl enable dnsmasq systemctl start dnsmasq systemctl stop dnsmasq
-
验证配置是否生效:
dig www.baidu.com
如果配置生效,将会返回与
www.baidu.com
相关的DNS解析结果。 -
或者使用pc客户端,配置dns服务器IP为DNS尝试解析
(5)其他内容
cache-size
:设置dnsmasq的DNS缓存条目数量,默认为150条。可以通过设置为0来禁用缓存。dns-forward-max
:指定DNS同属查询转发的最大数量。address
:除了用于解析A记录之外,还可以用于解析CNAME、MX、NS等记录类型。bogus-nxdomain
:可以用于阻止某些域名被解析到特定的IP地址,从而使其解析失效。server
:可以根据不同的域名指定不同的DNS服务器进行解析,这样可以实现灵活的解析策略。
(6)域名劫持
hosts
文件除了用于本地域名解析外,还可以用于域名劫持。
什么是域名劫持?
域名劫持是指将特定域名解析到指定的IP地址,从而实现对该域名的控制。
通过在hosts
文件中添加域名和IP地址的映射关系,可以将特定域名解析到指定的IP地址,而不是通过DNS服务器进行解析。这样可以实现对该域名的劫持,将用户的访问重定向到指定的IP地址上。
域名劫持通常用于以下情况:
- 广告屏蔽:可以将广告域名解析到一个不存在的IP地址上,从而屏蔽广告内容。
- 网络安全:可以将恶意域名解析到一个安全的IP地址上,阻止恶意软件的访问。
- 内部测试:可以将域名解析到内部测试服务器上,用于开发和测试目的。
例如,假设我们想将内网的某个服务通过域名,映射在dnsmasq服务器上,域名为www.joshzhong.com
劫持到IP地址192.168.1.100
,可以在hosts
文件中添加以下条目:
192.168.31.100 www.joshzhong.com
内网终端配置dnsmasq服务器IP为dns服务器,那么当用户访问www.joshzhong.com
时,系统会首先检查访问dnsmasq的hosts
文件,发现了对应的映射关系,就直接将其解析为192.168.31.100
,而不会向DNS服务器发起解析请求。
(7)dns污染验证
1、获取dig和nc工具
要在CentOS上获取dig和nc工具,可以使用以下命令进行安装:
# 安装dig工具
yum -y install bind-utils
# 安装nc工具
yum -y install nc
以上命令将通过yum包管理器安装所需的工具。
2、验证DNS污染
一旦安装了dig和nc工具,你可以使用它们来验证DNS是否被污染。下面是一些示例命令:
# 通过114解析google域名
dig google.com @114.114.114.114 +short
# 检测IP是否属于Google
echo -e 'begin\n142.251.42.238\nend' | nc bgp.tools 43
第一个命令使用dig工具以114.114.114.114为DNS服务器解析google.com域名,并显示结果。
第二个命令使用nc工具连接到bgp.tools的43端口,并发送IP地址。这将返回与该IP地址相关的网络信息,包括运营商。
如果第二个命令返回的运营商不是"Google LLC",则可以判断DNS被污染。
通过使用这些工具,你可以验证DNS是否被污染,并采取相应的措施来解决问题。
(8)dnsmasq优化
记录一下,之前通过设置不同地域的dns,来针对不同业务进行访问,确实又起到加速作用。
如果你使用国内的VPS来搭建本地DNS服务器,可以提高DNS响应速度并增加稳定性。以下是修改DNS配置和网络设置的步骤,以下通过内网10.0.0.35为例。请注意,这些配置仅供参考:
- 修改网卡配置:打开网卡配置文件进行编辑。
vi /etc/sysconfig/network-scripts/ifcfg-em2
- 修改上游DNS配置:打开resolv.conf文件进行编辑。
vi /etc/resolv.conf
在文件中添加以下内容:
nameserver 8.8.8.8
nameserver 223.5.5.5
nameserver 8.8.4.4
请按照这个顺序进行配置,以测试国内速度是否提升。
- 修改dnsmasq配置:打开dnsmasq.conf文件进行编辑。
vi /etc/dnsmasq.conf
根据你的需求,对文件进行相应的修改。
- 修改hosts文件:打开hosts文件进行编辑。
vi /etc/dnsmasq/hosts
根据你的需求,对文件进行相应的修改。例如,你可以将10.0.0.30的hosts文件复制到10.0.0.35,并重启dnsmasq服务,以实现对Google的正常访问。
-
修改ROS策略:在ROS的IP防火墙策略中,打开DNS服务器的IP设置。例如,国内流量走fenliu2,国外流量走fenliu10(SDWAN)。
-
验证:通过访问网站http://ip111.cn/进行验证。
当DNS解析正常时,将显示从Google测试获取的IP地址。如果测试不正常,可能会显示空白,并且无法打开google.com。
请根据你的具体需求和环境进行相应的配置和验证,以上内容仅供参考。
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!