0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

基于Docker提供内置的DNS服务器

dyquk4xk2p3d 来源:Se7en的架构笔记 2023-08-08 14:14 次阅读

DNS简介

DNS服务是域名系统的缩写, 英文全称:Domain Name System,将域名和IP地址相互映射。在容器环境中,DNS至关重要,例如在Kubernetes集群中,通常一组Pod由一个Service负载,但是Service的IP地址有可能需要变动,那么就可以让Pod通过域名的方式去访问Service,Pod无需理会IP地址的变化。

Docker DNS

Docker link

Docker link是一个遗留的特性,在新版本的Docker中,一般不推荐使用。简单来说Docker link就是把两个容器连接起来,容器可以使用容器名进行通信,而不需要依赖ip地址(其实就是在容器的/etc/hosts文件添加了host记录,原本容器之间的IP就是通的,只是我们增加了host记录,可以不用IP去访问)

创建容器centos-1:

[root@host1~]#dockerrun-itd--namecentos-1registry.cn-shanghai.aliyuncs.com/public-namespace/cr7-centos7-tool:v2

创建容器centos-2,使用--link name:alias,name就是要访问的目标机器,alias就是自定义的别名。

[root@host1~]#dockerrun-itd--namecentos-2--linkcentos-1:centos-1-aliasregistry.cn-shanghai.aliyuncs.com/public-namespace/cr7-centos7-tool:v2

查看容器centos-2的/etc/hosts文件:

[root@host1~]#dockerexeccentos-2cat/etc/hosts
127.0.0.1localhost
::1localhostip6-localhostip6-loopback
fe00::0ip6-localnet
ff00::0ip6-mcastprefix
ff02::1ip6-allnodes
ff02::2ip6-allrouters
172.18.0.2centos-1-alias9dde6339057acentos-1#容器centos-1的host记录
172.18.0.3f1a7e5fa3d96#容器centos-2自身的host记录

意味着centos-2可以用centos-1-alias,9dde6339057a,centos-1来访问原先创建的容器。centos-1是不可以通过hostname访问centos-2的。

[root@host1 ~]# docker exec centos-2 ping centos-1-alias
PING centos-1-alias (172.18.0.2) 56(84) bytes of data.
64 bytes from centos-1-alias (172.18.0.2): icmp_seq=1 ttl=64 time=0.174 ms
^C
[root@host1 ~]# docker exec centos-2 ping centos-1
PING centos-1-alias (172.18.0.2) 56(84) bytes of data.
64 bytes from centos-1-alias (172.18.0.2): icmp_seq=1 ttl=64 time=1.37 ms
64 bytes from centos-1-alias (172.18.0.2): icmp_seq=2 ttl=64 time=0.523 ms
^C
[root@host1 ~]# docker exec centos-2 ping 9dde6339057a
PING centos-1-alias (172.18.0.2) 56(84) bytes of data.
64 bytes from centos-1-alias (172.18.0.2): icmp_seq=1 ttl=64 time=2.59 ms
64 bytes from centos-1-alias (172.18.0.2): icmp_seq=2 ttl=64 time=3.75 ms

Embedded DNS

从Docker 1.10开始,Docker提供了一个内置的DNS服务器,当创建的容器属于自定义网络时,容器的/etc/resolv.conf会使用内置的DNS服务器(地址永远是127.0.0.11)来解析相同自定义网络内的其他容器。

f89abf8c-35a0-11ee-9e74-dac502259ad0.png

为了向后兼容,default bridge网络的DNS配置没有改变,默认的docker网络使用的是宿主机的/etc/resolv.conf的配置。

创建一个自定义网络:

[root@host1~]#dockernetworkcreatemy-network

#bridge,host,none为docker默认创建的网络
[root@host1~]#dockernetworkls
NETWORKIDNAMEDRIVERSCOPE
2115f17cd9d0bridgebridgelocal
19accfa096cfhosthostlocal
a23c8b371c7fmy-networkbridgelocal
0a33edc20faenonenulllocal

分别创建两个容器属于自定义网络my-network中:

