CentOS 配置 DNS

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

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

DNS1=x.x.x.1
DNS2=x.x.x.2
DNS3=x.x.x.3
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 配置文件準備好:

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

playbook 腳本 dns.yaml:

- name: update dns
  hosts: 服務器
  vars:
    dns_file: /etc/resolv.conf
  tasks:
   - name: disable dns update
     blockinfile:
       path: /etc/NetworkManager/NetworkManager.conf
       insertafter: "\\[main\\]"
       block: |
         dns=none
   - name: restart NetworkManager
     service:
       name: NetworkManager
       state: restarted
   - name: copy resolv.conf
     copy: src=resolv.conf dest={{ dns_file }}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章