域名解析

来源:互联网 发布:凸轮弹簧机编程 编辑:程序博客网 时间:2024/04/29 22:38

 一、     名词解析

1. NETBIOS

NETBIOS协议是由IBM公司开发,主要用于数十台计算机的小型局域网。该协议是一种在局域网上的程序可以使用的应用程序编程接口(API),为程序提供了请求低级服务的统一的命令集,作用是为了给局域网提供网络以及其他特殊功能,系统可以利用WINS服务、广播及L**ost文件等多种模式将NetBIOS名解析为相应IP地址,实现信息通讯,所以在局域网内部使用NetBIOS协议可以方便地实现消息通信及资源的共享。因为它占用系统资源少、传输效率高,所以几乎所有的局域网都是在NetBIOS协议的基础上工作的。

NetBIOS实际上不是一个命名系统,而是一个使用在Windows网络中的应用程序编程接口,它允许计算机相互进行连接和通讯。NetBIOS名字是微软在Windows 2000之前的Windows系统中采用的标准名称解析方式;在Windows 2000之后,采用DNS协议作为首选名称解析方式,但是仍然保留了对Netbios协议的支持,称之为Netbios over TCP/IP。当你在使用计算机名字进行访问,例如,使用server1share1来访问网络共享时,则是通过NetBIOS来进行名字解析。同时,网上邻居和计算机浏览器服务依赖于NetBIOS协议。

对于NetBIOS名字的解析,默认过程如下:

(1)       检查本地的NetBIOS名字缓存;

(2)       查询WINS服务器;

(3)       NetBIOS广播查询本地网络;

(4)       查询L**osts文件,如果配置为这样做,此文件位于%systemroot%\System32\Drivers\Etc目录下

2. DNS

DNSWindows 2000及其后Windows系统的首选名字解析方式,它也是TCP/IP协议族中的标准名字解析机制。计算机通过和配置的DNS服务器进行通讯来解析域名。和NetBIOS相比,DNS提供了更 好的扩展性、安全性以及和Internet的兼容性,同时DNS服务也是活动目录的基础服务。 

对于DNS名字的解析,过程如下:   

检查本地的DNS缓存(Hosts文件中的配置已经加载到DNS缓存中);   

检查DNS服务器;

 

Netbios名字

DNS名字

类型

平面

层次

组成字符限制

Unicode字符,数字

A~Z,a~z,0~9,数字和连字符“-

最大长度

15个字符

DNS每一节的域名最大长度为63字节,FQDN长度最大为255字节

名字解析方式

广播
WINS服务器
l**ost文件

DNS服务器
Host文件

通讯协议端口

UDP 137

UDP 53

3. LLMNR(链路局部多播名称解析)

LLMNR为使用IPv4IPv6或者同时使用这两种地址的设备提供了点对点名称解析服务,可以让同一子网中的IPv4IPv6设备不需要WINSDNS服务器就可以解析对方的名称,而这个功能是WINSDNS都无法完全提供的。虽然WINS可以为IPv4提供客户端-服务器以及点对点名称解析服务,不过并不支持IPv6地址。至于DNS,虽然支持IPv4IPv6地址,但必须通过专门的服务器才能提供名称解析服务。

Windows VistaWindows Server 2008都支持LLMNRLLMNR可以用于让IPv4IPv6客户端在其他名称解析服务都不可用的时候使用,例如小型办公室或对等直连(AD Hoc)网络内。LLMNR还可以用于企业网络中无法使用DNS服务器的时候。

LLMNR通过在DNS名称解析服务不可用时提供解析服务,弥补了DNS的不足。虽然LLMNR可以取代在不需要NetBIOS时对WINS的需求,不过LLMNR并不适合期待DNS,因为该功能只能在本地子网中使用。但因为LLMNR通信不允许跨越路由器传播,因此也就不会无意中造成网络风暴。 WINS类似,我们可以使用LLMNR解析主机名,例如将COMPUTER84解析为IP地址。默认情况下,LLMNR在所有运行Windows VistaWindows Server 2008的计算机上都是启用的,而这些计算机只有在尝试通过DNS解析名称失败后才会使用LLMNR。因此对于Windows VistaWindows Server 2008,完整的名称解析是像下面这样工作的。