[root@host1~]#dockerrun-itd--namecentos-3--netmy-networkregistry.cn-shanghai.aliyuncs.com/public-namespace/cr7-centos7-tool:v2
[root@host1~]#dockerrun-itd--namecentos-4--netmy-networkregistry.cn-shanghai.aliyuncs.com/public-namespace/cr7-centos7-tool:v2

查看容器centos-4的/etc/hosts和/etc/resolv.conf,可以看到nameserver添加的IP为127.0.0.11的Embedded DNS:

#/etc/hosts中没有配置对方的host记录
[root@host1~]#dockerexeccentos-4cat/etc/hosts
127.0.0.1localhost
::1localhostip6-localhostip6-loopback
fe00::0ip6-localnet
ff00::0ip6-mcastprefix
ff02::1ip6-allnodes
ff02::2ip6-allrouters
172.19.0.3555281f37ea3

#/etc/resolv.conf配置了dns服务器127.0.0.11
[root@host1~]#dockerexeccentos-4cat/etc/resolv.conf
nameserver127.0.0.11
optionsndots:0

此时centos-3和centos-4可以互相解析:

[root@host1 ~]# docker exec centos-4 ping centos-3
PING centos-3 (172.19.0.2) 56(84) bytes of data.
64 bytes from centos-3.my-network (172.19.0.2): icmp_seq=1 ttl=64 time=0.128 ms
64 bytes from centos-3.my-network (172.19.0.2): icmp_seq=2 ttl=64 time=0.078 ms
64 bytes from centos-3.my-network (172.19.0.2): icmp_seq=3 ttl=64 time=0.103 ms
^C

[root@host1 ~]# docker exec centos-3 ping centos-4
PING centos-4 (172.19.0.3) 56(84) bytes of data.
64 bytes from centos-4.my-network (172.19.0.3): icmp_seq=1 ttl=64 time=0.087 ms
64 bytes from centos-4.my-network (172.19.0.3): icmp_seq=2 ttl=64 time=0.101 ms
64 bytes from centos-4.my-network (172.19.0.3): icmp_seq=3 ttl=64 time=0.076 ms
^C

Docker DNS配置

方式一:docker run (针对单个容器)

Flag Description
--dns 指定DNS服务器地址,如果容器不能访问指定的所有ip地址,则会使用8.8.8.8作为DNS服务器地址(Docker默认定义的)
--dns-search 当容器访问一个不包括完全域名的主机名时,在该主机名后面添加dns-search指定的域名后缀,例如容器访问centos-1,dns-search配置的是example.com,则会解析成centos-1.example.com
--dns-opt options ndots:5的含义是当查询的域名字符串内的点字符数量大于等于ndots值(5)时,则认为是完整域名,直接解析,不会走 search 域
--hostname 指定容器hostname

方式二:daemon.json

nameserver只针对docker默认网络所有容器,dns-search和dns-opts针对所有网络容器。

{
"dns":["114.114.114.114","223.5.5.5"],
"dns-opts":["ndots:5"],
"dns-search":["example.com"]
}

Kubernetes DNS

f8bdfb82-35a0-11ee-9e74-dac502259ad0.png

在kubernetes中,有以下4中DNS策略,可以通过dnsPolicy指定:

Default: Pod从运行所在的节点继承名称解析配置,就是该 Pod 的 DNS 配置会跟宿主机完全一致。。Default 不是默认的 DNS 策略。如果未明确指定dnsPolicy,则使用 ClusterFirst。

ClusterFirst: 它会预先把 kube-dns(或 CoreDNS)的信息当作预设参数写入到该 Pod 内的 DNS 配置。不过ClusterFirst 还有一个冲突,如果你的 Pod 设置了 HostNetwork=true,则 ClusterFirst 就会被强制转换成 Default。

ClusterFirstWithHostNet: 对于与 hostNetwork(网络接口使用的是宿主机的) 一起运行的 Pod,应显式设置其DNS策略 ClusterFirstWithHostNet,他将同时解决default和ClusterFirst的DNS解析。如果不加上dnsPolicy: ClusterFirstWithHostNet,Pod默认使用所在宿主主机使用的DNS,这样也会导致容器内不能通过service name 访问k8s集群中其他Pod。

