Introducción
Este documento describe el mecanismo de caché del Sistema de nombres de dominio (DNS) en la función de administración de sesiones (SMF) y cómo resolverlo.
Cómo funciona la caché DNS
Cuando se realiza una consulta DNS en SMF, la respuesta del servidor DNS se almacena en caché en la base de datos interna. La dirección Full Qualified Domain Name (FQDN) para Proxy Call Session Control Function (P-CSCF) es un ejemplo cuando el suscriptor solicita la opción P-CSCF Extended Protocol Configuration Option (PCO) y si SMF tiene la configuración FQDN P-CSCF, se envía una consulta DNS y la respuesta se guarda en la caché.
Un perfil P-CSCF de ejemplo y la configuración dns-proxy son los siguientes:
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
Con la configuración, el primer SMF intenta resolver el FQDN pcscf6.test.local con el servidor DNS y guarda la respuesta en la memoria caché. La dirección estática P-CSCF (flash0::1) sólo se utiliza cuando falla la resolución DNS. La próxima vez que SMF verifique en la memoria caché y si se encuentra el nombre de host, se utiliza y la consulta DNS no se realiza. La entrada de caché ha caducado en función del tiempo de vida (TTL) establecido por la configuración SMF o el valor del servidor DNS.
Troubleshoot
La memoria caché debe investigarse cuando hay un problema con la resolución de DNS, por ejemplo, si SMF devuelve una dirección IP inesperada para P-CSCF, posiblemente una entrada antigua permanece en la memoria caché, debido a un valor TTL incorrecto o porque el mecanismo de vencimiento TTL no funciona por alguna razón.
Las entradas almacenadas en caché se pueden ver con la CLI show dns-cache.
[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"
}
]
}
]
}
La resolución de DNS se puede probar con la CLI de consulta dns de prueba.
[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]
La CLI se implementa a través del ID de bug de Cisco CSCvz13118. Si se utiliza una generación SMF antigua y la CLI no está disponible, las entradas de caché se pueden volcar en etcd pod con el comando etcdctl.
[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