内部集群的 DNS server 搭建入门百科_docker小白入门

当我们使用 traefik 反向代理和自动服务发现后,我们对集群内部的服务分为两类公有服务。如我的博客,网站,以及为它们提供服务的 API。我们可以通过公有的域名去映射服务使得外网能够访问,如通过我自己的域名 shanyue.tech 与 xiange.tech。私有服务。如 gitlab,traefik Dashboard,redis,postgres 以

内部集群的 DNS server 搭建入门百科

当我们使用 traefik 反向代理和自动服务发现后,我们对集群内部的服务分为两类

内部集群的 DNS server 搭建入门百科_docker小白入门

  1. 公有服务。如我的博客,网站,以及为它们提供服务的 API。我们可以通过公有的域名去映射服务使得外网能够访问,如通过我自己的域名 shanyue.tech 与 xiange.tech。
  2. 私有服务。如 gitlab,traefik Dashboard,redis,postgres 以及自己实现的不公开的私有服务。我们可以通过自建 DNS 服务器,来对这些域名进行访问。如 *.shanyue.local 做 A记录 来映射到内部集群的网关入口 (当然也要做白名单,BasicAuth,禁端口号等做安全措施)

我们先来看一看 DNS Lookup 的流程

内部集群的 DNS server 搭建入门百科_docker小白入门

而当有了 dnsmasq 后,请求私有服务会先去 dnsmasq 解析 IP 地址。而请求互联网,如百度,则会由 dnsmasq 转发至上游 DNS 服务器进行解析。

  • 原文链接: docker compose 简易入门
  • 系列文章: 个人服务器运维指南

dnsmasq 部署

dnsmasq 部署自然也是使用 docker compose,配置文件如下

version: '3'

services:
  dns:
    image: jpillora/dnsmasq
    restart: always
    ports:
      - "53:53/udp"
    volumes:
      - ./dnsmasq.conf:/etc/dnsmasq.conf
      - ./resolv.conf:/etc/resolv.conf

# 使用已存在的 traefik 的 network
networks:
  default:
    external:
      name: traefik_default

其中自然也是与 traefik 使用同一网络,挂载两个文件,关于文件配置如下所示

  • dnsmasq.conf: 关于 dnsmasq 的配置文件,可以配置关于内部集群的域名映射规则
  • resolv.conf: 关于上游DNS服务器的配置

dnsmasq 配置

在 dnsmasq 中需要配置 *.shanyue.local 映射到内部集群,./dnsmasq.conf 配置文件如下所示。172.18.0.1 是 traefik 网络入口,详情参照我的文章 traefik 简易介绍

log-queries
log-dhcp

# 配置域名映射
address=/docker.localhost/172.18.0.1
address=/shanyue.local/172.18.0.1

当访问 www.baidu.com 还是要通过公共的 DNS 服务的,如谷歌的 8.8.8.8,这里使用阿里云默认的 nameserver。./resolv.conf 配置文件如下所示

options timeout:2 attempts:3 rotate single-request-reopen
nameserver 100.100.2.136
nameserver 100.100.2.138

由于在服务器中使用 0.0.0.0:53 作为 DNS 服务器,此时也需要更改服务器内部的 /etc/resolv.conf,修改如下

nameserver 127.0.0.1

在本地局域网中,可以使用该服务器的 IP 地址作为 DNS 服务器。可以使用 openvpn 来连接本地环境与服务器集群。详情参考 使用 openvpn 与集群内部服务通信

DNS lookup

此时使用 host 或 dig 对内部服务进行测试,均能返回正确的 IP 地址

$ host whoami.docker.localhost
whoami.docker.localhost has address 172.18.0.1

$ dig whoami.docker.localhost
172.18.0.1

此时,dnsmasq 解析的日志显示如下

dnsmasq: query[A] whoami.docker.localhost from 172.18.0.1
dnsmasq: config whoami.docker.localhost is 172.18.0.1

再测试下 www.baidu.com,测试外部域名是否能够正常解析