None: 表示会清除 Pod 预设的 DNS 配置,当 dnsPolicy 设置成这个值之后,Kubernetes 不会为 Pod 预先载入任何自身逻辑判断得到的 DNS 配置。因此若要将 dnsPolicy 的值设为 None,为了避免 Pod 里面没有配置任何 DNS参数,至少需要在dnsConfig中设置nameservers的参数。

在 Kubernetes 1.11 及其以后版本中,推荐使用 CoreDNS, kubeadm 默认会安装 CoreDNS。当Pod向CoreDNS发起DNS解析请求时,CoreDNS先会自己尝试解析,如果无法解析该域名,会将DNS请求交给CoreDNS的Pod所在的宿主机,让宿主机尝试解析。

本次实验kubernetes集群中coredns service的地址是10.247.3.10。

❯ kubectl get svc -n kube-system
NAME      TYPE        CLUSTER-IP    EXTERNAL-IP   PORT(S)                  AGE
coredns   ClusterIP   10.247.3.10           53/UDP,53/TCP,8080/TCP   13d

宿主机的/etc/resolv.conf文件如下:

[root@cr7-k8s-85091-ydy99 ~]# cat /etc/resolv.conf
# Generated by NetworkManager
search openstacklocal
nameserver 100.125.1.250
nameserver 100.125.64.250
options single-request-reopen

CluterFirst

CluterFirst是kubernetes集群中默认的DNS策略,这里是一个普通的Pod yaml文件,没有指定dnsPolicy。

apiVersion:v1
kind:Pod
metadata:
name:busybox
namespace:default
spec:
containers:
-image:busybox:1.28
command:
-sleep
-"3600"
imagePullPolicy:IfNotPresent
name:busybox
restartPolicy:Always

创建Pod后,进入该Pod查看/etc/resolv.conf配置,可以看到nameserver为CoreDNS的service的地址。

/#cat/etc/resolv.conf
nameserver10.247.3.10
searchdefault.svc.cluster.localsvc.cluster.localcluster.localopenstacklocal
optionssingle-request-reopentimeout:2ndots:5

如果在Pod的yaml文件中指定了DNS参数,会和默认的ClusterFirst的配置叠加:

apiVersion:v1
kind:Pod
metadata:
name:busybox
namespace:default
spec:
containers:
-image:busybox:1.28
command:
-sleep
-"3600"
imagePullPolicy:IfNotPresent
name:busybox
restartPolicy:Always
dnsConfig:
nameservers:
-1.2.3.4
searches:
-ns1.svc.cluster-domain.example
-my.dns.search.suffix
options:
-name:ndots
value:"2"
-name:edns0
/#cat/etc/resolv.conf
nameserver10.247.3.10
nameserver1.2.3.4
searchdefault.svc.cluster.localsvc.cluster.localcluster.localopenstacklocalns1.svc.cluster-domain.examplemy.dns.search.suffix
optionstimeout:2ndots:2edns0single-request-reopen

Default

dnsPolicy为Default模式时,Pod使用的是宿主机的DNS配置:

apiVersion:v1
kind:Pod
metadata:
name:busybox
namespace:default
spec:
containers:
-image:busybox:1.28
command:
-sleep
-"3600"
imagePullPolicy:IfNotPresent
name:busybox
restartPolicy:Always
dnsPolicy:Default
/#cat/etc/resolv.conf
nameserver100.125.1.250
nameserver100.125.64.250
searchopenstacklocal
optionssingle-request-reopentimeout:2

ClusterFirstWithHostNet

当Pod使用了hostNetwork模式时,Pod使用的是宿主机的网卡:

