04-域名解析配置
本章节下载: 04-域名解析配置 (1.13 MB)
DNS(Domain Name System,域名系统)是一种用于TCP/IP应用程序的分布式数据库,提供域名与IP地址之间的转换。通过域名系统,用户进行某些应用时,可以直接使用便于记忆的、有意义的域名,而由网络中的域名解析服务器将域名解析为正确的IP地址。
域名解析分为静态域名解析和动态域名解析,二者可以配合使用。在解析域名时,首先采用静态域名解析(查找静态域名解析表),如果静态域名解析不成功,再采用动态域名解析。由于动态域名解析需要域名服务器(DNS server)或域名服务器组的配合,会花费一定的时间,因而可以将一些常用的域名放入静态域名解析表中,这样可以大大提高域名解析效率。
静态域名解析就是手工建立域名和IP地址之间的对应关系。当用户使用域名进行某些应用(如telnet应用)时,系统查找静态域名解析表,从中获取指定域名对应的IP地址。
用户程序、DNS客户端及域名服务器的关系如图1-1所示,其中解析器和缓存构成DNS客户端。用户程序、DNS客户端在同一台设备上,而DNS客户端和域名服务器一般分布在两台设备上。
目前,设备只能作为DNS客户端,不能作为DNS服务器。
如果域名服务器上配置了域名的别名,设备也可以通过别名来解析主机的IP地址。
服务器域名解析通过向域名服务器查询域名和IP地址之间的对应关系来实现将域名解析为IP地址。服务器域名解析过程如下:
(1) 当用户使用域名进行某些应用时,用户程序首先向DNS客户端中的解析器发出请求。
(2) DNS客户端收到请求后,首先查询本地的域名缓存。如果存在已解析成功的映射项,就将域名对应的IP地址返回给用户程序;如果未发现所要查找的映射项,就向域名服务器发送查询请求。
(3) 域名服务器首先从自己的数据库中查找域名对应的IP地址。如果判断该域名不属于本域范围,就将请求交给其他域名服务器处理,直到完成解析,并将解析的结果返回给DNS客户端。
(4) DNS客户端收到域名服务器的响应报文后,将解析结果返回用户程序。
服务器域名解析支持缓存功能。每次解析成功的域名与IP地址的映射均存放在DNS客户端的动态域名缓存区中,当下一次查询相同域名的时候,就可以直接从缓存区中读取,不用再向域名服务器进行请求。缓存区中的映射在一段时间后会老化而被删除,以保证及时从域名服务器得到最新的内容。老化时间由域名服务器设置,DNS客户端从域名服务器的应答报文中获得老化时间。
服务器域名解析支持域名后缀列表功能。用户可以预先设置一些域名后缀,在域名解析的时候,用户只需要输入域名的部分字段,系统会自动将输入的域名加上不同的后缀进行解析。例如,用户想查询域名example.com,那么可以先在后缀列表中配置com,然后输入example进行查询,系统会自动将输入的域名与后缀连接成example.com进行查询。
使用域名后缀的时候,根据用户输入域名方式的不同,查询方式分成以下几种情况:
· 如果用户输入的域名中没有“.”,比如example,系统认为这是一个主机名,会首先加上域名后缀进行查询,如果所有加后缀的域名查询都失败,将使用最初输入的域名(如example)进行查询。
· 如果用户输入的域名中间有“.”,比如www.example,系统直接用它进行查询,如果查询失败,再依次加上各个域名后缀进行查询。
· 如果用户输入的域名最后有“.”,比如example.com.,表示不需要进行域名后缀添加,系统直接用输入的域名进行查询,不论成功与否都直接返回结果。就是说,如果用户输入的字符中最后一个字符为“.”,就只根据用户输入的字符进行查找,而不会去匹配用户预先设置的域名后缀,因此最后这个“.”,也被称为查找终止符。带有查询终止符的域名,称为FQDN(Fully Qualified Domain Name,完全合格域名)。
某些组网环境中,为了使设备(包括DNS客户端和DNS proxy)在收到域名请求后,能够根据请求的域名向指定的域名服务器发送查询请求,需要在设备上创建域名服务器组和匹配的域名匹配规则。
当DNS客户端收到公网的用户请求后,如果本地不存在对应的域名缓存,则先查看公网是否存在匹配的域名匹配规则。如果存在匹配的域名匹配规则,则向与该匹配规则绑定的域名服务器组中的域名服务器转发该请求。如果该域名未匹配上任何一条域名匹配规则,则DNS客户端不会向域名服务器组中的服务器转发该请求。
域名匹配规则包括以下匹配方式如下:
· 完整域名匹配方式,设备使用请求中的域名和domain-name指定的域名进行匹配,只有完全对应才算匹配成功。
· 子域名匹配方式,设备使用请求中的域名和subdomain-name指定的域名进行匹配,只要能匹配除了模糊匹配的字段外的其他字段,就算匹配成功。
· 包含域名组。该方式下,设备使用请求中的域名和域名组中的域名进行匹配,匹配上组中任意域名即为匹配成功。
如果域名匹配规则包含名称为any的域名组,则任意域名均能匹配该规则。
· 排除域名组。该方式下,设备使用请求中的域名和域名组中的域名进行匹配,只有与组中所有域名均不匹配才算通过域名匹配规则的过滤。
如果域名匹配规则包含名称为any的域名组,则所有域名均无法匹配该规则。
设备收到请求后,会按照域名匹配规则ID从小到大开始匹配域名规则。匹配某条规则时,设备按照执行display this命令显示的顺序依次匹配规则中的完整域名和子域名:
· 如果请求中的域名匹配到某条规则中的完整域名或子域名,则向该匹配规则对应的域名服务器组转发请求:
¡ 如果收到域名服务器的应答,则设备会将应答报文转发给发起请求的终端用户,并将域名和地址的对应关系保存在本地缓存中。
¡ 如果未收到域名服务器的应答,则继续匹配其他域名匹配规则。
· 如果请求中的域名未匹配到任何域名匹配规则中的完整域名或子域名,则域名解析过程失败。
DNS代理(DNS proxy)用来在DNS client和DNS server之间转发DNS请求和应答报文。局域网内的DNS client把DNS proxy当作DNS server,将DNS请求报文发送给DNS proxy。DNS proxy将该请求报文转发到真正的DNS server,并将DNS server的应答报文返回给DNS client,从而实现域名解析。
使用DNS proxy功能后,当DNS server的地址发生变化时,只需改变DNS proxy上的配置,无需改变局域网内每个DNS client的配置,从而简化了网络管理。
DNS proxy的典型应用环境如图1-2所示。
图1-2 DNS代理典型组网应用
DNS代理的工作过程如下:
(1) DNS client把DNS proxy当作DNS server,将DNS请求报文发送给DNS proxy,即请求报文的目的地址为DNS proxy的IP地址。
(2) DNS proxy收到请求报文后,首先查找本地的静态域名解析表和动态域名解析缓存表,如果存在请求的信息,则DNS proxy直接通过DNS应答报文将域名解析结果返回给DNS client。
(3) 如果不存在请求的信息,则DNS proxy将报文转发给域名服务器进行解析:
a. 当DNS proxy上配置了域名服务器组时,则DNS proxy根据域名匹配规则选择对应的域名服务器组,并将请求转发给服务器组中服务器;
b. 如果不存在匹配的域名服务器组,且配置了域名服务器地址时,DNS proxy将报文转发给DNS服务器,通过DNS服务器进行域名解析。
(4) DNS proxy收到DNS server的应答报文后,记录域名解析的结果,并将报文转发给DNS client。DNS client利用域名解析的结果进行相应的处理。
只有DNS proxy上存在域名服务器地址,并存在到达域名服务器的路由,DNS proxy才会向DNS server发送域名解析请求。
图1-3 DNS spoofing典型应用场景
DNS spoofing(DNS欺骗)主要应用于图1-3所示的拨号网络。在该网络中:
· Device通过拨号接口连接到PSTN等拨号网络。只有存在通过拨号接口转发的报文时,才会触发拨号接口建立连接。
· Device作为DNS proxy。在Host上将Device指定为DNS服务器;拨号接口建立连接后,Device通过DHCP等方式动态获取DNS服务器地址。
Device上未开启DNS spoofing功能时,Device接收到Host发送的域名解析请求报文后,如果不存在对应的域名解析表项,则需要向DNS server发送域名解析请求。但是,由于此时拨号接口尚未建立连接,Device上不存在DNS server地址,Device不会向DNS server发送域名解析请求,也不会应答DNS client的请求。从而导致域名解析失败,且没有流量触发拨号接口建立连接。
DNS spoofing功能可以解决上述问题。使能DNS spoofing功能后,即便Device上不存在DNS server地址或到达DNS server的路由,Device也会利用指定的IP地址作为域名解析结果,应答DNS client的域名解析请求。DNS client后续发送的报文可以用来触发拨号接口建立连接。
图1-3所示网络中,Host访问HTTP server的报文处理流程为:
(1) Host通过域名访问HTTP server时,首先向Device发送域名解析请求,将HTTP server的域名解析为IP地址。
(2) Device接收到域名解析请求后,如果拨号接口尚未建立连接,Device上不存在DNS server地址,或者设备上配置的DNS server地址均不可达,则Device利用DNS spoofing中指定的IP地址作为域名解析结果,应答DNS client的域名解析请求。该域名解析应答的老化时间为0。并且,应答的IP地址满足如下条件:Device上存在到达该IP地址的路由,且路由的出接口为拨号接口。
(3) Host接收到Device的应答报文后,向应答的IP地址发送HTTP请求。
(4) Device通过拨号接口转发HTTP请求时,触发拨号接口建立连接,并通过DHCP等方式动态获取DNS server的地址。
(5) 域名解析应答老化后,Host再次发送域名解析请求。
(6) 之后,Device的处理过程与DNS proxy工作过程相同,请参见“1.1.5 DNS代理”。
(7) Host获取到正确的HTTP server地址后,可以正常访问HTTP server。
由于DNS spoofing功能指定的IP地址并不是待解析域名对应的IP地址,为了防止DNS client上保存错误的域名解析表项,该IP地址对应域名解析应答的老化时间为0。
域名解析配置任务如下:
(1) 配置DNS客户端
建立域名与IP地址的对应关系,请至少选择其中一项进行配置。
¡ 配置静态域名解析
(2) (可选)配置DNS代理功能
(3) (可选)配置DNS spoofing
本功能用于拨号网络。
(4) 开启DNS快速应答功能
(5) (可选)DNS重定向功能
(6) (可选)配置DNS安全功能
d. 配置DNS信任接口
(7) (可选)配置DNS报文交互参数
a. 配置DNS报文的源接口
(8) (可选)配置DNS过滤功能
可以通过如下两种方式在DNS客户端上建立域名与IP地址的对应关系,实现设备使用域名与其他设备通信。
· 配置静态域名解析。如果用户使用域名访问其他设备的次数很少,或者网络中没有可用的DNS服务器时,需要在DNS客户端配置静态域名解析。这种方式下,网络管理员需要手工配置与维护域名与IP地址的对应关系。
· 配置动态域名解析。如果用于需要使用域名访问很多设备,且网络中有可用的DNS服务器,那么可以配置动态域名解析。动态域名解析包括服务器域名解析和服务器组域名解析。
如果DNS客户端上同时配置了静态域名解析,服务器域名解析和服务器组域名解析,则收到域名请求后,匹配顺序如下:
(1) 静态域名解析;
(2) DNS客户端本地缓存已解析的域名信息;
(3) 使用域名服务器组进行域名解析;
(4) 使用域名服务器进行域名解析。
如果以上方式均无法解析成功,则域名解析过程失败。
在公网内,一个主机名只能对应一个IPv4地址和IPv6地址。
公网内最多可以配置2048个主机名和地址的对应关系。
(1) 进入系统视图。
system-view
(2) 配置主机名和对应的地址。
(IPv4网络)
ip host host-name ip-address
(IPv6网络)
ipv6 host host-name ipv6-address
· 设备上允许配置的域名服务器数目限制为:
¡ 系统视图下,公网内最多可以配置6个域名服务器的IPv4地址。
¡ 系统视图下,公网内最多可以配置6个域名服务器的IPv6地址。
¡ 接口视图下,公网内最多可以配置6个域名服务器的IPv4地址。
· 如果同时配置域名服务器的IPv4地址和IPv6地址,DNS客户端向域名服务器发送请求的处理方式如下:
¡ 查询主机名对应的IPv4地址时,优先向域名服务器的IPv4地址发送查询请求。如果查询失败,则再向域名服务器的IPv6地址发送查询请求;
¡ 查询主机名对应的IPv6地址时,优先向域名服务器的IPv6地址发送查询请求。如果查询失败,则再向域名服务器的IPv4地址发送查询请求。
· 域名服务器的优先级顺序为:
¡ 系统视图下配置的域名服务器优先级高于接口视图下配置的域名服务器。
¡ 配置多个域名服务器的IPv4地址时,IPv4地址越小的域名服务器,其优先级越高。
¡ 配置多个域名服务器的IPv6地址时,IPv6地址越小的域名服务器,其优先级越高。
¡ 设备上手工配置的域名服务器优先级高于通过DHCP等方式动态获取的域名服务器。
设备首先向优先级最高的域名服务器发送查询请求,失败后再根据优先级从高到低的次序向其他域名服务器发送查询请求。
· 配置域名解析后缀时,需要注意:
¡ 公网内最多可以配置16个域名后缀。
¡ 添加域名后缀的优先级顺序为:先配置的域名后缀优先级高于后配置的域名后缀;设备上手工配置的域名后缀优先级高于通过DHCP等方式动态获取的域名后缀。设备首先添加优先级最高的域名后缀,查询失败后再根据优先级从高到低的次序添加其他域名后缀。
(1) 进入系统视图。
system-view
(2) (可选)配置域名解析表项的有效时间。
dns cache ttl { maximum max-value | minimum min-value } *
缺省情况下,域名解析表项的有效时间为DNS响应报文中的TTL。
(3) (可选)配置域名后缀。
dns domain domain-name
缺省情况下,未配置域名后缀,即只根据用户输入的域名信息进行解析。
(4) 配置域名服务器的地址。
¡ 系统视图下配置域名服务器的地址。
(IPv4网络)
dns server ip-address [ priority priority-value ]
(IPv6网络)
ipv6 dns server ipv6-address [ interface-type interface-number ] [ priority priority-value ]
¡ 请依次执行以下命令在接口视图下配置域名服务器的IPv4地址。
interface interface-type interface-number
dns server ip-address [ priority priority-value ]
缺省情况下,未配置域名服务器的地址。
独立的域名匹配规则包括以下匹配方式如下:
· 完整域名匹配方式,设备使用请求中的域名和domain-name指定的域名进行匹配,只有完全对应才算匹配成功。
· 子域名匹配方式,设备使用请求中的域名和subdomain-name指定的域名进行匹配,只要能匹配除了模糊匹配的字段外的其他字段,就算匹配成功。
DNS服务器组下可同时配置域名服务器的IPv4地址和IPv6地址。
终端用户发送的请求只能匹配公网内的域名匹配规则,然后根据如下机制向域名服务器的IPv4地址和IPv6地址转发查询请求。
(1) 如果域名服务器配置了优先级,则按照优先级从高到低的顺序依次向各个域名服务器发送查询请求。
(2) 如果域名服务器未配置优先级或优先级相同,则按照在域名服务器组中执行display this命令显示服务器地址的先后顺序,依次向各个域名服务器发送查询请求。
如果查询请求是IPv4报文,则优先向域名服务器的IPv4地址转发查询请求。如果查询请求是IPv6报文,则优先向域名服务器的IPv6地址转发查询请求。
(1) 进入系统视图。
system-view
(2) (可选)配置域名解析表项的有效时间。
dns cache ttl { maximum max-value | minimum min-value } *
缺省情况下,域名解析表项的有效时间为DNS响应报文中的TTL。
(3) 配置DNS域名服务器组。
dns server-group group-id
缺省情况下,不存在域名服务器组。
设备上最多允许配置16个域名服务器组,每个域名服务器组内最多可以配置6个域名服务器的IPv4地址和6个域名服务器的IPv6地址。
(4) 在域名服务器组中添加域名服务器的地址。
(IPv4网络)
dns server ip-address [ priority priority-value ]
(IPv6网络)
ipv6 dns server ipv6-address [ interface-type interface-number ] [ priority priority-value ]
缺省情况下,域名服务器组中无域名服务器。
(5) (可选)配置DNS服务器组的描述信息。
description text
缺省情况下,未配置DNS服务器组的描述信息。
(6) 退回系统视图。
quit
(7) 配置域名匹配规则。
dns domain-rule rule-id { domain-name domain-name | subdomain-name subdomain-name } server-group group-id
缺省情况下,未配置域名匹配规则。
在使用域名匹配规则将收到的域名请求发送给指定的域名服务器的场景中,将域名匹配规则与域名组关联可以简化配置,需要匹配多个不同的域名时,无需多次配置域名匹配规则。
在域名组中通过添加完整域名,或者添加子域名后,将域名匹配规则与域名组关联能够实现根据域名匹配结果分发域名请求的目的。
域名匹配规则与域名组的关联方式包括如下两种:
· 包含域名组。该方式下,设备使用请求中的域名和域名组中的域名进行匹配,匹配上组中任意域名即为匹配成功。
如果域名匹配规则包含名称为any的域名组,则任意域名均能匹配该规则。
· 排除域名组。该方式下,设备使用请求中的域名和域名组中的域名进行匹配,只有与组中所有域名均不匹配才算通过域名匹配规则的过滤。
如果域名匹配规则包含名称为any的域名组,则所有域名均无法匹配该规则。
DNS服务器组下可同时配置域名服务器的IPv4地址和IPv6地址。
终端用户发送的请求只能匹配公网内的域名匹配规则,然后根据如下机制向域名服务器的IPv4地址和IPv6地址转发查询请求。
(1) 如果域名服务器配置了优先级,则按照优先级从高到低的顺序依次向各个域名服务器发送查询请求。
(2) 如果域名服务器未配置优先级或优先级相同,则按照在域名服务器组中执行display this命令显示服务器地址的先后顺序,依次向各个域名服务器发送查询请求。
如果查询请求是IPv4报文,则优先向域名服务器的IPv4地址转发查询请求。如果查询请求是IPv6报文,则优先向域名服务器的IPv6地址转发查询请求。
(1) 进入系统视图。
system-view
(2) (可选)配置域名解析表项的有效时间。
dns cache ttl { maximum max-value | minimum min-value } *
缺省情况下,域名解析表项的有效时间为DNS响应报文中的TTL。
(3) 配置DNS域名服务器组。
dns server-group group-id
缺省情况下,不存在域名服务器组。
设备上最多允许配置16个域名服务器组,每个域名服务器组内最多可以配置6个域名服务器的IPv4地址和6个域名服务器的IPv6地址。
(4) 在域名服务器组中添加域名服务器的地址。
(IPv4网络)
dns server ip-address [ priority priority-value ]
(IPv6网络)
ipv6 dns server ipv6-address [ interface-type interface-number ] [ priority priority-value ]
缺省情况下,域名服务器组中无域名服务器。
(5) (可选)配置DNS服务器组的描述信息。
description text
缺省情况下,未配置DNS服务器组的描述信息。
(6) 退回系统视图。
quit
(7) 创建域名组并进入域名组视图。如果已经创建了域名组,则直接进入该域名组视图。
dns domain-name-group group-name
缺省情况下,存在名称为any的默认域名组。
不能手工创建或删除默认域名组。
多次执行本命令可以创建多个域名组。
(8) 在域名组中添加完整域名。
domain-name domain-name
缺省情况下,域名组中未配置完整域名。
(9) 在域名组中添加子域名。
subdomain-name subdomain-name
缺省情况下,域名组中未配置子域名。
(10) 退回系统视图。
quit
(11) 配置域名匹配规则。
¡ 配置域名匹配规则与域名组的关联方式为包含域名组。
dns domain-rule rule-id domain-name-group group-name server-group group-id
¡ 配置域名匹配规则与域名组的关联方式为排除域名组。
dns domain-rule rule-id exclude domain-name-group group-name server-group group-id
缺省情况下,未配置域名匹配规则。
DNS服务器健康探测功能用于对域名服务器组中域名服务器的可用性进行探测,避免设备将报文转发给不可用的域名服务器,提高用户访问域名的体验。
在使用DNS重定向功能对DNS请求进行分流的场景中,当DNS请求报文经过开启DNS重定向功能的设备时,如果DNS请求报文匹配上域名匹配规则,则设备从域名服务器组中选择一个域名服务器,并将该报文转发给选中的域名服务器。选择服务器的机制如下:
(1) 如果域名服务器配置了优先级,则按照优先级从高到低的顺序依次选择域名服务器。
(2) 如果域名服务器未配置优先级或优先级相同,则按照在域名服务器组中执行display this命令显示服务器地址的先后顺序选择域名服务器。
设备向域名服务器发送请求报文后,若2s内无法收到该选中域名服务器的DNS响应报文,设备会重新选择域名服务器。为了避免设备选中不可用的域名服务器,请使用本功能对域名服务器可用性进行检测。具体机制如下:
(1) 设备周期性进行健康探测,即周期性向域名服务器组中的各个域名服务器分别发送一个DNS请求报文,根据是否能收到DNS响应报文判断域名服务器的可用性。
(2) 如果设备收到DNS响应报文,则认为DNS服务器可用。
(3) 如果设备连续3次发送DNS请求报文后,均未收到DNS响应报文,则认为DNS服务器不可用。
DNS重定向设备在对DNS请求报文进行重定向时,会自动跳过不可用的DNS服务器,然后根据字典序在可用的域名服务器中进行选择。
非DNS重定向场景中,建议关闭DNS服务器健康探测功能,避免设备周期性发送DNS请求报文占用网络资源。
(1) 进入系统视图。
system-view
(2) 进入DNS域名服务器组视图。
dns server-group group-id
(3) 开启DNS服务器健康探测功能。
health-check enable
缺省情况下,DNS服务器健康探测功能处于关闭状态。
(1) 进入系统视图。
system-view
(2) 开启DNS proxy功能。
dns proxy enable
缺省情况下,DNS proxy功能处于关闭状态。
可以指定多个DNS服务器。DNS proxy接收到客户端的查询请求后,首先向优先级最高的DNS服务器转发查询请求,失败后再依次向其他DNS服务器转发查询请求。
DNS proxy可同时配置域名服务器的IPv4地址和IPv6地址。无论DNS proxy接收到的查询请求是来自IPv4客户端还是来自IPv6客户端,DNS proxy都会按照优先级顺序向域名服务器的IPv4地址和IPv6地址转发查询请求。如果查询请求是IPv4报文,则优先向域名服务器的IPv4地址转发查询请求。如果查询请求是IPv6报文,则优先向域名服务器的IPv6地址转发查询请求。
(1) 进入系统视图。
system-view
(2) 配置域名服务器的地址。
¡ 系统视图下配置域名服务器的地址。
(IPv4网络)
dns server ip-address [ priority priority-value ]
(IPv6网络)
ipv6 dns server ipv6-address [ interface-type interface-number ] [ priority priority-value ]
¡ 请依次执行以下命令在接口视图下配置域名服务器的IPv4地址。
interface interface-type interface-number
dns server ip-address [ priority priority-value ]
缺省情况下,未配置域名服务器的地址。
域名服务器组的配置方式请参见“1.3.4 配置服务器组域名解析”。
DNS透明代理指的是,DNS客户端感知不到代理服务存在的代理模式。DNS源地址透明代理不仅能够提供代理服务,还会修改DNS请求报文的源地址,从而实现发送DNS请求报文的设备能够接收到相应的DNS响应报文,适用于需要基于域名做策略的场景(如安全策略、带宽策略等)。
与DNS代理功能不同的是,DNS客户端不需要将DNS服务器的地址指定为DNS源地址透明代理设备的地址,简化了客户端的配置。在一些负载均衡场景中,为了保证基于域名的策略能够成功对报文进行控制,建议使用DNS源地址透明代理功能。
开启DNS源地址透明代理功能后,设备开始监听过路的DNS请求报文和DNS应答报文,并记录域名解析信息,以便提供代理功能。具体工作机制如下:
(1) DNS源地址透明代理设备监听所有过路DNS报文,当收到DNS请求报文时,设备根据一定的规则从能够到达DNS服务器的本地IP地址选取一个,并将其作为修改后的DNS请求报文的源IP地址,使得DNS应答报文能够返回本设备。
(2) DNS源地址透明代理设备收到DNS服务器的应答报文后,记录域名解析的结果,并将报文转发给DNS客户端。DNS客户端利用域名解析的结果进行相应的处理。后续DNS透明代理设备收到DNS请求报文后,首先查找DNS透明代理记录的表项,如果存在请求的信息,则DNS透明代理设备直接通过DNS应答报文将域名解析结果返回给DNS client。如果不存在请求的信息,则DNS透明代理设备将报文转发给域名服务器进行解析。
如图1-4所示,在Device A上开启了DNS源地址透明代理功能。当Device A收到DNS请求报文后,将报文的源地址修改为本设备的地址,然后转发给DNS服务器。Device A收到相应的DNS应答报文后,记录域名和IP地址的关系,并将DNS应答报文转发给DNS客户端。
图1-4 DNS源地址透明代理原理图
DNS源地址透明代理功能和DNS快速应答功能、DNS Snooping功能、DNS重定向功能不能同时使用。
(1) 进入系统视图。
system-view
(2) (可选)配置域名解析表项的有效时间。
dns cache ttl { maximum max-value | minimum min-value } *
缺省情况下,域名解析表项的有效时间为DNS响应报文中的TTL。
(3) 开启DNS源地址透明代理功能。
dns transparent-proxy enable
缺省情况下,DNS源地址透明代理功能处于关闭状态。
公网内只能配置1个DNS spoofing应答的IPv4地址和1个DNS spoofing应答的IPv6地址。重复配置时,新的配置会覆盖原有配置。
可同时在公网内配置DNS spoofing功能。
DNS spoofing功能生效时,即使设备上配置了静态域名解析,也会使用DNS spoofing指定的IP地址来应答DNS请求。
设备上启用了DNS proxy功能。
设备上未指定域名服务器地址或不存在到达域名服务器的路由。
(1) 进入系统视图。
system-view
(2) 启用DNS proxy功能。
dns proxy enable
缺省情况下,DNS proxy功能处于关闭状态。
(3) 开启DNS spoofing功能,并指定DNS spoofing应答地址。
(IPv4网络)
dns spoofing ip-address
(IPv6网络)
ipv6 dns spoofing ipv6-address
缺省情况下,未开启DNS spoofing功能。
开启DNS快速应答功能后,设备会侦听过路的DNS请求报文,解析出报文中被请求的域名,然后查找本地的静态域名解析表,根据查询结果的不同决定是否进行DNS快速应答,具体工作机制如下:
· 在本地静态域名解析表中查找到域名和IP地址信息,设备直接应答DNS请求,不会将报文转发给DNS服务器。
· 未在本地静态域名解析表中查找到域名和IP地址信息,设备将DNS请求转发给DNS服务器。
DNS快速应答功能使得设备每秒钟能够处理的DNS请求报文数量较多,适用于对DNS报文处理性能要求较高的场景。
DNS快速应答功能和DNS源地址透明代理功能不能同时使用。
(1) 进入系统视图。
system-view
(2) 开启DNS快速应答功能。
dns fast-reply enable
缺省情况下,DNS快速应答功能处于关闭状态。
DNS重定向功能用于需要对DNS请求进行分流的场景。开启DNS重定向功能后,设备会侦听过路的DNS请求报文(目前只支持UDP报文),解析出报文中的源IP地址、源端口号、域名等信息后,根据解析出来的域名查询域名匹配规则,然后将DNS请求报文重定向到域名匹配规则指定的DNS服务器。
DNS重定向功能的工作机制如下:
(1) 设备使用从DNS请求报文中解析出来的域名查询域名匹配规则:
¡ 如果匹配上域名匹配规则,设备从域名匹配规则对应的域名服务器组中选择第一个路由可达的域名服务器,然后使用该域名服务器的IP地址替换原始DNS请求报文中的目的IP地址,并将该报文转发给目的IP地址对应的域名服务器。
¡ 如果设备从DNS请求报文中解析出来的域名没有匹配上域名匹配规则,则不对该报文进行重定向处理。
(2) 设备记录替换关系。包括替换前DNS请求报文的源IP、源端口号、请求的域名服务器的IP地址等信息,以及替换后的域名服务器的IP地址。
(3) 设备收到DNS响应报文后,根据替换关系将DNS响应报文的源IP地址还原为原始的DNS请求中的域名服务器IP地址。
DNS重定向功能和DNS源地址透明代理功能不能同时使用。
(1) 进入系统视图。
system-view
(2) 开启DNS重定向功能。
dns redirect enable
缺省情况下,DNS重定向功能处于关闭状态。
DNS Snooping功能适用于基于域名做策略的场景(如安全策略、带宽策略等)。设备使用基于域名的策略过滤用户流量时,需要获取域名对应的IP地址才能真正实现流量过滤。开启DNS Snooping功能后,设备会监听过路的DNS请求报文和DNS应答报文,如果DNS请求报文中的域名与策略中的域名相同,设备会在收到该域名的响应报文时记录域名解析结果,并上报给策略,使得策略可以基于此域名对应的IP地址实现流量过滤。如果DNS请求报文中的域名与过滤规则中的域名不同,设备不会记录域名解析结果。
开启DNS Snooping功能时,需要注意:
· DNS Snooping功能仅适用于三层业务组网场景,设备上同一个VLAN的二层转发业务不支持该功能。
· DNS Snooping设备只有位于DNS客户端与DNS服务器之间,或DNS客户端与DNS代理设备之间时,DNS Snooping功能配置后才能正常工作。
· DNS Snooping功能和DNS源地址透明代理功能不能同时使用。
(1) 进入系统视图。
system-view
(2) (可选)配置域名解析表项的有效时间。
dns cache ttl { maximum max-value | minimum min-value } *
缺省情况下,域名解析表项的有效时间为DNS响应报文中的TTL。
(3) 开启DNS Snooping功能。
dns snooping enable
缺省情况下,DNS Snooping功能处于关闭状态。
网络环境中,DNS proxy设备收到请求报文后,需要查询自己是否记录了请求域名对应的地址,如果存在,则直接应答需求;如果不存在,则需要向DNS服务器转发请求。如果网络中存在攻击源或有大量客户端同一时间发送大量DNS请求,则会增加网络负载并影响DNS proxy设备或DNS服务器的性能。为了防止上述问题的产生,可以在DNS客户端和DNS proxy或DNS服务器之间的设备配置DNS Snooping日志功能。
开启DNS Snooping的日志功能后,DNS收到一个请求和对应的应答报文后会进行记录,并生成日志发给快速日志模块。管理员通过查询日志信息确认并解决问题。关于快速日志模块的详细介绍,请参见“网络管理和监控配置指导”中的“快速日志输出”。
(1) 进入系统视图。
system-view
(2) 开启DNS Snooping的日志功能。
dns snooping log enable
缺省情况下,DNS Snooping的日志功能处于关闭状态。
开启DNS Snooping的报文限速功能后,当接口上收到的DNS报文速率超过用户设定的限速值时,丢弃超过速率限制的DNS报文。
本命令的支持情况与设备的型号有关,具体请参见命令参考。
只有开启了DNS源地址透明代理功能或DNS Snooping的日志功能,本功能才会生效。
(1) 进入系统视图。
system-view
(2) 开启DNS Snooping的报文限速功能。
dns snooping rate-limit rate
缺省情况下,DNS Snooping的报文限速功能处于关闭状态。
缺省情况下,任意接口通过DHCP等协议动态获得的域名后缀和域名服务器信息都将作为有效信息,用于域名解析。如果网络攻击者通过DHCP服务器为设备分配错误的域名后缀和域名服务器地址,则会导致设备域名解析失败,或解析到错误的结果。通过本配置指定信任接口后,域名解析时只采用信任接口动态获得的域名后缀和域名服务器信息,非信任接口获得的信息不能用于域名解析,从而在一定程度上避免这类攻击。
设备最多可以配置128个DNS信任接口。
(1) 进入系统视图。
system-view
(2) 指定DNS信任接口。
dns trust-interface interface-type interface-number
缺省情况下,未指定任何接口为信任接口。
缺省情况下,设备根据域名服务器的地址,通过路由表查找请求报文的出接口,并将该出接口的主IP地址作为发送到该服务器的DNS请求报文的源地址。根据域名服务器的地址不同,发送报文的源地址可能会发生变化。在某些特殊的组网环境中,域名服务器只应答来自特定源地址的DNS请求报文。这种情况下,必须指定DNS报文的源接口。如果为设备配置了DNS报文的源接口,则设备在发送DNS报文时,将固定使用该接口的主IP地址作为报文的源地址。
发送IPv4 DNS报文时,将使用源接口的主IPv4地址作为DNS报文的源地址。发送IPv6 DNS报文时,将根据RFC 3484中定义的规则从源接口上选择IPv6地址作为DNS报文的源地址。如果源接口上未配置对应的地址,则将导致报文发送失败。
公网内只能配置1个源接口。重复配置时,新的配置会覆盖原有配置。
(1) 进入系统视图。
system-view
(2) 指定DNS报文的源接口。
dns source-interface interface-type interface-number
缺省情况下,未指定DNS报文的源接口。
DSCP优先级用来体现报文自身的优先等级,决定报文传输的优先程度。通过本配置可以指定设备发送的DNS报文的DSCP优先级。
(1) 进入系统视图。
system-view
(2) 指定DNS客户端或DNS proxy发出的DNS报文的DSCP优先级。
(IPv4网络)
dns dscp dscp-value
缺省情况下,DNS报文的DSCP优先级为0。
(IPv6网络)
ipv6 dns dscp dscp-value
通过在DNS代理上开启DNS过滤功能,可以实现对用户通过域名进行的业务访问进行控制。开启DNS过滤功能后,DNS代理将会提取DNS客户端发送的DNS请求报文中的域名与本功能配置的白名单或黑名单进行匹配,根据匹配结果对DNS请求报文执行放行或丢弃动作。
DNS过滤功能的机制如下:
· 如果DNS代理收到的DNS请求报文中的域名命中白名单,则DNS代理放行该DNS请求报文,并在收到DNS响应报文后记录域名解析的结果,然后将DNS响应报文转发给DNS客户端。如果DNS代理收到的DNS请求报文中的域名未命中白名单,则DNS代理丢弃该DNS请求报文。
· 如果DNS代理收到的DNS请求报文中的域名未命中黑名单,则DNS代理放行该DNS请求报文,并在收到DNS响应报文后记录域名解析的结果,然后将DNS响应报文转发给DNS客户端。如果DNS代理收到的DNS请求报文中的域名命中黑名单,则DNS代理丢弃该DNS请求报文。
如果希望实现严格的访问控制,建议使用白名单进行DNS过滤。如果希望实现宽松的访问控制,建议使用黑名单进行DNS过滤。
可以配置多个白名单或多个黑名单,但不允许同时配置白名单和黑名单。
(1) 进入系统视图。
system-view
(2) 开启DNS过滤功能,并配置黑/白名单。
dns filter { allowlist | denylist } hostname
缺省情况下,DNS过滤功能处于关闭状态。
在完成上述配置后,在任意视图下执行display命令可以显示域名解析配置后的运行情况,通过查看显示信息验证配置的效果。
在用户视图下,执行reset命令可以清除动态域名缓存信息。
操作 |
命令 |
显示域名后缀信息 |
display dns domain [ dynamic ] |
显示域名解析表信息 |
display dns host [ ip | ipv6 ] |
显示域名服务器的IPv4地址信息 |
display dns server [ dynamic ] |
显示DNS服务器健康探测状态 |
display dns server health status |
显示域名服务器的IPv6地址信息 |
display ipv6 dns server [ dynamic ] |
清除动态域名解析缓存信息 |
reset dns host [ ip | ipv6 ] |
为了避免记忆复杂的IP地址,Device希望通过便于记忆的主机名访问某一主机。在Device上手工配置IP地址对应的主机名,利用静态域名解析功能,就可以实现通过主机名访问该主机。
在本例中,Device访问的主机IP地址为10.1.1.2,主机名为host.com。
图1-5 静态域名解析配置组网图
# 配置主机名host.com对应的IP地址为10.1.1.2。
<Sysname> system-view
[Sysname] ip host host.com 10.1.1.2
# 执行ping host.com命令,Device通过静态域名解析可以解析到host.com对应的IP地址为10.1.1.2。
[Sysname] ping host.com
Ping host.com (10.1.1.2): 56 data bytes, press CTRL_C to break
56 bytes from 10.1.1.2: icmp_seq=0 ttl=255 time=1.000 ms
56 bytes from 10.1.1.2: icmp_seq=1 ttl=255 time=1.000 ms
56 bytes from 10.1.1.2: icmp_seq=2 ttl=255 time=1.000 ms
56 bytes from 10.1.1.2: icmp_seq=3 ttl=255 time=1.000 ms
56 bytes from 10.1.1.2: icmp_seq=4 ttl=255 time=2.000 ms
--- Ping statistics for host.com ---
5 packet(s) transmitted, 5 packet(s) received, 0.0% packet loss
round-trip min/avg/max/std-dev = 1.000/1.200/2.000/0.400 ms
为了避免记忆复杂的IP地址,Device希望通过便于记忆的域名访问某一主机。如果网络中存在域名服务器,则可以利用动态域名解析功能,实现通过域名访问主机。
在本例中:
· 域名服务器的IP地址是2.1.1.2/16,域名服务器上存在com域,且com域中包含域名“host”和IP地址3.1.1.1/16的对应关系。
· Device作为DNS客户端,使用动态域名解析功能,将域名解析为IP地址。
· Device上配置域名后缀com,以便简化访问主机时输入的域名,例如通过输入host即可访问域名为host.com、IP地址为3.1.1.1/16的主机Host。
· 在开始下面的配置之前,假设设备与主机之间的路由可达,设备和主机都已经配置完毕,接口IP地址如图1-6所示。
· 不同域名服务器的配置方法不同,下面仅以Windows Server 2008 R2为例,说明域名服务器的配置方法。
(1) 配置域名服务器
# 进入域名服务器配置界面。
在开始菜单中,选择[程序/管理工具/DNS]。
# 创建区域com。
如图1-7所示,右键点击[正向查找区域],选择[新建区域],按照提示创建新的区域com。
# 添加域名和IP地址的映射。
如图1-8所示,右键点击区域[com]。
选择[新建主机],弹出如图1-9的对话框,输入域名host和IP地址3.1.1.1。单击<添加主机>可完成操作。
图1-9 添加域名和IP地址的映射
(2) 配置DNS客户端Device
<Sysname> system-view
# 配置域名服务器的IP地址为2.1.1.2。
[Sysname] dns server 2.1.1.2
# 配置域名后缀com。
[Sysname] dns domain com
# 在设备上执行ping host命令,可以ping通主机,且对应的目的地址为3.1.1.1。
[Sysname] ping host
Ping host.com (3.1.1.1): 56 data bytes, press CTRL_C to break
56 bytes from 3.1.1.1: icmp_seq=0 ttl=255 time=1.000 ms
56 bytes from 3.1.1.1: icmp_seq=1 ttl=255 time=1.000 ms
56 bytes from 3.1.1.1: icmp_seq=2 ttl=255 time=1.000 ms
56 bytes from 3.1.1.1: icmp_seq=3 ttl=255 time=1.000 ms
56 bytes from 3.1.1.1: icmp_seq=4 ttl=255 time=2.000 ms
--- Ping statistics for host ---
5 packet(s) transmitted, 5 packet(s) received, 0.0% packet loss
round-trip min/avg/max/std-dev = 1.000/1.200/2.000/0.400 ms
Device希望需要通过动态域名方式访问不同位置的主机Host1和Host2。Host1的域名和地址的对应关系保存在域名服务器1上,Host2的域名和地址的对应关系保存在域名服务器2上。
· 域名服务器1的IP地址是1.1.1.3/24,域名服务器上存在com域,且com域中包含域名“host1”和IP地址1.1.1.2/24的对应关系。域名服务器2的IP地址是3.1.1.3/24,域名服务器上存在com域,且com域中包含域名“host2”和IP地址3.1.1.2/24的对应关系。
· Device作为DNS客户端,使用动态域名解析功能,将域名解析为IP地址。
在开始下面的配置之前,假设设备与域名服务器、主机之间的路由可达,接口IP地址如图1-10所示。
(1) 配置域名服务器
# 配置域名服务器1和域名服务器2。
不同的域名服务器的配置方法不同。Windows Server 2008 R2作为域名服务器时,配置方法请参见“1.17.2 服务器域名解析配置举例”。
(2) 配置DNS客户端Device
<Sysname> system-view
# 创建域名服务器组1,添加域名服务器的地址1.1.1.3。
[Sysname] dns server-group 1
[Sysname-dns-server-group-1] dns server 1.1.1.3
[Sysname-dns-server-group-1] quit
# 创建域名服务器组2,添加域名服务器的地址3.1.1.3。
[Sysname] dns server-group 2
[Sysname-dns-server-group-2] dns server 3.1.1.3
[Sysname-dns-server-group-2] quit
# 配置域名匹配规则1,将完整域名“host1.com”与域名服务器组1绑定。
[Sysname] dns domain-rule 1 domain-name host1.com server-group 1
# 配置域名匹配规则2,将完整域名“host2.com”与域名服务器组2绑定。
[Sysname] dns domain-rule 2 domain-name host2.com server-group 2
# 在设备上执行ping host1.com命令,可以ping通主机,且对应的目的地址为1.1.1.2。
[Sysname] ping host1.com
Ping host1.com (1.1.1.2): 56 data bytes, press CTRL_C to break
56 bytes from 1.1.1.2: icmp_seq=0 ttl=255 time=1.000 ms
56 bytes from 1.1.1.2: icmp_seq=1 ttl=255 time=1.000 ms
56 bytes from 1.1.1.2: icmp_seq=2 ttl=255 time=1.000 ms
56 bytes from 1.1.1.2: icmp_seq=3 ttl=255 time=1.000 ms
56 bytes from 1.1.1.2: icmp_seq=4 ttl=255 time=2.000 ms
--- Ping statistics for host ---
5 packet(s) transmitted, 5 packet(s) received, 0.0% packet loss
round-trip min/avg/max/std-dev = 1.000/1.200/2.000/0.400 ms
# 在设备上执行ping host2.com命令,可以ping通主机,且对应的目的地址为3.1.1.2。
[Sysname] ping host2.com
Ping host2.com (3.1.1.2): 56 data bytes, press CTRL_C to break
56 bytes from 3.1.1.2: icmp_seq=0 ttl=255 time=1.000 ms
56 bytes from 3.1.1.2: icmp_seq=1 ttl=255 time=1.000 ms
56 bytes from 3.1.1.2: icmp_seq=2 ttl=255 time=1.000 ms
56 bytes from 3.1.1.2: icmp_seq=3 ttl=255 time=1.000 ms
56 bytes from 3.1.1.2: icmp_seq=4 ttl=255 time=2.000 ms
--- Ping statistics for host ---
5 packet(s) transmitted, 5 packet(s) received, 0.0% packet loss
round-trip min/avg/max/std-dev = 1.000/1.200/2.000/0.400 ms
某局域网内拥有多台设备,每台设备上都指定了域名服务器的IP地址,以便直接通过域名访问外部网络。当域名服务器的IP地址发生变化时,网络管理员需要更改局域网内所有设备上配置的域名服务器IP地址,工作量将会非常巨大。
通过DNS proxy功能,可以大大减少网络管理员的工作量。当域名服务器IP地址改变时,只需更改DNS proxy上的配置,即可实现局域网内设备通过新的域名服务器解析域名。
在本例中,具体配置步骤为:
(1) 局域网中的某台设备Device A配置为DNS proxy,DNS proxy上指定域名服务器IP地址为真正的域名服务器的地址4.1.1.1。
(2) 局域网中的其他设备(如Device B)上,域名服务器的IP地址配置为DNS proxy的地址,域名解析报文将通过DNS proxy转发给真正的域名服务器。
在开始下面的配置之前,假设设备与域名服务器、主机之间的路由可达,并已按照图1-11配置各接口的IP地址。
(1) 配置域名服务器
不同的域名服务器的配置方法不同。Windows Server 2008 R2作为域名服务器时,配置方法请参见“1.17.2 服务器域名解析配置举例”。
(2) 配置DNS代理Device A
# 配置域名服务器的IP地址为4.1.1.1。
<DeviceA> system-view
[DeviceA] dns server 4.1.1.1
# 开启DNS proxy功能。
[DeviceA] dns proxy enable
(3) 配置DNS客户端Device B
<DeviceB> system-view
# 配置域名服务器的IP地址为2.1.1.2。
[DeviceB] dns server 2.1.1.2
# 在Device B上执行ping host.com命令,可以ping通主机,且对应的目的地址为3.1.1.1。
[DeviceB] ping host.com
Ping host.com (3.1.1.1): 56 data bytes, press CTRL_C to break
56 bytes from 3.1.1.1: icmp_seq=0 ttl=255 time=1.000 ms
56 bytes from 3.1.1.1: icmp_seq=1 ttl=255 time=1.000 ms
56 bytes from 3.1.1.1: icmp_seq=2 ttl=255 time=1.000 ms
56 bytes from 3.1.1.1: icmp_seq=3 ttl=255 time=1.000 ms
56 bytes from 3.1.1.1: icmp_seq=4 ttl=255 time=2.000 ms
--- Ping statistics for host.com ---
5 packet(s) transmitted, 5 packet(s) received, 0.0% packet loss
round-trip min/avg/max/std-dev = 1.000/1.200/2.000/0.400 ms
为了避免记忆复杂的IPv6地址,Device希望通过便于记忆的主机名访问某一主机。在Device上手工配置IPv6地址对应的主机名,利用静态域名解析功能,就可以实现通过主机名访问该主机。
在本例中,Device访问的主机IPv6地址为1::2,主机名为host.com。
图1-12 静态域名解析配置组网图
# 配置主机名host.com对应的IPv6地址为1::2。
<Sysname> system-view
[Sysname] ipv6 host host.com 1::2
# 执行ping ipv6 host.com命令,Device通过静态域名解析可以解析到host.com对应的IPv6地址为1::2。
[Sysname] ping ipv6 host.com
Ping6(56 data bytes) 1::1 --> 1::2, press CTRL_C to break
56 bytes from 1::2, icmp_seq=0 hlim=128 time=1.000 ms
56 bytes from 1::2, icmp_seq=1 hlim=128 time=0.000 ms
56 bytes from 1::2, icmp_seq=2 hlim=128 time=1.000 ms
56 bytes from 1::2, icmp_seq=3 hlim=128 time=1.000 ms
56 bytes from 1::2, icmp_seq=4 hlim=128 time=0.000 ms
--- Ping6 statistics for host.com ---
5 packet(s) transmitted, 5 packet(s) received, 0.0% packet loss
round-trip min/avg/max/std-dev = 0.000/0.600/1.000/0.490 ms
为了避免记忆复杂的IPv6地址,Device希望通过便于记忆的域名访问某一主机。如果网络中存在域名服务器,则可以利用动态域名解析功能,实现通过域名访问主机。
在本例中:
· 域名服务器的IPv6地址是2::2/64,域名服务器上存在com域,且com域中包含域名“host”和IPv6地址1::1/64的对应关系。
· Device作为DNS客户端,使用动态域名解析功能,将域名解析为IPv6地址。
· Device上配置域名后缀com,以便简化访问主机时输入的域名,例如通过输入host即可访问域名为host.com、IPv6地址为1::1/64的主机Host。
· 在开始下面的配置之前,假设设备与主机之间的路由可达,设备和主机都已经配置完毕,接口IPv6地址如图1-13所示。
· 不同域名服务器的配置方法不同,下面仅以Windows Server 2008 R2为例,说明域名服务器的配置方法。配置之前,需确保DNS服务器支持IPv6 DNS功能,以便处理IPv6域名解析报文;且DNS服务器的接口可以转发IPv6报文。
(1) 配置域名服务器
# 进入域名服务器配置界面。
在开始菜单中,选择[程序/管理工具/DNS]。
# 创建区域com。
如图1-14所示,右键点击[正向查找区域],选择[新建区域],按照提示创建新的区域com。
如图1-15所示,右键点击区域[com]。
选择[新建主机],弹出如图1-16的对话框,输入域名和IPv6地址1::1。单击<添加主机>可完成操作。
图1-16 添加域名和IPv6地址的映射
(2) 配置DNS客户端Device
# 配置域名服务器的IPv6地址为2::2。
<Device> system-view
[Device] ipv6 dns server 2::2
# 配置域名后缀com。
[Device] dns domain com
# 在设备上执行ping ipv6 host命令,可以ping通主机,且对应的目的地址为1::1。
[Device] ping ipv6 host
Ping6(56 data bytes) 3::1 --> 1::1, press CTRL_C to break
56 bytes from 1::1, icmp_seq=0 hlim=128 time=1.000 ms
56 bytes from 1::1, icmp_seq=1 hlim=128 time=0.000 ms
56 bytes from 1::1, icmp_seq=2 hlim=128 time=1.000 ms
56 bytes from 1::1, icmp_seq=3 hlim=128 time=1.000 ms
56 bytes from 1::1, icmp_seq=4 hlim=128 time=0.000 ms
--- Ping6 statistics for host ---
5 packet(s) transmitted, 5 packet(s) received, 0.0% packet loss
round-trip min/avg/max/std-dev = 0.000/0.600/1.000/0.490 ms
Device希望需要通过动态域名方式访问不同位置的主机Host1和Host2。Host1的域名和地址的对应关系保存在域名服务器1上,Host2的域名和地址的对应关系保存在域名服务器2上。
· 域名服务器1的IPv6地址是1::3/64,域名服务器1上存在com域,且com域中包含域名“host1”和IP地址1::2/64的对应关系。域名服务器2的IP地址是3::3/64,域名服务器2上存在com域,且com域中包含域名“host2”和IP地址3::2/64的对应关系。
· Device作为DNS客户端,使用动态域名解析功能,将域名解析为IPv6地址。
在开始下面的配置之前,假设设备与域名服务器、主机之间的路由可达,接口IPv6地址如图1-17所示。
(1) 配置域名服务器
# 配置域名服务器1和域名服务器2。
不同的域名服务器的配置方法不同。Windows Server 2008 R2作为域名服务器时,配置方法请参见“1.17.2 服务器域名解析配置举例”。
(2) 配置DNS客户端Device
<Sysname> system-view
# 创建域名服务器组1,添加域名服务器的IPv6地址1::3。
[Sysname] dns server-group 1
[Sysname-dns-server-group-1] ipv6 dns server 1::3
[Sysname-dns-server-group-1] quit
# 创建域名服务器组2,添加域名服务器的IPv6地址3::3。
[Sysname] dns server-group 2
[Sysname-dns-server-group-2] ipv6 dns server 3::3
[Sysname-dns-server-group-2] quit
# 配置域名匹配规则1,将完整域名“host1.com”与域名服务器组1绑定。
[Sysname] dns domain-rule 1 domain-name host1.com server-group 1
# 配置域名匹配规则2,将完整域名“host2.com”与域名服务器组2绑定。
[Sysname] dns domain-rule 2 domain-name host2.com server-group 2
# 在设备上执行ping ipv6 host1.com命令,可以ping通主机,且对应的目的地址为1::2。
[Sysname] ping ipv6 host1.com
Ping6(56 data bytes) 1::1 --> 1::2, press CTRL_C to break
56 bytes from 1::2, icmp_seq=0 hlim=128 time=1.000 ms
56 bytes from 1::2, icmp_seq=1 hlim=128 time=0.000 ms
56 bytes from 1::2, icmp_seq=2 hlim=128 time=1.000 ms
56 bytes from 1::2, icmp_seq=3 hlim=128 time=1.000 ms
56 bytes from 1::2, icmp_seq=4 hlim=128 time=0.000 ms
--- Ping6 statistics for host ---
5 packet(s) transmitted, 5 packet(s) received, 0.0% packet loss
round-trip min/avg/max/std-dev = 0.000/0.600/1.000/0.490 ms
# 在设备上执行ping ipv6 host2.com命令,可以ping通主机,且对应的目的地址为3.1.1.2。
[Sysname] ping ipv6 host2.com
Ping6(56 data bytes) 2::1 --> 3::2, press CTRL_C to break
56 bytes from 1::2, icmp_seq=0 hlim=128 time=1.000 ms
56 bytes from 1::2, icmp_seq=1 hlim=128 time=0.000 ms
56 bytes from 1::2, icmp_seq=2 hlim=128 time=1.000 ms
56 bytes from 1::2, icmp_seq=3 hlim=128 time=1.000 ms
56 bytes from 1::2, icmp_seq=4 hlim=128 time=0.000 ms
--- Ping6 statistics for host ---
5 packet(s) transmitted, 5 packet(s) received, 0.0% packet loss
round-trip min/avg/max/std-dev = 0.000/0.600/1.000/0.490 ms
某局域网内拥有多台设备,每台设备上都指定了域名服务器的IPv6地址,以便直接通过域名访问外部网络。当域名服务器的IPv6地址发生变化时,网络管理员需要更改局域网内所有设备上配置的域名服务器IPv6地址,工作量将会非常巨大。
通过DNS proxy功能,可以大大减少网络管理员的工作量。当域名服务器IPv6地址改变时,只需更改DNS proxy上的配置,即可实现局域网内设备通过新的域名服务器解析域名。
在本例中,具体配置步骤为:
(1) 局域网中的某台设备Device A配置为DNS proxy,DNS proxy上指定域名服务器IPv6地址为真正的域名服务器的地址4000::1
(2) 局域网中的其他设备(如Device B)上,域名服务器的IPv6地址配置为DNS proxy的地址,域名解析报文将通过DNS proxy转发给真正的域名服务器。
在开始下面的配置之前,假设设备与域名服务器、主机之间的路由可达,并已按照图1-18配置各接口的IPv6地址。
(1) 配置域名服务器
不同的域名服务器的配置方法不同。Windows Server 2008 R2作为域名服务器时,配置方法请参见“1.18.2 服务器域名解析配置举例”。
(2) 配置DNS代理Device A
# 配置域名服务器的IPv6地址为4000::1。
<DeviceA> system-view
[DeviceA] ipv6 dns server 4000::1
# 开启DNS proxy功能。
[DeviceA] dns proxy enable
(3) 配置DNS客户端Device B
# 配置域名服务器的IPv6地址为2000::2。
<DeviceB> system-view
[DeviceB] ipv6 dns server 2000::2
# 在Device B上执行ping host.com命令,可以ping通主机,且对应的目的地址为3000::1。
[DeviceB] ping host.com
Ping6(56 data bytes) 2000::1 --> 3000::1, press CTRL_C to break
56 bytes from 3000::1, icmp_seq=0 hlim=128 time=1.000 ms
56 bytes from 3000::1, icmp_seq=1 hlim=128 time=0.000 ms
56 bytes from 3000::1, icmp_seq=2 hlim=128 time=1.000 ms
56 bytes from 3000::1, icmp_seq=3 hlim=128 time=1.000 ms
56 bytes from 3000::1, icmp_seq=4 hlim=128 time=0.000 ms
--- Ping6 statistics for host com ---
5 packet(s) transmitted, 5 packet(s) received, 0.0% packet loss
round-trip min/avg/max/std-dev = 0.000/0.600/1.000/0.490 ms
配置了动态域名解析,但不能根据域名解析到正确的IP地址。
DNS客户端需要和域名服务器配合使用,才能根据域名解析到正确的IP地址。
· 执行命令display dns host ip,检查动态域名缓存信息是否存在指定域名。
· 如果不存在要解析的域名,检查DNS客户端是否和域名服务器通信正常,域名服务器是否工作正常。
· 如果存在要解析的域名,但地址不对,则检查DNS客户端所配置的域名服务器的IP地址是否正确。
配置了动态域名解析,但不能根据域名解析到正确的IPv6地址。
DNS客户端需要和域名服务器配合使用,才能根据域名解析到正确的IPv6地址。
· 执行命令display dns host ipv6,检查动态域名缓存信息是否存在指定域名。
· 如果不存在要解析的域名,检查DNS客户端是否和域名服务器通信正常,域名服务器是否工作正常。
· 如果存在要解析的域名,但地址不对,则检查DNS客户端所配置的域名服务器的IPv6地址是否正确。
· 检查域名服务器所设置的域名和地址映射表是否正确。
DNS仅仅提供了域名和IP地址之间的静态对应关系,当节点的IP地址发生变化时,通过域名解析得到的IP地址是错误的,会导致访问失败。
DDNS(Dynamic Domain Name System,动态域名系统)用来动态更新DNS服务器上域名和IP地址之间的对应关系,保证通过域名解析到正确的IP地址。
图2-1 DDNS典型组网图
DDNS的典型组网环境如图2-1所示,DDNS采用客户端/服务器模式:
· DDNS客户端:IP地址变化时,需要在DNS服务器上动态更新其域名和IP地址对应关系的设备。Internet用户通常通过域名访问提供应用层服务的服务器,如HTTP、FTP服务器。为了保证IP地址变化时,仍然可以通过域名访问这些服务器,当服务器的IP地址发生变化时,服务器将作为DDNS客户端,向DDNS服务器发送更新域名和IP地址对应关系的DDNS更新请求。
· DDNS服务器:负责通知DNS服务器动态更新域名和IP地址之间的对应关系。接收到DDNS客户端的更新请求后,DDNS服务器通知DNS服务器重新建立DDNS客户端的域名和IP地址之间的对应关系。从而保证即使DDNS客户端的IP地址改变,Internet用户仍然可以通过同样的域名访问DDNS客户端。
设备可以作为DDNS客户端,通过www.3322.org、花生壳等DDNS服务器动态更新DNS服务器上域名和IP地址之间的对应关系。
目前,DDNS更新过程没有统一的标准,向不同的DDNS服务器请求更新的过程各不相同。
目前,只有IPv4域名解析支持DDNS,IPv6域名解析不支持DDNS,即只能通过DDNS动态更新域名和IPv4地址之间的对应关系。
设备作为DDNS客户端配置任务如下:
(1) 配置DDNS策略
(2) 在接口上应用DDNS策略
(3) (可选)配置DDNS报文的DSCP优先级
DDNS策略是DDNS服务器的地址、端口号、登录用户名、密码、时间间隔、关联的SSL客户端策略和更新时间间隔等信息的集合。创建DDNS策略后,可以在不同的接口上应用相同的DDNS策略,从而简化DDNS的配置。
设备向不同DDNS服务器请求更新的过程各不相同,因此,DDNS更新请求的URL地址的配置方式也存在差异,如表2-1所示。
表2-1 常见的DDNS更新请求URL地址格式列表
DDNS服务器 |
DDNS更新请求的URL地址格式 |
www.3322.org |
http://members.3322.org/dyndns/update?system=dyndns&hostname=<h>&myip=<a> |
DYNDNS |
http://members.dyndns.org/nic/update?system=dyndns&hostname=<h>&myip=<a> |
DYNS |
http://www.dyns.cx/postscript.php?host=<h>&ip=<a> |
ZONEEDIT |
http://dynamic.zoneedit.com/auth/dynamic.html?host=<h>&dnsto=<a> |
TZO |
http://cgi.tzo.com/webclient/signedon.html?TZOName=<h>IPAddress=<a> |
EASYDNS |
http://members.easydns.com/dyn/ez-ipupdate.php?action=edit&myip=<a>&host_id=<h> |
HEIPV6TB |
http://dyn.dns.he.net/nic/update?hostname=<h>&myip=<a> |
CHANGE-IP |
http://nic.changeip.com/nic/update?hostname=<h>&offline=1 |
NO-IP |
http://dynupdate.no-ip.com/nic/update?hostname=<h>&myip=<a> |
DHS |
http://members.dhs.org/nic/hosts?domain=dyn.dhs.org&hostname=<h>&hostscmd=edit&hostscmdstage=2&type=1&ip=<a> |
HP |
https://server-name/nic/update?group=group-name&myip=<a> |
ODS |
ods://update.ods.org |
GNUDIP |
gnudip://server-name |
花生壳 |
根据实际情况选择: · oray://phddns60.oray.net · oray://phservice2.oray.net |
请根据网络中DDNS服务器选择要设置的URL地址:
· DDNS更新请求的URL地址可以以“http://”开头,表示基于HTTP与DDNS服务器通信;以“https://”开头,表示基于HTTPS与DDNS服务器通信;以“ods://”开头,表示基于TCP与ODS服务器通信;以“gnudip://”开头,表示基于TCP与GNUDIP服务器通信;以“oray://”开头,表示基于TCP与花生壳DDNS服务器通信。
· HP和GNUDIP是通用的DDNS更新协议,server-name是使用对应DDNS更新协议的服务提供商的服务器域名或地址。
· URL地址中的端口号是可选项,如果不包含端口号则使用缺省端口号:HTTP是80,HTTPS是443,花生壳DDNS服务器是6060。
· <h>由系统根据接口上应用DDNS策略时指定的FQDN自动填写,<a>由系统根据应用DDNS策略的接口的主IP地址自动填写。用户也可以手工输入需要更新的FQDN和IP地址,代替URL中的<h>和<a>,此时,应用DDNS策略时指定的FQDN将不会生效。建议不要修改URL中的<h>和<a>,以免配置错误的FQDN和IP地址。应用DDNS策略的详细介绍,请参见“2.5 在接口上应用DDNS策略”。
· 花生壳DDNS服务器的URL地址中不能指定用于更新的FQDN和IP地址。用户可在接口上应用DDNS策略时指定FQDN;用于更新的IP地址是应用DDNS策略的接口的主IP地址。
登录DDNS服务提供商的网站,注册账户,并为DDNS客户端申请域名。通过DDNS服务器更新域名和IP地址的对应关系时,DDNS服务器将检查DDNS更新请求中的账户信息是否正确、需要更新的域名是否属于该账户。
(1) 进入系统视图。
system-view
(2) 创建DDNS策略,并进入DDNS策略视图。
ddns policy policy-name
(3) 指定DDNS更新请求的URL地址。
url request-url
缺省情况下,未指定DDNS更新请求的URL地址。
URL地址中不支持携带用户名和密码,配置用户名和密码请配合username和password命令使用,请根据实际情况修改。
(4) 指定登录DDNS服务器的用户名。
username username
缺省情况下,未指定登录DDNS服务器的用户名。
(5) 指定登录DDNS服务器的密码。
password { cipher | simple } string
缺省情况下,未指定登录DDNS服务器的密码。
(6) (可选)配置采用HTTP或HTTPS报文发送DDNS更新请求时使用的参数传输方式。
method { http-get | http-post }
缺省情况下,采用HTTP或HTTPS报文发送DDNS更新请求时使用的参数的传输方式为http-get。
本命令仅在基于HTTP或HTTPS与DDNS服务器通信时生效。
与DHS通信时,必须指定http-post参数传输方式进行DDNS更新。
(7) 指定与DDNS策略关联的SSL客户端策略。
ssl-client-policy policy-name
缺省情况下,未指定与DDNS策略关联的SSL客户端策略。
在指定URL为HTTPS的URL地址时为必选。
基于HTTPS与DDNS服务器通信时,需要通过本命令指定与DDNS策略关联的SSL客户端策略,SSL客户端策略的配置方法请参见“安全配置指导”中的“SSL”。
(8) (可选)指定定时发起更新请求的时间间隔。
interval days [ hours [ minutes ] ]
缺省情况下,定时发起DDNS更新请求的时间间隔是1小时。
在接口上应用DDNS策略,并指定需要更新的FQDN与IP地址对应关系后,DDNS客户端才会向DDNS服务器发起更新域名和接口主IP地址对应关系的请求。
· 除花生壳DDNS服务器外,其他的DDNS服务器均需要指定更新的FQDN,否则会导致DDNS更新失败。
· 对于花生壳DDNS服务器,如果未指定更新的FQDN,则DDNS服务器将更新DDNS客户端的账户对应的所有域名;如果指定了更新的FQDN,则DDNS服务器只更新指定的FQDN。
· 配置该接口的主IP地址,使之与DDNS服务器路由可达。
· 配置IPv4静态或动态域名解析功能,以便将DDNS服务器的域名解析为IP地址。域名解析功能的配置方法请参见“1.3 配置DNS客户端”。
(1) 进入系统视图。
system-view
(2) 进入接口视图。
interface interface-type interface-number
(3) 在接口上应用指定的DDNS策略来更新指定的FQDN与IP地址的对应关系,并启动DDNS更新。
ddns apply policy policy-name [ fqdn domain-name ]
缺省情况下,没有为接口指定任何DDNS策略和需要更新的FQDN,且未启动DDNS更新。
FQDN是节点在网络中的唯一标识,由主机名和域名组成,可被解析为IP地址。
DSCP优先级用来体现报文自身的优先等级,决定报文传输的优先程度。通过本配置可以指定DDNS服务器发送的DDNS报文的DSCP优先级。
(1) 进入系统视图。
system-view
(2) 配置DDNS报文的DSCP优先级。
ddns dscp dscp-value
缺省情况下,DDNS报文的DSCP优先级为0。
在完成上述配置后,在任意视图下执行display ddns policy命令可以显示DDNS策略的配置情况,通过查看显示信息验证配置的效果。
表2-2 DDNS显示和维护
操作 |
命令 |
显示DDNS策略的配置情况 |
display ddns policy [ policy-name ] |
· Router为Internet上的用户提供Web服务,使用的域名为example.3322.org。
· Router通过DHCP获得IP地址,为保证Router的IP地址变化后,Internet上的用户仍然可以利用域名example.3322.org访问Router,Router通过www.3322.org提供的DDNS服务及时通知DNS服务器更新域名和IP地址的对应关系。
· DNS服务器的IP地址为1.1.1.1。Router通过该DNS服务器将DDNS服务器的域名www.3322.org解析为IP地址。
图2-2 与www.3322.org互通配置举例组网图
配置之前,请登录http://www.3322.org注册账户(本配置举例以账户名steven,密码nevets为例)。配置DDNS策略来更新指定的FQDN example.3322.org和IP地址的对应关系,并保证各个设备之间的路由可达。
# 创建名称为3322.org的DDNS策略,并进入DDNS策略视图。
<Router> system-view
[Router] ddns policy 3322.org
# 为DDNS策略3322.org指定DDNS更新请求的URL地址,登录用户名为steven,密码为明文字段nevets。
[Router-ddns-policy-3322.org] url http://members.3322.org/dyndns/update?system=dyndns&hostname=<h>&myip=<a>
[Router-ddns-policy-3322.org] username steven
[Router-ddns-policy-3322.org] password simple nevets
# 为DDNS策略3322.org指定定时发起更新请求的时间间隔为15分钟。
[Router-ddns-policy-3322.org] interval 0 0 15
[Router-ddns-policy-3322.org] quit
# 配置DNS服务器的IP地址为1.1.1.1。
[Router] dns server 1.1.1.1
# 在GigabitEthernet1/0/1接口下指定应用DDNS策略3322.org,更新域名example.3322.org与接口主IP地址的对应关系,并启动DDNS更新功能。
[Router] interface gigabitethernet 1/0/1
[Router-GigabitEthernet1/0/1] ddns apply policy 3322.org fqdn example.3322.org
配置完成后,Router的接口IP地址变化时,它将通过DDNS服务提供商www.3322.org通知DNS服务器建立域名example.3322.org和新的IP地址的对应关系,从而保证Internet上的用户可以通过域名example.3322.org解析到最新的IP地址,访问Router提供的Web服务。
· Router为Internet上的用户提供Web服务,使用的域名为example.gicp.cn。
· Router通过DHCP获得IP地址,为保证Router的IP地址变化后,Internet上的用户仍然可以利用域名example.gicp.cn访问Router,Router通过花生壳提供的DDNS服务及时通知DNS服务器更新域名和IP地址的对应关系。
· DNS服务器的IP地址为1.1.1.1。Router通过该DNS服务器将花生壳DDNS服务器的域名解析为IP地址。
图2-3 与花生壳DDNS服务器互通配置举例组网图
配置之前,请登录http://www.oray.cn注册账户(本配置举例以用户名steven,密码nevets为例)。配置DDNS策略来更新指定的FQDN example.gicp.cn和IP地址的对应关系,并保证各个设备之间的路由可达。
# 创建名称为oray.cn的DDNS策略,并进入DDNS策略视图。
<Router> system-view
[Router] ddns policy oray.cn
# 为DDNS策略oray.cn指定DDNS更新请求的URL地址,登录用户名为steven,密码为明文字段nevets。
[Router-ddns-policy-oray.cn] url oray://phddns60.oray.net
[Router-ddns-policy-oray.cn] username steven
[Router-ddns-policy-oray.cn] password simple nevets
# 为DDNS策略oray.cn指定定时发起更新请求的时间间隔为12分钟。
[Router-ddns-policy-oray.cn] interval 0 0 12
[Router-ddns-policy-oray.cn] quit
# 配置DNS服务器的IP地址为1.1.1.1。
[Router] dns server 1.1.1.1
# 在GigabitEthernet1/0/1接口下指定应用DDNS策略oray.cn,更新域名example.gicp.cn与接口主IP地址的对应关系,并启动DDNS更新功能。
[Router] interface gigabitethernet 1/0/1
[Router-GigabitEthernet1/0/1] ddns apply policy oray.cn fqdn example.gicp.cn
配置完成后,Router的接口IP地址变化时,它将通过花生壳DDNS服务器通知DNS服务器建立域名example.gicp.cn和新的IP地址的对应关系,从而保证Internet上的用户可以通过域名example.gicp.cn解析到最新的IP地址,访问Router提供的Web服务。
不同款型规格的资料略有差异, 详细信息请向具体销售和400咨询。H3C保留在没有任何通知或提示的情况下对资料内容进行修改的权利!