订阅计划推送钉钉消息出现"oapi.dingtalk.com: Name or service not known"

发布时间 2023-10-16 14:41:44作者: 微风徐徐$

一、问题描述

BI系统需要每天将报表推送给钉钉用户,但是偶尔会出现推送失败的情况,提示oapi.dingtalk.com: Name or service not known,即钉钉域名解析出现错误,后续重新推送又成功了,该情况具有偶然性。可能的原因是:

1、钉钉IP地址是一个地址池,域名oapi.dingtalk.com对应多个IP地址,浏览器缓存的时候IP地址是A,当需要将oapi.dingtalk.com域名映射成IP地址之后,IP地址换成B,通过A地址去查找已经找不到钉钉服务器了,需要重新解析,可能解析会超时导致消息发送不出去,解决方法是在/etc/hosts中将A地址写到hosts文件中,之后推送时就直接找该A地址,即使这时oapi.dingtalk.com这时已经换成C地址,也可以通过A地址找到钉钉服务器。后续问题是:当IP池剔除A地址之后,不能通过A找到钉钉服务器,需要手动增加IP地址到hosts中。

 

二、相关知识点

DNS(Domain Name System)是域名系统。实际主机A与主机B之间是通过IP进行相互通信的,但为了方便记忆可以用一串字符串来代替IP,如www.baidu.com,但计算机只能识别纯数字构成的IP地址,所以DNS系统再将www.baidu.com转换成IP地址,即翻译。ping www.baidu.com如下,实际是连通主机153.3.238.102。

域名解析的工作流程

①用户登录www.baidu.com网址,浏览器在浏览器缓存或操作系统在hosts文件中查找是否存在网址映射,如果存在返回IP;若不存在,用户发出DNS解析请求给本地DNS服务器,询问该网址的IP

②本地DNS服务器收到请求,在本地DNS服务器缓存中查找网址映射,若存在则返回用户该网址IP;

若没有找到,本地DNS服务器请求其根域名服务器(知道所有顶级域名服务器的域名及IP),不解析,但返回.com顶级域名服务器(负责二级域名)的IP给本地DNS服务器。

扩展:第三个字符串com 是顶级域名,代表企业,是通用域名,全球仅13台

通用域名:com(公司企业)、net(网络提供商)、org(非盈利组织)、int(国际组织)、gov(美国政府部门)等

国家域名:cn(中国)、us(美国)、uk(英国)等

④本地DNS服务器收到.com服务器IP后,向该顶级服务器请求www.baidu.com的IP。顶级域名服务器收到请求后,返回负责baidu.com区域的NameServer服务器(baidu.com域名提供商的服务器)的IP地址。

⑥本地DNS服务器收到IP后,向NameServer服务器请求www.baidu.com的IP,NameServer服务器返回对应的IP地址

⑦本地DNS服务器收到www.baidu.com的IP地址后,将其缓存并但会给浏览器。