您的位置:首页 > 运维架构 > Linux

Linux操作系统的主机名

2010-11-29 16:54 134 查看
一 介绍[/b]
无论在局域网还是INTERNET上,每台主机都有一个IP地址,是为了区分此台主机和彼台主机,也就是说IP地址就是主机的门牌号。但IP地址不方便记忆,所以又有了域名。域名只是在公网(INtERNET)中存在(以实验为目的的局域网域网实验性除外),每个域名都对应一个IP地址,但一个IP地址可有对应多个域名。域名类型 Linuxsir.org 这样的。
主机名是用于什么的呢?在一个局域网中,每台机器都有一个主机名,用于主机与主机之间的便于区分,就可以为每台机器设置主机名,以便于以容易记忆的方法来相互访问。比如我们在局域网中可以为根据每台机器的功用来为其命名。

二 相关配置文件[/b]
<1> /etc/host.conf: [/b]
这个是Linux的resolver(网络地址解析器?)的配置文件. 常见的内容是:
order hosts,bind

它的含义是, 在解析IP地址的时候,按照先搜索/etc/hosts文件,后发送DNS请求的方式来进行.
<2> /etc/hosts[/b]
在Berkly Internet Name Domain (BIND) 服务器出现之前,每台连接网络的linux主机都依靠次文件来解析网络上的主机名和对应的IP地址[/b]
主机名相关的配置文件: /etc/hosts 的内容一般如下:
127.0.0.1 localhost.localdomain localhost

192.168.1.195 debian.localdomain debian
注:
一般情况下hosts的内容关于主机名(Hostname)的定义,每行为一个主机,每行由三部份组成,每个部份由空格隔开。其中#号开头的行做说明,不被系统解释。
第一部份:网络IP地址;

第二部份:主机名.域名,注意主机名和域名之间有个半角的点,比如 localhost.localdomain

第二部份:主机名(主机名别名) ,其实就是主机名

当然每行也可以是两部份,就是主机IP地址和主机名;比如 192.168.1.195 debian

127.0.0.1 是回环地址,比如我们不想让局域网的其它机器看到我们测试的网络程序,就可以用回环地址来测试。

为什么需要定义域名呢?其实理解也简单,比如我们有三台主机,每台做不同的事,一台做MAIL服务器,一台做FTP服务器,一台做SMB服务器,所以我们就可以这样来设计Hostname

127.0.0.1 localhost.localdomain localhost

192.168.1.2 ftp.localdomain ftp

192.168.1.3 mail.localdomain mail

192.168.1.4 smb.localdomin smb
把这上面这个配置文件的内容分别写入每台机器的/etc/hosts内容中,这样这三台局域网的机器就可以通过Hostname来访问了。
<3>[/b] /etc/sysconfig/network[/b][/b]
这个是主机连接网络的配置文件, 有点像Windows控制面板-->网络属性提供的功能, 比如gateway, 我们公司里一台Redhat主机上该文件的内容:
NETWORKING_IPV6=yes

HOSTNAME=hzciss03.china.nsn-net.net

NETWORKING=yes

GATEWAY=10.159.194.1

NISDOMAIN=eelinnis.emea.nsn-net.net


三 相关命令[/b]
<1>hostname[/b]

hostname命令并不一定从/etc/hosts和/etc/sysconfig/network中获取主机名:
(1) 显示主机名:
[root@Linuxsir01 ~]# Hostname
Linuxsir01
此主机的主机名Linuxsir01,不加参数是用来显示当前操作的主机的主机名;

(2) 临时设置主机名:
我们可以用 Hostname 后接主机名,这样就可以设置当前操作的主机的主机名,比如我们想把主机名设置为Linuxsir02;
[root@Linuxsir01 ~]# Hostname Linuxsir02
[root@Linuxsir01 ~]# Hostname 注:显示主机名
Linuxsir02
(3) 显示主机IP:
显示当前主机名的IP,可以用-i参数;
[root@Linuxsir01 ~]# Hostname -i
192.168.1.3

$ hostname #将调用gethostname(2)函数来获取主机名. 通过查阅gethostname(2)得知, 该GLIBC函数通过调用uname(2)来获得信息.
$ hostname -s #将调用gethostbyname(3)函数来获得主机名. 这个函数和gethostname(2)的不同之处是,它首先读取/etc/nsswitch.conf, /etc/host.conf来判断是否要从/etc/sysconfig/network或者/etc/hosts里获取主机名.
所以:
使用hostname改变主机名后, /etc/hosts和/etc/sysconfig/network中关于主机名的信息未改变, uname -a返回的主机名信息则变成刚刚更改的了. 这个时候使用hostname -s命令去查询, 返回错误, 可能是因为主机名和/etc/hosts和/etc/sysconfig/network中不一致导致的.

结论:
通过Hostname 工具来设置主机名只是临时的,下次重启系统时,此主机名将不会存在
设置或者更改主机名后, 需要手动更新/etc/hosts和/etc/sysconfig/network中的相关信息.
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: