Linux系统修改DNS的A记录详解
DNS与A记录基础概念
1 什么是DNS?
DNS(Domain Name System)是互联网的核心服务之一,负责将人类可读的域名(如www.example.com)转换为计算机可识别的IP地址(如192.0.2.1),它通过分布式数据库实现全球域名解析。
2 A记录的作用
A记录(Address Record)是DNS记录的一种类型,用于将域名直接映射到IPv4地址。
| 主机记录 | 域名 | 对应IP |
||||
| @ | example.com | 192.0.2.1 |
| www | example.com | 192.0.2.2 |
修改DNS A记录的场景
- 本地客户端DNS配置:修改
/etc/resolv.conf
文件,指定新的DNS服务器 - DNS服务器配置:修改BIND/dnsmasq等DNS服务的区域文件
- 云平台DNS管理:通过阿里云/AWS等控制台修改域名解析
本地DNS客户端配置(适用所有Linux发行版)
1 修改/etc/resolv.conf文件
# 原始配置示例 nameserver 8.8.8.8 nameserver 8.8.4.4 # 修改后配置示例 nameserver 114.114.114.114 nameserver 1.1.1.1
2 持久化配置方法
发行版 | 配置文件路径 | 生效方式 |
---|---|---|
Ubuntu/Debian | /etc/systemd/resolved.conf | systemdresolve flush |
CentOS/RHEL | /etc/sysconfig/networkscripts/ifcfgeth0 | 重启网络服务 |
通用 | /etc/resolv.conf | 直接生效(非持久化) |
DNS服务器端配置(以BIND为例)
1 定位区域文件
# 查找主配置区文件路径 grep r "zone" /etc/bind/ /var/named/
2 修改A记录示例
$TTL 86400 @ IN SOA ns1.example.com. admin.example.com. ( 2023100101 ; Serial 3600 ; Refresh 1800 ; Retry 604800 ; Expire 86400 ) ; Minimum TTL @ IN NS ns1.example.com. @ IN NS ns2.example.com. @ IN A 192.0.2.1 ; 修改此处IP地址 www IN A 192.0.2.2
3 重新加载配置
# 检查配置文件语法 namedcheckconf /etc/named.conf namedcheckzone example.com /var/named/example.com.zone # 重新加载服务 systemctl restart named
验证DNS配置有效性
1 使用dig命令
# 查询A记录 dig +nocmd www.example.com @1.1.1.1 # 查询NS记录 dig +nocmd example.com NS
2 使用nslookup工具
# 交互模式测试 nslookup example.com 8.8.8.8 # 批量测试多个记录 for record in @ www mail; do nslookup $record.example.com; done
常见问题与解决方案
1 配置修改不生效
可能原因 | 解决方案 |
---|---|
DNS缓存未刷新 | systemctl restart NetworkManager 或 systemdresolve flushcaches |
防火墙拦截DNS请求 | firewallcmd permanent addservice=dns |
SELinux策略限制 | setsebool P allows_domains 1 |
2 特殊场景处理
- 虚拟机内部DNS配置:需同时配置宿主机和虚拟网络的DNS服务器
- 容器环境DNS配置:在Docker中通过
dns
参数指定,Kubernetes中配置CoreDNS - IPv6环境配置:需同时维护AAAA记录,使用
ip6addr
指令获取地址
Q&A问答专栏
Q1:如何临时覆盖系统DNS配置?
A:可以通过以下两种方式实现:
- 直接编辑/etc/resolv.conf:修改后立即生效,但重启后可能被覆盖
- 使用
dig
指定服务器:dig www.example.com @114.114.114.114
Q2:修改DNS后出现”Name or service not known”错误怎么办?
A:按以下步骤排查:
- 检查网络连接:
ping 8.8.8.8
测试基础连通性 - 验证配置文件:检查
/etc/resolv.conf
是否包含有效DNS服务器 - 查看防火墙状态:
firewallcmd listall
确认UDP 53端口开放 - 测试替代DNS:尝试使用公共DNS(如1.1.1.1)进行
来源互联网整合,作者:小编,如若转载,请注明出处:https://www.aiboce.com/ask/202249.html