CentOS 配置 DNS

女爷i 2023-02-17 05:12 12阅读 0赞

参考:How to set DNS in CentOS/RHEL 7 & prevent NetworkManager from overwriting /etc/resolv.conf?

配置 DNS 时可以直接在网卡上进行配置,例如在 /etc/sysconfig/network-scripts/eth0 中添加:

  1. DNS1=x.x.x.1
  2. DNS2=x.x.x.2
  3. DNS3=x.x.x.3
  4. DOMAIN='xxx.com'

网卡有了配置后,NetworkManager 会自动将 DNS 信息写入到 /etc/resolv.conf 配置文件中。

如果你手动修改 /etc/resolv.conf,你会发现服务器重启后,里面的内容会自动复原,复原的第一行注释为 # Generated by NetworkManager,这是因为 NetworkManager 会自动更新这里的配置。

手动配置

想要能够手动更新 /etc/resolv.conf,需要关闭 NetworkManager 的自动更新功能。

关闭方法,打开 /etc/NetworkManager/NetworkManager.conf[main] 下面添加dns=none,然后 sudo systemctl restart NetworkManager.service 重启服务。重启以后就能手工修改了。

自动化脚本

为了方便配置所有服务器,下面是一个 ansible 脚本:

resolve.conf 配置文件准备好:

  1. search xxx.com
  2. nameserver x.x.x.1
  3. nameserver x.x.x.2

playbook 脚本 dns.yaml:

  1. - name: update dns
  2. hosts: 服务器
  3. vars:
  4. dns_file: /etc/resolv.conf
  5. tasks:
  6. - name: disable dns update
  7. blockinfile:
  8. path: /etc/NetworkManager/NetworkManager.conf
  9. insertafter: "\\[main\\]"
  10. block: | dns=none
  11. - name: restart NetworkManager
  12. service:
  13. name: NetworkManager
  14. state: restarted
  15. - name: copy resolv.conf
  16. copy: src=resolv.conf dest={ { dns_file }}

发表评论

表情:
评论列表 (有 0 条评论,12人围观)

还没有评论,来说两句吧...

相关阅读