网易首页 > 网易号 > 正文 申请入驻

自建dns获取域名解析与证书告警

0
分享至

新钛云服已累计为您分享813篇技术干货

背 景

公司A拥有一套云上DNS服务,主要用于支持云中应用和服务的域名解析。为了满足线下门店之间的服务互联需求,公司在内网自建一套Windows DNS服务器,以实现门店之间的高效域名解析。此方案旨在保证内部网络的稳定性与安全性,同时与云上DNS服务进行有效集成,需要监控证书有效性和域名解析的记录查询。

目 标

  1. 自建DNS服务:在不登录window dns服务器的情况下,通过日志系统进行查询解析记录。

  2. HTTPS安全通信:为所有域名服务打印域名证书的时间信息。

  3. 告警系统:监控域名证书状态,并在出现问题时及时告警。

业务流程

  1. 域名解析测试


    1. 在内部网络的客户端上测试域名解析,确保所有服务都能正确解析。

    2. 验证HTTPS证书连接,确保浏览器或客户端能够安全访问服务。


  2. 证书和域名监控


    1. 监控证书的有效期,设置告警阈值(如到期前60天)。

    2. 监控HTTPS服务的可用性,确保服务在DNS解析和证书有效的情况下正常运行。


  3. 告警机制


    1. 如果证书即将到期或已过期,发出告警,确保运维人员能够及时更新证书。

    2. 实现自动化脚本,当证书即将到期时,生产新的证书进替换


服务器安装openssl服务

  1. openssl 软件下载地址

    https://slproweb.com/download/Win64OpenSSL-3_3_2.msi

  2. 软件下载后直接点击下一步进行安装,直到安装完成.

  3. openssl环境变量配置

使用命令查询openssl -version版本信息

脚本查询域名的A记录、CNAME记录、域名证书信息

1.手动查询自建window dns的A记录和CNAME记录命令信息

Get-DnsServerResourceRecord -ZoneName "text" | Where-Object { $_.RecordType -eq "CNAME" -or $_.RecordType -eq "A"} | Format-Table -AutoSize

2.在powershell上查询单个域名的证书信息

$domain = "text"

cmd /c "echo | openssl s_client -servername `"$($domain)`" -connect `"$($domain):443`" 2>&1 | openssl x509 -noout -dates | findstr /C:notAfter"

3.通过powershell脚本获取域名详细信息

$zoneName = "text"
# domaininput.txt需要排除的域名列表信息
$inputFilePath = "D:\domain\domaininput.txt"
# domainoutput.txt需要输出日志记录的域名列表信息
$outputFilePath = "D:\domain\domainoutput.txt"
# 飞书webhook
$feishuWebhookUrl = "https://open.feishu.cn/open-apis/bot/v2/hook/xxxxxxxxxxxxxxxx" # 替换为你的飞书 Webhook URL

function Send-FeishuNotification {
param (
[string]$message,
[string]$color
)

if ($color -eq "blue") {
$formattedMessage = "*Success:* $message"
} elseif ($color -eq "black") {
$formattedMessage = "*Error:* $message"
} else {
$formattedMessage = $message
}

$payload = @{
msg_type = "text"
content = @{
text = $formattedMessage
}
}

$jsonPayload = $payload | ConvertTo-Json -Depth 1

Invoke-RestMethod -Uri $feishuWebhookUrl -Method Post -Body $jsonPayload -ContentType 'application/json'
}

