当前位置: 首页 > 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。

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

相关文章:

CentOS 7 部署 dnsmasq

文章目录 (1)概述(2)dnsmasq的解析流程(3)重要参数说明(4)部署dnsmasq(5)其他内容(6)域名劫持(7)dns污染验证&…...

DBA面试题

Oracle体系结构 (1)、Oracle实例内存中包含哪些部分? 答: sga与pga sga:是一组共享的内存区域,包含数据字典缓存、库缓存、重做日志缓冲区 Pga:为每个服务器进程分配的非共享内存,存储会话状态和私有SOL工作区 在Oracle数据库中&…...

源码解析:Apache RocketMQ重置消费位点

引入 reset offset,即重置消费进度,一般在以下场景中使用: 需要重新消费已经消费过的消息,重置到最早位置或根据时间进行重置。消息积压,不需要消费积压的消息,重置到最新位置,使其从最新位置…...

Python 自动化之处理docx文件(一)

批量筛选docx文档中关键词 文章目录 批量筛选docx文档中关键词前言一、做成什么样子二、基本架构三、前期输入模块1.引入库2.路径输入3.关键词输入 三、数据处理模块1.基本架构2.如果是docx文档2.1.读取当前文档内容2.2.遍历匹配关键字2.3.触发匹配并记录日志 3.如果目录下还有…...

Vue mixins详解

文章目录 前言Vue中的mixins详解什么是mixins简单例子mixins的特点mixins与vuex的区别mixins与公共组件的区别前言 在Vue中,mixins是一种可重用的代码片段,可以在多个组件中共享。它可以包含组件的选项,如data、methods、computed等,以及生命周期钩子函数。 本文将详细介…...

ssl证书问题导致本地启动前端服务报500

报错如下:注意查看报错信息 问题:系统原是http,后台调整为https后,ssl证书有点问题, vue项目本地服务,使用代理,webpack默认,证书强校验,导致请求无法发出,后…...

Rust 学习

Rust 官网:https://www.rust-lang.org/zh-CN/ 模块 库:https://crates.io/ 1、Rust 简介 Rust 语言的主要目标之一是解决传统 系统级编程语言(如 C 和 C)中常见的安全性问题,例如空指针引用、数据竞争等。为了实现这个…...

1.1 【应用开发】应用开发简介

写在前面 Screen图形子系统基于客户端/服务器模型,其中应用程序是请求图形服务的客户端(Screen)。它包括一个合成窗口系统作为这些服务之一,这意味着所有应用程序渲染都是在离屏缓冲区上执行的,然后可以在稍后用于更新…...

在windows系统搭建LVGL模拟器(codeblock工程)

1.codeblock准备 下载codeblock(mingw),安装。可参考网上教程。 2.pc_simulator_win_codeblocks 工程获取 仓库地址:lvgl/lv_port_win_codeblocks: Windows PC simulator project for LVGL embedded GUI Library (github.com) 拉取代码到本地硬盘&…...

2023第十四届蓝桥杯国赛 C/C++ 大学 B 组

文章目录 前言试题 A: 子 2023作者思考题解答案 试题 B: 双子数作者思考题解 试题 C: 班级活动作者思考题解 试题 D: 合并数列作者思考题解 试题 E: 数三角作者思考题解 试题 F: 删边问题作者思考题解 试题 G: AB 路线作者思考题解 试题 H: 抓娃娃作者思考题解 试题 I: 拼数字试…...

如何在页面中加入百度地图

官方文档&#xff1a;jspopularGL | 百度地图API SDK (baidu.com) 添加一下代码就可以实现 <!DOCTYPE html> <html> <head><meta name"viewport" content"initial-scale1.0, user-scalableno"/><meta http-equiv"Conten…...

Windows VC++提升当前进程权限到管理员权限

Windows VC提升当前进程权限 Windows VC提升当前进程权限到管理员权限 Windows VC提升当前进程权限到管理员权限 有时候Windows下我们需要提升当前进程的权限到管理员权限&#xff0c;相关VC代码如下&#xff1a; #ifndef SAFE_CLOSE_HANDLE #define SAFE_CLOSE_HANDLE(handl…...

算法leetcode|92. 反转链表 II(rust重拳出击)

文章目录 92. 反转链表 II&#xff1a;样例 1&#xff1a;样例 2&#xff1a;提示&#xff1a;进阶&#xff1a; 分析&#xff1a;题解&#xff1a;rust&#xff1a;go&#xff1a;c&#xff1a;python&#xff1a;java&#xff1a; 92. 反转链表 II&#xff1a; 给你单链表的…...

Chapter 7 - 3. Congestion Management in Ethernet Storage Networks以太网存储网络的拥塞管理

Pause Threshold for Long Distance Links长途链路的暂停阈值 This section uses the following basic concepts: 本节使用以下基本概念: Bit Time (BT): It is the time taken to transmit one bit. It is the reciprocal of the bit rate. For example, BT of a 10 GbE po…...

优雅玩转实验室服务器(二)传输文件

使用服务器最重要的肯定是传输文件了&#xff0c;我们不仅需要本地的一些资源上传到服务器&#xff0c;好进行实验&#xff0c;也需要将服务器计算得到的实验结果传输到本地&#xff0c;来进行预览或者报告撰写。 首先&#xff0c;由于涉及到服务器操作&#xff0c;我强烈推荐…...

动态面板简介以及ERP原型图案列

动态面板简介以及ERP原型图案列 1.Axure动态面板简介2.使用Axure制作ERP登录界面3.使用Asure完成左侧菜单栏4.使用Axuer完成公告栏5.使用Axuer完成左边侧边栏 1.Axure动态面板简介 在Axure RP中&#xff0c;动态面板是一种强大的交互设计工具&#xff0c;它允许你创建可交互的…...

漏刻有时百度地图API实战开发(12)(切片工具的使用、添加自定义图层TileLayer)

