ECS(RFC 7871)の3社共同検証の結果共有_DNS Summer Day 2025_20250627_takamizawa

>100 Views

June 30, 25

スライド概要

2025年6月27日 (金) に東京・日本橋で開催された「DNS Summer Day 2025」(主催:日本DNSオペレーターズグループ(DNSOPS.JP)での弊社アーキテクト高見澤信弘の登壇資料です。

■登壇セッションタイトル
「ECS(RFC 7871)の3社共同検証の結果共有 〜商用利用を前提とした検証結果の共有〜」

profile-image

1997年の設立以来、動画配信を主軸に事業展開。コーポレートメッセージ「もっと素敵な伝え方を。」を掲げ、テクノロジーを通じて世の中のコミュニケーションをよりよくすることを目指しています。 自社で保有・運営する独自のコンテンツ配信ネットワーク(CDN=Content Delivery Network)を活用した動画配信に加え、長年のノウハウを活かした動画の企画・制作・運用やWebサイト制作、システム開発、動画広告による収益化支援まで総合的なサービスとソリューションを提供。取引実績はメディア、大手企業をはじめ年間1,200社・10,000案件以上です。手がける技術領域は、ネットワークの物理層からアプリケーション層にわたり、日本屈指の大規模配信や最先端案件の実績も多数あります。 エンジニア向けオウンドサイト「Voice」公開中! https://voice.stream.co.jp/

シェア

またはPlayer版

埋め込む »CMSなどでJSが使えない場合

ダウンロード

関連スライド

各ページのテキスト
1.

DNS Summer Day 2025 ECS(RFC 7871)の3社共同検証の結果共有 〜商用利用を前提とした検証結果の共有〜 ※権威DNSサーバー編 株式会社Jストリーム 高見澤信弘 2025年6月27日 © J-Stream Inc. All Rights Reserved.

2.

自己紹介 ▶名前:高見澤信弘 ▶出身地:山形県天童市 ▶所属:株式会社Jストリーム (AS24253) ◼ 新卒でJストリームへ入社 ◼ エンジニアリング推進室&プロダクト企画部(アーキテクト) ▶お仕事 • CDN(Content Delivery Network)の企画、構築 • ネットワーク企画 ▶好きなもの • ロードバランサー → 家にBIG-IP • おうち19インチラック勢 • 活動 • IPoE協議会 IPv6地理情報共有推進委員会 幹事 • 海賊版対策実務者意見交換会 海賊版対策技術検証チーム(WG) メンバー © J-Stream Inc. All Rights Reserved. 2

3.

コンテンツ配信側から見たDNSサーバー ▶求める役割:広域負荷分散(Global Server Load Balancing) ◼ 複数のサーバーへの負荷分散 ◼ サーバーやデータセンターの死活監視 ◼ トラヒックコントロール:キャッシュDNSサーバーのIPを使った応答 DNSサーバーのIPアドレスに加えて、ECSに 含まれるIPアドレスでもコントロールができ るようになる=より細かい制御が可能となる 構成概念図 全国ISP CDN Cache DNSサーバー 地域ISP DNSサーバー 地域 CATV 広域負荷分散 (GSLB) CDN Cache DNSサーバー 地域ISP/CATVにおいては、ユーザーの近くにキャッシュDNSサー バーを置くていただくことで、GSLB側で適切な地域判定ができる 権威DNSサーバーとしては、応答を変えるキーとな るPrefix情報(ECS含む)と応答するIP Addressの組を 管理し、コントロールする © J-Stream Inc. All Rights Reserved. 3

4.

システム構成概要:名前解決動作について Client Segment (Tokyo) ECS Header Client Segment (Osaka1) Client Segment (Osaka2) Cache DNS Server Authoritative DNS Server (F5 BIG-IP DNS v17.1) ECS Header Client Segment (Osaka3) Client Segment (Kyusyu) Authoritative DNS Server (gdnsd version 3.8.3) サンプルコンフィグを使った設定と 動作のイメージを見ていただきたい 想定地域 ECS(Subnet) Anser(ServerIP) 大阪1:Osaka1 240b:0010:0200::/41 2001:db8:10::1/128 大阪2:Osaka2 240b:0010:0280::/41 2001:db8:10::2/128 大阪3:Osaka3 240b:0010:0300::/40 2001:db8:10::5/128 九州:Kyusyu 240b:0010:0400::/39 2001:db8:20::1/128 それ以外:Tokyo ::/0 (default) 2001:db8::1/128 © J-Stream Inc. All Rights Reserved. 4

5.

オープンソース実装:gdnsd ▶gdnsd : https://gdnsd.org/ ◼ 権威DNSサーバー専用のオープンソースなDNSサーバーの実装 ◼ ヘルスチェックを使った監視や応答の切り替えなども可能 ◼ ジオロケーションデータを参照するモジュールもあり、こちらを利用した RFC 7871に準拠したECSをサ ポートする旨の記載がある © J-Stream Inc. All Rights Reserved. 5

6.
[beta]
実際のコンフィグ:gdnsd

options => {
edns_client_subnet => true
}

▶設定としては
◼ Conf : ロードバランスなどの設定
◼ Zone : confファイルで設定したリソース名
をどのリソースレコードに紐づけるかを指定
各subnetの
宛先を定義

# cat zones/example.com
$TTL 86400
@

SOA ns1 hostmaster (
2016030300 ; serial
7200 ; refresh
30M ; retry
3D ; expire
10 ; ncache

)
@ NS
ns1 A

ns1
192.168.1.69

www

10

plugins =>{
geoip => {
maps => {
my_prod_map => {
datacenters => [ dc-01, dc-02, dc-03, dc-04, default ],
nets => {
240b:0010:0200::/41 => [ dc-01 ],
240b:0010:0280::/41 => [ dc-02 ],
240b:0010:0300::/40 => [ dc-03 ],
240b:0010:0400::/39 => [ dc-04 ],
::/0 => [ default ],
}
}
}

resources => {
prod_www => {
map => my_prod_map
dcmap => {
dc-01 => [2001:db8:10::1 ],
dc-02 => [2001:db8:10::2 ],
dc-03 => [2001:db8:10::5 ],
dc-04 => [2001:db8:20::1 ],
default => [2001:db8::1 ],

右のコンフィグを
wwwに紐づける

DYNA geoip!prod_www

各宛先の回答(IP
address)を定義

gdnsd : GdnsdPluginGeoip,
https://github.com/gdnsd/gdnsd/wiki/GdnsdPluginGeoip
(Visited:2025-06-15)

}
}
}
}
}

© J-Stream Inc. All Rights Reserved.

6

7.

アプライアンス:f5 BIG-IP DNS ▶GSLBとしては老舗:2000年代初頭には使われていたと思われる ▶SLBとGSLBを連携させた監視やロードバランシングが可能 ▶設定は以下のように階層化されている WideIP • DNSサーバーの場合のドメイン名設定(FQDNの指定) • WideIPに各Poolを紐づけることで各リソースレコードを表現する Pool • 各WideIPに対応するA, AAAA, CNAMEなどの具体的なレ コードと応答するIP(Virtual Server)を紐づける VS • 監視しているサーバーのリスト (VirtualServer) © J-Stream Inc. All Rights Reserved. Pool内に複数の サーバーを設定 し、その中から ECSが指定する Prefix情報をキー として、どの サーバーを選択 させるか設定し た。 A,AAAAだけでな く、CNAMEも設 定可能 7

8.

実際のコンフィグ:F5 BIG-IP DNS ▶全体の設定として、ECSを使ったロー ドバランスを行うように設定する ▶各subnet事に応答するPool(この場合 はIPアドレス)を設定する ◼ ロードバランスメソッドとして topologyという機能を利用する ◼ IPアドレスではなくRegion(Pool)や CNAMEレコードも設定が可能 ▶これ以外にFQDN設定や監視設定など の設定が必要 f5 DevCentral Community, Using Client Subnet in DNS Requests, https://community.f5.com/kb/technicalarticles/using-clientsubnet-in-dns-requests/282196 (Visited:2025-06-15) Prefix情報と応答するIP Addressを指定 gtm global-settings load-balancing { topology-prefer-edns0-client-subnet enabled } gtm topology ldns: subnet 240b:0010:0200::/41 server: subnet 2001:db8:10::1/128 { order 1 score 100 } gtm topology ldns: subnet 240b:0010:0280::/41 server: subnet 2001:db8:10::2/128 { order 2 score 100 } Gtm topology ldns: subnet 240b:0010:0300::/40 server: subnet 2001:db8:10::5/128 { order 3 score 100 } gtm topology ldns: subnet 240b:0010:0400::/39 server: subnet 2001:db8:20::1/128 { order 4 score 100 } gtm topology ldns: subnet ::/0 server: subnet 2001:db8::1/128 { order 13 score 10 } © J-Stream Inc. All Rights Reserved. 8

9.

名前解決動作についての詳細 No. ECS有無 1 なし キャッシュDNSサーバーが リクエストするPrefix 240b:0010:0000::/40/0 2 240b:0010:0200::/40/0 3 あり 4 240b:0010:0300::/40/0 5 240b:0010:0400::/40/0 6 240b:0010:0500::/40/0 権威サーバー設定 応答内容(AAAA / Scope Subnet) Prefix : ::/0 (default) AAAA : 2001:db8::1 2001:db8::1 240b:0010:0000::/40/39 Prefix : 240b:0010:0200::/41 AAAA : 2001:db8:10::1 2001:db8:10::1 240b:0010:0200::/40/41 Prefix : 240b:0010:0280::/41 AAAA : 2001:db8:10::2 2001:db8:10::1 240b:0010:0200::/40/41 Prefix : 240b:0010:0300::/40 AAAA : 2001:db8:10::5 2001:db8:10::5 240b:0010:0300::/40/40 2001:db8:20::1 240b:0010:0400::/40/39 2001:db8:20::1 240b:0010:0400::/40/39 Prefix : 240b:0010:0400::/39 AAAA : 2001:db8:20::1 ▶ No.1はScope Subnetが/0で返ってくると予想していたが、結果は/39で返ってきた ◼ 次の設定済みPrefixが240b:0010:0200::/40から始まるので、その中で一番大きいsubnet maskを返答している ◼ 権威DNSサーバーの実装によっては/0が応答される場合もあり、実装による差異が見られる ◼ Subnetを重複させるとキャッシュDNSサーバー側のキャッシュが上書きされてしまう場合があるので注意が必要 ▶ No.2,3は権威DNSサーバー側で/41と設定しても、キャッシュDNSサーバー側のprefix設定が/40となっているので、 キャッシュDNSサーバーからのリクエストが/40 でしか流れてこない →権威DNSサーバー側で/41に個別に設定しても回答が使われない(2001:db8:10::2が使われない) © J-Stream Inc. All Rights Reserved. 9