#进入pod后查看
/#ifconfig
......
eth0Linkencap:EthernetHWaddrFA3E14:9B
inetaddr:192.168.0.8Bcast:192.168.0.255Mask:255.255.255.0
inet6addr:fe80:3eff149b/64Scope:Link
UPBROADCASTRUNNINGMULTICASTMTU:1500Metric:1
RXpackets:44239432errors:0dropped:0overruns:0frame:0
TXpackets:47841007errors:0dropped:0overruns:0carrier:0
collisions:0txqueuelen:1000
RXbytes:19884749467(18.5GiB)TXbytes:34713001649(32.3GiB)
......

当Pod使用hostNetwork模式,并且未指定dnsPolicy为ClusterFirstWithHostNet时,Pod会使用的宿主机的DNS:

apiVersion:v1
kind:Pod
metadata:
name:busybox
namespace:default
spec:
containers:
-image:busybox:1.28
command:
-sleep
-"3600"
imagePullPolicy:IfNotPresent
name:busybox
restartPolicy:Always
hostNetwork:true

此时Pod无法通过域名访问Kubernetes集群内部:

#hostNetwork模式如果不指定dnsPolicy则使用default模式,使用的宿主机的DNS
/#cat/etc/resolv.conf
nameserver100.125.1.250
nameserver100.125.64.250
searchopenstacklocal
optionssingle-request-reopentimeout:2

#pod可以通过域名访问外网,但是无法通过域名访问kubernetes集群内部
/#pingbaidu.com
PINGbaidu.com(39.156.69.79):56databytes
64bytesfrom39.156.69.79:seq=0ttl=49time=29.193ms
64bytesfrom39.156.69.79:seq=1ttl=49time=29.104ms
^C
---baidu.compingstatistics---
2packetstransmitted,2packetsreceived,0%packetloss
round-tripmin/avg/max=29.104/29.148/29.193ms
/#pingnginx
ping:badaddress'nginx'

如果Pod在hostNetwork模式下要通过域名的方式访问kubernetes集群内的服务,需要指定dnsPolicy为ClusterFirstWithHostNet:

apiVersion:v1
kind:Pod
metadata:
name:busybox
namespace:default
spec:
containers:
-image:busybox:1.28
command:
-sleep
-"3600"
imagePullPolicy:IfNotPresent
name:busybox
restartPolicy:Always
hostNetwork:true
dnsPolicy:ClusterFirstWithHostNet

此时查看Pod的DNS配置,可以看到nameserver使用的是CoreDNS:

#ClusterFirstWithHostNet模式DNS使用的是coredns的地址,
/#cat/etc/resolv.conf
nameserver10.247.3.10
searchdefault.svc.cluster.localsvc.cluster.localcluster.localopenstacklocal
optionssingle-request-reopentimeout:2ndots:5

#可以通过域名访问外网,也通过域名访问集群内部
/#nslookupbaidu.com
Server:10.247.3.10
Address1:10.247.3.10coredns.kube-system.svc.cluster.local

Name:baidu.com
Address1:39.156.69.79
Address2:220.181.38.148
/#
/#nslookupnginx
Server:10.247.3.10
Address1:10.247.3.10coredns.kube-system.svc.cluster.local

Name:nginx
Address1:10.247.60.222nginx.default.svc.cluster.local
/#

None

当设置dnsPolicy为None时,不会使用Kubernetes集群和宿主机的 DNS 策略,但是必须自己配置dnsConfig。

apiVersion:v1
kind:Pod
metadata:
name:busybox
namespace:default
spec:
containers:
-image:busybox:1.28
command:
-sleep
-"3600"
imagePullPolicy:IfNotPresent
name:busybox
restartPolicy:Always
dnsPolicy:None
dnsConfig:
nameservers:
-1.2.3.4
/ # cat /etc/resolv.conf
nameserver 1.2.3.4
options single-request-reopen timeout:2

StatefulSet 和 Service

StatefulSet Pod 具有唯一的标识,该标识包括顺序标识、稳定的网络标识和稳定的存储。该标识和 Pod 是绑定的,不管它被调度在哪个节点上。

