网站首页 > 资源文章 正文
anolis7下使用CoreDNS搭建DNS
CoreDNS 是一个用 Go 语言编写的 DNS 服务器/转发器。
背景:
电脑A,安装CoreDNS,ip是192.168.2.100
电脑B,配置dns的电脑,ip是192.168.2.104。
需求:配置该dns的电脑B,如果在浏览器输入hljcors.com,则指向ip地址192.168.2.200。
一. 下载CoreDNS软件
通过coredns的github,下载coredns。coredns的release版本地址:
https://github.com/coredns/coredns/releases/tag/v1.12.1
但是github下载较慢,可以在这里下载:版本1.12.1,有windows和linux的64位版本
https://caiyun.139.com/m/i?2mknq2domBdd3 提取码:rtb9
二. 解压
下载后的coredns软件放在目录:
/home/zhao/programs/coredns
[zhao@anolis7 ~]$ mkdir -p /home/zhao/programs/coredns
[zhao@anolis7 coredns]$ pwd
/home/zhao/programs/coredns
[zhao@anolis7 coredns]$ ls
coredns_1.12.1_linux_amd64.tgz
[zhao@anolis7 coredns]$
解压文件后,删除压缩文件:
tar -zxvf coredns_1.12.1_linux_amd64.tgz
rm coredns_1.12.1_linux_amd64.tgz
将压缩包解压之后,就得到了一个可执行的程序“coredns”
执行该软件,参数-help,会给出相关参数帮助信息。
[zhao@anolis7 coredns]$ ./coredns -help
Usage of ./coredns:
-conf string
Corefile to load (default "Corefile")
-dns.port string
Default port (default "53")
-p string
Default port (default "53")
-pidfile string
Path to write pid file
-plugins
List installed plugins
-quiet
Quiet mode (no initialization output)
-version
Show version
[zhao@anolis7 coredns]$
注意:对于预编译的版本(也就是本版本),会内置全部官方认证的插件。
三. 创建编辑配置文件
在coredns目录下,新建一个文件 Corefile,这个配置文件会告诉coredns如何进行dns解析。
[zhao@anolis7 coredns]$ touch Corefile
[zhao@anolis7 coredns]$ nano Corefile
为实现简单的dns功能,也就是如果配置该dns的电脑,如果在浏览器输入hljcors.com,则指向ip地址192.168.2.200。配置文件内容如下:
# 监听所有接口的 53 端口,处理 DNS 请求
.:53 {
# 记录错误信息
errors
# 记录 DNS 查询日志
log
# 启用缓存功能,缓存时间设置为 30 秒
cache 30
# 允许动态重新加载配置文件
reload
# 自定义主机记录
hosts {
# 将 hljcors.com 指向 192.168.2.100
# 192.168.3.200 hljcors.com
192.168.2.100 hljcors.com
# 如果查询的域名不是 hljcors.com,则忽略请求
fallthrough
}
}
说明:dns服务器跑在53端口下。
四. 启动测试
在coredns所在目录下通过命令:
./coredns -conf ./Corefile
五. 查找占用端口 53 的进程
使用 lsof 或 netstat 命令来查找占用端口 53 的进程
[zhao@anolis7 coredns]$ sudo lsof -i :53
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
dnsmasq 1469 nobody 5u IPv4 28516 0t0 UDP t420vmanolis7:domain
dnsmasq 1469 nobody 6u IPv4 28517 0t0 TCP t420vmanolis7:domain (LISTEN)
[zhao@anolis7 coredns]$
##输出说明:
COMMAND:占用端口的进程名称(如 dnsmasq)。
PID:进程的 ID(如 1469)。
USER:运行该进程的用户(如 nobody)。
NAME:监听的端口信息(如 *:domain,其中 domain 是端口 53 的服务名称)。
[zhao@anolis7 coredns]$ sudo netstat -tulnp | grep :53
tcp 0 0 192.168.122.1:53 0.0.0.0:* LISTEN 1469/dnsmasq
udp 0 0 0.0.0.0:5353 0.0.0.0:* 761/avahi-daemon: r
udp 0 0 192.168.122.1:53 0.0.0.0:* 1469/dnsmasq
[zhao@anolis7 coredns]$
结束1469的进程:
sudo kill -9 1469
六. 防火墙开启53端口
dns需要tcp和udp协议的53端口,均设置防火墙开放。
sudo firewall-cmd --permanent --add-port=53/tcp
sudo firewall-cmd --permanent --add-port=53/udp
修改防火墙规则后,需要重新加载 firewalld 以使更改生效:
sudo firewall-cmd --reload
##运行以下命令检查端口 53 是否已成功开放
sudo firewall-cmd --list-all
七. 初步验证
在另一台机器B上,将 DNS 设置为你的 CoreDNS 电脑的 IP 地址,然后尝试解析域名和ping域名
#在配置dns的电脑B上,运行的结果
C:\Users\Administrator>nslookup hljcors.com 192.168.2.100
服务器: hljcors.com
Address: 192.168.2.100
名称: hljcors.com
Address: 192.168.2.100
C:\Users\Administrator>
C:\Users\Administrator>ping hljcors.com
正在 Ping hljcors.com [192.168.2.100] 具有 32 字节的数据:
来自 192.168.2.100 的回复: 字节=32 时间=1ms TTL=64
来自 192.168.2.100 的回复: 字节=32 时间<1ms TTL=64
来自 192.168.2.100 的回复: 字节=32 时间=1ms TTL=64
来自 192.168.2.100 的回复: 字节=32 时间<1ms TTL=64
192.168.2.100 的 Ping 统计信息:
数据包: 已发送 = 4,已接收 = 4,丢失 = 0 (0% 丢失),
往返行程的估计时间(以毫秒为单位):
最短 = 0ms,最长 = 1ms,平均 = 0ms
C:\Users\Administrator>
八. 创建系统服务
为了实现开机自启动coredns,且便于管理,采用配置为系统服务的方式。
1. 创建 systemd 服务文件
sudo nano /etc/systemd/system/coredns.service
因coredns程序所在的目录为
/home/zhao/programs/coredns
所以coredns.service内容如下:
[Unit]
# 服务的描述信息,用于标识服务用途
Description=CoreDNS DNS Server
# 定义服务的启动顺序,确保在网络就绪后启动(DNS服务依赖网络)
After=network.target
[Service]
# 指定运行服务的用户和组(此处为zhao,生产环境建议改用非特权用户如nobody)
User=zhao
Group=zhao
# 明确设置工作目录(避免路径问题)
WorkingDirectory=/home/zhao/programs/coredns/
# 核心配置:启动命令
# - /home/zhao/programs/coredns/coredns:CoreDNS可执行文件路径
# - -conf /home/zhao/programs/coredns/Corefile:指定配置文件路径
ExecStart=/home/zhao/programs/coredns/coredns -conf /home/zhao/programs/coredns/Corefile
# 服务崩溃时自动重启(常见于进程意外退出)
Restart=on-failure
# 重启前等待时间(避免频繁重启)
RestartSec=5s
# 设置文件描述符限制(DNS服务可能需要处理大量连接)
LimitNOFILE=1048576
# 安全配置:允许绑定低端口(即使非root用户运行也需要此权限)
# CAP_NET_BIND_SERVICE:允许绑定<1024的端口(如DNS默认53端口)
CapabilityBoundingSet=CAP_NET_BIND_SERVICE
AmbientCapabilities=CAP_NET_BIND_SERVICE
# 放宽安全限制(可选)
NoNewPrivileges=false
RestrictAddressFamilies=AF_INET AF_INET6
[Install]
# 定义服务所属的target,multi-user.target表示多用户命令行模式
# 即系统正常启动时会自动启动此服务
WantedBy=multi-user.target
注意:这里的User和Group采用当前用户,而没有用root用户,因采用root会报错。
2. 设置权限并重载 systemd
sudo chmod 644 /etc/systemd/system/coredns.service
sudo systemctl daemon-reload
权限说明:
- 权限的数字表示法,对应以下权限:
- 6(所有者 owner):rw-(读 + 写)
- 4(所属组 group):r--(仅读)
- 4(其他用户 others):r--(仅读)
3. 启动 CoreDNS 并设置开机自启
sudo systemctl start coredns # 启动
sudo systemctl enable coredns # 开机自启
sudo systemctl status coredns # 查看状态
4. 查看 CoreDNS 服务日志
journalctl -u coredns -xe
说明:
- journalctl systemd 提供的日志管理工具,用于查看系统和服务的日志。
- -u coredns 仅显示与 coredns.service 相关的日志(-u 表示 --unit)。
- -x 显示更详细的解释信息(如错误码的说明)。
- -e 直接跳转到日志的末尾(最新内容),方便查看最近的错误。
七. 再次验证
在电脑B上,执行ping,如果返回正常,那么配置完毕。
C:\Users\Administrator>ping hljcors.com
正在 Ping hljcors.com [192.168.2.100] 具有 32 字节的数据:
来自 192.168.2.100 的回复: 字节=32 时间<1ms TTL=64
来自 192.168.2.100 的回复: 字节=32 时间<1ms TTL=64
来自 192.168.2.100 的回复: 字节=32 时间=1ms TTL=64
来自 192.168.2.100 的回复: 字节=32 时间=1ms TTL=64
192.168.2.100 的 Ping 统计信息:
数据包: 已发送 = 4,已接收 = 4,丢失 = 0 (0% 丢失),
往返行程的估计时间(以毫秒为单位):
最短 = 0ms,最长 = 1ms,平均 = 0ms
C:\Users\Administrator>
猜你喜欢
- 2025-04-26 kubernetesv1.16系列——搞定Traefik2.1的使用
- 2025-04-26 使用docker-compose安装harbor
- 2025-04-26 PortMapper被滥用进行大规模DDoS攻击
- 2025-04-26 攻击和审计Docker容器03
- 2025-04-26 nfs-server安装和端挂盘
- 2025-04-26 流行DNS服务器软件BIND曝严重DoS漏洞
- 2025-04-26 K3s禁用Service Load Balancer,解决获取浏览器IP不正确问题
- 2025-04-26 嵌入式linux开发 | nfs网络服务搭建(详细步骤)
- 2025-04-26 Linux普通账户启动应用程序时监听1024以下端口好方法
- 2025-04-26 如何在 Linux 上使用 Docker 容器?这篇 Docker 全攻略值得收藏!
你 发表评论:
欢迎- 04-27JIT原理简单介绍
- 04-27LSM Oops 内存错误根因分析与解决
- 04-27Linux系统编程—共享内存之mmap
- 04-27C++深拷贝和浅拷贝应用实例
- 04-27消息队列概念及其实现细节
- 04-27基于FIMC接口的CMOS摄像头驱动分析与设计
- 04-27高性能异步io机制:io_uring
- 04-27《C与指针》读书笔记五
- 最近发表
- 标签列表
-
- 电脑显示器花屏 (79)
- 403 forbidden (65)
- linux怎么查看系统版本 (54)
- 补码运算 (63)
- 缓存服务器 (61)
- 定时重启 (59)
- plsql developer (73)
- 对话框打开时命令无法执行 (61)
- excel数据透视表 (72)
- oracle认证 (56)
- 网页不能复制 (84)
- photoshop外挂滤镜 (58)
- 网页无法复制粘贴 (55)
- vmware workstation 7 1 3 (78)
- jdk 64位下载 (65)
- phpstudy 2013 (66)
- 卡通形象生成 (55)
- psd模板免费下载 (67)
- shift (58)
- localhost打不开 (58)
- 检测代理服务器设置 (55)
- frequency (66)
- indesign教程 (55)
- 运行命令大全 (61)
- ping exe (64)
本文暂时没有评论,来添加一个吧(●'◡'●)