本地自建DNS用于浏览器DNS代理

【运维工程师学习七】DNS底层原理及搭建自己的DNS服务器 DNS的全称是,域名系统。因特网上作为域名和IP地址相互映射的一个分布式数据库,能够使用户更方便的访问互联网,而不用去记住能够被机器直接读取的IP数串。通过主机名,最终得到该主机名对应的IP地址的过程叫做域名解析(或主机名解析)。DNS协议运行在UDP协议之上,使用端口号53。通过上面的解释可以看出,域名系统(DNS)是为域名服务的,因此在介绍DNS之前,我们先来认识一下域名。 阅读详情
AI摘要

工作中频繁切换测试和现网域名较麻烦,可通过浏览器自定义DNS实现不同浏览器访问不同域名。本地需自建支持DoH的DNS服务器,选择用coredns搭建,还需生成私有证书。介绍了准备、搭建、启动脚本及测试等步骤,可通过修改文件实现自定义域名。

一、背景

工作过程中遇到需要频繁切换测试和现网域名的问题,每次都去修改C:\Windows\System32\drivers\etc\hosts,感觉比较麻烦,而且修改之后由于系统和浏览器DNS缓存问题可能需要等一会才能切换成功。


于是想通过浏览器自定义DNS来实现不同浏览器访问不同域名的需求,如用Chrome浏览器访问测试环境,Edge浏览器访问现网环境。搜索发现Chrome浏览器有使用安全DNS的相关设置(chrome://settings/security),可以自定义安全DNS的服务地址:


二、准备

Chrome浏览器中说的安全DNS指的是DoH(DNS over HTTPS),它是一个安全的域名解析方案。其意义在于以加密的HTTPS协议进行DNS解析请求,避免原始DNS协议中用户的DNS解析请求被窃听或者修改的问题(例如中间人攻击)来达到保护用户隐私的目的。因此,攻击者将无法查看请求的URL并对其进行更改,如果使用了基于HTTPS的DNS,数据在传输过程中发生丢失时,DoH中的传输控制协议(TCP)会做出更快的反应。


因此本地要自建支持DoH的DNS服务器,像dnsmasq就无法直接满足要求,需要增加前置代理。后来发现coredns可以直接支持DoH,因此就选择用coredns来搭建本地DNS服务器。coredns官网(CoreDNS: DNS and Service Discovery)上可以下载到Linux,Windows等系统的发布版本。


因为要支持HTTPS所以还要生成私有的证书,可以使用openssl命令来完成,具体如下:


1.生成根证书

openssl genrsa -out rootca.key 2048
openssl req -new -x509 -key rootca.key -days 3650 -subj "/C=CN/ST=Jiangsu/L=Suzhou/O=MITO/OU=Development/CN=root" -out rootca.crt


2.生成本地证书请求

openssl req -new -newkey rsa:2048 -keyout localhost.key -subj "/C=CN/ST=Jiangsu/L=Suzhou/O=MITO/OU=Development/CN=localhost" -out localhost.csr -nodes


3.用根证书颁发本地证书

openssl x509 -req -in localhost.csr -CA rootca.crt -CAkey rootca.key -CAcreateserial -out localhost.crt -days 3650 -extfile localhost.ext


localhost.ext文件内容:

authorityKeyIdentifier = keyid, issuer
basicConstraints = CA:FALSE
keyUsage = digitalSignature, nonRepudiation, keyEncipherment, dataEncipherment, keyAgreement
extendedKeyUsage = serverAuth, clientAuth
subjectAltName = @alt_names

[alt_names]
DNS.1 = localhost
IP.1 = 127.0.0.1

生成的localhost.crt和localhost.key用于后续HTTPS服务的搭建。

4.系统导入根证书

如果不导入根证书,那么本地证书启动的HTTPS服务是不可用的。导入根证书步骤如下:
1.Win + R打开运行窗口,输入certlm.msc:

2.选择受信任的根证书颁发机构->证书,然后右击选择所有任务的导入:

3.按向导提示选择根证书rootca.crt:

4.完成导入之后会显示导入成功,在证书列表中就可以看到导入的根证书了:


三、搭建DNS

使用coredns搭建本地DNS服务比较简单,将下载到的coredns解压放到某个目录下,例如D:\coredns目录下,将上面生成的localhost.crt和localhost.key放到D:\coredns\cert目录下,自定义的域名写入到D:\coredns\tests.host文件中(文件名自定义),最后创建coredns的配置文件D:\coredns\Corefile,如下图所示:

其中Corefile内容如下:

https://.:8053 {
    tls cert/localhost.crt cert/localhost.key
    hosts test.hosts {
        fallthrough
    }
    forward . 114.114.114.114
    cache
    log
    errors
}


