内容

概要

DNSキャッシュの動作

トラブルシュート

概要

このドキュメントでは、セッション管理機能(SMF)のドメインネームシステム(DNS)キャッシュメカニズムとそのトラブルシューティング方法について説明します。

DNSキャッシュの動作

SMFでDNSクエリが実行されると、DNSサーバからの応答が内部データベースにキャッシュされます。Proxy Call Session Control Function(P-CSCF)アドレスの完全修飾ドメイン名(FQDN)は、サブスクライバがP-CSCF Extended Protocol Configuration Option(PCO)を要求した場合の1つの例です。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を解決し、応答をキャッシュに保存します。スタティックP-CSCFアドレス(fec0::1)は、DNS解決が失敗した場合にのみ使用されます。次にSMFがキャッシュをチェックし、ホスト名が見つかった場合は使用され、DNSクエリは実行されません。キャッシュエントリは、SMF設定によって設定された存続可能時間(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解決は、test 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コマンドを使用してキャッシュエントリをetcd podにダンプできます。

[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