Linux操作系统的主机名


一 介绍

无论在局域网还是INTERNET上,每台主机都有一个IP地址,是为了区分此台主机和彼台主机,也就是说IP地址就是主机的门牌号。但IP地址不方便记忆,所以又有了域名。域名只是在公网(INtERNET)中存在(以实验为目的的局域网域网实验性除外),每个域名都对应一个IP地址,但一个IP地址可有对应多个域名。域名类型 Linuxsir.org 这样的。

主机名是用于什么的呢?在一个局域网中,每台机器都有一个主机名,用于主机与主机之间的便于区分,就可以为每台机器设置主机名,以便于以容易记忆的方法来相互访问。比如我们在局域网中可以为根据每台机器的功用来为其命名。

 

二 相关配置文件

<1> /etc/host.conf:

这个是Linuxresolver(网络地址解析器?)的配置文件. 常见的内容是:

order hosts,bind
它的含义是, 在解析IP地址的时候,按照先搜索/etc/hosts文件,后发送DNS请求的方式来进行.

<2> /etc/hosts

Berkly Internet Name Domain (BIND) 服务器出现之前,每台连接网络的linux主机都依靠次文件来解析网络上的主机名和对应的IP地址

主机名相关的配置文件: /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> /etc/sysconfig/network

这个是主机连接网络的配置文件, 有点像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


三 相关命令

<1>hostname
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中的相关信息.

 

 

 

你可能感兴趣的:(linux,hostname,职场,休闲)