1.8053为服务端口,https表示提供DoH服务;
2.tls行指定证书路径;
3.host行指定本地hosts文件,里面可以写入自定义域名,格式和系统hosts(C:\Windows\System32\drivers\etc\hosts)文件一样;
4.forward行指定本地查询不到域名时去转发DNS请求到哪,这里指定的是114的DNS服务器;

四、启动脚本

本地DNS服务搭建好之后还需要一个启动脚本,不然需要通过cmd命令行来执行coredns.exe,不是很方便。我们创建一个批处理脚本coredns.bat,内容如下:

@ECHO OFF

taskkill /F /T /IM coredns.exe

%1 start mshta vbscript:createobject("wscript.shell").run("""%~0"" ::",0)(window.close)&&exit
start /d "D:\coredns" /b coredns.exe

这样我们只需要双击这个批处理脚本即可启动本地DNS服务了。


五、测试

启动本地DNS服务后,首先测试本地DNS服务是否正常,在浏览器地址栏输入:https://localhost:8053/dns-query,如果可以正常访问说明DNS服务正常:

然后在Chrome浏览器安全DNS设置页面(chrome://settings/security)自定义安全DNS的服务地址:https://localhost:8053/dns-query

我们在test.hosts文件中添加一个自定义的域名(新增加的话要重启coredns)来验证自定义DNS是否生效:
1.2.3.4 www.mycoredns.com

进入Chrome浏览器的DNS查询页面:chrome://net-internals/?#dns
查询www.mycoredns.com对应的IP:


这样后面如果有需要自定义的域名就可以写入到test.hosts文件中然后重启coredns来实现了。
 

DoT/DoH/DoQ 之 CoreDNS配置 Dot/DoH/DoQ 的好处就不用多说了,那么如何让你的网络用上DoT/DoH/DoQ呢? DoT:DNS over TLS DoH:DNS over HTTPS DoQ:DNS over QUIC https://adguard.com/en/blog/dns-over-quic.html https://www.cloudflare.com/zh-cn/learning/dns/dns-over-tls/ 本文以Coredns为例,CoreDNS是一个Go语言实现的DNS server,具有跨平台 阅读详情

相关推荐

DNS域名解析服务器

DNS小结

weixin_54279121的博客 1192

DNS正向代理、反向代理搭建配置(图文详解)

在给大家讲解配置DNS之前,小狸得当大家简单了解DNS是干什么的?用一句话来解释:DNS正向代理:将IP地址(192.168.0.0)解析转换成网址(www.yangli.com)DNS反向代理:想必大家也能想出来了,就是反过来。将IP地址解析转换网址。具体IP和网址之间是通过什么样的原理转换的就不详细介绍了,不过给大家一张图,大家感兴趣可以研究一下子哦。1、大家必须各自准备一台DNS虚拟机,没有的话可以翻看我以前的文章。

m0_68495664的博客 6690

自建本地DNS过滤系统:实现局域网广告和垃圾网站屏蔽

本文介绍了一种使用Python实现轻量级DNS过滤代理服务器的方法,旨在为家庭或小型办公室网络提供统一的广告和恶意网站拦截功能。文章首先阐述了DNS过滤的核心原理:通过在DNS解析阶段检查域名黑名单,拦截恶意请求并返回无效IP(0.0.0.0),放行正常请求。然后详细讲解了实现方案,包括服务器核心代码结构、配置管理、黑白名单加载机制、DNS查询解析等关键技术点。该方案采用Python编写,具有日志记录、缓存管理、统计功能等特点,可通过配置文件灵活定制,适合部署在本地网络中为所有设备提供保护。

电脑管家 1473

【网络篇】如何搭建自己的DNS服务器

平时练习域名解析,一般直接修改的/etc/hosts文件。对于服务器数量小的情况完全可以,但是如果服务器数量较多,每个都修改比较麻烦。DNS是作为域名解析。在实际的生产过程中,尤其是对于内网搭建的情况,DNS不可能使用互联网的DNS,这时需要我们自行搭建。每台服务器按照此方法修改,将自己的DNS服务器ip放在前面。说明:使用Tab隔开,不能使用空格。我这里准备了4台虚拟机。

weixin_45842494的博客 6690

自建DNS劫持服务器,纯内网劫持PS5,屏蔽更新,自动hen

背景:目前PS5首次折腾必须要连外网,还要改DNS,除非使用ESP8266/32,本文的方法是完全不改DNS,不使用ESP8266,不连接外网的情况下自动折腾能实现什么:1.折腾全程不连接外网2.完全自建hen服务器,随时更新,无需重复刷写ESP8266固件3.解决PKG浏览器首次打开锁地址,无法输入地址的问题4.彻底屏蔽PS5升级5.HEN后和局域网可用,可以继续使用NFS网盘和发送bin。

瑞哥的博客 4934

指纹浏览器:DNS 泄漏防范与 WebRTC 本地 IP 屏蔽的底层实现

本文将深入 Chromium 的网络栈心脏与 WebRTC 的 P2P 底层,从 C++ 源码级别深度拆解 DNS 泄漏的成因与绝对隔离架构,以及 WebRTC 本地 IP 屏蔽的终极实现,彻底掐断这两条泄露物理身份的暗河。

数据知道的博客 728

hosts文件、DNS、删除浏览器域名安全策略、浏览器代理

hosts文件 dns 删除浏览器域名安全策略 浏览器代理

心流时间的博客 1911

ArcGIS Pro2.5深度学习使用注意事项

ArcGIS Pro2.5深度学习使用中的注意事项1、ArcGIS Pro2.5深度学习使用中的注意事项1.1、Label深度学习样本工具参数介绍1.2、准备数据参数介绍1.3、训练模型介绍1.4、ArcGIS Pro2.5深度学习推理工具和模型对应关系介绍1.4.1、Classify Objects Using Deep Learning1.4.2、Classify Pixels Using D...

GIS哼哈哈的博客 7200

HTTP代理与DNS解析

在使用HTTP代理时,应当密切关注DNS处理方式,确保代理配置正确,以充分发挥HTTP代理的优势,同时最大限度地减少潜在的安全隐患。值得注意的是,虽然标准的DNS解析过程包含多个步骤,但在实际应用中,许多优化措施已被引入以提高解析效率。尽管HTTP代理可以有效隐藏用户的真实IP地址,但如果DNS请求未能正确通过代理服务器处理,用户的隐私和安全可能会受到威胁。在HTTP代理环境中,DNS解析过程变得更为复杂,主要涉及两种处理方式:客户端解析和代理服务器解析。这两种方式各有优劣,适用于不同的场景和需求。

2401_86544677的博客 1498

基于MATLAB的基本数字调制解调系统的设计

基于MATLAB的基本数字调制解调系统的设计一、摘要现代通信系统要求通信距离远、通信容量大、传输质量好,作为其关键技术之一的调制解调技术一直是人们研究的一个重要方向。本文以MATLAB为软件平台,充分利用其提供的通信工具箱和信号处理工具箱中的模块,对数字调制解调系统进行Simulink设计仿真,并且进行误差分析。调制与解调是通信系统中十分重要的一个环节,针对不同的信道环境选择不同的调制与解调方式可...

m0_55395440的博客 5549

从零开始:用君正T23ZN打造智能门锁双摄系统(含代码示例与调试技巧)

本文详细介绍了基于君正T23ZN视频处理芯片构建智能门锁双摄系统的完整实战方案。内容涵盖硬件选型与核心电路设计、软件开发环境搭建、双摄驱动框架、图像信号处理(ISP)调优、人脸识别算法集成与性能优化,以及系统调试与稳定性保障。文章提供了丰富的代码示例和调试技巧,旨在帮助嵌入式开发者高效实现具备人脸识别与监控功能的低功耗智能门锁视觉系统。

opencv7vision的博客 715

用于本地开发使用的 DNS 方案

本篇文章,我将介绍一个方便本地开发和调试的方案,本地 DNS 代理服务器。 写在前面 不论是你做前端还是后端开发,本地调试带有域名的接口或页面是大概率绕不开的事情。甚至,如果你使用了自签名证书或者使用了“虚拟域名”进行 HomeLab 服务搭建,在某些不能使用网络默认 DNS 服务器时,也需要一些“灵活”的方案来动态切换一系列域名的指向。 不过,也不能因为手持锤子就看哪里都是钉子。简单的场景下,比如就修改一次的情况下,直接修改 hosts 文件解决问题会是更简单的方案,关于 “Hosts Editor” 类

折腾技术 514

B0505S选型

    使用B0505S-1W已经有一段时间了,一直以来使用的是下面的电路,该电路摘自《CAN总线嵌入式开发——从入门到实战》一书。 参考金升阳的用户手册,手册上写道: 为了确保该模块能够高效可靠的工作,使用时,其输出最小负载不能小于额定负载的10%。若您所需功率确实较小,请在输出端并联一个电阻(电阻消耗功率与实际使用功率之和大于等于10%的额定功率)        由于使用该电源模...

动感小麦兜的博客 1万+

DNS协议、ICMP协议、NAT技术

文章目录DNS协议DNS背景域名简介域名解析过程使用dig工具分析DNS过程浏览器中输入url后发生的事情ICMP协议ICMP功能ICMP协议格式ping命令一个值得注意的坑traceroute命令NAT技术NAT技术背景NAT IP转换过程NAPTNAT技术的缺陷NAT和代理服务器网络协议总结应用层传输层网络层数据链路层 DNS协议 DNS背景 域名简介 域名解析过程 使用dig工具分析DNS过程 浏览器中输入url后发生的事情 ICMP协议 ICMP功能 ICMP协议格式 ping命令 一个值得注意的坑

2021dragon的博客 8151

Python自动化测试报告:飞书群机器人消息卡片实战

本文详细介绍了如何利用Python和飞书群机器人实现自动化测试报告的智能通知。通过构建可定制的消息卡片,将测试结果(如通过数、失败数)以清晰、美观的格式自动推送至团队群聊,并支持一键跳转查看详细报告,从而显著提升团队协作与问题响应效率。

k6l7m8n9的博客 811

[ vulhub漏洞复现篇 ] ActiveMQ反序列化漏洞复现(CVE-2015-5254)

Apache ActiveMQ是美国阿帕奇(Apache)软件基金会所研发的一套开源的消息中间件,它支持Java消息服务、集群、Spring Framework等。由于ActiveMQ是一个纯Java程序,因此只需要操作系统支持Java虚拟机,ActiveMQ便可执行。Apache ActiveMQ 5.13.0之前5.x版本中存在安全漏洞,该漏洞源于程序没有限制可在代理中序列化的类。......

qq_51577576的博客 4444

DNS 代理?Pipy:这我也可以

Pipy 是个可编程代理,曾经我们做过TCP/HTTP 代理、MQTT 代理、Dubbo 代理、Redis 代理、Thrift 代理。前几天有人问DNS[1]的代理能不能做?当然可以,而且 DNS 代理已经应用在跨集群流量调度中,文末经对此进行简单地介绍。阅读本文将了解到:•DNS 的基本介绍以及 DNS 的处理流程•使用编码实现一个 DNS 代理•在代理中增加智能线路解析功能DN...

dotNET跨平台 1087

Modbus RTU/TCP协议栈手写实现:主从站设计、功能码、CRC、异常响应

本文从协议栈架构、帧结构、功能码、CRC校验、异常响应、主从站设计等多个维度,完整阐述了Modbus RTU/TCP协议栈的手写实现方案。帧间隔机制是RTU的核心,T3.5超时检测决定了帧边界识别CRC16查表法以512字节ROM换取8倍性能提升,适合嵌入式功能码路由表实现可扩展的代码架构,便于新增功能异常响应机制保障协议健壮性,每个错误都有明确反馈Modbus TCP在RTU基础上增加MBAP头,实现以太网扩展多核RTOS环境下的并发访问与线程安全RS-485总线的电气隔离与浪涌保护。

从事移动开发八年,csdn博客专家,阿里云特邀专家,华为云云享专家,高级网络信息安全工程师,大数据工程师(高级),python技术开发(高级),HarmonyOS 应用开发者高级认证,现在某学校任教。 1万+

HTTP-DNS-ICMP代理隧道

kail虚拟机:桥接模式,(IP地址:192.168.1.5),主要用作外围机 win10虚拟机:桥接模式(IP地址:192.168.1.6)nat模式(IP地址:192.168.126.138)其主要用作边界服务器 windows server:nat模式(IP地址:192.168.126.131)其主要做内网服务器。python3 neoreg.py -k passwd -u http://XX.XX.XX.XX:XX/脚本下载的地址/tunnel.jsp。#secret等于的值为开启服务生成的值。

dscn123的博客 950

MIPI D-PHY TX 一致性测试实例解析 Part 02

如果测过1.3.x,并对这组测试的细节已经熟悉的前提下,1.4.x的测试将会变得轻松,因为几乎相同的测试项被用于时钟通道的数据测量。

一只豌豆象的博客 8314

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

DNS协议 | NAT技术 | 代理服务器

全局IP要求唯一,但是私有IP不需要,在不同的局域网中出现相同的私有IP是完全不影响的。反向代理服务器,也是一个位于客户端和目标服务器之间的服务器,客户端向抖音服务器发起数据请求时,由反向代理服务器将客户端的数据请求收集起来,再由其推送给真正的后端目标服务器进行处理,数据处理完毕后抖音服务器再将数据结果直接返回给客户端。正向代理,是一个位于客户端和目标服务器之间的服务器,客户端并不直接访问目标服务器,而是先访问代理服务器,由代理服务器代替客户端去访问对应的目标服务器,并将目标服务器的响应结果返回给客户端。

zdlynj的博客 1859

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

指纹浏览器代理如何降低 DNS 泄漏风险:解析路径、DNS 预取与实测排查

指纹浏览器代理不等于 DNS 安全。本文从代理、DNS 解析、DNS 预取、DoH/DoT 和 WebRTC 等层面,讲解 DNS 泄漏原因、验证方法及排查思路。

2601_96161742的博客 301

Statistics and Machine Learning Toolbox

Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

HTTP代理与DNS

前言:     是的,这两个没有直接的联系 正文: HTTP代理:在使用前要对浏览器进行设定才可以使用    提到代理想起了Nginx,http代理 代理客户机的http访问,主要代理浏览器访问网页,它的端口一般为80、8080、3128等;    不得不提的HTTP协议:Internet行信息传输使用的通信协议    HTTP支持“直接连接”及通过”HTTP代理“形式的连接    ...

天生我材必有用,千金散尽还复来。 7443

DNS代理是什么?浅析DNS代理的工作原理及应用

DNS代理作为计算机网络中重要的一环,扮演着连接用户和互联网服务的关键角色。来了解DNS代理的定义、功能、工作原理以及在网络中的应用场景和重要性吧。

roostertalking的博客 1631

DNS over HTTPs(DOH)配置实现

在互联网场景下使用DNS会受到中间DNS服务器的影响,最常见的就是缓存问题,运营商的DNS服务器往往会强制改写域名的TTL并将该结果进行缓存。遇到需要通过域名进行业务切换的场景时(比如,想要将一个业务通过域名从一个数据中心切换到另一个数据中心),需要等待DNS缓存时间过期,这个机制延长了切换的时间。很多DNS的策略是基于源地址进行配置的,但是在实际通过DNS请求域名解析的过程中,运营商DNS会作为代理DNS,以其自身的源IP去向权威DNS请求结果。

weixin_44184011的博客 4236

DNS、ICMP、NAT以及代理服务器

域名是用来识别主机名称和主机所属的组织机构的一种分层结构的名称。如 www.xxx.com,域名使用 . 连接:www: 是一种习惯用法 (可以省略 ),之前人们在使用域名时,往往命名成类似于 ftp.xxx.xxx / www.xxx.xxx 这样的格式,来表示主机支持的协议;xxx: 二级域名,一般是公司或者组织的名称;com:一级域名,表示这是一个企业域名,同级的还有 "net" (网络提供商)、"org" (非营利组织)、"edu" (教育机构) 等等。

m0_62229058的博客 1765
上一篇: vxlan 协议原理简介
下一篇: java实体类通过反射机制进行操作
云开发者联盟
博客等级 码龄5年 546粉丝 93原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值