$ dig www.baidu.com +short
www.a.shifen.com.
220.181.38.149
220.181.38.150

正常工作,dnsmasq 日志如下

dnsmasq: query[A] www.baidu.com from 172.18.0.1
dnsmasq: forwarded www.baidu.com to 100.100.2.136
dnsmasq: forwarded www.baidu.com to 100.100.2.138
dnsmasq: reply www.baidu.com is <CNAME>
dnsmasq: reply www.a.shifen.com is 220.181.38.149
dnsmasq: reply www.a.shifen.com is 220.181.38.150
海计划公众号
(0)
上一篇 2020/03/20 22:20
下一篇 2020/03/20 22:20

您可能感兴趣的内容

  • 跨域解决方案之JSONP新手入门_jsonp新手入门

    同源策略同源策略(Same origin policy)是一种约定,它是浏览器最核心也最基本的安全功能,如果缺少了同源策略,则浏览器的正常功能可能都会受到影响。可以说Web是构建在同源策略基础之上的,浏览器只是针对同源策略的一种实现。同源策略,它是由Netscape提出的一个著名的安全策略。现在所有支持JavaScript 的浏览器都会使用这个策略。所谓同源

    2020/03/24
  • ES6 Promise的执行顺序和异步性基础知识_异步菜鸟教程网

    我们知道Promise用来处理异步操作,异步操作的执行顺序是相对比较复杂的,如果再涉及到链式调用,则情况会变得更复杂。这篇文章会通过一个相对简单的代码示例来让大家对Promise的执行顺序和异步性有正确的理解,从而可以以此类推处理更复杂的情况。我们先看代码:let a = Promise.reject(‘a’).then(() => {console.log

    2020/03/29
  • Picnic CSS入门知识一个用Sass写的轻量级UI框架

    Picnic CSS小白攻略 官方网址:http://picnicss.com/ GitHub:https://github.com/franciscop/picnic 简介描述:…

    2020/03/06
  • nodejs如何将获得的数据保存到本地?基础知识_存储入门基础教程

    nodejs如何将获得的数据保存到本地?基础知识 nodejs将获得的数据保存到本地可以使用Cookie进行数据保存或使用sessionStorage、localStorage进行…

    2020/03/19
  • html中绝对路径和相对路径的区别?比较相对路径和绝对路径的优缺点使用指南_url基础知识教程

    绝对路径和相对路径的区别?1. 绝对路径:就是你的文件或目录在硬盘上的真正的路径例如“bg.jpg”这个图片是存放在硬盘的“E:\img”目录下,那么 “bg.jpg”这个图片的绝对路径就是“E:\img\bg.jpg”2. 相对路径:顾名思义,相对路径就是相对于当前文件的路径。网页中一般表示路径都用这个方法,例如在“s1.html” 文件里引用了“bg.j

    2020/04/05
  • 简单高效实现一个按需加载图片的逻辑小白指南_加载使用攻略

    需求:根据页面滚动,当图片进入视野,就开始加载,否则不加载任何图片。代码://页面加载完成时先调用一下,首屏内的图片。
    loadImg();
    document.addEventListener(‘scroll’, function(e) {//跟着滚动,继续加载剩下的图片loadImg()
    })function loadImg(){//slice可以将类数组

    2020/03/26
  • H5的sessionStorage和localStorage指南教程_存储小白攻略

    1) H5 新增的 sessionStorage 和 localStorage 的区别sessionStorage 和 java 的 session 差不多,可以短时间存储信息,电脑浏览器常用sessionStorage 存储用户登录信息(个人理解)localStorage 可以永久保留用户信息,不用每次都登录,常用于APP 2)sessionStorage

    2020/03/24
  • js中==和===区别?菜鸟教程网_区别入门教程

    简单来说: == 代表相同, ===代表严格相同, 为啥这么说呢,这么理解: 当进行双等号比较时候: 先检查两个操作数数据类型,如果相同, 则进行===比较, 如果不同, 则愿意为你进行一次类型转换, 转换成相同类型后再进行比较, 而===比较时, 如果类型不同,直接就是false.比较过程:双等号==:(1)如果两个值类型相同,再进行三个等号(===)的比

    2020/03/26
  • 和美女聊天的小套路入门基础教程_聊天菜鸟攻略

    你真的会撩妹吗?你真的具备聊天技巧吗?学会这些和美女聊天小套路情话,教你如何和女孩聊天,让你轻松把握女生的心理,通过撩妹技巧将她一举拿下。今天小编给大家分享一些情侣之间的小情话,句句暖心~单身dog受到了一万点的伤害,哈哈哈!也不用回避啊!也可以学习一下套路,等将来有ta之后,就这样去“暖”ta吧!社交软件上的小姐姐们,点击下载跟女朋友说的情话套路1、躲了一

    2020/03/22
  • ManageEngine全球副总裁Sabhlok:通过简单易用的工具软件来优化IT 运维管理基础知识入门_软件攻略教程

    人物简介:ManageEngine全球副总裁,获杜克大学福库商学院MBA学位。拥有超过20年的企业级软件行业经历,曾就职于Embarcadero、BMC等公司, 任技术、营销、销售与执行高级管理职位。十多年前,除了那些最大的公司外,我们从一批得不到良好服务的客户群身上看到了机遇,ManageEngine由此进入了 IT 服务管理这一市场。那些规模相对小一些的

    2020/04/03
  • cordova小白常识使用HTML, CSS &amp; JS进行移动App开发,多平台共用一套代码

    cordova使用帮助 官方网址:http://cordova.axuer.com/ 简介描述:使用HTML, CSS &amp; JS进行移动App开发,多平台共用一套代…

    2020/03/06
  • 原生JS实现一个瀑布流插件菜鸟教程网_瀑布流小白指南

    瀑布流布局中的图片有一个核心特点 —— 等宽不定等高,瀑布流布局在国内网网站都有一定规模的使用,比如pinterest、花瓣网等等。那么接下来就基于这个特点开始瀑布流探索之旅。基础功能实现首先我们定义好一个有 20 张图片的容器,#waterfall {position: relative;}.waterfall-box {floa

    2020/03/21
  • docker镜像加速技巧菜鸟教程下载_docker基础指南

    前言由于总所周知的原因,国外很多服务无法访问。比如docker镜像。所以就有了很多国内镜像的说法。配置国内镜像可以极速下载镜像。配置国内镜像有很多人文章教你配置国内docker镜像,这边简单说一下:docker-machine ssh defaultsudo sed -i “s|EXTRA_ARGS=’|EXTRA_ARGS=’–registry-mirr

    2020/03/20
  • 网站很久没有收录该怎么办?基础教程_收录小白帮助

    网站页面长期不被收录,对网站发展影响很大!一个好的网站,收录会达到85%以上!那么,网站长期不被收录改如何解决呢?一个页面很久不被收录无非有以下几种原因!一起来看吧!  1、网页内容质量低页面的内容质量是搜索引擎蜘蛛判断这个页面价值的重要因素。页面内容包含:一是模板重复,二是文章重复。采集软件的普及让做网站太简单了,各类“剽窃”文章的工具、各CMS的采集和自

    2020/03/23
  • 在 Vue 中使用lodash对事件进行防抖和节流使用帮助_防抖入门教程

    有些浏览器事件可以在短时间内快速触发多次,比如调整窗口大小或向下滚动页面。例如,监听页面窗口滚动事件,并且用户持续快速地向下滚动页面,那么滚动事件可能在 3 秒内触发数千次,这可能会导致一些严重的性能问题。如果在面试中讨论构建应用程序,出现滚动、窗口大小调整或按下键等事件请务必提及 防抖(Debouncing) 和 函数节流(Throttling)来提升页面

    2020/03/20
  • KaTeX入门知识_一个专门用于 web 的快速数学公式渲染工具库

    KaTeX入门知识 官方网址:https://katex.org GitHub:https://github.com/KaTeX/KaTeX 简介描述:一个专门用于 web 的快速…

    2020/03/06