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的解析流程如下:
- 首先,不管是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。
请根据你的具体需求和环境进行相应的配置和验证,以上内容仅供参考。
相关文章:
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: 拼数字试…...
如何在页面中加入百度地图
官方文档: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下我们需要提升当前进程的权限到管理员权限,相关VC代码如下: #ifndef SAFE_CLOSE_HANDLE #define SAFE_CLOSE_HANDLE(handl…...
算法leetcode|92. 反转链表 II(rust重拳出击)
文章目录 92. 反转链表 II:样例 1:样例 2:提示:进阶: 分析:题解:rust:go:c:python:java: 92. 反转链表 II: 给你单链表的…...
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…...
优雅玩转实验室服务器(二)传输文件
使用服务器最重要的肯定是传输文件了,我们不仅需要本地的一些资源上传到服务器,好进行实验,也需要将服务器计算得到的实验结果传输到本地,来进行预览或者报告撰写。 首先,由于涉及到服务器操作,我强烈推荐…...
动态面板简介以及ERP原型图案列
动态面板简介以及ERP原型图案列 1.Axure动态面板简介2.使用Axure制作ERP登录界面3.使用Asure完成左侧菜单栏4.使用Axuer完成公告栏5.使用Axuer完成左边侧边栏 1.Axure动态面板简介 在Axure RP中,动态面板是一种强大的交互设计工具,它允许你创建可交互的…...
漏刻有时百度地图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. 获取密钥,构建解密器3. 下载ts文件4. 合并ts文件为mp4 三、总结 一、完整代码 完整代码如下: import requests from multiprocessing import Pool import re import os from tqdm import tqdm fro…...
mybatis中xml文件容易搞混的属性
目录 第一章、1.1)MyBatis中resultMap标签1.2)MyBatis的resultType1.3)MyBatis的parameterType1.4)type属性1.5)jdbcType属性1.6)javaType属性1.7)ofType属性 友情提醒: 先看文章目录ÿ…...
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,并设置超时时间…...
Docker 离线安装指南
参考文章 1、确认操作系统类型及内核版本 Docker依赖于Linux内核的一些特性,不同版本的Docker对内核版本有不同要求。例如,Docker 17.06及之后的版本通常需要Linux内核3.10及以上版本,Docker17.09及更高版本对应Linux内核4.9.x及更高版本。…...
业务系统对接大模型的基础方案:架构设计与关键步骤
业务系统对接大模型:架构设计与关键步骤 在当今数字化转型的浪潮中,大语言模型(LLM)已成为企业提升业务效率和创新能力的关键技术之一。将大模型集成到业务系统中,不仅可以优化用户体验,还能为业务决策提供…...
内存分配函数malloc kmalloc vmalloc
内存分配函数malloc kmalloc vmalloc malloc实现步骤: 1)请求大小调整:首先,malloc 需要调整用户请求的大小,以适应内部数据结构(例如,可能需要存储额外的元数据)。通常,这包括对齐调整,确保分配的内存地址满足特定硬件要求(如对齐到8字节或16字节边界)。 2)空闲…...
智慧医疗能源事业线深度画像分析(上)
引言 医疗行业作为现代社会的关键基础设施,其能源消耗与环境影响正日益受到关注。随着全球"双碳"目标的推进和可持续发展理念的深入,智慧医疗能源事业线应运而生,致力于通过创新技术与管理方案,重构医疗领域的能源使用模式。这一事业线融合了能源管理、可持续发…...
SpringCloudGateway 自定义局部过滤器
场景: 将所有请求转化为同一路径请求(方便穿网配置)在请求头内标识原来路径,然后在将请求分发给不同服务 AllToOneGatewayFilterFactory import lombok.Getter; import lombok.Setter; import lombok.extern.slf4j.Slf4j; impor…...
全面解析各类VPN技术:GRE、IPsec、L2TP、SSL与MPLS VPN对比
目录 引言 VPN技术概述 GRE VPN 3.1 GRE封装结构 3.2 GRE的应用场景 GRE over IPsec 4.1 GRE over IPsec封装结构 4.2 为什么使用GRE over IPsec? IPsec VPN 5.1 IPsec传输模式(Transport Mode) 5.2 IPsec隧道模式(Tunne…...
selenium学习实战【Python爬虫】
selenium学习实战【Python爬虫】 文章目录 selenium学习实战【Python爬虫】一、声明二、学习目标三、安装依赖3.1 安装selenium库3.2 安装浏览器驱动3.2.1 查看Edge版本3.2.2 驱动安装 四、代码讲解4.1 配置浏览器4.2 加载更多4.3 寻找内容4.4 完整代码 五、报告文件爬取5.1 提…...
学校时钟系统,标准考场时钟系统,AI亮相2025高考,赛思时钟系统为教育公平筑起“精准防线”
2025年#高考 将在近日拉开帷幕,#AI 监考一度冲上热搜。当AI深度融入高考,#时间同步 不再是辅助功能,而是决定AI监考系统成败的“生命线”。 AI亮相2025高考,40种异常行为0.5秒精准识别 2025年高考即将拉开帷幕,江西、…...
C/C++ 中附加包含目录、附加库目录与附加依赖项详解
在 C/C 编程的编译和链接过程中,附加包含目录、附加库目录和附加依赖项是三个至关重要的设置,它们相互配合,确保程序能够正确引用外部资源并顺利构建。虽然在学习过程中,这些概念容易让人混淆,但深入理解它们的作用和联…...
从面试角度回答Android中ContentProvider启动原理
Android中ContentProvider原理的面试角度解析,分为已启动和未启动两种场景: 一、ContentProvider已启动的情况 1. 核心流程 触发条件:当其他组件(如Activity、Service)通过ContentR…...
