1.dns配置
日常管理主机过程中,会有很多地方需要使用到主机名的,当主机非常多的时候,就不适合使用hosts来管理和同步的所有主机hosts了,这个时候就可以使用dns来管理主机名映射和变动
dns 在linux中如何配置,这里就不多说,百度一下“Linux bind 服务配置”就能找到很多相关文章
这里说说使用dns管理主机名会碰见的一些情况
在很多公司的主机名标准命名规范里,很少会有使用标准域名格式命名的,一般都会使用‘-‘(横杠) 来分割几个字段,每个字段表达不同的意思,以此来命名主机的,也有一些会使用‘_‘(下划线) 来分割主机名的。像这种使用一般字符串来命名主机名的,在使用dns 解析的时候,最基本的是,不知道该如何设置主机名所在的域名称(因为主机名根本没有域名称),不知道该如何只给一个字符串,就能解析成对应的ip。这个时候这里就需要使用Linux /etc/resolv.conf 的功能了。在这个配置文件里可以使用
domain localhost.localdomain #域名可以自定义#这样的方式来设置主机所在的默认域,这样在配置主机名A记录的时候,可以配置到对应的域名localhost.localdomain下#使用domain配置域名之后,在使用hostname -d的时候便会返回这个域名,未配置的时候此命令返回空 search localhost.localdomain #域名可以自定义#这个参数可以同domain一样达到目的,随意配置其中一个即可#这个参数跟domain有些区别,这个参数设置的是默认搜索域,而不是主机的默认域,主机没有域,但是当在此主机上解析某字符串的时候,会默认优先搜索此域#即nslookup hostname 首先解析的即是hostname.localhost.localdomain ,不存在时直接解析字符串,都失败,则返回找不到#配置这个参数后,使用hostname -d 命令返回的依然是空,表明主机没有默认域
此配置可以同步到所有的主机上,这样即可在所有主机上直接使用主机名解析到对应的ip,而又无须配置hosts文件
因dns标准规定的原因,主机名使用dns管理的时候,主机名中不能包含‘_‘(下划线),虽然使用hosts文件管理的时候可以使用下划线,但是在java,以及c语言新网络api中,即使是hosts文件管理也是无法识别含有下划线的主机名,会抛出异常。因此在主机管理中,主机名规划需要提前规划好。
在Linux 的 /etc/resolv.conf 配置文件中如果存在多个nameserver 的配置的话,如果第一个dns地址可用,则永远不会用到后面的dns配置。除非前面的dns无法访问,经过超时时间判定无法访问之后才会向后面的dns服务发起请求。因此在配置自己私有的dns的时候需要注意要将dns写在第一位。并且不建议配置过多的nameser 字段,这样会造成前面都失效超时之后才会访问到合适的dns,这样会造成所有网络相关请求服务都缓慢异常