目录

简介

DNS缓存的工作原理

故障排除

简介

本文档介绍会话管理功能(SMF)中的域名系统(DNS)缓存机制以及如何对其进行故障排除。

DNS缓存的工作原理

当SMF上发生DNS查询时，DNS服务器的答案会缓存在内部数据库中。当用户请求P-CSCF扩展协议配置选项(PCO)时，代理呼叫会话控制功能(P-CSCF)地址的完全限定域名(FQDN)是一个示例，如果SMF具有P-CSCF FQDN配置，则发送DNS查询，并将应答保存在缓存中。

示例P-CSCF配置文件和dns-proxy配置如下：

profile pcscf pcscf1

fqdn pcscf6.test.local

v6-list

precedence 1

primary fe80::1

exit

exit

exit

profile dns-proxy

query-type ipv6

timeout 2000

round-robin-answers

servers serv1

ip 192.168.20.11

port 53

protocol udp

priority 1

exit

exit

通过配置，第一个SMF尝试使用DNS服务器解析FQDN pcscf6.test.local，并将答案保存到缓存中。仅当DNS解析失败时，才使用静态P-CSCF地址(fec0::1)。下次SMF检查缓存时，如果找到主机名，则使用它，并且不会发生DNS查询。缓存条目根据SMF配置或DNS服务器中的值设置的生存时间(TTL)过期。

故障排除

当DNS解析出现问题时，需要调查缓存，例如，如果SMF返回P-CSCF的意外IP地址，则可能由于TTL值错误或TTL过期机制因某种原因而无法工作，因此缓存中会保留一个旧条目。

使用show dns-cache CLI可以查看缓存条目。

[unknown] smf# show dns-cache ipv6

dns-cache-details

{

"cacheResponse": [

{

"hostname": "pcscfv6.test.local",

"hostdata": [

{

"podInstance": "0",

"cachedType": "ipv6",

"cachedTime": "Wed Jan 26 03:32:01 UTC 2022",

"currentTime": "Wed Jan 26 03:32:03 UTC 2022",

"cachedData": [

{

"ip": "fec0:0:1:2:3:4:fe8b:5d43",

"ttl": 180

}

],

"dnsServer": "192.168.20.11:53 udp"

}

]

}

]

}

DNS解析可以通过测试dns-query CLI进行测试。

[unknown] smf# test dns-query fqdn pcscfv6.test.local

dns-summary

Hostname : pcscfv6.test.local,

IPv4Addr : [],

IPv6Addr : [fe80:0:1:2:3:4:fe8b:5d43]

CLI通过Cisco Bug ID CSCvz13118实现。如果使用旧SMF生成且CLI不可用，则可以使用etcdctl命令将缓存条目转储到etpod上。

[root@master1 ~]# kubectl get pod -n smf-data | grep etcd

etcd-smf-data-etcd-cluster-0 2/2 Running 2 23h

[root@master1 ~]# kubectl exec -it etcd-smf-data-etcd-cluster-0 -n smf-data bash

Defaulting container name to member.

Use 'kubectl describe pod/etcd-smf-data-etcd-cluster-0 -n smf-data' to see all of the containers in this pod.

groups: cannot find name for group ID 303

I have no name!@etcd-smf-data-etcd-cluster-0:/usr/local/bin$

I have no name!@etcd-smf-data-etcd-cluster-0:/usr/local/bin$ etcdctl get --prefix C.RadiusDNS

C.RadiusDNS/DNS/CacheV6.pcscfv6.test.local

fe80:0:1:2:3:4:fe8b:5d43

180

C.RadiusDNS/DNS/Common.algorithm

round-robin

C.RadiusDNS/DNS/Common.queryType

ipv6