Unix Like, 操作系统, 服务器

Linux下的HostName与DNSDomain

今天是博客的四岁生日,又一年啦,可喜可贺。

关于Linux上的Hostname,用过Linux的都不陌生,各位也清楚如何修改Hostname,不过格式正确的,且做好了后续操作的,相信没多少……

下面的Hostname格式是各位最常用的的(正则表达式):

^[a-zA-Z0-9\-]+$

例如:helloworld,goodjob,myserver

我在这里可以告诉你们,这种格式的Hostname是错的。

这种Hostname格式,也比较多人使用(正则表达式):

^[a-zA-Z0-9\-]+\.[a-zA-Z0-9\-]+$

例如:domain.com,my.name

很抱歉,这种也是错误的,只是没前面那种严重。

 

那什么才是正确的Hostname格式呢?

当然是FQDN格式,何谓FQDN格式?如下(正则表达式):

^([a-zA-Z0-9\-]+\.)+[a-zA-Z0-9\-]+\.[a-zA-Z0-9\-]+$

举几个例子:server.domain.com,my.server.com

 

何谓DNSDomain?

就拿server.domain.com做例子吧,以“.”作为分隔符,那么就会分成三个部分,分别是server,domain,com,我们只拿掉第一个和第一个“.”,剩下的domain.com就是DNSDomain。

 

后续操作又是什么呢?

就是修改/etc/hosts,相信很多人都忽略这一步了,从而导致各种问题,例如sendmail启动慢,邮件发送慢,甚至无法发送邮件,Freeradius无法正常使用等。

 

最后来说下修改Hostname的正确步骤:

RHEL类

RHEL类的修改/etc/sysconfig/network文件,该文件中有一行以HOSTNAME开头的,更改其等于号后面的内容即可,例如我要更改Hostname为server.domain.com,则内容如下:

修改/etc/hosts的内容:

也就是你的服务器IP+空格+FQDN格式的Hostname+空格+以“.”为分隔符的第一位。如果里面已有原Hostname的记录,那么必须删除掉。

最后执行:

 

Debian类

修改文件/etc/hostname,在里面输入的内容是FQDN格式的Hostname以“.”为分隔符的第一位,例如我要使用server.domain.com,那么在/etc/hostname中的内容就应该是:

接下来修改/etc/hosts的内容,此处的格式与RHEL类一样,同样的,要记得删除旧的记录。

最后执行:

PS1处的hostname可能没变,重新登录或者执行BASH,就会显示新的Hostname。

 

如果无误,执行hostname -f就可以输出FQDN格式的Hostname,执行hostname -i就能输出你的服务器IP。