`
haierboos
  • 浏览: 467187 次
文章分类
社区版块
存档分类
最新评论

Linux入门基础 #13:DNS基础及域名系统架构

阅读更多



本文出自 http://blog.csdn.net/shuangde800

---------------------------------------------------------------------------------


域名


IP地址往往难以记忆,所以我们一般使用域名进行管理

www.google.com

域名分为三个部分,用“.”(点)分割。严格的域名最后还有一个".",但一般省略不写。
-类型 标识此域名的类型(com/net/org/edu/gov等)
-域名 域名称
-主机名 该域中的某台主机名称


www: 主机名
google:域名
com: 类型



DNS


  • 每个域名代表一IP,而DNS就是用来在IP与域名之间进行转换的服务

www.google.com <---> 74.125.128.105


  • DNS(Domain Name System)服务由DNS服务器提供






DNS客户端


  • 我们日常使用的支持网络的计算机一般都是作为一个DNS客户端使用,应用程序、服务、进程等等通过操作系统底层的功能发起对dns服务器的查询,对特定域名进行解析
  • Linux中一般使用系统底层提供的gethostbyname()功能进行域名解析
  • 解析可以基于以下几种方式进行:

1) 文件(/etc/hosts、/etc/networks)

下面是/etc/hosts,可以看到这个文件把localhost解析为127.0.0.1以及其它的一些解析


在查DNS之前都会先查这个文件,所以黑客可能会通过修改这个文件,让用户进入一些钓鱼网站。

下面是/etc/networks文件




2)DNS

几乎所有的域名都是通过DNS域名服务器来解析的。DNS配置文件是在/etc/resolv.conf文件下,里面配置DNS服务器

3) NIS

这个用得比较少,基本被淘汰掉了

  • 可以通过配置文件 /etc/nsswitch.conf控制查询顺序

其中的host:files dns .... 这一行是控制顺序的


DNS专用查询命令

  • 命令host可用于进行dns查询:

$ host www.google.com

  • 命令dig也可进行dns查询,输出较为详细的信息:

$ dig www.google.com


  • 命令host、dig都不会使用/etc/nsswitch.conf的配置,只有会通过/etc/resolv.conf进行dns查询。即会绕过前面那个文件配置。





DNS查询


DNS是一个树状结构,查询的时候根据域名从右到左查询,域名每一级有独立的一个或多个服务器。

例如,www.linuxcast.net.



最上面的"."是根域名服务器(root DNS Server),用来保存下一级的com/net...的地址,全球共有13台根域名服务器。这13台根域名服务器中名字分别为“A”至“M”,其中10台设置在美国,另外各有一台设置于英国、瑞典和日本。

第二级是顶级域名服务器(Top Level Server),每个顶级域名服务器都是由一台或多台服务器控制的,每个一分别保存相应的以/com/net/org/....为后缀的域名的管理。

第三级是授权服务器(Authoritative Server),只负责linuxcast以下的信息。这里可以查找到www, mail, 和ftp主机。

  • $ dig +trace www.linuxcast.net
这个命令可以追踪整个域名的查询过程


可以发现查询顺序是: . ——》net. ——》linuxcast.net. ——》www.linuxcast.net.



DNS的查询类型


1. 迭代查询(Iterative Query)

例如客户端用迭代查询的方式访问www.linuxcast.net:



1. 首先客户端发送请求到本地DNS服务器(Local DNS Server,即客户端配置的DNS服务器)
2. 如果本地DNS不知道这个域名的话,就会去查询根域名服务器
3. 根服务器返回.net服务器的地址
4. 然后本地DNS在去查询net服务器
5. net服务器返回linuxcast.net的地址
6. 本地DNS再向Linuxcast.net发送请求
7. linuxcast.net返回www主机给本地DNS
8. 本地DNS返回www.linuxcast.net的地址给客户端。


2. 递归查询(Recursive Query)
例如客户端用递归查询的方式访问www.linuxcast.net:


1. 首先客户端发送请求到本地DNS
2. 如果本地DNS不知道这个地址的话,那么就会向根DNS服务器查询。
3. 然后根DNS服务器不会像迭代查询一样返回net地址,而是它会代替本地dns向net服务器发送请求查询
4. 然后net服务器也不会像迭代查询一样返回linuxcast.net的地址,而是代根DNS服务器向linuxcast.net查询
5. 最后linuxcast.net服务器返回www主机的地址给net
6. net服务器返回www.linucast.net的地址给根DNS服务器
7. 根DNS服务器这时再返回www.linucast.net的地址给本地DNS
8. 最后本地DNS返回目标地址给客户端

这种查询方式的缺点:在每一级的服务器上,都会缓存大量的信息,因为它要等待查询返回,可能会占用大量的内存。

所以实际应用中,会结合这两种方式使用,即在客户端向本地DNS服务器查询是使用递归查询,而本地DNS服务器和其他级服务器使用的是迭代查询!




资源记录


在DNS服务器上,DNS的信息通过一个叫做资源记录(RR,Resource Record)的格式进行保存,RR不仅能够保存域名到IP地址的对应信息,还能够保存很多其它信息。

资源记录(RR,Resource Record)常用的属性:
- NAME(名称)
- CLASS(类别)
- TYPE(类型)
- RDATA(数据)

如,
NAME CLASS TYPE RDATA
www IN(Internet) A 192.168.1.1
mail IN A 192.168.1.2
server1 IN CNAME www
IN MX 10 mail.linuxcast.net

资源记录类型


DNS的资源记录可以记录很多类型资源,而不仅仅是IP地址,常见的资源记录类型:

类型 表示内容
A IPv4地址
AAAA IPv6地址
MX 邮件记录
CNAME 别名
PTR 指针(逆向解析)
SRV 服务资源





DNS服务器类型


  • 主DNS服务器(Primary DNS Server ,Master)
一个域的主服务器保存该域的zone配置文件,该域所有的配置、更改都在该服务器上进行

  • 从服务器(Second DNS Server,Slave)
从服务器一般作为冗余负载使用,一个域的从服务器从该域的主服务器上抓取zone配置文件,从服务器不进行信息修改,所有的修改与主服务器同步

  • 缓存服务器(Caching only Server)
DNS缓存服务器不存在任何zone文件,仅仅依靠缓存作为客户端提供服务,通常用于负载均衡及加速访问使用



ZONE


在DNS服务器中,一般一个域通过一个ZONE文件保存该域的相关信息,zone文件的格式是标准化的,一个典型的zone配置文件内容如下:
有标准模板
STTL ID
@ IN SOA @rname.invalid. (
0 : serial (序列号,DNS服务器修改过一次序列号加1,从服务器发现序列号和自己不一样就会自动更新)
1D : refresh (刷新时间,1D=1天)
1H : retry (重试, 1H=1小时)
1W : expire
3H); minimum
(上面一般直接使用默认的就可以)
NS @
MX 10 mail.linuxcast.net
www IN A 192.168.1.100
mail IN A 192.168.1.200
(上面是数据)




高级查询


  • 默认dig命令只能查询我们通过dig命令查询其他类型的资源记录:
$ dig -t mx linuxcast.net
$ dig -x www.linuxcast.net 进行逆向解析
$ dig -t soa linuxcast.net






分享到:
评论

相关推荐

    linux c库存函数

    - **苏勇老师linux入门基础视频教程**:适合Linux初学者。 - **苏勇老师LAMP架构部署视频教程-Web开发**:LAMP是一种常见的Web服务架构。 - **苏勇老师ArchLinux系统安装及配置教程**:Arch Linux是一款面向高级用户...

    Linux入门到高级

    ### Linux入门到高级知识点概述 #### 一、Linux操作系统简介 - **定义**: Linux是一种开源、免费的操作系统,属于类Unix系统的一种。它由多个组件构成,包括内核、shell、各种工具和服务程序等。 - **特点**: - ...

    强烈推荐 Linux运维从入门到高级全套案例教程

    #### Linux入门篇 **1.1 Linux操作系统简介** Linux是一款开源、免费的类Unix操作系统,以其强大的稳定性、安全性以及灵活性在服务器领域占据了主导地位。它由芬兰人Linus Torvalds于1991年发起,并迅速发展成为一...

    Linux运维从入门到高级全套案例v3

    1. **Linux入门篇**: - **Linux操作系统简介**:讲解Linux的起源、发展历史、主要发行版以及其与Unix的区别。 - **发展趋势**:介绍Linux在云计算、物联网(IoT)、容器技术(Docker)等领域的应用和未来趋势。 - **...

    最全面的DNS原理入门

    DNS(Domain Name System)是互联网的关键组成部分,它主要负责将人类可读的域名转换为IP地址,以便网络通信。...通过深入学习DNS,我们可以更好地理解互联网背后的基础架构,从而更有效地进行网络操作和故障排查。

    Linux运维从入门到高级全套案例教程.pdf

    深入篇则聚焦于更高级的Web服务器构建,如Nginx、Tomcat/Resin Java服务器的安装和配置,以及LNAMP架构配置、DNS域名解析服务器构建、MySQL主从高可用架构、LVS+Keepalived负载均衡和Squid缓存服务器配置等。...

    linux基础.rar

    接着,"dns.ppt"和"dns.txt"可能讲解了DNS(域名系统)。DNS是互联网的主要目录服务,将易于记忆的域名转换为IP地址。在Linux中,DNS配置通常位于/etc/resolv.conf文件中,而DNS服务器则可以通过bind软件包进行管理...

    Linux运维从入门到高级Linux全套案例教程

    Linux深入篇讲述了更多高级主题,比如构建高性能的Nginx WEB服务器、Rsync同步服务器、Tomcat/Resin JAVA服务器、Nginx与Tomcat动静分离、LNAMP架构配置、DNS域名解析服务器、MySQL主从高可用架构、LVS+Keepalived...

    Linux运维从入门到高级全套案例v3.rar

    Linux入门篇 操作系统简介 1.2 Linux发展趋势 3 Linux系统安装 4 Linux学习技巧 2. Linux系统篇…… 2.1 Linux系统管理… 2.1.1 Linux目录初识 2.1.2 Linux常用命令 2.1.3 Linux用户权限 2.1.4Limx网络配置 3. Linux...

    dns_shell从入门到高手.7z

    这本书是DNS领域的经典之作,介绍了DNS(域名系统)的工作原理和BIND(Berkeley Internet Name Domain)服务器的配置与管理。DNS是互联网的核心组成部分,它将易于记忆的域名转换为IP地址,便于网络通信。书中将涵盖...

    PHP+Mysql开发入门

    - **DNS解析**:确保两个域名都能指向同一个IP地址。 ##### 1.15 域名分类 - **顶级域名**:如.com、.org等。 - **二级域名**:如example.com中的example。 - **子域名**:如sub.example.com中的sub。 ##### 1.16 ...

    使用Scom监控Linux主机

    在现代数据中心环境中,混合操作系统架构已成为常态,其中Linux与Windows共存的情况尤为常见。为了确保这些异构环境的高效运行与管理,使用Microsoft System Center Operations Manager (SCOM) 来监控Linux主机成为...

    Fedora和Red Hat Enterprise Linux实用指南(第6版)

    - **基础知识**:包括Linux的基本概念、历史背景、系统架构等。 - **安装与配置**:详细介绍了Fedora和RHEL的安装过程,以及如何根据实际需求进行定制化配置。 - **用户管理**:讲解了用户账户的创建、权限分配、组...

    Linux rute tutorial

    《Linux Rute 教程》被广泛认为是Linux入门级别的优质教材之一。本书由Paul Sheer编写,并于2001年8月14日发布。尽管部分页面未被Prentice Hall收录,但该教程仍然包含了丰富的Linux基础知识和实用技巧,对于初学者...

    新手入门-企业邮箱及邮件服务器架设

    ### 新手入门:企业邮箱及邮件服务器架设 #### 一、基础知识介绍 电子邮件作为互联网的基本组成部分之一,已经成为企业日常沟通的重要工具。企业邮箱是指使用企业自有域名作为后缀的电子邮件地址,它不仅可以提升...

    Linux经典课件和实验项目

    学习如何安装RedHat,包括分区、选择安装类型、配置网络和设置用户,是理解Linux系统架构的基础。 Shell程序设计是Linux操作中的核心部分。Bash Shell是最常见的Linux命令行解释器,用于执行命令、脚本和自动化任务...

    初级:Linux系统安装回顾&IP配置实战.rar

    在本课程中,我们将深入探讨Linux系统的安装过程及其后的IP配置实战。Linux作为一种开源操作系统,因其稳定性和安全性而被广泛应用于服务器、开发环境以及个人计算机。对于初学者来说,掌握Linux的基本操作,尤其是...

    Pacemaker入门手册_Clusters_from_Scratch

    这通常涉及设置静态IP地址、子网掩码和默认网关,以及开启必要的网络服务,如NTP和DNS,以保证集群内的时间同步和域名解析。 #### 3.3 配置SSH 为了实现无密码登录,需在所有节点之间配置SSH密钥对。这一步骤对于...

Global site tag (gtag.js) - Google Analytics