(1) 主机在自己的内部名称缓存中查询名称。如果在缓存中没有找到了名称,那么主机就会向自己配置的主DNS服务器发送查询请求。如果主机没有收到回应或收到了错误信息,主机还会尝试搜索配置的备用DNS服务器。如果主机没有配置DNS服务器,或者如果在连接DNS服务器的时候没有遇到错误但失败了,那么名称解析会失败,并转为使用LLMNR

(2) 主机通过用户数据报协议(UDP)发送多播查询,查询主机名对应的IP地址,这个查询会被限制在本地子网(也就是所谓的链路局部)内。  (3)链路局部范围内每台支持LLMNR,并且被配置为响应传入查询的主机在收到这个查询请求后,会将被查询的名称和自己的主机名进行比较。如果没有找到匹配的主机名,那么计算机就会丢弃这个查询。如果找到了匹配的主机名,这台计算机会传输一条包含了自己IP地址的单播信息给请求该查询的主机。

我们还可以使用LLMNR进行反向映射。在反向映射中,计算机需要发送单播查询到特定的IP地址,请求目标计算机的主机名。启用LLMNR功能的计算机在收到这个查询后会给请求该查询的主机发送一则单播回复,其中包含了自己的主机名。  启用LLMNR的计算机的名称在本地子网上必须是唯一的。在大部分情况下,计算机在启动的时候,以及当从待机状态恢复时,或者当我们修改了网络接口的设置后,计算机都会检查自己的唯一性。如果计算机还没能判断出自己的名称是唯一的,那么在响应名称查询的时候,这台计算机就会指出这一点。  默认情况下,LLMNR在运行Windows Vista以及Windows Server 2008的计算机上都会自动启用。我们可以通过编辑注册表禁用LLMNR。要为所有网络接口禁用LLMNR,我们需要创建HKLM/SYSTEM/CurrentControlSet/Services/Dnscache/Parameters/EnableMulticast这个DWORD值,并将其数值设置为“0”。如果要为特定网络接口禁用LLMNR,请建立HKLM/SYSTEM/CurrentControlSet/Services/Tcpip/Param-eters/Interfaces/AdapterGUID/EnableMulticast这个DWORD值,并将其数值设置为“0”,其中“AdapterGUID”代表想要禁用LLMNR的网络接口的全局唯一标识符

 

二、     名字解析顺序

详见http://felixli.blog.51cto.com/244692/289527

第一,OS版本,第二,节点模式

OS版本决定了名字解析优先DNS还是优先查询NetBIOS。节点模式决定了先查WINS还是先广播。

Windows 2000以后(包括2000XPVistaWin720032008)都先查DNS,后查NetBIOS

Windows 9x/NT以前的,都先查NetBIOS,后查DNS

 

1.从测试来看,需要配置名字解析,但是名字解析包含NETBIOSDNSLLMNR

LLMNRwindows server 2008vista系统专有的,2003 server没有。

所以2003 server是先DNS,后查NetBIOS2008 server是先DNS,再查LLMNRNetBIOS,通过这种方式来查名字解析。

2.一般来说NetBIOS是需要禁用的,这个是存在潜在危害的

       当安装TCP/IP协议时,NetBIOS 也被Windows作为默认设置载入,我们的计算机也具有了NetBIOS本身的开放性。某些别有用心的人就利用这个功能来攻击服务器,使管理员不能放心使用文件和打印机共享

利用NETBIOS漏洞进行攻击的端口分别为:

135端口开放实际上是一个WINNT漏洞,开放的135的端口情况容易引起自外部的“Snort”攻击!!!

详见http://baike.baidu.com/view/32803.htm

0 0
原创粉丝点击