Linux修改本机/etc/hosts的hostName后经常不生效


1、Linux修改本机别名/etc/hosts的hostName后经常不生效解决

Linux修改本机别名/etc/hosts的hostName后经常不生效,

比如我们/etc/hosts的内容如下:

#192.68.1.10 message.xxx.com
192.68.1.11 message.xxx.com

但是ping message.xxx.com还是指向192.68.1.10。


一般2种解决方案:

1). 重启,这是最直接最可靠稳定的一种方法,如果有些时候不方便重启,则可以使用第二种方法。

2). 修改/etc/sysconfig/network文件,将HOSTNAME修改成对应的别名,如下:

NETWORKING= yes
HOSTNAME=host1
修改后重启网络服务
service network restart (本质是/etc/init.d/network)

3). 如果重启服务器后,还是不起作用,应该是本机的dns缓存引起的。

查看nscd是否启用: ps -ef|grep nscd
直接关闭Linux nscd 缓存服务:
/etc/init.d/nscd stop

2、Linux的DNS

     linux本身是没有dns缓存的,想使用dns缓存的话需要自己安装一个服务程序NSCD(name service cache daemon).

    nscd缓存三种服务passwd group hosts,所以它会记录三个库,分别对应源/etc/passwd, /etc/hosts 和 /etc/resolv.conf每个库保存两份缓存,一份是找到记录的,一份是没有找到记录的。每一种缓存都保存有生存时间(TTL).

     安装:

  yum install nscd

    修改配置文件/etc/nscd.conf,开启dns缓存,修改这一行

  enable-cache hosts yes。

如果启用了nscd 服务,才有dns 缓存,否则是没有dns缓存的。

     开启 、停止、 重启服务

     service nscd start | stop | restart


nscd的配置:

通过编辑/etc/nscd.conf文件,在其中增加如下一行可以开启本地DNS cache:

enable-cache hosts yes

阿里云主机上的配置如下:

[root@iZ2571ykq ~]# cat /etc/nscd.conf 
#logfile        /var/log/nscd.log
threads         6
max-threads     128
server-user     nscd
debug-level     5
paranoia        no
enable-cache    passwd      no
enable-cache    group       no
enable-cache    hosts       yes
positive-time-to-live   hosts   5
negative-time-to-live   hosts       20
suggested-size  hosts       211
check-files     hosts       yes
persistent      hosts       yes
shared          hosts       yes
max-db-size     hosts       33554432

相关参数的解释如下:

logfile debug-file-name:指定调试信息写入的文件名。

debug-level value:设置希望的调试级别。

threads number:这是启动的等待请求的线程数。最少将创建5个线程。

server-user user:如果设置了该选项,nscd将作为该用户运行,而不是作为root。如果每个用户都使用一个单独的缓存(-S参数),将忽略该选项

enable-cache service <yes|no>:启用或禁用制定的 服务 缓存。

positive-time-to-live service value:设置 service 在指定缓存中正的项目(成功的请求)的TTL(存活时间)。 Value 以秒为单位。较大的值将增加缓存命中率从而减低平均响应时间,但是将增加缓存的一致性问题。

negative-time-to-live service value:设置 service 在指定缓存中负的项目(失败的请求)的TTL(存活时间)。 Value 以秒为单位。如果存在由不在系统数据库中的uid(用户ID)(例如在以root身份解包linux 内核源代码时)所拥有的文件将明显改善性能;应该维持较小的值以降低缓存一致性问题。

suggested-size service value:这是内部散列表的大小, value 应该保持一个素数以达到优化效果。

check-files service <yes|no>:启用或禁用检查属于指定 服务 的文件的改变。这些文件是 /etc/passwd, /etc/group, 以及/etc/hosts。

nscd的查看和清除

nscd缓存DB文件在/var/db/nscd下。

nscd -g  查看统计信息


清除 nscd缓存:

nscd -i passwd
nscd -i group
nscd -i hosts

当然也先删除缓存库或者停掉nscd服务:

rm -f /var/db/nscd/hosts

service nscd restart

或者是直接停止nscd 服务 service nscd stop。

 


### 如何在Linux配置主机名 对于希望更改其Linux系统主机名的用户来说,有多种方式可以实现这一目标。一种临时的方法是在命令行界面使用`hostnamectl set-hostname new_hostname`命令来改变当前会话中的主机名称[^1]。 为了使新的主机名永久生效,在某些Linux发行版上还需要更新特定文件。例如,在Ubuntu和其他基于Debian的操作系统里,可以通过编辑`/etc/hostname`文件并替换其中的内容为期望的新主机名达到目的。不过需要注意的是,并不是所有的Linux版本都采用相同的机制处理这个问题——一些较新版本可能不再需要手动修改此文件就能让变更持久化[^2]。 另外一个重要方面涉及到 `/etc/hosts` 文件的调整。该文件主要用于定义本机上的静态IP到主机名映射关系,这对于内部网络环境下的计算机识别非常重要。当一台设备尝试连接另一台位于同一私有网络内的服务器时,它可能会先查阅自身的`/etc/hosts`文件寻找对应的记录而不是立即求助外部DNS服务[^4]。 #### 修改/etc/hosts文件的具体操作如下: 打开终端窗口后,利用文本编辑器(比如vim)进入`/etc/hosts`: ```bash sudo vim /etc/hosts ``` 接着可以在文件末尾添加一行或多行条目,格式通常遵循这样的模式:“<ip_address> <hostname> [<alias>]”。这里给出的例子展示了如何将三个不同节点加入到同一个子网内以便它们能够互相通过各自的主机名进行通信[^5]: ```plaintext 192.168.88.100 node1.example.com node1 192.168.88.101 node2.example.com node2 192.168.88.102 node3.example.com node3 ``` 成上述改动之后保存退出即可。此时如果一切正常的话,这些机器之间应该已经能够在不借助任何额外配置的情况下仅凭对方的主机名建立联系了[^3]。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

hguisu

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值