Macの複数のパブリックIPアドレスでコンテンツキャッシュ検出を有効にする
ネットワークがインターネットへの接続に複数のパブリックIPアドレスを使用していて、コンテンツキャッシュによる登録が、クライアントが検出に使用するものとは異なるアドレスを使用して行われるような場合は、それらのアドレスのリストをコンテンツキャッシュとクライアントの両方に提供する必要があります。これらのリストは、複数のパブリックIPアドレスを使用する場合の登録および検出要求の相互確認に使用されます。
手動によるクライアントの構成を避けるため、コンテンツキャッシュではDNS TXTレコードを使用して、ネットワーク上のクライアントに対してパブリックIPアドレス情報を公開します。TXTレコードは、クライアントで使用されるデフォルトのDNS検索ドメインに公開する必要があります。
macOS 10.15以降では、優先ローカルIPアドレスを指定して、ネットワーク上のほかのコンテンツキャッシュの影響を軽減することもできます。優先ローカルIPアドレスがTXTレコードで宣言されていない場合、すべてのクライアントは使用可能なコンテンツキャッシュを使用します。
パブリックIPアドレス範囲用のTXTレコードの正確なデータは、自動的に生成することも手動で生成することもできます。いずれの場合も、DNSレコードを編集するか、DNSプロバイダに設定を提供してゾーンファイル内にTXTレコードを作成または編集してもらう必要があります。優先ローカルIPアドレス用のTXTレコードを自動生成することはできません。これらは手動で作成する必要があります。
注記: これらのレコードは内部ネットワークでのみ必要です。外部のDNSには追加レコードは必要ありません。
複数のIPアドレスをサポートするようにコンテンツ・キャッシュ・クライアントを構成する
Macで、アップルメニュー >「システム環境設定」と選択し、「共有」をクリックしてから、「コンテンツキャッシュ」を選択します。
Optionキーを押したまま、「詳細オプション」をクリックします。
「クライアント」をクリックします。
「マイ・ローカルネットワーク」ポップアップメニューをクリックし、「カスタムパブリックIPアドレスを使用」を選択します。
「追加」ボタン をクリックし、パブリックIPアドレスの範囲を入力します。
入力したい追加のIPアドレス範囲がある場合は繰り返します。
入力したパブリックIPアドレスを記述したDNSテキストレコードを作成します。
テキストレコードは、コンテンツ・キャッシュ・サービスを使用して生成することも、手動で作成することもできます(フォーマットについては後述)。テキストレコードを生成するには:
「DNS構成」ボタンをクリックします。
DNSサーバのタイプ(BINDまたはWindows)を選択します。
生成されたテキストレコードをコピーしてから、後で(DNSゾーンファイルに追加するときに)使用できるようにテキストファイルにペーストします。
「完了」をクリックします。
構成が完了したら、「OK」をクリックします。
テキストレコードをドメインの権威のあるDNSゾーンファイルに追加します。
DNS TXTレコードのフォーマット
TXTレコードを指定する構文と、TXTレコード内の非ASCII文字は、お使いのDNSサーバによって変わります。以下に示す例は説明のみを目的としています。
コンテンツキャッシュ用のDNSテキストレコードは、DNS-SD TXTレコードと同じフォーマットです(キー値ペア):
name._tcp 10800 IN TXT "[prs|prn|fss|fsn]=addressRanges"
パブリックIPアドレス範囲にはprsキーとprnキーを使用します。優先コンテンツキャッシュのローカルIPアドレス範囲にはfssキーとfsnキーを使用します。
IPv4とIPv6の両方のアドレスが受け入れられますが、サポートされているのはIPv4のみです。
以下の例は、どちらも同じ2つのIPアドレス範囲(17.53.22.2〜17.53.22.254までの範囲、単一のIPアドレス93.184.216.119で構成される範囲)のセットを定義しています。これらの違いは、1番目の例ではprsキーを使用し、2番目の例ではprnキーを使用していることです。
_aaplcache._tcp 10800 IN TXT "\x2aprs=17.53.22.2-17.53.22.254,93.184.216.119"
_aaplcache._tcp 10800 IN TXT "\x12prn=\x24\x11\x35\x16\x02\x11\x35\x16\xfe\x14\x5d\xb8\xd8\x77"
これらのキーでは、値に指定するIPアドレス範囲のフォーマットが異なります:
prsまたはfss: prsキーまたはfssキーの値は、カンマで区切られたIPアドレスの範囲の列で、プレゼンテーションフォーマット(ASCIIドット表記)で表されます。この構文は簡単に構成できます。範囲には、1つのIPアドレスまたはハイフンで区切られた2つのIPアドレスが含まれます。
prnまたはfsn: prnキーまたはfsnキーの値は、連結されたIPアドレス範囲の列で、バイナリのネットワークバイトオーダー形式で表されます。プレゼンテーションフォーマットで指定した場合にDNSレコードとして長すぎる範囲列には、この構文を使用します。シーケンス内の各範囲の先頭は、その後に続く範囲の種類を指定するバイトです:
0x14は単一のIPv4アドレスを示します。
0x16は単一のIPv6アドレスを示します。
0x24は範囲の開始IPv4アドレスと終了IPv4アドレスを示します。
0x26は範囲の開始IPv6アドレスと終了IPv6アドレスを示します。
複数のレコードを連鎖させることができます。その場合は、最初のレコード_aaplcache._tcp
および必要に応じてそれ以降のレコード_aaplcache1._tcp
から_aaplcache24._tcp
までに名前を付けます。連鎖できるレコード数は最大で25です。
macOS 10.14以前を使用しているクライアントとの互換性を維持するには、fssキーまたはfsnキーを使用するレコードの前にprsキーまたはprnキーを使用するレコードを配置します。
レコードを連鎖させるには、最後のTXTレコード以外のすべてのTXTレコードに継続文字を追加します。
同じ連鎖内でprs構文とprn構文のレコードを混在させることができます。prs構文では、レコード値の末尾に「,more」と追加します。prn構文では、レコード値の末尾に「+」(0x2b)と追加します。継続文字を含まない最初のレコードが連鎖の終了を示します。
連鎖したレコードは一度に5件ずつ解決されます。つまり、最初に _aaplcache._tcpおよび _aaplcache1._tcpから _aaplcache4._tcpまでが並行して解決され、そのすべてが継続文字で終わる場合は、次に _aaplcache5._tcpから _aaplcache9._tcpまでが解決されます。以降も同様に続きます。
以下に連鎖した3つのレコードの例を示します:
_aaplcache._tcp 10800 IN TXT "\x2bprs=17.250.1.1,17.250.2.1-17.250.2.254,more"
_aaplcache1._tcp 10800 IN TXT "\x0eprn=\x24\x11\xfa\x03\x01\x11\xfa\x03\xfe+"
_aaplcache2._tcp 10800 IN TXT "\x0eprs=17.250.4.5"
TXTレコードを指定する構文と、TXTレコード内の非ASCII文字は、お使いのDNSサーバによって変わります。一部のサーバでは、長さを表す先頭のバイト(例に登場する順番で \x2a、\x12、\x2b、\x0e、および\x0e)は自動的に追加されるので必要ありません。
例1
この例では、prsまたはprnのレコードとfssまたはfsnのレコードの両方が必要なシナリオを示します。
「prs=203.0.113.10-203.0.113.19」という値とローカルアドレス10.0.0.30、10.1.0.30、および10.2.0.30で展開された3つのコンテンツキャッシュを持つ「_aaplcache._tcp」という名前のDNS TXTレコードがすでにあるとします。最初の2つは共有コンテンツのみに対応し、最後の1つは共有コンテンツとiCloudコンテンツの両方に対応します。
クライアントが不正なコンテンツキャッシュを使用しないようにするために、次のように、そのレコードの末尾に「,more」を付加して2番目のレコードを追加することができます:
_aaplcache._tcp prs=203.0.113.10-203.0.113.19,more
_aaplcache1._tcp fss=10.0.0.30,10.1.0.30,10.2.0.30
3つのコンテンツキャッシュのうち少なくとも1つが稼働していれば、共有コンテンツを探しているmacOS 10.15、iOS 13、iPadOS 13、またはtvOS 13以降のクライアントはそれらのコンテンツキャッシュのみを使用します。
3台がすべてオフラインの場合、共有コンテンツを探しているクライアントは、使用可能なコンテンツキャッシュを使用します。
10.2.0.30が稼働していれば、iCloudコンテンツを探しているmacOS 10.15、iOS 13、iPadOS 13、tvOS 13以降のクライアントはそのサーバのみを使用します。そのサーバがオフラインの場合、iCloudコンテンツを探しているクライアントは、使用可能なコンテンツキャッシュを使用します。
macOS 10.14以前またはiOS 12以前を搭載しているデバイスは、上記の3つだけでなく、使用可能なコンテンツキャッシュを使用します。
例2
この例では、prsまたはprnのレコードが不要なシナリオを示します。
1つのパブリックIPアドレスしかなく、DNS TXTレコード機能をまったく使用しないけれど、サーバコンピュータ用に確保されているサブネット(92.168.50/24)上にいくつかのコンテンツキャッシュがあるとします。
クライアントが不正なコンテンツキャッシュを使用しないようにするために、次のように1件のレコードを設定できます:
_aaplcache._tcp fss=192.168.50.1-192.168.50.254
求めるクライアントの種類(共有またはiCloud)用のコンテンツキャッシュがその範囲内で少なくとも1つは使用可能であれば、macOS 10.15、iOS 13、iPadOS 13、tvOS 13以降のクライアントは、そのコンテンツキャッシュのみを使用します。
DNSゾーンファイルにTXTレコードを追加する
1つまたは複数のTXTレコードを、DNSサーバのローカルドメインのゾーンファイルに追加します。以下のゾーンにDNS TXTレコードを追加します:
ドメインに関する権威を持つゾーン
ネットワーク・クライアント用のデフォルト検索ドメインと一致するゾーン
たとえば、組織から独自のドメインのDNSサービスが提供されていて、example.comのホスト名に関する権威を組織が持っている場合は、example.comゾーンファイルにキャッシュTXTレコードを追加します。
重要: ドメイン名に対して権威のあるDNSサービスをホストしていない場合は、TXTレコードを自分で追加することはできません。DNSプロバイダと協力し、TXTレコードを提供して、追加してもらってください。
BIND9 DNSを使用する場合には、生成されたTXTレコードをコピーして、DNSのゾーンファイルにペーストします。
LinuxでBIND9ベースのDNSの場合は、このファイルは/etc/bind/
ディレクトリにあり、ゾーンファイル名が/etc/bind/named.conf
内で定義されています(ほとんどの場合、「db.example.com」です。)。
Windows DNSを使用している場合は、以下のいずれかの操作を行います:
コンテンツ・キャッシュ・サービスを使用してテキストレコードを生成した場合: 生成されたコマンド内のZoneName変数をお使いのネットワークのDNSゾーン名に置き換えてから、コマンドをWindows DNSコンピュータで実行します。
テキストレコードを手動で作成した場合: Windows Server管理ツールを使用して、TXTレコード情報を手動で入力します。