linux下hosts、hosts.deny、hosts.allow、host.conf、hostname文件之间的关系

一直对hostconf、hosts、hostname、hosts.deny、hosts.allow文件不太了解,今天抽空梳理一些这几个文件的关系。

/etc/host.conf 配置ip地址解析器的顺序
/etc/hostname 配置主机名(永久生效)
/etc/hosts 配置ip地址映射
/etc/hosts.allow 配置ip地址白名单
/etc/hosts.deny 配置ip地址黑名单

  • hostname 

这个应该是最容易理解的,配置该文件可以永久设置主机名,可以看到用hostname username的命令设置的主机名只是临时生效,hostname文件的内容并没有发生改变,下一次重启系统设置将会失效,要想永久设置主机名可以更改hostname文件。

  • hosts

hosts文件是linux下的一个ip地址和主机名映射的配置文件,这个可以帮助我们很好理解为什么我们ping 127.0.0.1和ping localhost都能实现相同的效果,原因是该配置文件将localhost映射到127.0.0.1了。

配置该文件的方法是往该文件追加者ip地址+空格+主机名的格式的内容,以百度的ip地址为例,将其映射到a,b,c,d,e主机名中,每个主机名要用空格隔开,然后ping主机名 a b可以发现ping的地址就是百度的地址。

还有一种更直观的写法就是每一个映射对应一行,可读性比较好。

不难发现其实这就是一个将ip地址别名的文件,记不住ip地址就可以给它命个名。

  • host.conf

或许你已经发现了一个问题,虽然上面的文件中没有写入baidu.com的映射地址,但是我们在终端ping baidu.com的时候依然能ping通百度的ip地址,甚至在设置了百度ip所映射的主机名后也能ping通。

 这就不得不说一个优先级的概念了,默认情况下当我们执行ping命令或者ssh命令等需要用到ip地址的情况下,优先去hosts文件中查找对应的信息,如果没有那系统就会使用dns解析的信息,所以上面的执行结果是hosts没有找到映射信息,但是baidu.com的ip地址被dns解析到了,我们一样可以ping通百度的ip。

那host.conf文件有什么用呢?

host.conf就是用来配置地址解析顺序的,是先用dns解析器解析还是查找hosts文件中的映射关系取决于host.conf文件的配置,默认情况下是先查找hosts文件中的映射关系,一般我们很少去配置这个文件,因为dns解析速度已经够快了。

我们可以将host.conf文件修改成这样,添加了一行order bind,hosts用来指定解析的顺序,指定先采用dns解析器,解析不到才去hosts文件中查找映射关系,默认情况下该文件只有一行multi on,“multi on”指定是否“/etc/hosts”文件中指定的主机可以有多个地址,拥有多个IP地址的主机一般称为多穴主机。 

  • hosts.deny和hosts.allow 

hosts.deny和hosts.allow是成对出现的,不解释,黑白名单大家都知道是用来干吗的,这里要说的是这两个文件的优先级,当有一个主机想要访问我们的系统的时候,会经过黑白名单的确认,白名单的优先级高于黑名单,下面是我画的一个图,从图中可以看出visitor想要访问system第一道官卡是hosts.allo这个文件,如果visitor的ip出现在了hosts.allow文件中,就直接通行,否则才会到hosts.deny黑名单官卡,如果在黑名单里就拒绝,不在的话就放行,这就很好的解释了不在黑名单不在白名单的ip没有限制,在白名单的ip也没有限制,但是在黑名单就会被限制。

 一般来说比较经常配置这两个文件用来禁止或放行ssh和telnet登陆。  

比如想要禁止192.168.10.10ip远程到本机,可以在hosts.deny文件后面追加一行sshd:192.168.10.10,要禁止192.168.10网段的所有ip远程登陆本机可以在hosts.deny文件后面追加一行sshd:192.168.10.,表示禁止192.168.10.0到192.168.10.255之间的ip远程登陆本机,如果sshd:192.168.10.10同时出现在黑白名单中,那么以白名单为准,即放行该主机。比如我们要禁止192.168.10网段除192.168.10.10以外的所有主机ssh到本机,可以在hosts.deny中追加sshd:192.168.10.,然后在hosts.allow中追加sshd:192.168.10.10

允许内容

书写格式(改成自自需要的IP或IP段)

ssh允许单个ip

sshd:192.168.10.10

ssh允许ip段

sshd:192.168.10.

telnet允许单个ip

in.telnetd:192.168.10.10

telnet允许ip段

in.telnetd:192.168.10. 

发布了92 篇原创文章 · 获赞 15 · 访问量 1万+

猜你喜欢

转载自blog.csdn.net/zZzZzZ__/article/details/103094270
今日推荐