function Get-CertificateEndDate {
param (
[string]$domain
)

Write-Host "正在处理域名: $domain"
try {
# 获取证书到期信息
$certInfo = cmd /c "echo | openssl s_client -servername `"$($domain)`" -connect `"$($domain):443`" 2>&1 | openssl x509 -noout -dates | findstr /C:notAfter"

Write-Host "获取的证书信息: $certInfo"

if ($certInfo -match "notAfter=(.*)") {
$formattedDate = $matches[1].Trim() # 获取到期时间并去掉空格
Write-Host "证书到期时间: $formattedDate"

# 修剪多余空格
$formattedDate = $formattedDate -replace '\s+', ' '

# 解析日期时,指定格式并转换为 yyyy-MM-dd
$parsedDate = [datetime]::ParseExact($formattedDate, "MMM d HH:mm:ss yyyy 'GMT'", [System.Globalization.CultureInfo]::InvariantCulture)
$endDate = $parsedDate.ToString("yyyy-MM-dd")

Write-Host "格式化后的日期: $endDate"
return $endDate
} else {
Write-Host "未找到证书信息: $certInfo"
return "2008-08-08" # 默认日期
}
} catch {
Write-Host "发生错误: $_"
return "2008-08-08" # 默认日期
}
}

try {
if (-Not (Test-Path $inputFilePath)) {
$errorMessage = "输入文件不存在:$inputFilePath"
$failureMessage = "failed $zoneName $errorMessage"
Send-FeishuNotification -message $failureMessage -color "black"
exit
}

$excludedDomains = Get-Content -Path $inputFilePath | Where-Object { $_.Trim() -ne "" }
$dnsRecords = Get-DnsServerResourceRecord -ZoneName $zoneName |
Where-Object { $_.RecordType -eq "CNAME" -or $_.RecordType -eq "A" }

$output = @{}
$ignoredDomains = @()

foreach ($record in $dnsRecords) {
$hostName = $record.HostName

if ($hostName.EndsWith($zoneName, [System.StringComparison]::OrdinalIgnoreCase)) {
$fullDomain = $hostName
} else {
$fullDomain = "$hostName.$zoneName"
}

# 修正重复的域名问题
$fullDomain = $fullDomain -replace '\.text\.text\.cn$', '.text.cn'

if ($excludedDomains -notcontains $fullDomain) {
$endDate = Get-CertificateEndDate -domain $fullDomain

$key = "$fullDomain|$($record.RecordType)"
if (-not $output.ContainsKey($key)) {
$output[$key] = @{
RecordType = $record.RecordType
domain = $fullDomain
EndDate = $endDate
CimInstanceProperties = $record.RecordData
}
}
} else {
$ignoredDomains += $fullDomain
}
}

$outputArray = $output.Values
$outputLines = $outputArray | ForEach-Object {
$_ | ConvertTo-Json -Depth 1 -Compress
}

$outputLines | Set-Content -Path $outputFilePath -Encoding utf8

$lineCount = $outputLines.Count
$uniqueIgnoredDomains = $ignoredDomains | Select-Object -Unique

$ignoredJson = @{}
foreach ($domain in $uniqueIgnoredDomains) {
$ignoredJson["domain_$($ignoredJson.Count + 1)"] = $domain
}
$ignoredJsonString = $ignoredJson | ConvertTo-Json -Depth 10

$successMessage = "domain:$zoneName path:$outputFilePath row:$lineCount ignore: `n$ignoredJsonString"
Send-FeishuNotification -message $successMessage -color "blue"

} catch {
$errorMessage = $_.Exception.Message
$failureMessage = "failed $zoneName $errorMessage"
Send-FeishuNotification -message $failureMessage -color "black"
throw
}

#domainoutput.txt文件内容输出JSON LOG信息
{"CimInstanceProperties":{"CimClass":"root/Microsoft/Windows/DNS:DnsServerResourceRecordA","CimInstanceProperties":"IPv4Address = \"20.20.20.20\"","CimSystemProperties":"Microsoft.Management.Infrastructure.CimSystemProperties"},"RecordType":"A","domain":"view.lu.cn","EndDate":"2008-08-08"}
{"CimInstanceProperties":{"CimClass":"root/Microsoft/Windows/DNS:DnsServerResourceRecordCName","CimInstanceProperties\"":"HostNameAlias = \"alb-cs.cn","CimSystemProperties":"Microsoft.Management.Infrastructure.CimSystemProperties"},"RecordType":"CNAME","domain":"pa.lu.cn","EndDate":"2025-05-31"}

