使用CoreDNS自建dns
前言
公司有些内网服务需要使用域名访问,安装bind比较麻烦,故使用coredns实现域名服务。
| IP | 说明 |
|---|---|
| 192.168.0.41 | 安装dns,作为dns服务器 |
| 192.168.0.20 | 测试服务器 |
安装
有docker和预编译二进制文件等更多方式,这里采用预编译二进制文件进行安装。
下载地址:https://github.com/coredns/coredns/releases
运行
- 编写配置文件
Corefile
.:53 {
# 绑定本机IP
bind 192.168.0.41
# 因为需要用域名的服务比较少,这里就直接使用hosts方式。
# 如果需要配置大量域名,建议使用文件方式
hosts {
192.168.0.41 web.local.com
ttl 60
reload 1m
fallthrough
}
# 最后所有的都转发到系统配置的上游dns服务器去解析
forward . /etc/resolv.conf
# 缓存时间ttl
cache 120
# 自动加载配置文件的间隔时间
reload 6s
# 输出日志
log
# 输出错误
errors
}
- 运行。这里写了脚本来启动
目录结构如下:
├── bin
│ ├── coredns
│ └── start.sh
├── conf
│ └── Corefile
└── logs
└── start.log
启动脚本示例(注意,因为默认监听53端口,所以需要使用root用户启动)
#!/bin/bash
# description: 启动CoreDNS
set -u
scriptDir=$(cd $(dirname $0) && pwd)
baseDir=$(cd ${scriptDir}/.. && pwd)
pidFile=${baseDir}/logs/app.pid
function prepare(){
# 检查当前用户是否为root
if [[ $(whoami) != "root" ]]; then
echo "please use root privilege"
exit 1
fi
# 检查是否存在配置文件, 无则报错退出
if [[ ! -f ${baseDir}/conf/Corefile ]]; then
echo "${baseDir}/conf/Corefile not found"
exit 1
fi
# 检测是否存在日志目录, 无则创建
if [[ ! -d ${baseDir}/logs ]]; then
mkdir -p ${baseDir}/logs
fi
# 检查进程是否已存在, 存在则退出
ps -ef | grep -v grep | grep ${scriptDir}/coredns > /dev/null
if [[ $? -eq 0 ]]; then
echo "coredns is running"
exit 1
fi
}
function startApp(){
nohup ${scriptDir}/coredns --conf ${baseDir}/conf/Corefile \
-pidfile ${pidFile} > ${baseDir}/logs/start.log 2>&1 &
}
function check(){
# 检查是否正常启动
for i in $(seq 2); do
echo "checking coredns whether is running or not ..."
sleep 1
done
ps -ef | grep -v grep | grep ${scriptDir}/coredns > /dev/null
if [[ $? -eq 0 ]]; then
echo "coredns is running"
fi
}
function main(){
prepare
startApp
check
}
main
- 启动
./start.sh
测试
- 修改测试服务器的
/etc/resolv.conf,示例:
nameserver 192.168.0.41
- ping测试
ping -c4 web.local.com
ping -c4 www.baidu.com
- 如果上一步都正常响应的话,则说明成功。
参考
补充
停止脚本
#!/bin/bash
# description: 停止CoreDNS
set -u
scriptDir=$(cd $(dirname $0) && pwd)
baseDir=$(cd ${scriptDir}/.. && pwd)
pidFile=${baseDir}/logs/app.pid
function prepare(){
# 检查当前用户是否为root
if [[ $(whoami) != "root" ]]; then
echo "please use root privilege"
exit 1
fi
# 检查进程是否已存在, 存在则退出
ps -ef | grep -v grep | grep ${scriptDir}/coredns > /dev/null
if [[ $? -ne 0 ]]; then
echo "coredns is not running"
exit 1
fi
}
function stopApp(){
if [[ -f ${pidFile} ]]; then
kill $(cat ${pidFile})
rm -f ${pidFile}
else
local pid=$(ps -ef | grep -v grep | grep ${scriptDir}/coredns | awk '{print $2}')
kill ${pid}
fi
}
function check(){
# 检查是否已停止
for i in $(seq 2); do
echo "checking coredns whether is running or not ..."
sleep 1
done
ps -ef | grep -v grep | grep ${scriptDir}/coredns > /dev/null
if [[ $? -ne 0 ]]; then
echo "coredns is stopped"
fi
}
function main(){
prepare
stopApp
check
}
main
使用CoreDNS自建dns的更多相关文章
- 转: centos7.5 下 coredns+etcd搭建DNS服务器
coredns简介 CoreDNS是一个DNS服务器,和Caddy Server具有相同的模型:它链接插件.CoreDNS是云本土计算基金会启动阶段项目. CoreDNS是SkyDNS的继任者. Sk ...
- centos7.5下coredns+etcd搭建DNS服务器
coredns简介 安装etcd 安装coredns 设置域名解析 A记录 AAAA记录 CNAME记录 SRV记录 TXT记录 coredns简介 CoreDNS是一个DNS服务器,和Caddy S ...
- 使用 CoreDNS 来应对 DNS 污染
原文链接:https://fuckcloudnative.io/posts/install-coredns-on-macos/ CoreDNS 是 Golang 编写的一个插件式 DNS 服务器,是 ...
- [archlinux][daily] 自建DNS服务器 / 建立本地DNS cache / 使用dnsmasq加速上网
新公司,上网超慢,DNS竟然是远程地址,终于找到机会学习一下dnsmasq了. update@20170516: 上网慢是因为分给我的IP有限流策略,其实远端DNS并不会造成感受上的上网慢. 参考:h ...
- 内建DNS服务器--BIND
参考 BIND 官网:http://www.isc.org/downloads/bind/ 1.系统环境说明 [root@clsn6 ~]# cat /etc/redhat-release CentO ...
- 2-7-搭建DNS服务器实现域名解析
学习服务的方法: 了解服务的作用:名称,功能,特点 安装服务 配置文件的位置,端口 服务开启和关闭的脚本 修改配置文件(实战举例) 排错(从上到下,从内到外) -------------------- ...
- Linux网络学习笔记(二):域名解析(DNS)——以 CoreDNS 为例
个人笔记,观点不一定正确. 适合对 Kubernetes 有一定了解的同学. 前言 最近一直在学习 Kubernetes,但是手头没有个自有域名,要测试 ingress 就比较麻烦,每次都是手动改 h ...
- 美国半个互联网瘫痪对开发者使用DNS的启发
版权声明:本文由腾讯云DNSPod团队原创文章,转载请注明出处: 文章原文链接:https://www.qcloud.com/community/article/174 来源:腾云阁 https:// ...
- Domain Name System (DNS)
1.DNS和WINS的作用 DNS:(Domain Name Server,域名服务)用于实现域名和IP地址的相互转换. WINS:(Windows Internet Name Service) 用来 ...
- k8s集群之上游dns--dnsmasq,统一管理kubernetes的dns解析
1.概述 首先部署好kubernetes集群并采用Coredns进行解析,这样集群内部的服务都能通过内部域名进行访问.但是集群内部的coredns与物理机的dns解析不完全统一,coredns不能解析 ...
随机推荐
- ET中热更(ILRuntime)使用过程中,需要做的适配器,比如Linq排序
ET中热更(ILRuntime)使用过程中,需要做的适配器,比如Linq排序 By Flamesky 最近项目中用到个Linq的排序,由于没有注册适配器,导致不能用,其实ILRT作者已经做得很好,报错 ...
- IIS6网站批量迁移至IIS7经验分享
迁移原因:公司服务器更换 迁移环境:源服务器 windows2003 X86 IIS6 目标服务器:windows2008 X64 IIS7 迁移过程: 第一次迁移失败,作为简要记 ...
- #Powerbi 利用EOMONTH,计算月度时间进度
在POWERBI中计算本月的时间进度 许多小伙伴在做看板时,往往会遇到需要时间进度的计算,来配合业绩达成的进度,进行比较分析.那么如何在BI做通过公式进行这个数据的求值呢? 首先,我们需要测算两个值, ...
- 2022-01-27:供暖器。 冬季已经来临。 你的任务是设计一个有固定加热半径的供暖器向所有房屋供暖。 在加热器的加热半径范围内的每个房屋都可以获得供暖。 现在,给出位于一条水平线上的房屋 hous
2022-01-27:供暖器. 冬季已经来临. 你的任务是设计一个有固定加热半径的供暖器向所有房屋供暖. 在加热器的加热半径范围内的每个房屋都可以获得供暖. 现在,给出位于一条水平线上的房屋 hous ...
- 1406, "Data too long for column 'od_seq' at row 1"
问题描述:1406, "Data too long for column 'od_seq' at row 1" 问题分析:录入数据长度超出字段的最大限制 解决方法:增加max_le ...
- 2014年蓝桥杯C/C++大学B组省赛真题(六角填数)
题目描述: 如图[1.png]所示六角形中,填入1~12的数字. 使得每条直线上的数字之和都相同. 图中,已经替你填好了3个数字,请你计算星号位置所代表的数字是多少? 分析:先将a数组初始化为1-12 ...
- Java的jps命令使用详解
jps命令简介 jps(Java Virtual Machine Process Status Tool)是JDK提供的一个可以列出正在运行的Java虚拟机的进程信息的命令行工具,它可以显示Java虚 ...
- hexrays sdk study
There are 20 examples in /ida_path/plugins/hexrays_sdk/plugins, you can learn from that, you can als ...
- 00.Webstrom的基本入门设置
1.取消红框类自动打开项目 2.打开轮滚缩放代码 3.设置代码字体,这里选择的是Consolas 推荐免费字体:https://files.cnblogs.com/files/huadaxia/jet ...
- Galaxy v-21.01 发布,新的流程和历史栏体验
Galaxy Project(https://galaxyproject.org/)是在云计算背景下诞生的一个生物信息学可视化分析开源项目. 该项目由美国国家科学基金会(NSF).美国国家人类基因组研 ...