/etc/hostname

它表示的是在LAN(局域网)内的唯一主机名.

➜  ~  cat /etc/hostname
yang
➜  ~

作用: 1. 在局域网内,本机或者其他在同一局域网内的计算机,可以直接通过hostname.local可找到主机.比如:

➜  ~  ping yang.local
PING yang.local (10.0.0.105) 56(84) bytes of data.
64 bytes from 10.0.0.105: icmp_seq=1 ttl=64 time=0.010 ms
64 bytes from 10.0.0.105: icmp_seq=2 ttl=64 time=0.018 ms
^C
--- yang.local ping statistics ---
2 packets transmitted, 2 received, 0% packet loss, time 1001ms
rtt min/avg/max/mdev = 0.010/0.014/0.018/0.004 ms
➜  ~


➜  ~  ping yang
PING yang (127.0.1.1) 56(84) bytes of data.
64 bytes from yang (127.0.1.1): icmp_seq=1 ttl=64 time=0.017 ms
64 bytes from yang (127.0.1.1): icmp_seq=2 ttl=64 time=0.019 ms
^C
--- yang ping statistics ---
2 packets transmitted, 2 received, 0% packet loss, time 999ms
rtt min/avg/max/mdev = 0.017/0.018/0.019/0.001 ms
➜  ~

其他PC,可以通过ping yang.local来定位你的主机(同一局域网内),但ping yang则只能本机使用.

  1. 有些linux程序,它要求权限是认证过的hostname,如果随意改为了其他hostname,有些程序可能使用不了,而报类似以下错误:

    unable to resolve host (none)
    
    
    No protocol specified
    
  2. 有些应用程序,会以hostname作为提示语.比如bash

/ect/hosts

这个是域名查找系统(DNS),只不过,它只是本地查找的,在本地建立一个ip <-> name的对应关系。

“DNS劫持”原理,就相当于修改这个文件,只是网络上的DNS范围比较大,而本地的这个/etc/hosts只是对本机生效,真正的DNS如果进行修改的话,就是对所有DNS服务器设置为该服务器的所有PC生效。

计算机的寻址:应用 -> 应用缓存 -> hosts -> DNS -> 目的PC

而修改hostname,只是对局域网寻址生效,而且hostname在一局域网里,应该是唯一的。 hosts,只是类似一个本地的DNS映射数据库.