使用json-hand插件进行格式化输出展示

4.飞书输出信息提示,成功的域名地址、路径、域名多少数量、排除的域名是那几个

配置日志接入与查询SQL

1.配置阿里云sls接入window dns单层json日志信息

window dns文件的路径地址为D:\domain\domainoutput.txt

2.通过sls查询sql输出window dns日志信息

* | SELECT "content.domain", "content.RecordType", "content.CimInstanceProperties.CimInstanceProperties" , "content.EndDate" from log LIMIT 1000

配置告警输出

根据查询的sls sql语句进行针对性的配置告警和行动策略通知聚道(钉钉、短信、电话等等)

在本文中,我们详细探讨了如何通过自建DNS实现域名解析与证书告警的管理。通过创建Purview门户、配置密钥保管库、实施流量回放和监控,我们不仅提高了资产的可见性,还确保了数据的安全性和合规性。随着企业数字化转型的不断深入,资产梳理和安全运营将变得愈发重要。我们鼓励大家定期进行资产审查和监控,以应对不断变化的安全威胁和业务需求。感谢您对安全运营工作的关注与支持,让我们共同努力,提升企业的安全防护水平,确保业务的持续稳定运行。

如有相关问题,请在文章后面给小编留言,小编安排作者第一时间和您联系,为您答疑解惑。

特别声明:以上内容(如有图片或视频亦包括在内)为自媒体平台“网易号”用户上传并发布,本平台仅提供信息存储服务。

Notice: The content above (including the pictures and videos if any) is uploaded and posted by a user of NetEase Hao, which is a social media platform and only provides information storage services.

相关推荐
热点推荐
温柔且坚韧!亚历山大谈抢七失利,一句话道尽雷霆卫冕的心酸!

温柔且坚韧!亚历山大谈抢七失利,一句话道尽雷霆卫冕的心酸!

田先生篮球
2026-05-31 12:16:21
30年申冤狱中暴毙,头颅铁钉牵出中央督办大案,黄庆忠冤案始末!

30年申冤狱中暴毙,头颅铁钉牵出中央督办大案,黄庆忠冤案始末!

易玄
2026-05-31 11:45:11
中超下课第3人!新鹏城官宣解雇41岁陈涛:半程输8场 继任者浮现

中超下课第3人!新鹏城官宣解雇41岁陈涛:半程输8场 继任者浮现

风过乡
2026-05-31 11:06:18
网友请假说明原因,外企领导:隐私、无需说明,评论区感动哭了!

网友请假说明原因,外企领导:隐私、无需说明,评论区感动哭了!

谭谈社会
2026-05-31 11:03:25
唐嫣素颜进幼儿园!6岁女儿戴皇冠萌翻全场,罗晋全程冷脸零互动

唐嫣素颜进幼儿园!6岁女儿戴皇冠萌翻全场,罗晋全程冷脸零互动

优墨出品
2026-05-30 08:57:35
西决场均25.9分!亚历山大又遭美媒逮着喷:摊手要哨 关键球拒投

西决场均25.9分!亚历山大又遭美媒逮着喷:摊手要哨 关键球拒投

颜小白的篮球梦
2026-05-31 11:59:59
医生发现:早期脑梗不是头晕,而是频繁出现这5个异常,要警惕!

医生发现:早期脑梗不是头晕,而是频繁出现这5个异常,要警惕!

芹姐说生活
2026-05-31 12:48:00
麻烦了!洛夫顿伤情不乐观,怀特塞德被沪媒实锤,卢伟只能靠他俩

麻烦了!洛夫顿伤情不乐观,怀特塞德被沪媒实锤,卢伟只能靠他俩

萌兰聊个球
2026-05-31 11:39:29
法拉利给教皇看新车 连教宗都激动不起来 市值还蒸发30亿

法拉利给教皇看新车 连教宗都激动不起来 市值还蒸发30亿