StatefulSet 中的每个 Pod 根据 StatefulSet 的名称和 Pod 的序号派生出它的主机名。组合主机名的格式为$(StatefulSet 名称)-$(序号)。下例将会创建三个名称分别为web-0、web-1、web-2的 Pod。StatefulSet 可以使用 Headless Service(无头服务)控制它的 Pod 的网络域。管理域的这个服务的格式为:$(服务名称).$(命名空间).svc.cluster.local,其中cluster.local是集群域。一旦每个 Pod 创建成功,就会得到一个匹配的 DNS 子域,格式为:$(pod 名称).$(所属服务的 DNS 域名),其中所属服务由 StatefulSet 的serviceName域来设定。

f8dc9498-35a0-11ee-9e74-dac502259ad0.png

通过域名去访问Headless Service负载的Pod是不走iptables的,通过域名去访问ClusterIP负载的Pod要走Iptables。

下面给出一些选择集群域、服务名、StatefulSet 名、及其怎样影响 StatefulSet 的 Pod 上的 DNS 名称的示例:

Cluster Domain Service (ns/name) StatefulSet (ns/name) StatefulSet Domain Pod DNS Pod Hostname
cluster.local default/nginx default/web nginx.default.svc.cluster.local web-{0..N-1}.nginx.default.svc.cluster.local web-{0..N-1}
cluster.local foo/nginx foo/web nginx.foo.svc.cluster.local web-{0..N-1}.nginx.foo.svc.cluster.local web-{0..N-1}
kube.local foo/nginx foo/web nginx.foo.svc.kube.local web-{0..N-1}.nginx.foo.svc.kube.local web-{0..N-1}

Headless Service

首先我们将StatefulSet和Headless Service结合使用,(通常情况下是这么做的):

apiVersion:v1
kind:Service
metadata:
name:headless-nginx
labels:
app:nginx
spec:
ports:
-port:80
name:web
clusterIP:None
selector:
app:nginx
---
apiVersion:apps/v1
kind:StatefulSet
metadata:
name:web
spec:
selector:
matchLabels:
app:nginx
serviceName:headless-nginx
replicas:3
template:
metadata:
labels:
app:nginx
spec:
containers:
-name:nginx
image:nginx:1.7.9
ports:
-containerPort:80
name:web

查看创建的StatefulSet的Pod,命名是有规律的按照0,1,2的顺序递增。

root@master01:~/yaml/service#kubectlgetpod-owide
NAMEREADYSTATUSRESTARTSAGEIPNODENOMINATEDNODEREADINESSGATES
web-01/1Running06s192.168.5.59worker01
web-11/1Running05s192.168.30.117worker02
web-21/1Running03s192.168.5.58worker01

查看创建的Headless Service,可以看到ClusterIP为None:

root@master01:~/yaml/service#kubectlgetsvc
NAMETYPECLUSTER-IPEXTERNAL-IPPORT(S)AGE
headless-nginxClusterIPNone80/TCP15m

找一个相同namespace的Pod来解析该Headless Service:

root@master01:~/yaml/service#kubectlexecbusybox1--nslookupheadless-nginx
Server:10.96.0.10
Address1:10.96.0.10kube-dns.kube-system.svc.cluster.local

#解析出来的ip地址为3个StatefulSet的pod的ip
Name:headless-nginx
Address1:192.168.30.117web-1.headless-nginx.default.svc.cluster.local
Address2:192.168.5.59web-0.headless-nginx.default.svc.cluster.local
Address3:192.168.5.58web-2.headless-nginx.default.svc.cluster.local

查看default命名空间下的Pod的/etc/resolv.conf配置:

root@master01:~/yaml/service#kubectlexecbusybox1--cat/etc/resolv.conf
nameserver10.96.0.10
searchdefault.svc.cluster.localsvc.cluster.localcluster.local
optionsndots:5

在不同的 namespace 下的 Pod 通过 Service 访问的时候,需要在 Service name 后面加上 .。名字>

root@master01:~/yaml/service#kubectlexecbusybox2-nkube-system--nslookupheadless-nginx.default
Server:10.96.0.10
Address1:10.96.0.10kube-dns.kube-system.svc.cluster.local

