Linux虚拟机中如何配置DNS服务
导读:Linux虚拟机中配置 DNS 服务 一、场景与目标 为虚拟机配置客户端解析:让系统使用指定的 DNS 服务器进行域名解析(如内网 DNS 或公共 DNS)。 在虚拟机中自建 DNS 服务器:安装 BIND9,配置正向/反向解析,并验证可...
Linux虚拟机中配置 DNS 服务
一、场景与目标
- 为虚拟机配置客户端解析:让系统使用指定的 DNS 服务器进行域名解析(如内网 DNS 或公共 DNS)。
- 在虚拟机中自建 DNS 服务器:安装 BIND9,配置正向/反向解析,并验证可用性。
- 快速本地域名映射:通过 /etc/hosts 或 dnsmasq 实现轻量级解析。
二、客户端配置 DNS(让虚拟机使用指定 DNS)
- 临时生效(重启后可能丢失)
- 编辑 /etc/resolv.conf,添加:
- nameserver 8.8.8.8
- nameserver 1.1.1.1
- 编辑 /etc/resolv.conf,添加:
- 持久化方式
- Debian/Ubuntu(netplan,/etc/netplan/*.yaml):
- 在相应网卡下加入:
- nameservers: { addresses: [8.8.8.8, 1.1.1.1] }
- 应用:sudo netplan apply
- 在相应网卡下加入:
- RHEL/CentOS 7(ifcfg 文件,如 /etc/sysconfig/network-scripts/ifcfg-ens33):
- 添加:DNS1=8.8.8.8;DNS2=1.1.1.1
- 重启网络:sudo systemctl restart NetworkManager 或 sudo systemctl restart network
- 使用 systemd-resolved(若启用):
- 查看状态:systemctl status systemd-resolved
- 配置存于:/etc/systemd/resolved.conf([Resolve] DNS=…),然后:sudo systemctl restart systemd-resolved & & sudo ln -sf /run/systemd/resolve/resolv.conf /etc/resolv.conf
- Debian/Ubuntu(netplan,/etc/netplan/*.yaml):
- 验证
- dig example.com +short、nslookup example.com、ping -c 4 example.com。
三、自建 DNS 服务器(BIND9,含正反向解析)
- 安装
- Ubuntu/Debian:sudo apt update & & sudo apt install bind9 -y
- CentOS/RHEL:sudo yum install bind -y(或 dnf install bind)
- 核心配置
- 主配置(Ubuntu:/etc/bind/named.conf.local;CentOS:/etc/named.conf)添加区域:
- zone “example.local” { type master; file “/etc/bind/db.example.local”; } ;
- zone “1.168.192.in-addr.arpa” { type master; file “/etc/bind/db.192.168.1”; } ;
- 正向区域(/etc/bind/db.example.local):
- $TTL 604800
- @ IN SOA ns1.example.local. admin.example.local. ( 2024101001 3600 1800 1209600 86400 )
- @ IN NS ns1.example.local.
- ns1 IN A 192.168.1.10
- www IN A 192.168.1.100
- 反向区域(/etc/bind/db.192.168.1):
- $TTL 604800
- @ IN SOA ns1.example.local. admin.example.local. ( 2024101001 3600 1800 1209600 86400 )
- @ IN NS ns1.example.local.
- 10 IN PTR ns1.example.local.
- 100 IN PTR www.example.local.
- 主配置(Ubuntu:/etc/bind/named.conf.local;CentOS:/etc/named.conf)添加区域:
- 权限与目录(CentOS 常见)
- 区域文件属主/属组:sudo chown root:named /etc/bind/db.*;权限 640
- 启动与开机自启
- Ubuntu/Debian:sudo systemctl start bind9 & & sudo systemctl enable bind9
- CentOS/RHEL:sudo systemctl start named & & sudo systemctl enable named
- 防火墙(如启用 firewalld)
- sudo firewall-cmd --add-service=dns --permanent & & sudo firewall-cmd --reload
- 验证
- dig @127.0.0.1 example.local +short、dig -x 192.168.1.100 +short、nslookup www.example.local。
四、轻量替代方案与本地映射
- /etc/hosts 本地映射(最快)
- 编辑 /etc/hosts:192.168.1.100 www.example.local
- 立即生效,适合测试与单机场景。
- dnsmasq(小型 DNS 转发/本地域)
- 安装:sudo apt install dnsmasq -y 或 sudo yum install dnsmasq -y
- 配置(/etc/dnsmasq.conf):
- address=/example.local/192.168.1.100
- server=8.8.8.8(上游 DNS)
- 启动:sudo systemctl start dnsmasq & & sudo systemctl enable dnsmasq
- 注意避免与 systemd-resolved 端口冲突(必要时停用 resolved 或调整 dnsmasq 监听)。
五、常见问题与排错
- 配置文件语法检查
- BIND:named-checkconf;区域文件:named-checkzone example.local /path/db.example.local
- 服务管理命令
- BIND:sudo systemctl restart named(或 bind9);dnsmasq:sudo systemctl restart dnsmasq;resolved:sudo systemctl restart systemd-resolved
- 日志与实时查看
- BIND:sudo tail -f /var/log/syslog(或 journalctl -u named -f)
- 解析失败快速定位
- dig +trace example.com、nslookup example.com、cat /etc/resolv.conf、检查防火墙/网络连通性
- 虚拟机网络要点
- 确保虚拟机与 DNS 服务器网络可达(同一网段/路由正确),NAT/桥接模式选择合理,必要时固定 IP 与 DNS。
声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!
若转载请注明出处: Linux虚拟机中如何配置DNS服务
本文地址: https://pptw.com/jishu/761629.html
