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 }}
还没有评论,来说两句吧...