dns服务器-dnsmasq搭建

10 篇文章 4 订阅

一。dnsmasq简介

      DNSmasq是一个小巧且方便地用于配置DNSDHCP的工具,适用于小型网络,它提供了DNS功能和可选择的DHCP功能。它服务那些只在本地适用的域名,这些域名是不会在全球的DNS服务器中出现的。DHCP服务器和DNS服务器结合,并且允许DHCP分配的地址能在DNS中正常解析,而这些DHCP分配的地址和相关命令可以配置到每台主机中,也可以配置到一台核心设备中(比如路由器),DNSmasq支持静态和动态两种DHCP配置方式。

dnsmasq架构图

Dnsmasq原理:

•本机APP访问主机的/etc/resolv.conf获取DNSServer,该文件指向的DNSServer为Dnsmasq。
•本地局域网中的主机可以直接访问Dnsmasq,即在这些主机中/etc/resolv.conf指向了Dnsmasq。
•Dnsmasq需要通过上游DNS来进行域名解析,上游DNS可以配置在/etc/resolv.dnsmasq.conf中,该文件需要在Dnsmasq的配置文件/etc/dnsmasq.conf中指定。

默认会从/etc/hosts 读取到本地域名配置文件(不支持泛域名)
如果读取不到/etc/hosts的地址解析,就会转发给resolv.conf读取上游DNS配置文件进行解析地址

dnsmasq安装后有个配置文件 /etc/dnsmasq.conf 如果使用yum安装不需要任何额外配置,但是也可以在其中配置泛域名解析等
常用配置案例

resolv-file=/etc/resolv.conf

strict-order

listen-address=192.168.58.144

address=/a.com/192.168.58.155

server=114.114.114.114

bogus-nxdomain=114.114.114.114

对参数的解释

  • resolve-file     定义dnsmasq从哪里获取上游DNS服务器的地址, 默认是从/etc/resolv.conf获取。
  • strict-order     表示严格按照resolv-file文件中的顺序从上到下进行DNS解析,直到第一个解析成功为止。
  • listen-address     定义dnsmasq监听的地址,默认是监控本机的所有网卡上。局域网内主机若要使用dnsmasq服务时,指定本机的IP地址。
  • address      启用泛域名解析,即自定义解析a记录,如下配置为demon.com这个域名:
    address=/demon.com/127.0.0.1  #访问demon.com时的所有域名包括子域名都会被解析成127.0.0.1

     

  • bogus-nxdomain  为防止DNS污染,使用参数定义的DNS解析的服务器。注意:如果是阿里云服务器上配置dnsmasq要启用此项。
  • server      指定dnsmasq程序使用哪个DNS服务器进行解析。       对于不同的网站可以使用不同的域名对应解析如下配置
    server=/google.com/8.8.8.8    #表示对于google的服务,使用谷歌的DNS解析。

     

以上配置完毕后,需要重启dnsmasq服务,重启完毕后局域网中的其他机器,就可以通过该DNS服务器解析公网的域名。

二。搭建dnsmasq

使用yum安装

yum -y install dnsmasq

启动服务

systemctl start dnsmasq

假设有主机192.16.8.58.144安装了dnsmasq,该主机配置/etc/hosts(修改了重启dnsmasq)

192.168.58.144 swarm01
192.168.58.145 swarm02
192.168.58.147 swarm03

假设模拟在当前机器上模拟一个docker镜像,看是否能ping swarm (不通)

[root@swarm01 ~]# docker run -itd zookeeper                     
098f6978f53b1c6168cbf563b72f4a506de398a423c13377b705c371c8cd9e28
[root@swarm01 ~]# docker exec -it 09 bash
bash-4.4# ping swarm01
ping: bad address 'swarm01'

启动docker指定dns --dns 192.168.58.144 再次尝试(通)

[root@swarm01 ~]# docker run -itd --dns 192.168.58.144 zookeeper
6a1c7536ab9937543031ca2e2aed0a1d2cce308dc884c25c5cb505e4ebf9416d
[root@swarm01 ~]# docker exec -it 6a bash
bash-4.4# ping swarm01
PING swarm01 (192.168.58.144): 56 data bytes
64 bytes from 192.168.58.144: seq=0 ttl=64 time=0.110 ms
64 bytes from 192.168.58.144: seq=1 ttl=64 time=0.177 ms
^C
--- swarm01 ping statistics ---
2 packets transmitted, 2 packets received, 0% packet loss
round-trip min/avg/max = 0.110/0.143/0.177 ms
bash-4.4# ping swarm03
PING swarm03 (192.168.58.147): 56 data bytes
64 bytes from 192.168.58.147: seq=0 ttl=63 time=0.685 ms
64 bytes from 192.168.58.147: seq=1 ttl=63 time=0.791 ms
^C
--- swarm03 ping statistics ---
2 packets transmitted, 2 packets received, 0% packet loss
round-trip min/avg/max = 0.685/0.738/0.791 ms

docker除了在run指定dns也可以在/etc/docker/daemon.json中指定

 {
   "dns":"192.168.58.144"
 }

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值