当前位置: 首页 > news >正文

CentOS 7 部署 dnsmasq

文章目录

      • (1)概述
      • (2)dnsmasq的解析流程
      • (3)重要参数说明
      • (4)部署dnsmasq
      • (5)其他内容
      • (6)域名劫持
      • (7)dns污染验证
      • (8)dnsmasq优化

(1)概述

在本博客中,将介绍如何在CentOS 7上部署和配置dnsmasq,一个轻量级的DNS和DHCP服务器。dnsmasq可以用于本地域名解析、网络地址分配和DNS缓存等功能。

(2)dnsmasq的解析流程

dnsmasq的解析流程如下:

  1. 首先,不管是pc还是服务器都是会解析hosts文件,其中包含了一些自定义的域名和IP地址的映射关系。
  2. 然后,dnsmasq会解析/etc/dnsmasq.d/目录下的*.conf文件,这些文件中可以定义更多的域名解析规则,这些规则的优先级高于dnsmasq.conf文件。
  3. 如果以上解析步骤都没有找到对应的解析结果,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的示例步骤:

  1. 安装dnsmasq:

    yum install -y dnsmasq
    
  2. 修改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
    
  3. 创建dnsmasq的hosts文件:

    cp /etc/hosts /etc/dnsmasq/hosts
    
  4. 修改网卡的DNS配置文件(例如ifcfg-eth0):

    vi /etc/sysconfig/network-scripts/ifcfg-eth0
    

    在配置文件中添加以下内容:

    DNS1=223.5.5.5
    DNS2=8.8.8.8
    
  5. 填写上游DNS服务器IP:

    vim /etc/resolv.dnsmasq.conf
    

    在文件中添加以下内容:

    nameserver 8.8.8.8
    nameserver 223.5.5.5
    
  6. 启动dnsmasq服务:

    systemctl enable dnsmasq
    systemctl start dnsmasq
    systemctl stop dnsmasq
    
  7. 验证配置是否生效:

    dig www.baidu.com
    

    如果配置生效,将会返回与www.baidu.com相关的DNS解析结果。

  8. 或者使用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地址上。

域名劫持通常用于以下情况:

  1. 广告屏蔽:可以将广告域名解析到一个不存在的IP地址上,从而屏蔽广告内容。
  2. 网络安全:可以将恶意域名解析到一个安全的IP地址上,阻止恶意软件的访问。
  3. 内部测试:可以将域名解析到内部测试服务器上,用于开发和测试目的。

例如,假设我们想将内网的某个服务通过域名,映射在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为例。请注意,这些配置仅供参考:

  1. 修改网卡配置:打开网卡配置文件进行编辑。
vi /etc/sysconfig/network-scripts/ifcfg-em2
  1. 修改上游DNS配置:打开resolv.conf文件进行编辑。
vi /etc/resolv.conf

在文件中添加以下内容:

nameserver 8.8.8.8
nameserver 223.5.5.5
nameserver 8.8.4.4

请按照这个顺序进行配置,以测试国内速度是否提升。

  1. 修改dnsmasq配置:打开dnsmasq.conf文件进行编辑。
vi /etc/dnsmasq.conf

根据你的需求,对文件进行相应的修改。

  1. 修改hosts文件:打开hosts文件进行编辑。
vi /etc/dnsmasq/hosts

根据你的需求,对文件进行相应的修改。例如,你可以将10.0.0.30的hosts文件复制到10.0.0.35,并重启dnsmasq服务,以实现对Google的正常访问。

  1. 修改ROS策略:在ROS的IP防火墙策略中,打开DNS服务器的IP设置。例如,国内流量走fenliu2,国外流量走fenliu10(SDWAN)。

  2. 验证:通过访问网站http://ip111.cn/进行验证。

当DNS解析正常时,将显示从Google测试获取的IP地址。如果测试不正常,可能会显示空白,并且无法打开google.com。

请根据你的具体需求和环境进行相应的配置和验证,以上内容仅供参考。

相关文章:

  • jpa 修改信息拦截
  • 信息学奥赛一本通 第二章 顺序结构程序设计 第一、二节C语言非C++
  • 【网络编程】-- 04 UDP
  • Windows mysql5.7 执行查询/开启/测试binlog---简易记录
  • 阿木实验室普罗米修斯项目环境配置
  • Centos7部署SVN
  • 基于CNN+数据增强+残差网络Resnet50的少样本高准确度猫咪种类识别—深度学习算法应用(含全部工程源码)+数据集+模型(六)
  • 通过css3的锚定滚动属性,实现分页加载时让滚动条不闪动
  • 【Spring Boot】快速入门
  • Modbus转Profinet网关使用方法
  • 100天精通风控建模(原理+Python实现)——第10天:风控建模中主成分析是什么?怎么实现?
  • 2023-12-14 二叉树的最大深度和二叉树的最小深度以及完全二叉树的节点个数
  • uniapp组件map地图组件使用
  • Linux(操作系统)面经——part2
  • 如何安装LUT预设?达芬奇/FCP/PR怎么安装LUT预设.cube格式文件的教程
  • 《深入 React 技术栈》
  • JavaScript服务器推送技术之 WebSocket
  • Javascript设计模式学习之Observer(观察者)模式
  • Linux gpio口使用方法
  • Map集合、散列表、红黑树介绍
  • nginx 负载服务器优化
  • select2 取值 遍历 设置默认值
  • SpingCloudBus整合RabbitMQ
  • 工作中总结前端开发流程--vue项目
  • 如何借助 NoSQL 提高 JPA 应用性能
  • 吴恩达Deep Learning课程练习题参考答案——R语言版
  • 一些关于Rust在2019年的思考
  • [地铁译]使用SSD缓存应用数据——Moneta项目: 低成本优化的下一代EVCache ...
  • 树莓派用上kodexplorer也能玩成私有网盘
  • ###STL(标准模板库)
  • #[Composer学习笔记]Part1:安装composer并通过composer创建一个项目
  • #if 1...#endif
  • (4)Elastix图像配准:3D图像
  • (Spark3.2.0)Spark SQL 初探: 使用大数据分析2000万KF数据
  • (zz)子曾经曰过:先有司,赦小过,举贤才
  • (独孤九剑)--文件系统
  • (附源码)ssm高校社团管理系统 毕业设计 234162
  • (十)【Jmeter】线程(Threads(Users))之jp@gc - Stepping Thread Group (deprecated)
  • (万字长文)Spring的核心知识尽揽其中
  • (转)setTimeout 和 setInterval 的区别
  • (转)关于多人操作数据的处理策略
  • (轉貼) 資訊相關科系畢業的學生,未來會是什麼樣子?(Misc)
  • ***测试-HTTP方法
  • .bat文件调用java类的main方法
  • .net 反编译_.net反编译的相关问题
  • .NET 中的轻量级线程安全
  • @ModelAttribute注解使用
  • @Responsebody与@RequestBody
  • [ 代码审计篇 ] 代码审计案例详解(一) SQL注入代码审计案例
  • [Angular] 笔记 6:ngStyle
  • [C# WPF] 如何给控件添加边框(Border)?
  • [C++]拼图游戏
  • [Design Pattern] 工厂方法模式
  • [HAOI2016]食物链
  • [Java开发之路](14)反射机制