Name:headless-nginx.default.svc.cluster.local
Address1:192.168.5.58web-2.headless-nginx.default.svc.cluster.local
Address2:192.168.5.59web-0.headless-nginx.default.svc.cluster.local
Address3:192.168.30.117web-1.headless-nginx.default.svc.cluster.local

查看kube-system命名空间下的Pod的/etc/resolv.conf配置:

root@master01:~/yaml/service#kubectlexecbusybox2-nkube-system--cat/etc/resolv.confnameserver10.96.0.10
searchkube-system.svc.cluster.localsvc.cluster.localcluster.local
optionsndots:5

ClusterIP Service

现在我们将StatefulSet和ClusterIP Service结合使用:

apiVersion:v1
kind:Service
metadata:
name:clusterip-nginx
labels:
app:nginx
#ClusterIP不为None则表示该Service有ClusterIP
spec:
ports:
-port:80
name:web
selector:
app:nginx

查看创建的Service:

root@master01:~/yaml/service#kubectlgetsvc
NAMETYPECLUSTER-IPEXTERNAL-IPPORT(S)AGE
clusterip-nginxClusterIP10.110.176.20180/TCP13s

此时用Pod解析域名只能得到ClusterIP地址,无法得到Pod的IP地址:

root@master01:~/yaml/service#kubectlexecbusybox1--nslookupclusterip-nginx
Server:10.96.0.10
Address1:10.96.0.10kube-dns.kube-system.svc.cluster.local

Name:clusterip-nginx
Address1:10.110.176.201clusterip-nginx.default.svc.cluster.local

Pod 的 hostname 与 subdomain

在 Kubernetes 中,如果不指定 Pod 的 hostname,其默认为 pod.metadata.name,通过 spec.hostname 字段可以自定义;另外还可以给 Pod 设置 subdomain,通过 spec.subdomain 字段。比如下面这个例子:

创建一个Nginx Pod,指定Pod的hostname和subdomain:

apiVersion:v1
kind:Pod
metadata:
name:nginx
labels:
name:nginx
spec:
hostname:domain-test
subdomain:subdomain-test
containers:
-image:nginx
name:nginx
---
apiVersion:v1
kind:Service
metadata:
name:subdomain-test
spec:
selector:
name:nginx
ports:
-port:80
targetPort:80
protocol:TCP

可以查看这个 Pod 的 hostname 和 hosts 文件:

[root@localhost ~]# kubectl get po -o wide
NAME                           READY   STATUS    RESTARTS   AGE     IP             NODE           NOMINATED NODE   READINESS GATES
busybox-5bbb5d7ff7-dh68j       1/1     Running   0          112m    10.244.1.246   172-16-105-2   
nginx                          1/1     Running   0          2m      10.244.1.253   172-16-105-2   
[root@localhost ~]# kubectl exec -it nginx bash
root@domain-test:/# cat /etc/hosts
# Kubernetes-managed hosts file.
127.0.0.1localhost
::1localhost ip6-localhost ip6-loopback
fe00::0ip6-localnet
fe00::0ip6-mcastprefix
fe00::1ip6-allnodes
fe00::2ip6-allrouters
10.244.1.253domain-test.subdomain-test.default.svc.cluster.localdomain-test
root@domain-test:/#

在 busybox 容器中通过域名访问这个Pod:

[root@localhost ~]# kubectl exec -it busybox-5bbb5d7ff7-dh68j sh
/ # wget domain-test.subdomain-test
Connecting to domain-test.subdomain-test (10.244.1.253:80)
saving to 'index.html'
index.html           100% |*****************************************************|   612  000 ETA
'index.html' saved

责任编辑:彭菁

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • DNS服务器
    +关注

    关注

    0

    文章

    21

    浏览量

    8393
  • ip地址
    +关注

    关注

    0

    文章

    240

    浏览量

    16744
  • 容器
    +关注

    关注

    0

    文章

    481

    浏览量

    21884
  • Docker
    +关注

    关注

    0

    文章

    437

    浏览量

    11603

原文标题:如何管理 Docker 容器和 Kubernetes Pod 的 DNS

