resolv.conf中的nameserver

本文探讨了在resolve.conf中配置nameserver的数量限制问题。当nameserver数量超过3个时,额外的配置将不再生效。文章还强调了配置的有效DNS服务器IP的重要性,避免因无效IP导致的解析效率降低。

一、问题背景:

自己搭建了DNS域名解析服务器和nacd后,在resolve.conf下nameserver上配置了,发现nameserver的数量是有限制的,超过一定数量后,后面添加的将没有什么作用。


二、实践:

1、部署好dns解析服务器后,在resolve.conf中配置了nameserver,可以正常解析了:

nslookup解析:

2、当resolve.conf中nameserver数量多于3时

nslookup解析:不能正常解析


3、测试几遍后,发现nameserver的个数最大为3,超过3时,其余的“没什么用”;

nslookup解析:正常解析


最后,由于通过resolve.conf进行dns解析时从最上面的nameserver开始的,nameserver中配置的dns服务器的IP,一定不能是无法ping通的,否则dns解析遇到nameserver中指定的IP无法连接,会抛出connection time out,这个过程花费的时间,比nameserver配置的dns不能做出解析的时间大概多出两倍,会影响dns解析的效率,同时,nameserver配置的dns无法解析的话nscd会缓存相应的信息,当再次有同样的解析时,可直接从nscd缓存中相应,而无法ping通的则不会缓存,即每次dns解析都会出现timeout,严重影响dns的高效解析。



你运行了以下命令: ```bash sudo echo "nameserver 8.8.4.4" >> /etc/resolv.conf ``` 但遇到了错误: ``` bash: /etc/resolv.conf: 权限不够 ``` --- ### ❗错误原因 这个错误是因为: > **`sudo` 只作用于 `echo` 命令本身,而不是整个重定向操作(`>>`)**。 因此,`echo` 是以 root 权限运行的,但 `>> /etc/resolv.conf` 的写入操作仍然是由当前用户执行的,而普通用户没有权限写入 `/etc/resolv.conf`。 --- ### ✅ 正确写法 #### ✅ 方法一:使用 `tee` 命令(推荐) ```bash echo "nameserver 8.8.4.4" | sudo tee -a /etc/resolv.conf > /dev/null ``` - `tee -a` 表示以追加模式写入文件 - `sudo` 保证你有权限写入 `/etc/resolv.conf` --- #### ✅ 方法二:使用 `sh -c` 包裹整个命令 ```bash sudo sh -c 'echo "nameserver 8.8.4.4" >> /etc/resolv.conf' ``` 这样整个命令(包括重定向)都会以 root 权限执行。 --- ### ⚠️ 注意事项 - `/etc/resolv.conf` 在某些系统中可能被 `systemd-resolved` 或 `NetworkManager` 动态管理,**重启后可能会被覆盖**。 - 如果你需要**永久修改 DNS**,建议修改网络管理服务的配置文件,例如: #### Ubuntu/Debian(使用 `systemd-resolved`) ```bash sudo nano /etc/systemd/resolved.conf ``` 添加: ```ini [Resolve] DNS=8.8.8.8 8.8.4.4 ``` 然后重启服务: ```bash sudo systemctl restart systemd-resolved ``` --- ### 🧪 示例操作 ```bash # 使用 tee 追加 DNS echo "nameserver 8.8.4.4" | sudo tee -a /etc/resolv.conf > /dev/null # 或者使用 sh -c sudo sh -c 'echo "nameserver 8.8.4.4" >> /etc/resolv.conf' # 验证是否写入成功 cat /etc/resolv.conf ``` --- ### 📌 总结 | 方法 | 命令 | 说明 | |------|------|------| | 使用 `tee` | `echo "xxx" | sudo tee -a /etc/resolv.conf` | 推荐方式,安全可靠 | | 使用 `sh -c` | `sudo sh -c 'echo "xxx" >> /etc/resolv.conf'` | 可执行完整命令 | | 修改 `systemd-resolved` | 修改 `/etc/systemd/resolved.conf` | 永久设置 DNS | ---
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值