摘要:本文是关于Linux操做系统主机名(hostname)的文档,对主要配置文件/etc/hosts进行简要的说明 ;另外对基配具工具hostname也进行了举例说明; 欢迎高手斧正,谢谢;
目录
一、 什么是主机名;
2. 主机名配置文件;
2.1 主机名配置文件 /etc/hosts解说;
2.2 主机名(hostname)和域名(Domain)的区别;
2.3 局域网的机器,不能经过主机名互访的缘由;
三、主机名修改工具 hostname;
四、本文未尽事宜;
五、关于本文;
六、更新日志;
七、参考文档;
八、相关文档;
++++++++++++++++++++++++++++++++++++++++
正文
++++++++++++++++++++++++++++++++++++++++
一、 什么是主机名;
不管在局域网仍是INTERNET上,每台主机都有一个IP地址,是为了区分此台主机和彼台主机,也就是说IP地址就是主机的门牌号。但IP地址不方便记忆,因此又有了域名。域名只是在公网(INtERNET)中存在(以实验为目的的局域网域网实验性除外),每一个域名都对应一个IP地址,但一个IP地址可有对应多个域名。域名类型 linuxsir.org 这样的;
主机名是用于什么的呢?在一个局域网中,每台机器都有一个主机名,用于主机与主机之间的便于区分,就能够为每台机器设置主机名,以便于以容易记忆的方法来相互访问。好比咱们在局域网中能够为根据每台机器的功用来为其命名。
主机名相关的配置文件:/etc/hosts;
2. 主机名配置文件;
主机名的配置文件大可能是/etc/hosts ;
hosts - The static table lookup for host name(主机名查询静态表);
因为 Linux 发行版本众多,与主机名相关的配置文件有时也有所不一样。如今咱们说说常见版本的主机名配置文件;
2.1 主机名配置文件 /etc/hosts解说;
Fedora/Redhat 或以Fedora/Redhat为基础打包的发行版,主机名配置文件是 /etc/hosts
Debian或以Debian为基础打包的发行版,主机名配置文件是 /etc/hostname 和/etc/hosts
Slackware的主机名配置文件是 /etc/hosts
那咱们来读读 /etc/hosts的内容,看这个文件是用来作什么的。hosts 配置文件是用来把主机名字映射到IP地址的方法,这种方法比较简单。但这种映射只是本地机的映射,也就是说每台机器都是独立的,全部的计算机都不能相互经过hostname来访问。
注:在debian 中还有一个/etc/hostname的文件,这个文件就是直接把本地主机名写进去就好了,但要和 /etc/hosts中的本地主机名保持一致。
/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来访问了。
2.2 主机名(hostname)和域名(Domain)的区别;
主机名就机器自己的名字,域名是用来解析到IP的。但值得一说的是在局域网中,主机名也是能够解析到IP上的;好比咱们前面所说举的例子;
2.3 局域网的机器,不能经过主机名互访的缘由;
有的弟兄可能会说,个人hostname彼此不能互访,其实这也问题也简单,咱们前面已经提到了一个简单的解决办法。就是要让局域网中的全部主机都有一个通用的,而且包含全部主机的/etc/hosts文件;
另外一个是作解决办法是作局域网DNS服务器,若是您的主机特别少,就用前面所说的简单方法就行;如何作DNS服务器,我将在之后的文档中专题介绍;不过我值得一提的是作任何服务器都是以效率优先的原则为基础。好比咱们在局域网中两台机器,咱们还有必要作DNS服务器吗?不管怎么解决,最终的都是用最有效率的办法解决问题;咱们不能说明DNS多高级。若是DNS是为外网服务的,那就另说了,不作也得作。对不对?
三、主机名修改工具 hostname;
其实主机名的修改也有专用工具,就是hostname ;我认为若是用这个工具来修改主机名,不如直接修改 /etc/hosts 来的方便;您能够查看 hosname --help或 man hostname的帮助 。在这里咱们只说简单的用法;
hostname 工具是用来显示和设置系统主机名,看下面的洋文;
hostname - show or set the system’s host name
举例解说:
* 显示主机名:
[root@linuxsir01 ~]# hostname
linuxsir01
此主机的主机名是linuxsir01,不加参数是用来显示当前操做的主机的主机名;
* 临时设置主机名:
咱们能够用 hostname 后接主机名,这样就能够设置当前操做的主机的主机名,好比咱们想把主机名设置为linuxsir02;
[root@linuxsir01 ~]# hostname linuxsir02
[root@linuxsir01 ~]# hostname 注:显示主机名
linuxsir02
经过hostname 工具来设置主机名只是临时的,下次重启系统时,此主机名将不会存在;因此您想修改主机名,想一直有效的,仍是用前面所说修改主机名配置文件 /etc/hosts;
* 显示主机IP:
显示当前主机名的IP,能够用-i参数;
[root@linuxsir01 ~]# hostname -i
192.168.1.3
四、本文未尽事宜;
有时咱们在登入桌面时,会提示找不到hostname ,这时您要作的是修改/etc/hosts,为您的机器添加一个主机名;先用 ifconfig -a 来查看主机的IP地址,而后把你主机的IP地址,指定主机名;
五、关于本文;
好多天没有写文档了,不是由于我没有时间,而是测试了一些我没有用过的硬件。想写几篇硬件文档,但因为条件限制,硬件文档没写出来,还把原本计划好的网络基础系统文件给耽隔下来。这些天一直在想我这样作是否是失误了?事情已通过去,虽然努力未能成功,但并不能说我没有努力,只是结果没有获得我所须要的。看来作任何事都不是一路顺风的。只要支持下来,就可能出要咱们所想所要的。
今天又开始写网络文档了,先写一篇小一点的练练手,原本计划了一篇比较大的网络基础文档,一个本身的规划就感受无从下手,内容太多,你们也读着累,因此把大的文档拆分红小的文档,这样写起来不累,并且读着更不累。若是想知道更详细的,我会把这些小文档再组合起来,这样就能成为一个系列文档了。
看来写文档规划很重要,请你们给点建议或意见吧,谢谢;
本文是关于主机名的文档,写的有点简单, 有些地方写的太含乎,还请高手多多指点,谢谢;
—— 北南南北 at LinuxSir.Org
六、更新日志;
2006-07-02 v0.1b 正文初稿完成 ;
七、参考文档;
八、相关文档;
By 北南南北 at 2006/07/02 - 12:53 | 网络基础 | Linux | 基础知识 | 参与评论 | 14223 阅读
菜鸟也来问个问题...
刚碰到一个问题...好象是与这个话题相关的..不过我实在是网络和Linux中新手中的新手,不要笑我. :(
我用的是Ubuntu 6-当前的版本.
咱们公司内部的机器的域名是:hfwbx.hf.webex.com
而我机器名字是: hut-work.
在装Ubuntu的时候个人机器名默认是hut-desktop (hut是我输入的).
而后我到网络设置里面将个人用户名和域改为 hut-work 和 hfwbx.hf.webex.com
此时:
PING hut-work.hfwbx.hf.webex.com (172.16.202.42) 56(84) bytes of data.
From 172.16.202.45 icmp_seq=1 Destination Host Unreachable
From 172.16.202.45 icmp_seq=2 Destination Host Unreachable
From 172.16.202.45 icmp_seq=3 Destination Host Unreachable
172.16.202.42是我之前机器的IP地址.
而当前个人IP地址是:172.16.202.45.
请问如何ping hut-work能指向我指望的当前的IP地址呢? [172.16.202.45]?
谢谢.
By Anonymous at 周一, 2007/03/19 - 16:55 | 回复
看过南北兄写的好多文章,受益非浅,在此谢过
看过南北兄写的好多文章,受益非浅,在此谢过
By Anonymous at 周五, 2007/01/26 - 11:12 | 回复
修改一下原文的错误吧,北南兄别见怪,呵呵
以我所用的ubuntu系统为例。
首先说一下hosts文件,这个文件每行分3个域:
IP 主机名 别名
原文提到别名是主机名,实际是不对的,别名只是为了方便使用,对它的修改是不会影响到之际名的。真正影响主机名的是hostname(在Debian系统是这样的)。这里特别提醒你们注意的是,若是在hostname中修改了主机名,必定要在hosts里加入这样的行:
127.0.0.1 localhost 你修改的主机名
或者这样
127.0.0.1 你修改的主机名
由于在linux里不少命令都会用到gethostbyname()这个函数,若是你改了主机名而又没有在hosts里更新,那么这个命令是没法执行的。
ps:在FC系统中,配置文件与Debian不同,它的hostname设置是在/etc/sysconfig/network里
By Anonymous at 周一, 2006/08/21 - 21:07 | 回复
谢谢
兄弟客气了。哈哈。我写网络的时候,原本就是让你们批着看的。
兄弟若是有时间最好能修订一下全文,先谢谢 。。。
修改完成后,请发到个人信箱。
北南 呈上
By Anonymous at 周三, 2006/08/23 - 10:05 | 回复
修改主机名三部曲
1. 变动当前主机名
两种方法: echo new-hostname > /proc/sys/kernel/hostname
或者: hostname new-hostname
2. 修改配置文件,使得下次重启的时候,使用新的主机名
编辑文件: /etc/sysconfig/network
修改: HOSTNAME=new-hostname.domainname
3. 配置本机的域名解析文件,使得本机的应用程序可以解析新的主机名
编辑文件: /etc/hosts
修改: xxx.xxx.xxx.xxx new-hostname.domainname new-hostname
(这里的xxx表明本机的网络地址,也能够是环回地址127.0.0.1)
By ahumdk at 周五, 2006/08/11 - 11:49 | 回复
错了
在host里面改是不行了,那个文件只是用来作dns解析用的,系统启动的时候不会读取里面的东西,要在/etc/sysconfig/network里面设置.下面的有反映说启动不了了,其实等等就启动了,只是里面一个服务遇到了问题,postfix遇到问题了,说找不到localhost了.在host改后启动后系统的名字是没有便的,只有在上面的那个路径下面文件该后才会正确显示,在windows底下ping 本身的名字是能ping通的,而linux底下不知道为何不行,因此还要在host底下加一条新的名字解析.
By Anonymous at 周日, 2006/08/06 - 23:48 | 回复
我的以为/etc/hosts并非设置主机名的
我我的以为/etc/hosts并非设置主机名的,而是至关于DNS的做用的,这个东西和主机名应该是不一样的
主机名是用来标志某一台主机的,可是未必是给别人机器使用的,而是给这台机器自身用的,好比在登陆的时候的提示,在Shell的提示符上,均可以显示出来,这样的话,使用者能够知道本身用的是哪台机器。而这台机器也未必须要在网络上
而/etc/hosts倒是设定IP和对应的名称的关系,这种关系甚至是随意的,好比主机名能够叫A(若是设置好了的话,登陆和Shell的提示符上会显示),可是在/etc/hosts中我能够给它设定对应于C,或者
www.sohu.com,在个人机器上,就能够用C,或者是
www.sohu.com这样的名称来访问它,甚至两个同时设置,可是主机名仍然应该是一个 能够这样考虑: 我是在B主机上,而且在B主机上的/etc/hosts中设定C对应A主机的IP,在A机上开了sshd,那么我能够在B上用相似ssh C这样的命令来访问A机,可是在A的登陆的提示上出现的应该仍是A login:这样的提示,而不是C login,在Shell的提示符中显示的,应该是[user@A ~]$这样的提示(若是设置的是显示主机名的话),我以为主机名的做用应该是在这个地方,肯定所登陆的机器,省得误操做或者用错用户名登陆(也许使用者在两台不一样的机器上拥有两个不一样的帐号) 还有另外一个方法能够说明这个问题,好比你的/etc/hosts里面设置的是A对应A的IP,那么用hostname修改了主机名,好比叫test,以后再ping的时候,ping test是不起做用的,仍是只能ping A,这说明ping的地方用的名称或者其它网络访问时用的名称(也就是由/etc/hosts设定的名称)和主机名是不一样的 因此我以为,主机名和/etc/hosts没什么关系,只不过若是/etc/hosts中的IP和主机名不对应的话,就不能用主机名来访问这台主机了,可是本身的机器的网络操做并非不少,因此也没什么大关系 因此手工设置主机名,应该改的是另外的一个配置文件(好比说是/etc/sysconfig/network,或者是其它的什么),修改了以后“最好”把/etc/hosts也对应修改一下 By laneast at 周日, 2006/07/30 - 14:06 | 回复 有些道理 在本机上面设置了DNS后呢,通常访问一个"名字"的时候,流程大体是这样的, command->Local host name->hosts files->dns server->wins->lmhost.windows地下这样解析的顺序,linux底下也一页,既然第二步是解析Local host name,而第三步才是到hosts.想必俩个不是同类在一块儿的.windows里面,hostname能够是多样的,而host里面的对应的,通常只有一个地址,那就是:127.0.0.1 localhost.host在之前的网络中就是如今的dns做用同样,后来随着网络的发展,它的缺点不适应了.因此如今host做用仍然是dns做用的.也不知道linux是否是把hostname归结到host里面了,不太清楚.呵呵.由于偶不知道在哪儿该hostname.不过咱们假设先.假设hostname和host文件是俩马事儿,看能不能解析,改变host文件后,咱们测试新的的名字,确定是能用的,由于计算机会到host找对照表一旦发现名称对应了.那确定是可以访问了.呵呵,因此还待有人帮我回答.究竟是怎么说才对 By Anonymous at 周日, 2006/08/06 - 23:07 | 回复 hosts在windows里面只是为了解析域名用的 hosts在windows里面只是为了解析域名用的,不知道在linux底下是否是有所归在一块儿了?就是在系统启动的时候加载host里面的名字使得它成为计算机的名字呢? By Anonymous (没有被验证) at 周日, 2006/08/06 - 23:28 | 回复 修改hostname出现的问题 昨天修改了一下hostname,结果致使今天不能登录网络。我使用的是DHCP + FC5。经过网络配置工具,我已经正确创建了以太网链接和相应的硬件,可是却不能激活。使用service network restart会出现以下的信息: 正在关闭接口 eth0: [肯定] 关闭环回借口: [肯定] 禁用 Ipv4 包传送 [肯定] 弹出环回接口: [肯定] 弹出界面 eth0: [肯定] 正在决定 eth0 的IP信息 ... 完成 RTNETLINK answers: No such device //问题所在呀 可是我经过lsmod命令确实看到了个人网络驱动模块b44.ko被加载了。并且经过lspci命令也能够看到检测出来的网卡。 不知道怎么处理,如知请回呀!!! By Anonymous at 周二, 2006/08/01 - 21:46 | 回复 两个第二部分? 第二部份:主机名.域名,注意主机名和域名之间有个半角的点,好比 localhost.localdomain 第二部份:主机名(主机名别名) ,其实就是主机名; 两个第二部分?笔误吧? By Anonymous at 周三, 2006/07/19 - 08:18 | 回复 辛苦了 可是中文是否是应该好好改改,读得云里雾里!!! By Anonymous at 周一, 2006/07/17 - 08:36 | 回复 仍是我 只是一个小建议,没时间就算了,无论怎样,很是感谢您的辛勤劳动!!! By Anonymous at 周一, 2006/07/17 - 09:20 | 回复 好比INTERNET网上的主机 好比INTERNET网上的主机,也就是公网上的主机。有时域名就是主机名。 北南兄,我以为这句也不是太对,就算公网上的主机,域名也不就是主机名,我以为应该是主机名和域名的总和才是网络上的真是主机名! By Anonymous (没有被验证) at 周一, 2006/07/10 - 22:36 | 回复 修改主机名不是修改 修改主机名不是修改/etc/hosts文件就能够的了!我测试过,修改/etc/hosts文件根本就不起做用的,应该修改/etc/sysconfig/network By Anonymous (没有被验证) at 周一, 2006/07/10 - 22:31 | 回复 修改主机名不是修改 主机名见/etc/HOSTNAME文件 用hostname修改的是临时的主机名 By Anonymous at 周五, 2006/09/15 - 22:45 | 回复 若是只修改/etc/hosts内的主机名 在不少时候,若是只修改/etc/hosts内的主机名,会致使下次启动时出现不能找到主机名的问题,我认为除了修改/etc/hosts还应该修改/etc/sysconfig/network,北南,你以为呢? By Anonymous (没有被验证) at 周三, 2006/07/05 - 09:32 | 回复 兄弟说的有理,有时是必要的。 我测试过,有时不须要这样作。兄弟所说的是RH/FC的系统; 好比主机的IP地址是 192.168.1.55 ,回环地址那行几乎全部的机器都是那样的。可改一改,也能够不改。 192.168.1.55 mailserver.localdomain mailserver 加上这行,主机名就变成了 mailserver 。我不敢彻底肯定。我测试过一回,是能够的。 若是 192.168.1.56 这台机器 ,好比他的主机名是 ftpserver。要让 192.168.1.55能经过主机名来访问。若是不作DNS的话,就能够修改 /etc/hosts,加入 192.168.1.56这台的主机名。固然也得修改 192.168.1.56这台机器的/etc/hosts; 127.0.0.1 localhost.localdomain localhost 192.168.1.55 mailserver.localdomain mailserver 192.168.1.56 ftpserver.localdomain ftpserver 其实我在本文中少了一个比较重要的东西。好比一台机器是多个IP地址,每一个IP地址,就应该认定为是一台主机。主机名能够绑定到IP上。修改了 /etc/hosts以外,也能够在 /etc/sysconfig/network-scripts/ifcfg-ethX 中加入HOSTNAME的项。 By 北南南北 at 周三, 2006/07/05 - 13:53 | 回复 安装过程当中指定hostname 怎样修改才能达到像在图形化方式安装过程当中指定hostname的效果????如设hostname为A,,在登陆界面的右下方显示由默认的localhost.localdomain变为A,,登陆后的shell中,由@localhost ~变为@A ~,,在ping A时的效果与ping localhost的效果相同,,我试过各位的方法,,都没有成功,请指教。谢谢!! By lmickie at 周四, 2006/08/10 - 13:25 | 回复 /etc/hosts /etc/hosts 就不是个存主机名的地方~~ 大家认为呢? 在这个文件里面甚至能够什么也不写。 通常只有回环接口。 这只是一个查寻名字到地址的一个文件,彻底能够用dns来取代之。 机器的名字是什么,和这个文件我以为不要紧。 你们认为呢? By Anonymous at 周三, 2006/07/05 - 11:15 | 回复 我认为DNS有DNS的好处。hosts有hosts的好处; 若是只是有不多的机器,不妨直接修改hosts。这是极为简单的。 固然DNS是方便,这是确定的。我感受也不能忽略了hosts的用处。对吧? By 北南南北 at 周三, 2006/07/05 - 13:59 | 回复 讨论一下 "主机名就机器自己的名字,域名是用来解析到IP的。" 这句话说的很不确切,域名指的是什么,做用是什么? By Anonymous at 周二, 2006/07/04 - 11:13 | 回复 谢谢,请你们说说吧。 我正在思考中,网络基础我只能查看洋文的DOC。能理解的就写了,不理解的也写了一点。向你们请教了。。。 感受HOSTNAME和DOMAINNAME的没有说的太清楚。 不过有一点我是搞的清楚了。好比INTERNET网上的主机,也就是公网上的主机。有时域名就是主机名。 By 北南南北 at 周三, 2006/07/05 - 14:02 | 回复 有个错字 第一句: 每台主动都有一个IP地址 应该为 :每台主机都有一个IP地址 By Anonymous at 周日, 2006/07/02 - 22:46 | 回复 不通 但IP地址忘记不方便 应为: 但IP地址不方便记忆. 谢谢你的文章. By Anonymous at 周一, 2006/07/03 - 11:59 | 回复 已经修正,谢谢。 谢谢楼上的弟兄,极为真诚的。 北南 呈上 By 北南南北 at 周一, 2006/07/03 - 12:49 | 回复 早期internet网使用的是hosts 早期internet网使用的是hosts。因为internet的发展,主机数不断增长,形成hosts不断增长,解析困难,维护也不方便,因而出现了DNS来解决这一问题。 By Anonymous (没有被验证) at 周六, 2006/07/22 - 11:18 | 回复 我晕了, 看完前面的文章好像还明白点了,结果继续看下来彻底不明白了.