文章出处:【微信号:良许Linux,微信公众号:良许Linux】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    【Raspberry Pi 3试用体验】+ 搭建本地DNS服务器

    address=/taobao.com/218.195.54.90resolv.conf:文件主要的作用是DNS客户机配置文件,设置DNS服务器的IP地址及DNS域名.如果我们不配置的
    发表于 04-24 21:39

    Harmony DNS服务器不起作用

    我想从PIC32 TythEngWebServer演示应用程序开始,并将DNS服务器添加到它,这样我就可以把浏览指向域名而不是IP地址。我的基础演示应用程序在我的硬件上运行,这是一个使用PIC32
    发表于 03-11 07:18

    Linux中DNS服务器配置分析

    很多平台平台提供云解析功能,所谓的云解析就是一个DNS服务器,一般情况下,在域名的提供商购买一个域名之后,会指定一个NS记录,例如,在域名的提供
    发表于 07-17 08:14

    DNS攻击防范科普系列1》—你的DNS服务器真的安全么?

    DNS服务器为了加快解析速度,通常都会把访问过的域名服务器数据暂存起来。待下次其他用户需要解析域名时,如果发现缓存中有该数据,就立刻调出来提供服务
    发表于 10-16 15:21

    DNS攻击防范科普系列2》 -DNS服务器怎么防DDoS攻击

    ,而且DNS协议里面明确说明了DNS服务器可以限制为TCP提供的资源,所以权威DNS的DDoS攻击防御最重要的是如何防住UDP攻击。 但是U
    发表于 10-16 15:28

    Docker部署Redis服务器集群的方法

    Docker部署Redis服务器集群
    发表于 06-13 09:12

    如何在web服务器的基础上加一个DNS服务器

    简介参考一中已经把原理讲的很简单,这里不在赘述,大体意思就是在web服务器的基础上加上一个DNS服务器。参考二中的wifi有时连接不稳定、而且需要自己打开浏览,这里实现实在参考二的基
    发表于 02-10 06:52

    什么时候使用DNS服务器合适?

    什么时候使用DNS服务器合适?在 ap 模式下使用 esp8266 作为强制门户时,我只使用了 dns 服务器。还有其他情况需要使用dns
    发表于 02-24 08:22

    DNS服务器及其配置

    DNS服务器及其配置:DNS的作用将主机名字转换成二进制IP地址。1.DNS被设计成为一个联机分布数据库系统。2.DNS采用客户
    发表于 12-07 14:39 20次下载

    如何配置Win 2003的DNS服务器

    如何配置Win 2003的DNS服务器 概要   本文介绍了如何配置“域名系统”(DNS) 服务器,使其承载可从外
    发表于 01-29 11:35 626次阅读

    DNS服务器DNS服务器地址是什么

    域名系统,属于一种组织成域层次结构的计算机和网络服务器命名系统。域名系统主要用于分配域名地址、IP地址给互联网中的主机,系统再将用户提供的域名地址自动转为IP地址。域名服务就是一种用于域名系统的互联网工具,
    的头像 发表于 03-30 15:57 7893次阅读

    探讨DNS服务器解析

    本地 DNS 服务器收到来自客户端的 DNS 请求,它会在其缓存中查找 google.com 的 IP 地址。如果它可以找到对应的条目,它将直接将 IP 地址返回给客户端。否则,本地 DNS
    的头像 发表于 05-05 15:42 1274次阅读

    DNS服务器无响应的解决方法

      域名系统( DNS )是将网址转换为IP地址的过程。 DNS服务器通常由互联网服务提供商( ISP )
    的头像 发表于 03-01 15:43 6826次阅读

    DNS服务器是什么?有哪些类型?

    ,小编我给大家分析一下DNS服务器是什么?有哪些类型? 一、DNS服务器是什么? DNS服务器
    的头像 发表于 08-14 17:40 1449次阅读

    dns服务器地址设置为多少

    DNS(域名系统)是互联网的基础设施之一,用于将域名转换为IP地址,使用户可以访问网络资源。要设置DNS服务器地址,首先需要理解DNS的工作原理和不同类型的
    的头像 发表于 01-15 11:11 664次阅读