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語言中文網”:
Go語言中文網啟用微信學習交流群,歡迎加微信:274768166
總結
以上是生活随笔為你收集整理的docker 端口映射 udp_Docker 制作一键安装的本地无污染 DNS 域名服务的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: ebs 供应商地点信息_供应商,地址,业
- 下一篇: imread函数_MATLAB图像处理: