linux ping localhost不通,127.0.0.1能通


一、解决方法

/etc/nsswitch.conf文件中的hosts默认是hosts: files dns

能ping通localhost

如果修改了hosts文件为hosts: dns files 以后

就ping不通localhost了.

修改成默认值以后,就可以ping localhost了

#hostname -i

127.0.0.1


二、相关知识

         对于大多数习惯用localhost的来说,实质上就是指向127.0.0.1这个本地IP地址。在操作系统中有个配置文件将localhost与127.0.0.1绑定在了一起。可以理解为本地主机的意思。

涉及到的文件:

1、/etc/hosts       是配置ip地址和其对应主机名的文件,这里可以记录本机的或其他主机的ip及其对应主机名。

文件格式  :

127.0.0.1 localhost.localdomain localhost

第一部份:网络IP地址;
 
第二部份:主机名或域名;
 
第三部份:主机名别名;
 
当然每行也可以是两部份,即主机IP地址和主机名;比如 192.168.102.136 aeoluspu.com。
 
这里稍微解释一下主机名(hostname)和域名(Domain)的区别:主机名通常在局域网内使用,通过hosts文件,主机名就被解 析到对应ip;域名通常在internet上使用,但如果本机不想使用internet上的域名解析,这时就可以更改hosts文件,加入自己的域名解析。

2、/etc/host.conf      指定主机名查找方法,通常指先查找文件/etc/hosts,找不到时再向DNS服务器请求。

文件格式  :

 order  bind,hosts
 multi  on
nospoof  on

“order  bind,hosts”指定主机名查询顺序,这里规定先使用DNS来解析域名,然后再查询“/etc/hosts”文件(也可以相反)。
 “multi  on”指定是否“/etc/hosts”文件中指定的主机可以有多个地址,拥有多个IP地址的主机一般称为多穴主机。
 “nospoof  on”指不允许对该服务器进行IP地址欺骗。IP欺骗是一种攻击系统安全的手段,通过把IP地址伪装成别的计算机,来取得其它计算机的信任。

3、/etc/nsswitch.conf     配置名字解析器

nsswitch.conf:服务搜索顺序
随着NIS和DNS的出现,查找用户信息和系统信息就不再是搜索本地文件这样简单的事情了。以前,查看/etc/passwd文件就可以获取用 户信息,查看/etc/hosts文件就可以找到系统地址信息,而现在使用多种途径来查找这类信息。文件/etc/nsswitch.conf(name service switch configuration,名字服务切换配置)规定通过哪些途径以及按照什么顺序通过这些途径来查找特定类型的信息。还可以指定若某个方法奏效抑或失效 系统将采取什么动作。
格式
文件nsswitch.conf中的每一行配置都指明了如何搜索信息,比如用户的口令。nsswitch.conf每行配置的格式如下:
info:         method [[action]] [method [[action]]...]
其中,info指定该行所描述的信息的类型,method为用来查找该信息的方法,action是对前面的method的返回状态的响应。action要放在方括号里面。
nsswitch.conf的工作原理
当需要提供nsswitch.conf文件所描述的信息的时候,系统将检查含有适当info字段 的配置行。它按照从左向右的顺序开始执行配置行中指定的方法。 在默认情况下,如果找到期望的信息,系统将停止搜索。如果没有指定action,那么当某个方法未能返回结果时,系统就会尝试下一个动作。有可能搜索结束 都没有找到想要的信息。
(1)信息
nsswitch.conf文件通常控制着用户(在passwd中)、口令(在shadow中)、主机IP地址和组信息的搜索。 下面的列表描述了nsswitch.conf文件控制搜索的大多数信息(前面所讨论的配置行格式中的info)的类型。
automount   自动挂载(/etc/auto.master和/etc/auto.misc)
bootparams  无盘引导选项和其他引导选项(参见bootparam的手册页)
ethers      MAC地址
group       用户所在组(/etc/group)
hosts       系统信息(/etc/hosts)
networks    网络信息(/etc/networks)
passwd      用户信息(/etc/passwd)
protocols   协议信息(/etc/protocols)
publickey   用于安全模式下运行的NFS
rpc         RPC名称和编号(/etc/rpc)
services    服务信息(/etc/services)
shadow      映射口令信息(/etc/shadow)

 
(2)方法
下面列出了nsswitch.conf配置文件控制搜索的信息类型(前面所讨论的配置行格式中的method)。对于每一种信息类型,都可以指定下面的一种或者多种方法:
files       搜索本地文件,如/etc/passwd和/etc/hosts
nis         搜索NIS数据库,nis还有一个别名,即yp
dns         查询DNS(只查询主机)
compat      passwd、group和shadow文件中的±语法(参见本节后面的相关内容)

 
(3)搜索顺序
两个或者更多方法所提供的信息可能会重叠。举例来说,files和nis可能都提供同一个用户的口令信息。如果出现信息重叠现象,就需要考虑将哪一种方法作为权威方法(优先考虑),并将该方法放在方法列表中靠左的位置上。
默 认nsswitch.conf文件列出的方法并没有动作项,并假设没有信息重叠(正常情况)。在这种情况下,搜索顺序无关紧要:当一种方法失败之后,系统 就会尝试下一种方法,只是时间上受到一点损失。如果在方法之间设置了动作,或者重叠的项的内容不同,那么搜索顺序就变得重要起来。
下面几行取自 nsswitch.conf文件,第一行让系统在/etc/passwd文件中搜索口令信息,如果失败的话,就使用NIS来查找信息。如果正在查找的用户 同时出现在这两个地方,就会使用本地文件中的信息,因此它就是权威信息。第二行使用NIS搜索;如果失败的话,就搜索/etc/hosts文件;如果再次 失败的话,核对DNS以找出主机信息。
(4)动作项
在每个方法后面都可以选择跟一个动作项,用来指定如果由于某种原因该方法成功抑或失败需要做些什么。动作项的格式如下:
[[!]STATUS=action]

其中,开头和末尾的方括号属于格式的一部分,并不是用来指出括号中的内容是可选的。STATUS(按照约定使用大写字母,但本身并不区分大小 写)是待测试的状态,action是如果STATUS匹配前面的方法所返回的状态将要执行的动作。开头的感叹号(!)是可选的,其作用是将状态取反。
STATUS
 STATUS的取值如下。
l    NOTFOUND——方法已经执行,但是并没有找到待搜索的值。默认的动作是continue。
l    SUCCESS——方法已经执行,并且已经找到待搜索的值,没有返回错误。默认动作是return。
l    UNAVAIL——方法失败,原因是永久不可用。举例来说,所需的文件不可访问或者所需的服务器可能停机。默认的动作是continue。
l    TRYAGAIN——方法失败,原因是临时不可用。举例来说,某个文件被锁定,或者某台服务器超载。默认动作是continue。
 
action
 action的取值如下:
l    return——返回到调用例程,带有返回值,或者不带返回值。
l    continue——继续执行下一个方法。任何返回值都会被下一个方法找到的值覆盖。

 

下面是可以被包含的关键字:

aliases 邮件别名;

passwd 系统用户;

group 用户组;

shadow 隐蔽口令;

hosts 主机名和I P 地址;

networks 网络名和号;

protocols 网络协议;

services 端口号和服务名称;

ethers 以太网号;

rpc 远程进程调用的名称和号;

netgroup 网内组;


localhost与127.0.0.1的区别是什么?

相信有人会说是本地ip,曾有人说,用127.0.0.1比localhost好,可以减少一次解析。

看来这个问题还有人不清楚,其实这两者是有区别的。

localhost也叫local ,正确的解释是:本地服务器

127.0.0.1在windows等系统的正确解释是:本机地址(本机服务器)

他们的解析通过本机的host文件,windows自动将localhost解析为127.0.0.1

 

localhot(local)是不经网卡传输!这点很重要,它不受网络防火墙和网卡相关的的限制。

127.0.0.1是通过网卡传输,依赖网卡,并受到网络防火墙和网卡相关的限制。

一般设置程序时本地服务用localhost是最好的,localhost不会解析成ip,也不会占用网卡、网络资源。

有时候用localhost可以,但用127.0.0.1就不可以的情况就是在于此。猜想localhost访问时,系统带的本机当前用户的权限去访问,而用ip的时候,等于本机是通过网络再去访问本机,可能涉及到网络用户的权限。

  • 2
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值