docker 端口映射 udp_Docker 制作一键安装的本地无污染 DNS 域名服务

国庆休假回来,感觉和整个世界失联了,各种不通,不得不就自己本地的应用环境进一步的升级:搭建一个本地版本的无污染 DNS 域名服务。各种网络文章扫了一遍,推荐以下这篇文章:

  • CoreDNS搭建无污染DNS

指导思想基本一致,不过在实际操作过程中, CoreDNS 程序编译失败,不得不身手动解决。考虑到读者也会遇到相同的问题,干脆多做一点,制作一个 Docker Image 方便大家使用。

编译问题

首先解决编译问题,官方版本的 CoreDNS 源码增加外部插件 proxy 与 block 后一直无法正确编译。主要问题出在 k8s.io/api 等几个依赖库上。在 go.mod 下修改 replace 部分如下:

replace (
github.com/Azure/go-autorest => github.com/Azure/go-autorest v13.0.0+incompatible
github.com/miekg/dns v1.1.3 => github.com/miekg/dns v1.1.22
k8s.io/api => k8s.io/api v0.0.0-20190409021203-6e4e0e4f393b
k8s.io/apimachinery => k8s.io/apimachinery v0.0.0-20190404173353-6a84e37a896d
k8s.io/client-go => k8s.io/client-go v11.0.1-0.20190409021438-1a26190bd76a+incompatible
)

重新构建即可成功编译。Fork 到自己的 repo 下方便使用。需要的读者可以自行利用 repo 中提供的 Dockerfile 自行构建容器镜像:

$: git clone https://github.com/liujianping/coredns.git
$: cd coredns
$: docker build -t coredns:latest .

Mac 运行

如果不使用 Docker 运行服务, 在 Mac OS 上就需要设置 plist 配置,通过 launchctl 命令进行服务的管理工作。有了 Docker 之后,这个工作就可以直接交给 Docker 进行。因为 CoreDNS 程序对外服务的端口是 53/udp . 所以在进行端口映射的时候不能 tcp 端口。

$: docker run -d -p 127.0.0.1:53:53/udp coredns:latest

正常启动服务后,可以通过 dig 命令验证服务是否运行正常:

$: dig www.netflix.com @127.0.0.1

如果一切正常,就可以直接修改当前网络配置或者直接设置/etc/reslov.conf配置,设置其DNS为本地服务。

PS:如果读者需要使用以上自建的DNS服务,前提当然还是需要保证网络的全球通,该服务需要在网络正常的情况下才能给出正确的结果。

推荐阅读

  • 由 studygolang.com 得到 IP 是怎么做到的?详解 DNS 与 CoreDNS 的实现原理

  • GCTT 出品 | 使用 Golang 构建 DNS 服务器


喜欢本文的朋友,欢迎关注“Go语言中文网”:

5262bfcba1632e9c6fc043a7678e3662.png

Go语言中文网启用微信学习交流群,欢迎加微信:274768166

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/505000.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

快能通小学生计算机的游戏,亲子小游戏,帮助孩子更快学会交通安全知识

随着我国机动化进程加快和小汽车进入千家万户,如何安全乘坐机动车,如何在上放学途中保障儿童青少年的交通安全,成为儿童青少年交通安全保护的重要内容。下面小编介绍几个亲子小游戏,帮助孩子更快学会交通安全知识。认识交通标志游…

latex 三线表_LaTeX学习记录(3):使用图表

学习记录(3):使用图表每次跟朋友安利 的时候我都会讲这么一个故事:❝当时设计天琴一号加速度计的控制器参数,出于数字控制参数切换的便利性,疯狂设计了十几套参数。然而写报告的时候傻了:老板要求每套参数六个自由度的…

kubernetes怎么读_每个 Kubernetes 应聘者应该知道的 5 个面试题 | Linux 中国

如果你是要面试 Kubernetes 相关职位的应聘者,这里给出了要提问的问题以及这些问题的重要性。-- Jessica Repka面试对面试官及候选人来说都很不容易。最近,我发现面试 Kubernetes 相关工作的候选人似乎尤其困难。为什么呢?一方面,…

英语作文谈谈你对计算机的看法,英语作文:谈谈你对网络语言的看法

英语作文:谈谈你对网络语言的看法在学习、工作、生活中,大家或多或少都会接触过作文吧,作文要求篇章结构完整,一定要避免无结尾作文的.出现。一篇什么样的作文才能称之为优秀作文呢?以下是小编帮大家整理的英语作文&am…

华为云域名注册_华为云域名专场钜惠,助推中小企业云速建站

域名不仅是一个简单的网址,更是企业在市场竞争中获得持久优势的有力工具。所以对于中小企业而言,拥有一个优质的域名对企业发展而言是很重要的。为了帮助中小企业轻松注册域名,快速搭建好网站,让用户在最短的时间内,最…

html button跳转页面_HTML跳转到页面指定位置的几种方法

前言有时候,我们想阅读页面中某段精彩的内容,但由于页面太长,用户需要自己滚动页面,查找起来非常麻烦 ,很容易让人失去继续往下阅读的兴趣。这样体验非常不好,所以我们可以想办法 实现点击某段文字或者图片…

用计算机新字库打出的文字,为什么用五笔打字有很多字打不出来(GBK和GB2312字库的区别)...

