容器的DNS和主机名

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了容器的DNS和主机名相关的知识,希望对你有一定的参考价值。

参考技术A 容器启动时会有3个和DNS、主机名相关的文件会被覆盖掉,/etc/hosts、/etc/hostname、/etc/resolv.conf

Docker容器启动时会从宿主机复制/etc/resolv.conf文件到容器,并删除到无法连接的DNS服务器
/etc/hosts文件中只记录容器自身的主机名和ip:

/etc/hostname文件记录容器的主机名:

DNS服务器搭建完整说明

一、DNS服务简介
DNS(Domain Name System,域名系统),
因特网上作为域名和IP地址相互映射的一个分布式数据库,能够使用户更方便的访问互联网,而不用去记住能够被机器直接读取的IP数串。通过主机名,最终得到该主机名对应的IP地址的过程叫做域名解析(或主机名解析)。
一个典型的域名由顶级域名、二级域名和主机名构成。例如www.zzz.com,顶级域名是com,二级域名是zzz,主机名是www。

二、域名解析过程

1、如果本地的dns解析器有缓存直接返回;
2、查找本地hosts文件,根据对应的映射返回IP;
3、指定DNS服务器,DNS服务器有缓存直接返回;
4、解析域名,将请求交给根域DNS(如果没开启转发,全球13个根域DNS);
5、根域告诉DNS服务器.com的DNS地址;
6、DNS服务器查找.com解析www.baidu.com;
7、.com域DNS告诉DNS服务器baidu.com的DNS;
8、DNS服务器查找baidu.com DNS;
9、baidu.com 返回www.baidu.com的IP地址给DNS服务器;
10、DNS服务器将DNS响应报文返回给用户。

三、DNS解析记录分类

1、SOA:描述域管理NS,主从DNS服务器同步参数。
2、NS:域DNS服务器FQDN
3、A:域名到IP的映射
4、MX:域邮件服务器
5、CNAME:域名别名
6、PTR:IP到域名的映射

DNS软件介绍

1、软件名称:BIND
2、监听端口:udp53(解析)、tcp53(区域传送)
3、相关文件:
                                            /etc/named.conf:配置文件
                                            /etc/named.rfc1912.zones:定义正解、反解区域
                                            /var/named:存放DNS数据的默认目录
                                            /var/named/data/named.run:DNS的日志文件

四、DNS解析的工具

1、nslookup
2、host
3、dig

五、DNS安装过程

[[email protected] ~]# yum insatll bind bind-chroot bind-utils -y  //centos
[[email protected] ~]# apt-get install bind9  //ubuntu
配置主配置文件:
[[email protected] ~]# vim /etc/named.conf
.........
listen-on port 53 { any; };
allow-query     { any; };
[[email protected] ~]# service named start  //启动named服务
验证服务是否正常启动
[[email protected] ~]# ps -aux| grep named
[[email protected] ~]# lsof -i:53

六、DNS的正向解析配置

假设要解析一个域test.com
[[email protected] ~]# vim /etc/named.rfc1912.zones
.......
zone "test.com" IN {
        type master;
        file "test.com.zone";
};
配置对应的A记录:
[[email protected] ~]# cp /var/named/named.localhost  /var/named/test.com.zone
[[email protected] ~]# chown root.named /var/named/test.com.zone
[[email protected] ~]# vim /var/named/test.com.zone
$TTL 1D
@         IN       SOA       test.com.     admin.test.com.  (200 1H 15M 1W 1D )
@         IN       NS         www.test.com.
www     IN       A           10.50.63.185
[[email protected] ~]# service named restart  //重启named服务
[[email protected] ~]# dig @localhost www.test.com   //dig测试DNS是否正常解析

七、DNS的反向解析配置

编辑/etc/named.rfc1912.zones
[[email protected] ~]# vim /etc/namd.rfc1912.zones
.........
zone "63.50.10.in-addr.arpa" IN {     //注意命名规则,IP:10.50.63.0/24--->60.50.10.in-addr.arpa
        type master;
        file "10.50.63.zone";
        allow-update { none };
};
编辑对应的PTR记录
$TTL 1D
@         IN       SOA        test.com.     admin.test.com.  (200 1H 15M 1W 1D )
@         IN       NS           www.test.com.
185       IN       PTR        www.test.com   //第一列的数字为IP的末位
[[email protected] ~]# service named restart   //重启named服务
[[email protected] ~]# dig @localhost -x 10.50.63.185  //验证DNS反解是否正常

八、配置DNS实现负载均衡
将DNS中配置的一个域名对应多个IP时,DNS将会返回客户端不同的IP,这样就会达到负载均衡的效果。

$TTL 1D
@         IN      SOA       test.com.     admin.test.com.  (200 1H 15M 1W 1D )
@         IN      NS         dns.test.com
www     IN     A            10.50.63.185
www     IN     A            10.50.63.186
www     IN     A            10.50.63.187
[[email protected] ~]# service named restart
[[email protected] ~]# dig @localhost www.test.com

九、配置纯缓存的DNS服务
纯缓存的DNS服务器就是本身并不维护zone文件,只是简单地把DNS请求转发给指定的DNS服务器,然后把结果返回给客户端同时把该结果记录在系统缓存中。等下次相同的请求,直接将该记录返回给客户端。

[[email protected] ~]# cat /etc/named.conf
options{
        ..........
        forward only;
        forwarders {
                223.5.5.5;
                223.6.6.6;
                8.8.8.8;
                8.8.4.4;
        };
        ...........
};
[[email protected] ~]# dig @localhost www.baidu.com   //dig测试

十、主从DNS搭建
优点:
提供冗余,避免单点故障;
均衡负载查询需求,提高系统可用性;

主服务器(10.50.63.183)配置:/etc/named.rfc1912.zones
zone "test.com" IN {
        type master;
        file "test.com.zone";
        allow-update { none; };
        allow-transfer { 10.50.82.44; };
};
zone "63.50.10.in-addr.arpa" IN {
        type master;
        file "10.50.63.zone";
        allow-update { none };
        allow-transfer { 10.50.82.44; };
};

从服务器(10.50.82.44)配置:
zone "test.com" IN {
        type slave;
        file "slaves/test.com.zone";
        masters { 10.50.63.185; };
};
zone "63.50.10.in-addr.arpa" IN {
        type slave;
        file "slaves/10.50.63.zone";
        masters { 10.50.63.185; };
};
主从DNS服务器重启DNS服务:service named restart
在从服务器上查看解析文件是否同步
[[email protected] ~]# ll /var/named/slaves/
[[email protected] ~]# dig @localhost -x 10.50.63.185

以上是关于容器的DNS和主机名的主要内容,如果未能解决你的问题,请参考以下文章

使用dns批量管理普通主机名相关问题

DNS

DNS主从

BIND和DNS名称解析

Python:如何使用特定的 DNS 服务器查找带有 IP 的主机名?

DNS服务器搭建完整说明