篮坛第一线
2026-05-30 00:29:04
武契奇没想到,访华结束,45岁妻子竟因拒绝一件事,实现圈粉无数

武契奇没想到,访华结束,45岁妻子竟因拒绝一件事,实现圈粉无数

井普独白
2026-05-30 12:38:46
悲情枪手,阿森纳两进欧冠决赛均先进球,但都无缘冠军

悲情枪手,阿森纳两进欧冠决赛均先进球,但都无缘冠军

懂球帝
2026-05-31 03:14:14
仅200万元!余承东官宣新尊界S800开启预售后,奇怪的现象出现了

仅200万元!余承东官宣新尊界S800开启预售后,奇怪的现象出现了

春雨说科技
2026-05-30 17:45:12
全体致敬!37岁窦骁高调官宣喜讯,“豪门赘婿”身份彻底成过去式

全体致敬!37岁窦骁高调官宣喜讯,“豪门赘婿”身份彻底成过去式

阿雹娱乐
2026-05-31 11:28:36
【观察】最强大魔王,也没能闯过卫冕这一关

【观察】最强大魔王,也没能闯过卫冕这一关

体坛周报
2026-05-31 14:34:15
福克斯:我的队友都是斗士,今晚是我们通往最终目标的垫脚石

福克斯:我的队友都是斗士,今晚是我们通往最终目标的垫脚石

懂球帝
2026-05-31 14:13:35
同事一个月请了三次丧假,结果领导说:你家亲戚死光了?然后同事就给了领导一耳光!我们上去拉偏架,最后领导被揍的鼻青脸肿,还降职调岗

同事一个月请了三次丧假,结果领导说:你家亲戚死光了?然后同事就给了领导一耳光!我们上去拉偏架,最后领导被揍的鼻青脸肿,还降职调岗

大爱三湘
2026-05-28 21:14:00
人活多久,看喝酒就知道?寿命短的人,喝酒一般有这6个特征

人活多久,看喝酒就知道?寿命短的人,喝酒一般有这6个特征

芹姐说生活
2026-05-14 23:38:55
万万没想到!释永信那些满天飞的传言,最后居然全是真的!

万万没想到!释永信那些满天飞的传言,最后居然全是真的!

故事终将光明磊落
2026-05-31 12:56:36
莫言:如果你混到没人找你吃饭,没人喊你聚会,连电话也没几个,那庆祝了,你不是人缘变差,而是真正觉醒了

莫言:如果你混到没人找你吃饭,没人喊你聚会,连电话也没几个,那庆祝了,你不是人缘变差,而是真正觉醒了

品读时刻
2026-05-27 09:00:58
陈慧琳为何会看上光头刘建浩?原因很简单

陈慧琳为何会看上光头刘建浩?原因很简单

南万说娱26
2026-05-24 09:25:20
2026-05-31 15:07:00
新钛云服
新钛云服
云管理服务专家
473文章数 30关注度
往期回顾 全部

科技要闻

戴尔诺基亚又回来了!AI重估老牌科技公司

头条要闻

男子怀疑妻子出轨在车上装定位:兄弟不给我借钱给她借

头条要闻

男子怀疑妻子出轨在车上装定位:兄弟不给我借钱给她借

体育要闻

阿森纳用最悲壮的方式,成就了巴黎王朝

娱乐要闻

贾玲最新动作!侯明昊给虞书欣抬轿!

财经要闻

医学首席转岗搞科技,A股科技股遭遇巨震

汽车要闻

900V+3.2秒破百 领克10+&领克10上市16.99万元起

态度原创

健康
房产
本地
艺术
公开课

尝试干细胞疗法如何避免踩坑?

房产要闻

红动五月!全国抢入核心资产,广州盯紧凯旋新世界!

本地新闻

用剪纸的方式,打开江苏扬州

艺术要闻

Luis Alvarez Roure | 美国现实主义画家

公开课

李玫瑾:为什么性格比能力更重要?

无障碍浏览 进入关怀版