五笔输入法有很多版本,有的版本只能输入GB2312字库中的字(6763个字),大部分版本的五笔输入法能输入GBK字库中的字(21003个字)。所以只要你选用支持GBK字库的五笔输入法,一般的繁体字和偏僻字就能输入了。简单一点的说:两个原因&am…

c语言exit_看了这几个C语言例子,你一定会说5个哇塞,声音一次比一次大

曾经我一直以为自己C语言学的还挺好的,直到看到这几个例子。例1首先来看一下,大师是如何求圆周率的,一口君实在词穷,first哇塞。#include long a10000,b0,c10000,d,e,f[10001],g; void main() { for(;b ! c; f[b] a…

html整合vue elementui,vue2.0结合Element-ui实战案例

前言我们将会选择使用一些 vue 周边的库vue-cli, vue-router,axios,moment,Element-ui搭建一个前端项目案例,后端数据接口,会使用json-server快速搭建一个本地的服务,方便对数据的增删改查,利用以上技术我们会搭建一个vue案例&…

计算机二级考试模拟表单答题,2016年计算机二级考试《VFP》模拟简答试题

1[简答题]1.建立一个表单文件myform,将employee表添加到表单的数据环境中,然后在表单中添加表格控件gridl,指定其记录源类型为“别名”、记录源为employee表文件,最后添加一个“退出”命令按钮控件Commandl,程序运行时…

中兴新支点操作系统_中兴新支点国产操作系统体验报告:使用流畅,性能稳定!...

笔者早就有听闻中兴新支点国产操作系统挺好用的,对配置要求不高,软件不少又没广告,一直想安装尝尝鲜,看看国产操作系统现在发展得怎样了。但是我又怕用不习惯要重装系统太麻烦,最后在朋友的建议下,我在虚拟…

tensorflowgpu利用率为0_直流电压利用率的提高方法-梯形波调制法

接上篇(直流(母线)电压利用率的提高方式-三次谐波注入法):Payton Sun:直流电压利用率的提高方法-三次谐波注入法​zhuanlan.zhihu.com,本篇介绍下另一种经典的提高方式-梯形波调制法 &#xff0…

python开发信息系统权限设置_利用Python实现权限设置的详细教程

一、私有化的实现 在Python中想定义一个类是比较简单的,比如要定义一个Person类,如下代码即可:当然我们也可以给类添加相应的属性,比如Person的姓名,年龄,性别等,并且在new一个Person对象后可以…

ifamre 大小随页面变_SEO优化中如何让你的页面访问速度更快

页面访问速度对于SEO优化来说是极为关键的一环。我们试想一下,如果某个访客花了几十秒才能打开你网站的首页,先不说这个访客抱着什么访问目的和什么渠道来的,一般正常的访客大概率都会放弃访问这个页面。由此可见,页面的访问速度是…

计算机三级数据库上机怎么考,最新计算机三级数据库上机考试试题

最新计算机三级数据库上机考试试题数据库指的是以一定方式储存在一起、能为多个用户共享、具有尽可能小的冗余度的特点、是与应用程序彼此独立的数据集合。下文为大家搜集整理的是计算机三级数据库技术考试题,希望能帮助大家好好复习,早日通过考试!第一题…

用户表如何区分普通用户和管理员_Gate.io 比特百科:什么是ETH 2.0及普通用户如何参与ETH 2.0质押挖矿...

ETH 2.0是什么ETH 2.0是ETH发展四阶段(1、前沿Frontier 2、家园Homestead 3、大都会Homestead 4、宁静Serenity)中的最后一个阶段。前三个阶段是ETH 1.0时期,而第四阶段ETH1.0正式升级为ETH 2.0,将从PoW工作量证明共识机制升级为P…

南充一中计算机机房被盗,成都理工大学与南充市第一中学共建优质生源基地

春秋代序立冬过,西河欢歌扬碧波;魅力一中呈诗韵,银杏绽黄迎嘉客。2019年11月14日上午10时,成都理工大学与南充市第一中学共建优质生涯基地的签约授牌仪式在南充一中新区隆重举行。南充一中副校长王洪秀在致辞中对关注南充一中发展…

list循环赋值_Python基础 | 0xd 条件判断与循环

条件判断所谓的条件判断就是根据一条或多条语句的执行结果(True/False)来决定执行那一块的代码。// 条件判断的三个关键字 //Python 使用if、else、elif 三个关键字的搭配来实现判断语句,使用示例如下:# 单分支(只有一个if),如果代码块只有一…

matlab 等高线_MATLAB作图实例:39:更改等高线图的填充颜色

本示例说明如何更改在填充等高线图中使用的颜色。更改颜色模板通过更改颜色图设置填充等高线图的颜色。将预定义的颜色图名称hot传递给colormap函数。[X,Y,Z] peaks;figurecontourf(X,Y,Z,20)colormap(hot)title(Hot Colormap)控制数据值到颜色模板的映射仅使用hot模板中心的颜…

git保存账号密码_Altium Designer 通过Git实现版本控制

为了解决每次对PCB工程进行修改时不能回溯的问题,以及为日后团队协作完成某项工程提供方便,所以我研究了一下如何在AD中实现版本控制。所幸的是,AD本身自带VCS功能(Version Control System),并支持SVN和Git两种VCS方式前提条件&am…