TileLayer向地图中添加自定义图层 var tileLayer new BMap.TileLayer();tileLayer.getTilesUrl function (tileCoord, zoom) {var x tileCoord.x;var y tileCoord.y;return images/tiles/ zoom /tile- x _ y .png;}var lockMap new BMap.MapType(lock_map, tileLaye…...

python 爬虫 m3u8 视频文件 加密解密 整合mp4

文章目录 一、完整代码二、视频分析1. 认识m3u8文件2. 获取密钥&#xff0c;构建解密器3. 下载ts文件4. 合并ts文件为mp4 三、总结 一、完整代码 完整代码如下&#xff1a; import requests from multiprocessing import Pool import re import os from tqdm import tqdm fro…...

mybatis中xml文件容易搞混的属性

目录 第一章、1.1&#xff09;MyBatis中resultMap标签1.2&#xff09;MyBatis的resultType1.3&#xff09;MyBatis的parameterType1.4&#xff09;type属性1.5&#xff09;jdbcType属性1.6&#xff09;javaType属性1.7&#xff09;ofType属性 友情提醒: 先看文章目录&#xff…...

android Retrofit2.0请求 延长超时操作

import okhttp3.OkHttpClient; import retrofit2.Retrofit; import retrofit2.converter.gson.GsonConverterFactory;public class MyApiClient {private static final String BASE_URL "https://api.example.com/";// 创建 OkHttpClient&#xff0c;并设置超时时间…...

ONLYOFFICE安全集成避坑指南:Java Web应用中的权限控制与回调处理

ONLYOFFICE安全集成避坑指南&#xff1a;Java Web应用中的权限控制与回调处理 在数字化转型浪潮中&#xff0c;企业文档协作平台的安全集成已成为技术架构的关键环节。ONLYOFFICE作为一款支持实时协作的开源办公套件&#xff0c;其与Java Web应用的深度集成能够满足金融、医疗…...

CMake核心用法(贴合C++编译场景)

CMake是C项目中常用的跨平台构建工具&#xff0c;核心作用是&#xff08;如Makefile、VS项目文件&#xff09;&#xff0c;解决不同平台&#xff08;Windows、Linux、Mac&#xff09;编译差异的问题&#xff0c;尤其适合多文件、多目录的C项目&#xff08;比如包含构造函数、析…...

3步打造专属音乐库:开源工具解锁无损音质体验

3步打造专属音乐库&#xff1a;开源工具解锁无损音质体验 【免费下载链接】lxmusic- lxmusic(洛雪音乐)全网最新最全音源 项目地址: https://gitcode.com/gh_mirrors/lx/lxmusic- 作为一款功能强大的开源音乐资源工具&#xff0c;洛雪音乐音源整合了全网海量音乐资源&am…...

不会写Shader代码?用PBR Graph制作动态海水效果全流程(Unity 2022版)

不会写Shader代码&#xff1f;用PBR Graph制作动态海水效果全流程&#xff08;Unity 2022版&#xff09; 当阳光穿透虚拟海面时&#xff0c;那些闪烁的波纹和渐变的光影往往需要复杂的数学公式——但今天&#xff0c;我们完全可以在不触碰一行CG代码的情况下&#xff0c;用Sha…...

如何通过内置实时地图彻底解决黑神话悟空中的迷路问题:终极导航指南

如何通过内置实时地图彻底解决黑神话悟空中的迷路问题&#xff1a;终极导航指南 【免费下载链接】wukong-minimap 黑神话内置实时地图 / Black Myth: Wukong Built-in real-time map 项目地址: https://gitcode.com/gh_mirrors/wu/wukong-minimap 在《黑神话&#xff1a…...

别再只调PWM了!深入Linux thermal框架,让你的风扇转速更‘聪明’

别再只调PWM了&#xff01;深入Linux thermal框架&#xff0c;让你的风扇转速更‘聪明’ 当你的服务器在深夜突然风扇狂转&#xff0c;或是笔记本在轻度使用时莫名发烫&#xff0c;单纯调整PWM占空比就像用锤子做精细手术——粗暴且低效。真正的高手都在thermal子系统的规则引擎…...

老旧Mac硬件解锁:用OpenCore Legacy Patcher实现Monterey系统焕新指南

老旧Mac硬件解锁&#xff1a;用OpenCore Legacy Patcher实现Monterey系统焕新指南 【免费下载链接】OpenCore-Legacy-Patcher 体验与之前一样的macOS 项目地址: https://gitcode.com/GitHub_Trending/op/OpenCore-Legacy-Patcher 随着macOS版本迭代&#xff0c;许多经典…...

如何用零配置小熊猫Dev-C++在5分钟内开启C++编程:完整新手指南

如何用零配置小熊猫Dev-C在5分钟内开启C编程&#xff1a;完整新手指南 【免费下载链接】Dev-CPP A greatly improved Dev-Cpp 项目地址: https://gitcode.com/gh_mirrors/dev/Dev-CPP 对于C初学者来说&#xff0c;最大的障碍往往不是语法本身&#xff0c;而是复杂的环境…...

前后端框架模式对比(golang)

前后端架构模式对比&#xff1a;分离与不分离 现代Web开发中&#xff0c;前后端架构的选择直接影响开发效率、维护成本和系统性能。结合Golang的实现&#xff0c;可以更清晰地分析前后端分离&#xff08;如REST API 前端框架&#xff09;与不分离&#xff08;如服务端渲染&…...

【Python 教程】如何将 JSON 数据转换为 Excel 工作表

pagehelper整合 引入依赖com.github.pagehelperpagehelper-spring-boot-starter2.1.0compile编写代码 GetMapping("/list/{pageNo}") public PageInfo findAll(PathVariable int pageNo) {// 设置当前页码和每页显示的条数PageHelper.startPage(pageNo, 10);// 查询数…...