‹

令和7年度 春期 午後Ⅱ

令和7年度 春期に実施されたネットワークスペシャリスト試験 午後Ⅱの全2問(記述式)です。事例本文・設問・解答例と解説をそのまま読めます。

この試験について:ネットワークスペシャリスト試験について

この年度を解いてみる

問1 社内ネットワークの IPv6 対応

社内ネットワークの IPv6 対応に関する次の記述を読んで,設問に答えよ。

Q 社は全国に拠点をもつ大手の電機メーカーである。Q 社で利用される社内ネットワークには IPv4 アドレスだけが割り当てられており,従業員は社内ネットワークに接続された PC を利用して,社内 Web,電子メール,ファイル共有,チャットや Web 会議などのサービスを提供する V 社 SaaS,及びインターネット上の Web サイトにアクセスして業務を行っている。

Q 社で利用している SaaS や Web サイトの IPv6 の対応状況,及び近年の IPv6 普及率の向上を踏まえ,情報システム部は IPv6 の調査と社内ネットワークの IPv6 対応について検討することにした。IPv6 の調査と社内ネットワークの IPv6 対応の検討は,情報システム部の P 主任が担当することになった。

〔社内ネットワークの概要〕

Q 社の現状の社内ネットワーク構成を図1に示す。

インターネットに V 社 SaaS がつながり,インターネットと ISP が接している。ISP にルータA がつながり,ルータA から社内ネットワーク(破線の枠)のデータセンターにあるルータB へ接続している。データセンターの中では,ルータB-FW-L2SW と縦につながり,L2SW にキャッシュ DNS サーバと DHCP サーバが接続している。FW は広域イーサ網にも接続している。広域イーサ網には拠点1(ほかの拠点も重なって描かれている)が接続し,拠点1の中では L3SW1-L2SW1 とつながり,L2SW1 に複数の PC が接続している。凡例:L2SW:レイヤー2スイッチ,L3SW:レイヤー3スイッチ,FW:ファイアウォール,ISP:インターネットサービスプロバイダ,広域イーサ網:広域イーサネットサービス網。
図1 Q 社の現状の社内ネットワーク構成(抜粋)

図1の概要を次に示す。

〔IPv6 対応の方針〕

V 社 SaaS の一部及びインターネット上の Web サイトの一部は,現時点では IPv6 に対応していない。P 主任は,社内ネットワークの IPv6 対応後も IPv4 のネットワークへの接続を確保する必要があると考えて,社内ネットワークには,IPv4 と IPv6 のデュアルスタックのネットワークを採用する方針で,IPv6 対応について検討することにした。

〔IPv6 におけるアドレス解決〕

IPv6 におけるアドレス解決では,IPv4 の ARP に相当する機能をもつ,RFC 4861 で規定された Neighbor Discovery Protocol(以下,NDP という)が用いられる。

IPv4 の ARP によるアドレス解決では,要求元のノードは,求める MAC アドレスに対応する IPv4 アドレスを ARP リクエストの a フィールドに入れて,b キャストで送信する。次に,ARP リクエストを受信した,要求された IPv4 アドレスをもつノードは,自身の MAC アドレスを ARP c の送信元 MAC アドレスフィールドに入れて,要求元のノード宛てに送信する。

IPv6 の NDP によるアドレス解決では,要求元のノードは,求める MAC アドレスに対応する IPv6 アドレスを ICMPv6 の Neighbor Solicitation(以下,NS という)メッセージに入れて,マルチキャストで送信する。次に,NS メッセージを受信した,要求された IPv6 アドレスをもつノードは,Neighbor Advertisement(以下,NA という)メッセージに自身の MAC アドレスを入れて,要求元のノード宛てに送信する。

〔IPv6 アドレスの割当て〕

NDP は,ICMPv6 の NS メッセージ及び NA メッセージに加えて Router Solicitation(以下,RS という)メッセージや Router Advertisement(以下,RA という)メッセージなども用いて,アドレス解決以外の次の機能を実現している。

IPv6 アドレスの構造,使用方法及び自動設定については,RFC 4291 で規定された IPv6 アドレス体系,及び RFC 4862 で規定された SLAAC(IPv6 Stateless Address Autoconfiguration)に規定されている。

IPv6 アドレスは 128 ビットで構成され,d ビットずつを“:”で区切って表される。2001:db8:aabb:1::1/64 を例とする IPv6 アドレスの構造を図2に示す。

2001:0db8:aabb:0001:0000:0000:0000:0001 と省略せずに書いたアドレスの上に矢印があり,前半の 2001:0db8:aabb:0001 がサブネットプレフィックス,後半の 0000:0000:0000:0001 がインタフェース識別子であることを示している。
図2 2001:db8:aabb:1::1/64 を例とする IPv6 アドレスの構造

IPv6 アドレスには,リンクローカルユニキャストアドレス(以下,LLA という)とグローバルユニキャストアドレス(以下,GUA という)がある。①LLA はある範囲でネットワークインタフェースを一意に識別できる IPv6 アドレスであり,サブネットプレフィックスには“fe80::/64”を用いる。GUA は,IPv6 で構成されるインターネットを含むグローバルなネットワークで,ネットワークインタフェースを一意に識別できる IPv6 アドレスである。

インタフェース識別子の生成方法を次に示す。

ノード1における NDP 及び SLAAC を用いた IPv6 アドレスの生成処理を図3に示す。なお,Q 社の社内ネットワークの拠点1においては,ノード1及びノード2は PC であり,ノード3は L3SW1 である。

ノード1,ノード2,ノード3の間のシーケンス図。(ⅰ) ノード1が NS メッセージ(注1)をマルチキャストアドレス宛てに送信し,ノード2とノード3はそのメッセージを破棄する。(ⅱ) ノード1が NA メッセージ(注2)をマルチキャストアドレス宛てに送信し,ノード2とノード3に届く。(ⅲ) ノード1が RS メッセージ(注3)をマルチキャストアドレス宛てに送信し,ノード2は破棄し,ノード3に届く。(ⅳ) ノード3が RA メッセージをノード1の LLA 宛てに送信する。(ⅴ) ノード1が NS メッセージ(注1)をマルチキャストアドレス宛てに送信し,ノード2とノード3は破棄する。(ⅵ) ノード1が NA メッセージ(注2)をマルチキャストアドレス宛てに送信し,ノード2とノード3に届く。凡例:破線の矢印はマルチキャストアドレス宛ての通信,実線の矢印はノード1の LLA 宛ての通信,×印はノードがメッセージを破棄することを表す。注1)宛先 IPv6 アドレスは要請ノードマルチキャストアドレスであり,ノード1が宛先アドレスフィールドに入れる IPv6 アドレスの下位 24 ビットと,宛先のノードのインタフェース識別子の下位 24 ビットが同じ場合に受信される。注2)宛先 IPv6 アドレスは全ノードマルチキャストアドレスである。注3)宛先 IPv6 アドレスは全ルータマルチキャストアドレスである。
図3 ノード1における NDP 及び SLAAC を用いた IPv6 アドレスの生成処理

図3中の処理(ⅰ)〜(ⅵ)の概要を次に示す。

ノード1は,ノード3を経由して外部のノードと通信を行うために,処理(ⅳ)で受信した,RA メッセージの送信元であるノード3の LLA を g に設定する。

Q 社のネットワークにおける IPv6 アドレスの割当てについて,P 主任が調査した結果の一部を次に示す。

PC のインタフェース識別子が疑似乱数関数を用いてランダムに生成される場合,②利用者のプライバシー保護に有用であるが,PC 管理の観点で考慮が必要になると P 主任は考えた。

〔IPv6 の名前解決〕

IPv4 の名前解決と比べて IPv6 の名前解決では,512 バイトよりも大きな DNS メッセージを送受信する可能性が高い。DNS の機能を拡張するために RFC 6891 で規定された Extension Mechanisms for DNS version 0(以下,EDNS という)では,スタブリゾルバとフルサービスリゾルバとの間,及びフルサービスリゾルバと権威 DNS サーバとの間で,UDP 上で送受信される DNS メッセージのサイズの上限を緩和している。

P 主任は,IPv6 アドレスの名前解決について,フルサービスリゾルバであるキャッシュ DNS サーバを管理する情報システム部の R 係長に相談した。2人の会話を次に示す。

P 主任が作成した DNS の通信例を図4に,V 社 SaaS の FQDN に対する AAAA レコードの応答例を図5に示す。

PC,キャッシュ DNS サーバ,V 社 SaaS の間のシーケンス図。(ⅰ) PC からキャッシュ DNS サーバへ AAAA レコードの問合せ。(ⅱ) PC からキャッシュ DNS サーバへ A レコードの問合せ。(ⅲ) キャッシュ DNS サーバから PC へ AAAA レコードの応答。(ⅳ) キャッシュ DNS サーバから PC へ A レコードの応答。(ⅴ) PC と V 社 SaaS の間で IPv6 通信(双方向)。注記 キャッシュ DNS サーバと権威 DNS サーバとの間の通信は省略する。
図4 P 主任が作成した DNS の通信例(抜粋)
;; ANSWER SECTION: に,saas.example.com. 3600 IN CNAME dual-saas.example.net.,dual-saas.example.net. 240 IN AAAA 2001:db8:xxxx::10,dual-saas.example.net. 240 IN AAAA 2001:db8:xxxx::20 の3行。;; AUTHORITY SECTION: に,example.net. 172800 IN NS ns1.example.net.,example.net. 172800 IN NS ns2.example.net. の2行。;; ADDITIONAL SECTION: に,ns1.example.net. 172800 IN A 198.51.100.α,ns2.example.net. 172800 IN A 198.51.100.β の2行。注記1 saas.example.com. は,V 社 SaaS の FQDN である。注記2 2001:db8:xxxx::10 及び 2001:db8:xxxx::20 は GUA である。注記3 198.51.100.α 及び 198.51.100.β はグローバル IPv4 アドレスである。
図5 V 社 SaaS の FQDN に対する AAAA レコードの応答例(抜粋)

③IPv6 のネットワークだけが不通となった場合に,利用している OS や Web ブラウザによっては従業員が異常に気付くことができず,情報システム部に異常を連絡できない可能性があると P 主任は考えた。IPv6 のネットワークの異常を検知するために,データセンターに監視サーバを導入して,IPv6 のインターネットへのアクセスや,各拠点の L3SW の GUA に対して ping6 コマンドによる監視を行うことにした。

〔IPv6 ネットワークの設計〕

P 主任は,図1の社内ネットワークを基に,IPv4 と IPv6 のデュアルスタックのネットワークを設計した。P 主任が設計した社内ネットワーク構成を図6に示す。

構成は図1にデータセンターの監視サーバを加えたもの。インターネットに V 社 SaaS がつながり,インターネットと ISP が接している。ISP のルータA のインタフェース a と,データセンターのルータB のインタフェース b が接続している。ルータB のインタフェース c と FW のインタフェース d が接続している。FW のインタフェース e は L2SW に接続し,L2SW に監視サーバ,キャッシュ DNS サーバ,DHCP サーバが接続している。FW のインタフェース f は広域イーサ網に接続している。広域イーサ網には拠点1の L3SW1 のインタフェース g が接続し,L3SW1 のインタフェース h は L2SW1 に接続し,L2SW1 に複数の PC が接続している。拠点1の後ろにはほかの拠点が重なって描かれている。下に“ネットワーク機器に割り当てる IPv6 アドレス一覧”の表があり,列は機器名,インタフェース名,LLA/プレフィックス長,GUA/プレフィックス長。ルータA:a は fe80::1/64,GUA は未割当て。ルータB:b は fe80::2/64,未割当て。c は fe80::1/64,未割当て。FW:d は fe80::2/64,未割当て。e は fe80::1/64,2001:db8:yyyy:1::1/64。f は fe80::1/64,2001:db8:yyyy:2::1/64。L3SW1:g は fe80::2/64,2001:db8:yyyy:2::2/64。h は fe80::1/64,2001:db8:yyyy:3::1/64。注記1 a〜h は各ネットワーク機器のインタフェース名を示す。注記2 2001:db8:yyyy:1::/64〜2001:db8:yyyy:3::/64 は GUA のサブネットプレフィックスである。
図6 P 主任が設計した社内ネットワーク構成(抜粋)

図6の概要を次に示す。

ルータB,FW 及び L3SW1 の IPv6 の経路情報を表1に示す。

列は項番,機器名,静的経路制御又は経路制御プロトコル名,宛先ネットワーク,ネクストホップの IPv6 アドレス,出口インタフェース名。項番1 ルータB,静的経路制御,::/0,ネクストホップは[ ア ],出口は[ イ ]。項番2 ルータB,静的経路制御,2001:db8:yyyy::/48,ネクストホップはなし,出口は Null(注1)。項番3 ルータB,OSPFv3,2001:db8:yyyy:3::/64,ネクストホップは[ ウ ],出口は[ エ ]。項番4 FW,OSPFv3,::/0,ネクストホップは[ オ ],出口は[ カ ]。項番5 FW,OSPFv3,2001:db8:yyyy:3::/64,ネクストホップは[ キ ],出口は[ ク ]。項番6 L3SW1,OSPFv3,::/0,ネクストホップは[ ケ ],出口は g。注1)IP パケットを廃棄するためのインタフェースである。
表1 ルータB,FW 及び L3SW1 の IPv6 の経路情報(抜粋)

IPv6 のネットワーク設計について,P 主任は情報システム部の S 課長に,図6及び表1を用いて説明した。2人の会話の一部を次に示す。

P 主任による IPv6 の調査と IPv6 対応の検討の結果は情報システム部で承認されて,社内ネットワークへの IPv6 導入において活用されることになった。

出題趣旨(IPA)

企業で利用されているインターネット上のクラウドサービスやWebサイトは,IPv6に対応したものが増えている。また,世界的にもIPv6の普及率が向上している。このような背景から,ネットワーク技術者にとって,IPv6アドレスの割当て,PCがSaaS及びWebサイトとIPv6で通信する前に行うDNS通信の流れや,IPv6の経路制御設計など,IPv6に関する基本的な知識は,今後より重要になってくる。本問では,IPv6の調査と社内ネットワークのIPv6対応の検討を題材として,IPv4及びIPv6に関する知識及び理解力を問う。

設問と解答例

設問1 解答欄3つ

本文中の a 〜 c に入れる適切な字句を答えよ。

〔a〕解答例

  • 宛先IPアドレス

〔b〕解答例

  • ブロード

〔c〕解答例

  • リプライ
解説

本文の根拠

〔IPv6 におけるアドレス解決〕

要求元のノードは,求める MAC アドレスに対応する IPv4 アドレスを ARP リクエストの a フィールドに入れて,b キャストで送信する。

〔IPv6 におけるアドレス解決〕

自身の MAC アドレスを ARP c の送信元 MAC アドレスフィールドに入れて,要求元のノード宛てに送信する。

〔IPv6 におけるアドレス解決〕

IPv6 アドレスを ICMPv6 の Neighbor Solicitation(以下,NS という)メッセージに入れて,マルチキャストで送信する。

ARP(RFC 826)の手順をそのまま埋める。要求元は,MAC アドレスを知りたい相手の IPv4 アドレスを ARP リクエストの宛先 IP アドレス(Target Protocol Address)のフィールドに入れ,同じセグメントの全ノードに届くようブロードキャストで送る。該当する IPv4 アドレスをもつノードだけが,自分の MAC アドレスを送信元 MAC アドレスに入れた ARP リプライをユニキャストで返す。

本文は直後の段落で IPv6 の NDP と対比している。IPv6 では同じ問合せを NS メッセージに入れて「マルチキャストで送信する」。IPv6 にはブロードキャストが無いので,対比の相手である b はブロードキャストだと分かる。c も,NS に対する NA が「応答」に当たることから,ARP の応答であるリプライと決まる。

間違えやすい点。a は「宛先 MAC アドレス」ではない。宛先 MAC アドレスは分からないから問い合わせているのであり,フィールドに入れるのは IP アドレスである。b は空欄の後ろに「キャスト」が続くので「ブロード」だけを書く。c も「ARP c」と続くので「リプライ」(「レスポンス」「応答」と書いても意味は同じだが,ARP の用語としてはリプライ)。

設問2(1) 解答欄3つ

本文中の d 〜 f に入れる適切な数値を答えよ。

〔d〕解答例

  • 16

〔e〕解答例

  • 48

〔f〕解答例

  • 64
解説

本文の根拠

〔IPv6 アドレスの割当て〕

IPv6 アドレスは 128 ビットで構成され,d ビットずつを“:”で区切って表される。

図2

2001:0db8:aabb:0001:0000:0000:0000:0001 と省略せずに書いたアドレス

〔IPv6 アドレスの割当て〕

e ビットの MAC アドレスから f ビットの Modified EUI-64 形式のインタフェース識別子を生成する方法

d は図2から数えられる。省略しない表記では“:”で区切られた欄が8つあり,1欄は16進数4桁。16進数1桁は4ビットなので1欄は16ビット,8欄で128ビットになる(RFC 4291 2.2節)。

e と f は RFC 4291 の付録Aにある Modified EUI-64 の作り方である。イーサネットの MAC アドレス(48ビット)の上位24ビットと下位24ビットの間に 0xFFFE の16ビットを挟み,U/L ビットを反転して64ビットのインタフェース識別子にする。64ビットという長さは,図2でインタフェース識別子が後半4欄(16ビット×4)を占めていることとも合う。

間違えやすい点は単位。d は“:”1区切りの桁数(4桁)ではなくビット数を問うている。e・f の「EUI-64」の64がそのまま f の答えになっているので,e に 64 と書かないこと。

設問2(2) 20字以内

本文中の下線①について,LLA が有効な範囲を 20 字以内で答えよ。

解答例

  • データリンク層で通信可能な範囲
解説

本文の根拠

〔IPv6 アドレスの割当て〕

①LLA はある範囲でネットワークインタフェースを一意に識別できる IPv6 アドレスであり,サブネットプレフィックスには“fe80::/64”を用いる。

〔IPv6 アドレスの割当て〕

データリンク層で通信可能な範囲にあるルータを発見する機能

リンクローカルアドレスは,名前のとおり1つのリンクの中だけで使うアドレスである。RFC 4291 2.5.6節は,リンクローカルアドレスは単一のリンク上でのアドレス付けに使うよう設計されており,ルータはリンクローカルの送信元・宛先をもつパケットを他のリンクへ転送してはならないと定めている。つまり有効範囲は,ルータを越えずに届く範囲=データリンク層で通信できる範囲である。

本文にもこの範囲を指す言い方がある。NDP の機能の説明にある「データリンク層で通信可能な範囲」である。GUA が「インターネットを含むグローバルなネットワークで」一意なのと対比されている。

20字に収める。解答例は「データリンク層で通信可能な範囲」で15字。「同一リンク内」「同じセグメント内」「ルータを越えない範囲」も同じことを言っている。「社内ネットワーク」や「拠点内」は広すぎる(拠点の中でも L3SW を越えれば別のリンク)。

設問2(3) 55字以内

図3中の処理(ⅰ)及び(ⅴ)を行う目的を,55 字以内で答えよ。

解答例

  • 同じデータリンク層上に同じIPv6アドレスを使用しているノードがいないことを確認するため
解説

本文の根拠

〔IPv6 アドレスの割当て〕

利用予定の IPv6 アドレスがほかのノードで利用されていないか確認する重複アドレス検出機能

図3の処理(ⅰ)

(ⅰ) ノード1は,仮の LLA を生成して NS メッセージに入れて送信し,ほかのノードから NA メッセージの応答がないことを確認する。

図3の処理(ⅴ)

(ⅴ) ノード1は,RA メッセージのサブネットプレフィックスと生成したインタフェース識別子を組み合わせた仮の GUA を NS メッセージに入れて送信し,ほかのノードから NA メッセージの応答がないことを確認する。

処理(ⅰ)と(ⅴ)は,NDP の3つめの機能として本文が挙げる重複アドレス検出(DAD,RFC 4862 5.4節)である。これから使う仮のアドレスを NS に入れて送り,同じアドレスを使っているノードがあれば NA で応答が返る。応答が無ければ重複は無いと判断して,(ⅱ)(ⅵ)で正式なアドレスにする。

(ⅰ)は LLA,(ⅴ)は GUA が対象なので,どちらのアドレスにも同じ確認をしている。確認する範囲は,NS がマルチキャストで届く範囲,すなわち同じデータリンク(リンク)の中である。図3の注1のとおり,NS の宛先は要請ノードマルチキャストアドレスで,同じアドレスをもつノードだけが受け取る。

55字に収める。解答例は「同じデータリンク層上に同じIPv6アドレスを使用しているノードがいないことを確認するため」で44字。要素は「同じリンク上で」「同じ IPv6 アドレス(仮のアドレス)を」「ほかのノードが使っていないことの確認」の3つ。「アドレスの重複を検出するため」だけでは,本文の機能名を言い換えただけで,何と何が重複するかが書けていない。

設問2(4) 解答欄2つ

図3中の処理(ⅱ)の正式な LLA が fe80::8:800:200c:417a であり,処理(ⅳ)の RA メッセージに含まれるサブネットプレフィックスが 2001:db8:aabb:1::/64 であった場合に,処理(ⅴ)で生成される仮の GUA 及びプレフィックス長を答えよ。

〔GUA〕解答例

  • 2001:db8:aabb:1:8:800:200c:417a

〔プレフィックス長〕解答例

  • 64
解説

本文の根拠

図2

前半の 2001:0db8:aabb:0001 がサブネットプレフィックス,後半の 0000:0000:0000:0001 がインタフェース識別子であることを示している。

図3の処理(ⅴ)

RA メッセージのサブネットプレフィックスと生成したインタフェース識別子を組み合わせた仮の GUA

〔IPv6 アドレスの割当て〕

サブネットプレフィックスには“fe80::/64”を用いる。

LLA は fe80::/64 に,ノードが生成したインタフェース識別子(下位64ビット)を付けたものである。fe80::8:800:200c:417a の“::”を展開すると fe80:0000:0000:0000:0008:0800:200c:417a となり,下位64ビットのインタフェース識別子は 0008:0800:200c:417a である。

処理(ⅴ)は,RA で受け取ったサブネットプレフィックスと,生成済みのこのインタフェース識別子を組み合わせる。2001:db8:aabb:1::/64 の上位64ビット 2001:0db8:aabb:0001 に 0008:0800:200c:417a を続けると 2001:0db8:aabb:0001:0008:0800:200c:417a。先頭の0を省略すると 2001:db8:aabb:1:8:800:200c:417a,プレフィックス長は RA のプレフィックスと同じ 64 になる。

間違えやすい点。インタフェース識別子を取り出すとき,fe80 の後ろの“::”が0の欄を3つ分表していることに注意する(欄の数を数えて8欄にそろえる)。書くときは“::”で0の連続を省略できるが,このアドレスには0だけの欄が無いので省略する箇所は無い。

設問2(5) 解答欄1つ

本文中の g に入れる適切な字句を答えよ。

〔g〕解答例

  • デフォルトルータ
  • デフォルトゲートウェイ
解説

本文の根拠

図3の処理(ⅳ)

(ⅳ) RS メッセージを受信したノード3は,GUA の生成に用いるサブネットプレフィックス,及びデフォルトルータを決定するための情報を RA メッセージに入れて,ノード1宛てに送信する。

〔IPv6 アドレスの割当て〕

ノード1は,ノード3を経由して外部のノードと通信を行うために,処理(ⅳ)で受信した,RA メッセージの送信元であるノード3の LLA を g に設定する。

外部(他のネットワーク)宛ての通信を託す先のルータを設定する,という文脈なので,g はデフォルトルータ(デフォルトゲートウェイ)である。IPv4 で DHCP から受け取っていたデフォルトゲートウェイに当たる。

本文の(ⅳ)の説明に「デフォルトルータを決定するための情報を RA メッセージに入れて」とある。RFC 4861 6.3.4節のとおり,ホストは RA を受け取ると,その送信元アドレス(ルータのリンクローカルアドレス)をデフォルトルータの一覧に加える。ノード3(L3SW1)の LLA がデフォルトルータになるのはこのためである。後の箇条書きの「SLAAC を利用して,PC の LLA,GUA,及び g を自動で設定することができる」も同じ語が入る。

解答例は「デフォルトルータ」又は「デフォルトゲートウェイ」。IPv6 の規格(RFC 4861)の用語はデフォルトルータで,本文もこの語を使っているが,IPv4 で一般的なデフォルトゲートウェイでも同じ機能を指すので正解になる。「ネクストホップ」は経路ごとの転送先のことで,ここでは不十分。

設問2(6) 20字以内

本文中の下線②について,P 主任がこのように考えた理由を,20 字以内で答えよ。

解答例

  • PCを特定しづらくなるから
解説

本文の根拠

〔IPv6 アドレスの割当て〕

固定の MAC アドレスから Modified EUI-64 形式のインタフェース識別子を生成する方法は非推奨である。

〔IPv6 アドレスの割当て〕

PC のインタフェース識別子が疑似乱数関数を用いてランダムに生成される場合,②利用者のプライバシー保護に有用であるが,PC 管理の観点で考慮が必要になると P 主任は考えた。

MAC アドレスから作るインタフェース識別子は,どのネットワークにつないでも同じ値になるので,通信の相手や経路上の第三者がその PC を追跡できる。これが非推奨とされる理由である(RFC 8064 は,安定したインタフェース識別子に MAC アドレスを埋め込まないよう勧めている)。ランダムに生成すればこの追跡を防げるので,プライバシー保護に役立つ。

裏返すと,管理する側にとっても IPv6 アドレスから PC を突き止めにくくなる。IPv4 では DHCP サーバが IPv4 アドレスを払い出していたので,どの PC にどのアドレスを渡したかを把握できた。SLAAC でランダムに作るアドレスは PC が自分で決めるので,FW のログなどに残った IPv6 アドレスがどの PC のものかを調べにくい。これが「PC 管理の観点」での考慮点である。

20字に収める。解答例は「PCを特定しづらくなるから」で13字。講評はこの設問の正答率が低かったとしている。下線の前半(プライバシー保護)の理由を書いてしまうと,設問が問う「考慮が必要になる」理由にならない。

採点講評(IPA)

設問2では,(6)の正答率が低かった。プライバシー保護を目的として,IPv6のインタフェース識別子だけでなくMACアドレスをランダムに生成するケースも増えているので,PCがもつ識別子をランダムにすることによって得られるメリットと,新たに発生する課題について理解を深めてほしい。

設問3(1) 解答欄1つ

本文中の h に入れる適切な字句を答えよ。

〔h〕解答例

  • TCP
解説

本文の根拠

〔IPv6 の名前解決〕

EDNS を利用できるときには,両方のサーバ間で調整した最大のメッセージサイズまでであれば,512 バイトを超える DNS メッセージであっても UDP で送受信します。

〔IPv6 の名前解決〕

DNS メッセージが最大のメッセージサイズを超えるときや,EDNS に対応していない権威 DNS サーバと 512 バイトを超える DNS メッセージを送受信するときには,h で送受信することになります。

DNS は通常 UDP で送受信し,UDP で運べる大きさは EDNS が無ければ 512 バイト(RFC 1035 4.2.1節),EDNS があれば双方が通知したサイズまで(RFC 6891 6.2.3節)である。これを超える応答は,サーバが途中で切って TC(切り詰め)ビットを立てて返し,受け取った側は TCP で問い合わせ直す(RFC 7766)。

本文は,UDP で送れる場合を先に述べ,「最大のメッセージサイズを超えるとき」と「EDNS に対応していない権威 DNS サーバと 512 バイトを超える」ときを並べている。どちらも UDP の上限を超える場合なので,残る送受信の手段は TCP である。

間違えやすい点。「TCP 53番ポート」までは要らない。フラグメント(IP の分割)で送る,と考えるのは誤りで,DNS は大きなメッセージを TCP に切り替えて送る。

設問3(2) 解答欄2つ

図5中の AAAA レコードの応答について,“saas.example.com.”にアクセスするための V 社 SaaS の IPv6 アドレス,及び V 社 SaaS の IPv6 アドレスを管理している権威 DNS サーバの FQDN を,図5中の字句を用いて全て答えよ。

〔IPv6アドレス〕解答例

  • 2001:db8:xxxx::10,2001:db8:xxxx::20

〔FQDN〕解答例

  • ns1.example.net.,ns2.example.net.
解説

本文の根拠

図5

saas.example.com. 3600 IN CNAME dual-saas.example.net.,dual-saas.example.net. 240 IN AAAA 2001:db8:xxxx::10,dual-saas.example.net. 240 IN AAAA 2001:db8:xxxx::20 の3行。

図5

example.net. 172800 IN NS ns1.example.net.,example.net. 172800 IN NS ns2.example.net. の2行。

図5 注記1

saas.example.com. は,V 社 SaaS の FQDN である。

ANSWER SECTION から追う。saas.example.com. は CNAME(別名)で,正式な名前は dual-saas.example.net. である。その dual-saas.example.net. に AAAA レコードが2件あるので,V 社 SaaS の IPv6 アドレスは 2001:db8:xxxx::10 と 2001:db8:xxxx::20 の両方である。

権威 DNS サーバは AUTHORITY SECTION の NS レコードで分かる。AAAA レコードをもつ名前は example.net. ゾーンにあり,その NS が ns1.example.net. と ns2.example.net. である。ADDITIONAL SECTION の A レコード(198.51.100.α,β)は,この2台の IPv4 アドレスを添えたもの(グルー)で,FQDN ではない。

間違えやすい点。設問は「全て」に下線を引いている。AAAA も NS も2件ずつあるので,片方だけでは足りない。saas.example.com. の権威サーバ(example.com. の NS)はこの応答に載っていないので,図にない名前を推測で書かないこと。FQDN は末尾のドットまで図5のとおりに書く。

設問3(3) 45字以内

本文中の下線③について,従業員が異常に気付くことができないと P 主任が考えた理由を,45 字以内で答えよ。

解答例

  • IPv4にフォールバックしてSaaSの同じWebページにアクセスするから
解説

本文の根拠

〔IPv6 の名前解決〕

AAAA レコードと A レコードの応答をほぼ同じタイミングで受信した場合には,IPv6 を優先して通信を行います。

〔IPv6 の名前解決〕

IPv6 と IPv4 の両方に対応する Web サイトの名前解決を行う場合に,PC は AAAA レコードと A レコードを用いて名前解決を要求することで,IPv6 アドレスと IPv4 アドレスの両方を取得します。

〔IPv6 の名前解決〕

③IPv6 のネットワークだけが不通となった場合に,利用している OS や Web ブラウザによっては従業員が異常に気付くことができず,情報システム部に異常を連絡できない可能性があると P 主任は考えた。

デュアルスタックの PC は,IPv6 と IPv4 の両方のアドレスを取得し,IPv6 を優先して接続を試みる。IPv6 で接続できないと,IPv4 で接続し直す。これをフォールバックといい,OS やブラウザは待ち時間を短くするために両方を並行して試す仕組み(Happy Eyeballs,RFC 8305)を実装している。

本文の R 係長の説明のとおり,PC は AAAA と A の両方を取得しており,IPv6 だけが不通なら IPv4 で同じ Web ページが開く。利用者から見ると普段どおり使えるので,異常に気付かない。講評も「IPv4 で同じ Web ページにアクセスできることがあり,異常に気付きづらい」と書いている。本文が下線の直後で監視サーバを置くことにしたのはこのためである。

45字に収める。解答例は「IPv4にフォールバックしてSaaSの同じWebページにアクセスするから」で36字。「IPv4 に切り替わる」ことと「同じページが見える(利用者から違いが分からない)」ことの両方を入れる。講評はこの設問の正答率が低かったとしている。

採点講評(IPA)

設問3では,(3)の正答率が低かった。IPv4とIPv6のデュアルスタックのネットワークでは,IPv6のネットワークに障害が発生しても,IPv4で同じWebページにアクセスできることがあり,異常に気付きづらい。IPv6のネットワークを設計する際には,監視方法についても考慮が必要になることを理解してほしい。

設問4(1) 50字以内

図6中の a〜d のインタフェース名について,GUA を割り当てない目的を,50 字以内で答えよ。

解答例

  • インターネットからルータA,ルータB及びFWにアクセスできないようにするため
解説

本文の根拠

図6 アドレス一覧

ルータA:a は fe80::1/64,GUA は未割当て。ルータB:b は fe80::2/64,未割当て。c は fe80::1/64,未割当て。FW:d は fe80::2/64,未割当て。

図6の概要

ルータB には,ルータA の LLA をネクストホップとするデフォルトルートを設定する。

図6の概要

OSPFv3 では LLA を用いて隣接関係を確立して IPv6 の経路制御を行うので

a〜d は,ルータA とルータB の間,ルータB と FW の間のインタフェースである。LLA はリンクの外へ転送されない(RFC 4291 2.5.6節)ので,GUA を付けなければ,インターネットのどこからもこれらのインタフェースを宛先にしたパケットは届かない。ルータや FW そのものを外部からの攻撃(管理画面へのアクセスなど)にさらさないために,GUA を割り当てない。

それでも経路制御は成り立つ。本文のとおり,ルータB のデフォルトルートはルータA の LLA をネクストホップにしており,ISP のルータA もルータB の LLA をネクストホップにした静的経路をもつ。OSPFv3 も LLA で隣接関係を結ぶ(RFC 5340)。転送に必要なのはネクストホップの LLA だけなので,GUA は無くてよい。

50字に収める。解答例は「インターネットからルータA,ルータB及びFWにアクセスできないようにするため」で38字。守る対象(ルータA,ルータB,FW)と,何から(インターネットから)を書く。「GUA が不要だから」は理由であって目的ではない。

設問4(2) 45字以内

本文中の下線④について,GUA を“静的に”割り当てることによって得られる利点を,経由するネットワーク機器を調べるときに使用されるコマンド名を用いて,45 字以内で答えよ。

解答例

  • traceroute6を利用して調べるときに各機器を識別しやすくする。
解説

本文の根拠

図6の概要

④FW と各拠点の L3SW との間の,PC やサーバを接続しないネットワークに GUA を割り当てる必要はないが,静的に割り当てる

〔IPv6 の名前解決〕

データセンターに監視サーバを導入して,IPv6 のインターネットへのアクセスや,各拠点の L3SW の GUA に対して ping6 コマンドによる監視を行うことにした。

経由するネットワーク機器を調べるコマンドは traceroute(IPv6 では traceroute6)である。traceroute6 はホップリミットを1から順に増やしてパケットを送り,途中の機器が返す ICMPv6 Time Exceeded(RFC 4443 3.3節)の送信元アドレスを並べて経路を表示する。

このとき返ってくる送信元アドレスが,機器ごとに決まった GUA であれば,表示されたアドレスからどの機器を通ったかがすぐ分かる。静的に割り当てるのは,アドレスが変わらず,一覧(図6の表)と突き合わせられるようにするためである。監視サーバから拠点の L3SW へ ping6 を打つ運用とも組み合わせて,障害のあった区間を切り分けやすくなる。

45字に収める。解答例は「traceroute6を利用して調べるときに各機器を識別しやすくする。」で35字。設問が指定するコマンド名を必ず入れる。講評はこの設問の正答率は平均的だったとして,traceroute が切り分けに役立つことを挙げている。

採点講評(IPA)

設問4では,(2)の正答率は平均的であった。tracerouteコマンドは,pingコマンドと同様にネットワークの状態確認やトラブルシューティングにおいて非常に有用なツールである。障害発生時の切り分けや早期復旧にも役立つので,ネットワーク関連のコマンドやツールを使いこなすスキルを身に付けてほしい。

設問4(3) 40字以内

本文中の下線⑤の設定を行うために,各拠点の L3SW で行われる動作を,ICMPv6 のメッセージ名を用いて 40 字以内で答えよ。

解答例

  • PCが送信したRSメッセージに対してRAメッセージを応答する。
解説

本文の根拠

図6の概要

⑤PC は,SLAAC を用いて IPv6 アドレス及びデフォルトルータを設定する。

図3の処理(ⅲ)

(ⅲ) ノード1は,RS メッセージを全ルータマルチキャストアドレス宛てに送信する。

図3の処理(ⅳ)

(ⅳ) RS メッセージを受信したノード3は,GUA の生成に用いるサブネットプレフィックス,及びデフォルトルータを決定するための情報を RA メッセージに入れて,ノード1宛てに送信する。

SLAAC で PC が GUA とデフォルトルータを決めるには,ルータから RA を受け取る必要がある。PC は起動時に RS を全ルータマルチキャストアドレス宛てに送り,これを受けたルータが RA を返す(RFC 4861 6.2.6節)。拠点1では,ノード3が L3SW1 なので,各拠点の L3SW がこの役を担う。

本文の図3がこの手順そのもので,(ⅲ)で PC が RS を送り,(ⅳ)で L3SW1 がサブネットプレフィックスとデフォルトルータを決める情報を RA で返す。設問は「ICMPv6 のメッセージ名を用いて」とあるので,RS と RA の名前を使って書く。

40字に収める。解答例は「PCが送信したRSメッセージに対してRAメッセージを応答する。」で31字。L3SW は RS を受けなくても定期的に RA を送る(RFC 4861 6.2.4節)が,本文の図3の流れに沿って RS への応答として書けばよい。

設問4(4) 解答欄9つ

表1中の [ ア ] 〜 [ ケ ] に入れる適切な字句を答えよ。

〔ア〕解答例

  • fe80::1

〔イ〕解答例

  • b

〔ウ〕解答例

  • fe80::2

〔エ〕解答例

  • c

〔オ〕解答例

  • fe80::1

〔カ〕解答例

  • d

〔キ〕解答例

  • fe80::2

〔ク〕解答例

  • f

〔ケ〕解答例

  • fe80::1
解説

本文の根拠

図6 アドレス一覧

ルータA:a は fe80::1/64,GUA は未割当て。ルータB:b は fe80::2/64,未割当て。c は fe80::1/64,未割当て。FW:d は fe80::2/64,未割当て。e は fe80::1/64,2001:db8:yyyy:1::1/64。f は fe80::1/64,2001:db8:yyyy:2::1/64。L3SW1:g は fe80::2/64,2001:db8:yyyy:2::2/64。h は fe80::1/64,2001:db8:yyyy:3::1/64。

図6の概要

ルータB には,ルータA の LLA をネクストホップとするデフォルトルートを設定する。

S 課長との会話

項番3と項番5は,拠点1のネットワーク宛ての経路情報です。項番4と項番6は,ルータB から配布されるデフォルトルートによって登録される経路情報です。

LLA は同じリンク上でしか意味をもたないので,ネクストホップは「隣の機器の,こちら側のインタフェースの LLA」,出口は「自分の,そのリンクにつながるインタフェース」になる。fe80::1 が a にも c にも e にもあるように,LLA はリンクごとに重複してよい。

項番1(ルータB のデフォルトルート)はルータA へ向かう。隣はルータA の a(fe80::1),出口はルータB の b。ア=fe80::1,イ=b。項番3(ルータB から拠点1の 2001:db8:yyyy:3::/64)は FW へ向かう。隣は FW の d(fe80::2),出口は c。ウ=fe80::2,エ=c。項番4(FW のデフォルトルート)はルータB へ向かう。隣はルータB の c(fe80::1),出口は d。オ=fe80::1,カ=d。項番5(FW から 3::/64)は L3SW1 へ向かう。隣は L3SW1 の g(fe80::2),出口は f。キ=fe80::2,ク=f。項番6(L3SW1 のデフォルトルート)は FW へ向かう。隣は FW の f(fe80::1)で,出口は表にあるとおり g。ケ=fe80::1。

間違えやすい点。自分のインタフェースの LLA をネクストホップに書いてしまうこと(出口が c なら,ネクストホップは c の向かいの d)。拠点宛ての経路でも,ネクストホップに GUA(2001:db8:yyyy:2::2 など)ではなく LLA を書く。OSPFv3 が LLA で経路を交換するからである(RFC 5340)。

設問4(5) 35字以内

本文中の下線⑥について,表1中の項番2の経路情報を設定しない場合に,インターネットから未使用の GUA 宛てに送信された IP パケットを,ルータA 及びルータB はどのように処理するか。IPv4 の“TTL”と同じように用いられる,“ホップリミット”という字句を用いて 35 字以内で答えよ。

解答例

  • ホップリミットが0になるまで相互に転送し合い,廃棄する。
解説

本文の根拠

P 主任の説明

ISP のルータA には,ルータB の LLA をネクストホップとする 2001:db8:yyyy::/48 宛ての静的経路が設定されます。

表1 項番1・2

項番1 ルータB,静的経路制御,::/0,ネクストホップは[ ア ],出口は[ イ ]。項番2 ルータB,静的経路制御,2001:db8:yyyy::/48,ネクストホップはなし,出口は Null(注1)。

P 主任の説明

⑥項番2の経路情報を設定しない場合,ルーティングループが発生します

未使用の GUA(たとえば 2001:db8:yyyy:ff::1)宛てのパケットをたどる。ルータA は /48 の静的経路に従ってルータB へ送る。ルータB には,社内で使っている /64(1::〜3::)の経路はあるが,未使用のサブネットの経路は無い。項番2が無ければデフォルトルート(項番1)に当たり,ルータA へ送り返す。ルータA はまた /48 でルータB へ送る。これがルーティングループである。

ループは永遠には続かない。IPv6 ヘッダーのホップリミット(RFC 8200。IPv4 の TTL に当たる)は,ルータが転送するたびに1減り,0になったパケットは廃棄される(ICMPv6 Time Exceeded を返す。RFC 4443 3.3節)。項番2の Null 経路があれば,ルータB は /48 の中の未使用アドレス宛てをその場で捨てるので,往復は起きない。

35字に収める。解答例は「ホップリミットが0になるまで相互に転送し合い,廃棄する。」で28字。「ルータA とルータB の間で行き来する」ことと「ホップリミットが0で廃棄される」ことの両方を書く。

設問4(6) 25字以内

本文中の下線⑦について,表1中の項番2の経路情報が選択されるのはなぜか。25 字以内で答えよ。

解答例

  • ロンゲストマッチによって選択されるから
解説

本文の根拠

P 主任の説明

⑦項番1と項番2の両方の経路情報に該当する IP パケットの転送では,ルータB は項番2の経路情報を選択します

表1 項番1・2

項番1 ルータB,静的経路制御,::/0,ネクストホップは[ ア ],出口は[ イ ]。項番2 ルータB,静的経路制御,2001:db8:yyyy::/48,ネクストホップはなし,出口は Null(注1)。

ルータは,宛先に当てはまる経路が複数あるとき,プレフィックス長が最も長い(最も具体的な)経路を選ぶ。これをロンゲストマッチ(最長一致)という。

項番1の ::/0 はプレフィックス長0で全ての宛先に当てはまる。項番2の 2001:db8:yyyy::/48 は長さ48で,Q 社のアドレスだけに当てはまる。両方に当たるパケット(Q 社のアドレス宛て)では,長い /48 の項番2が選ばれる。さらに社内で使っている /64(項番3など)があれば,そちらがもっと長いので優先され,項番2は「使っていない残り」だけを受け持つ。

25字に収める。解答例は「ロンゲストマッチによって選択されるから」で19字。「プレフィックス長が長い経路が優先されるから」でも同じ意味になる。どちらも静的経路なので,アドミニストレーティブディスタンスやメトリックの比較で決まるのではない。

設問4(7) 解答欄1つ

本文中の i に入れる適切な字句を答えよ。

〔i〕解答例

  • NAPT
解説

本文の根拠

図1の概要

ルータB にはデフォルトルート及び NAPT を設定している。

S 課長との会話

IPv4 のネットワークでは FW によるアクセス制御に加えて,ルータB に i を設定しているので,インターネットから社内ネットワークには簡単に通信できない設計になっています。

現状のルータB には,図1の概要に書かれているとおり NAPT が設定されている。NAPT(RFC 3022)は,社内のプライベートアドレスとポート番号を,グローバルアドレス1つと別のポート番号に対応付けて変換する。対応表は社内から外へ出た通信で作られるので,外から始まる通信には変換先が無く,社内に届かない。これが「簡単に通信できない」理由である。

IPv6 では,全ての PC に GUA を割り当てるので,アドレス変換をしない。インターネットから社内の PC の GUA を宛先にしたパケットがそのまま届きうるので,FW のアクセス制御だけが防壁になる。本文が「慎重に検討する必要があります」と言うのはこのためである。

間違えやすい点。「NAT」と答えると,アドレスだけを1対1で変換する方式も含み,本文の図1の概要にある語とも違う。本文に出てくる語をそのまま使って NAPT と書く。

設問4(8) 20字以内

本文中の下線⑧について,PMTUD によって何が検出されるか。20 字以内で答えよ。

解答例

  • 通信経路における最小のMTU
解説

本文の根拠

P 主任の説明

例えば,中継する機器が MTU サイズよりも大きいサイズの IP パケットを転送できないときに,⑧中継する機器から送信元にタイプ2の ICMPv6 メッセージである“Packet Too Big”を送信する PMTUD(Path MTU Discovery)に利用されています。

IPv6 では,ルータはパケットを分割(フラグメント)しない。送信元だけが分割できる(RFC 8200 4.5節)。そこで送信元は,経路上で通せる最大のパケットサイズ,つまり経路上の各リンクの MTU のうち最も小さい値(パス MTU)を知っておく必要がある。これを求めるのが PMTUD(RFC 8201)である。

送信元が大きなパケットを送り,途中の機器が次のリンクの MTU を超えると判断すると,Packet Too Big(ICMPv6 タイプ2,RFC 4443 3.2節)にそのリンクの MTU を入れて送信元へ返す。送信元はその値に合わせて送り直し,これを繰り返して最小の MTU に行き着く。FW がこの ICMPv6 を拒否すると,送信元は MTU を知ることができず,大きなパケットだけが届かない障害になる。

20字に収める。解答例は「通信経路における最小のMTU」で14字。「パス MTU」と答えても同じ意味だが,何を指すか(経路上の最小の MTU)まで書くほうが確実。

出典:令和7年度 春期 ネットワークスペシャリスト試験 午後Ⅱ 問1(表記を一部改変)

問2 IoT システムの設計

IoT システムの設計に関する次の記述を読んで,設問に答えよ。

Y 社は,LP ガスメーターを製造し,全国の LP ガス販売業者に販売している。このたび,Y 社では,LP ガス販売業者向けに LP ガス使用量の遠隔検針サービスを開始することになり,遠隔検針機能をもつ Y 社製 LP ガスメーター(以下,G メーターという),G メーターを管理するサーバなどから構成される IoT システムを開発することにした。

IoT システム開発プロジェクトチームの責任者には,W 課長が任命された。W 課長は,IoT システムの要件として次の二つを設定し,プロジェクトチームのメンバーでネットワーク技術者の X 主任に,IoT システムの機能と構成の検討を指示した。

〔IoT 向けの無線技術の調査と無線回線の選定〕

最初に,X 主任は,IoT 向けの無線技術を調査し,調査結果を次のようにまとめた。

調査の結果,LTE-M を利用すれば全国の幅広い地域で IoT システムを稼働させることができることが分かった。次に,X 主任は,LTE-M を利用した IoT 向けのサービスを提供している企業の中から Z 社を選定し,Z 社の IoT 向け通信サービスについて調査することにした。

〔Z 社の IoT 向け通信サービスの調査〕

Z 社の IoT 向け通信サービスは,LPWA 閉域接続サービスと IPsec VPN を用いて顧客ごとに閉域網を構成する。

Z 社の IoT 向け通信サービスを利用したときの IoT システムの構成を図1に示す。

複数の G メーターが LTE-M の無線で,Z 社の IoT 向け通信サービス(破線の枠)の中の LPWA 閉域接続サービスに接続している。LPWA 閉域接続サービスの中の GW は,Z 社サービス拠点のルータに接続し,ルータは IPsec ルータ1に接続している。IPsec ルータ1はインターネットを介して Y 社サービス拠点の IPsec ルータ2に接続し,IPsec ルータ2は G メーター管理サーバに接続している。凡例:GW:IP ネットワークに接続するためのゲートウェイ。注記 G メーター管理サーバは,G メーターと通信して検針データを収集するサーバである。
図1 Z 社の IoT 向け通信サービスを利用したときの IoT システムの構成(抜粋)

Z 社は,GW とルータとの間を専用線で接続し,Z 社サービス拠点と Y 社サービス拠点との間は IPsec VPN で接続することによって,Y 社向けの閉域網を構成する。

図1中の IPsec ルータ1で動作する IKEv2 は,IPsec ルータ2との間で,四つのメッセージの交換を g 往復で行い,SAD(Security Association Database)を作成する。IPsec ルータ1の SPD(Security Policy Database)中のセレクターには,h 宛てのパケットを受信したとき,SAD を参照して IPsec の処理を行うことが設定されている。

閉域網が構成されることによって,G メーターと IPsec ルータ2に接続する予定の G メーター管理サーバとの通信は,プライベート IP アドレスで行うことができる。G メーターには,通信事業者が契約者を識別する情報を記録している i カードを装着する。

X 主任は,Z 社の IoT 向け通信サービスの利用料を,次の条件を基に試算した。

この条件から,Z 社の IoT 向け通信サービスを利用すると,1か月が 30 日の場合,G メーター1台当たりの検針に必要な1か月の利用料は j 円なので,LP ガス販売業者向けに安価な遠隔検針サービスを提供できることが分かった。

次に X 主任は,G メーターと G メーター管理サーバとの間でデータを送受信するための通信プロトコルを検討した。IoT 向けの通信プロトコルには,RFC 7252 で標準化された CoAP(Constrained Application Protocol)と OASIS 標準メッセージングプロトコルである MQTT(Message Queuing Telemetry Transport)がある。CoAP は,Web システムにおける API の形式である k アーキテクチャを採用しているので,Web 技術で IoT システムを構築する場合に適している。そこで,X 主任は,CoAP について調査した。

〔CoAP の調査〕

CoAP は,伝送効率を考慮して標準では UDP を利用し,データの保護が必要な場合は,RFC 9147 で標準化された DTLS(Datagram TLS)を利用することができる。

CoAP のメッセージ形式を図2に示す。

32 ビット幅のメッセージ形式の図。先頭行は左から Ver,T,TKL(ここまでビット0〜7),コード(ビット8〜15),メッセージ ID(ビット16〜31)。2行目以降は“トークン,オプション,アプリケーションのデータなど”。凡例:Ver:バージョン(2ビット),T:タイプ(2ビット),TKL:トークン長(4ビット)。注記 先頭の4バイトは固定長ヘッダーである。
図2 CoAP のメッセージ形式

CoAP では,確認が必要なメッセージ(以下,CON という),確認が不要なメッセージ(以下,NON という),確認応答メッセージ(以下,ACK という),リセットメッセージの4種類が定義されており,図2中のタイプでメッセージ種類を指定する。CoAP サーバ及び CoAP クライアントは,CON を受信したときは ACK を返送し,NON を受信したときは ACK を返送しない。

図2中のコードは,要求の場合,メソッドコードを示し,応答の場合,レスポンスコードを示す。メソッドコードを表1に,レスポンスコードを表2に示す。

列はコード,メソッド名,説明。0.01 GET:指定したリソースを取得する。0.02 POST:指定したリソースを作成する。0.04 DELETE:指定したリソースを削除する。
表1 メソッドコード(抜粋)
列はコード,状態,説明。2.01 Created:リクエストが正常に処理され,指定したリソースが作成された。2.02 Deleted:リクエストが正常に処理され,指定したリソースが消去された。2.05 Content:リクエストが正常に処理され,指定したリソースが取得された。
表2 レスポンスコード(抜粋)

メッセージ ID は,要求と応答のメッセージを関連付けるとともに,メッセージの重複を検出するのに使用される。CoAP は,l 層のプロトコルである UDP 上での動作を前提としている。通信品質の劣るネットワークなどでは,パケットが m で到着したり,n して出現したり,通知なしに消失したりすることがあるので,CoAP は,メッセージ ID を利用することによって,送受信が正しく行われるための仕組みを実装している。

トークンは,要求した情報と応答された情報を関連付けるために使用される。CoAP クライアントはトークンの値によって,どの要求に対して応答された情報なのかを判断する。

CON と ACK を用いた通信例を図3に示す。

2つのシーケンス図。(ⅰ) 複数のサーバへの CON 連続送信の場合:CoAP クライアントが CoAP サーバ1へ CON〔0x7d34〕を,続けて CoAP サーバ2へ CON〔0x75f0〕を送信し,その後 CoAP サーバ1から ACK〔0x7d34〕,CoAP サーバ2から ACK〔0x75f0〕が返る。(ⅱ) ACK 不達の場合:CoAP クライアントが CoAP サーバへ CON〔0x81ab〕を送信し,時間 a の後,さらに時間 b が経過してから CON〔0x81ab〕を再送し,CoAP サーバから ACK〔0x81ab〕が返る。注記1 〔〕内の 0x は,x の後ろに続く数字又は文字が,16 進数であることを示す。注記2 〔〕内の 16 進数は,メッセージ ID である。
図3 CON と ACK を用いた通信例

図3中の(ⅰ)では,CoAP クライアントは,CON に対して返送された ACK によって,CON が CoAP サーバに到達して処理されたことが分かることを示している。CoAP では,図3中の(ⅰ)に示したように,ACK の受信を待たずに連続して CON を送信することができる,非 o 通信が行われる。

(ⅱ)では,ACK 不達時に,CON の再送によって CON 又は ACK を確実に到達させることを示している。(ⅱ)に示したように,CoAP クライアントは CON を送信後,デフォルトのタイムアウト時間である a の時間 ACK の受信を待ち,ACK が受信できなかった場合は,指数 p と呼ばれる方式で算出した b の時間経過後に CON を再送する。図3で示したように,CoAP では,CON に対する ACK の返送及び CON の再送によって,パケットロスなどが発生するネットワークを利用した場合も,確実な通信を行うことができる。

IoT 向けの機器は,サーバにデータの提供を要求する場合がある。このような場合,要求したデータと応答されたデータを関連付けるのにトークンが利用される。

機器がサーバにデータの提供を要求したときのトークンの使用例を図4に示す。

機器からサーバへ CON〔0x1234〕GET /data(トークン 0x10)を送信し,サーバから機器へ ACK〔0x1234〕2.05 Content(トークン 0x10)“データ A”が返る。
図4 機器がサーバにデータの提供を要求したときのトークンの使用例

図4では,機器がサーバ宛ての CON の中で,提供を求めるデータに 0x10 という値のトークンを指定している。この要求を受信したサーバは,提供するデータに 0x10 という値のトークンを付与して応答する。機器は,トークン値から要求したデータとしてデータ A が回答されたことを知ることができる。

図4中の ACK には,Content のデータも含まれている。このように,CoAP では,ACK に Content のデータを加えて送信する,ピギーバックと呼ばれる応答方式が利用される。

機器が連続してサーバに異なるデータの提供を要求する場合もある。

機器が連続してサーバに異なるデータの提供を要求したときの応答例を図5に示す。

機器とサーバの間のシーケンス図。(ⅰ) 機器からサーバへ CON〔0xbc90〕GET /data1(トークン 0x71)。(ⅱ) 機器からサーバへ CON〔0xab20〕GET /data2(トークン 0x82)。(ⅲ) 機器からサーバへ CON〔0xde10〕GET /data3(トークン 0x90)。(ⅳ) サーバから機器へ ACK〔0xbc90〕。(ⅴ) サーバから機器へ ACK〔0xab20〕2.05 Content(トークン 0x82)“データ X”。(ⅵ) サーバから機器へ ACK〔0xde10〕2.05 Content(トークン 0x90)“データ Y”。(ⅶ) ACK〔0xde10〕2.05 Content(トークン 0x90)“データ Y”が機器に届く。(ⅶ) の矢印は (ⅵ) の矢印の途中から分かれている。(ⅷ) サーバから機器へ CON〔0xcdf2〕2.05 Content(トークン 0x71)“データ Z”。(ⅸ) 機器からサーバへ ACK〔0xcdf2〕。注記 (ⅵ) から分かれた (ⅶ) の矢印の記号は,ネットワーク上でパケットが転送される過程で複製されたことを示す。
図5 機器が連続してサーバに異なるデータの提供を要求したときの応答例

図5中の①(ⅳ)は,サーバが要求を受信したときにデータをすぐに送信できない場合の応答である。②(ⅱ)を受信したサーバはデータを送信できている。(ⅶ)は,ネットワーク上の何らかの原因によって,(ⅵ)と重複した ACK が機器に到達したことを示している。③(ⅶ)を受信した機器は,ACK が重複したものであると判断して,対応する処理を行う。

CoAP 通信で,データの保護が必要な場合は DTLS を利用する。DTLS は,TCP 通信のアプリケーション層のデータを暗号化する TLS の機能を UDP に適用した技術である。

DTLS バージョン 1.3(以下,DTLS 1.3 という)は,TLS バージョン 1.2(以下,TLS 1.2 という)と異なった方法で ClientHello メッセージの送信を求める。

TLS 1.2 と DTLS 1.3 のハンドシェークの違いを図6に示す。

2つのシーケンス図。(1) TLS 1.2 のハンドシェーク(抜粋):(ⅰ) TLS クライアントから TLS サーバへ ClientHello,(ⅱ) TLS サーバから TLS クライアントへ ServerHello,以下,省略。(2) DTLS 1.3 のハンドシェーク(抜粋):(ⅰ) DTLS クライアントから DTLS サーバへ ClientHello,(ⅱ) DTLS サーバから DTLS クライアントへ HelloRetryRequest + cookie,(ⅲ) DTLS クライアントから DTLS サーバへ ClientHello + cookie,(ⅳ) DTLS サーバから DTLS クライアントへ ServerHello,以下,省略。
図6 TLS 1.2 と DTLS 1.3 のハンドシェークの違い

図6中の(1)に示した TLS 1.2 のハンドシェークを UDP 上で行うと,④攻撃者が(ⅰ)の ClientHello メッセージの送信元を偽装して送信した場合,TLS サーバはパケットサイズの大きな(ⅱ)の ServerHello メッセージを返送することになり,TLS サーバが DDoS 攻撃の加害者になるおそれがある。この攻撃に対処するために,(2)に示した DTLS 1.3 のハンドシェークでは,(ⅰ)の ClientHello メッセージを受信した DTLS サーバが,(ⅱ)の HelloRetryRequest メッセージに cookie を添付して送信する。(ⅱ)を受信した DTLS クライアントは,受信した cookie を添付した(ⅲ)の ClientHello メッセージを再度送信する。⑤DTLS サーバは,(ⅲ)に添付された cookie を検査し,cookie が不正な場合は対応する処理を行う。

無線回線の選定及び G メーターと Y 社拠点に導入する G メーター管理サーバとの間で利用する CoAP の調査が終わったので,X 主任は,IoT システムの機能と構成の検討に取り掛かった。

〔IoT システムの機能と構成の検討〕

まず,X 主任は,G メーター開発技術者から G メーターが送受信できる情報の説明を受け,次の2点の主要な機能を実現するための方式を検討した。

G メーター管理サーバは数万台の G メーターを管理することを前提に,G メーターで CoAP クライアント機能を,G メーター管理サーバで CoAP サーバ機能を動作させることにした。

X 主任が考えた,G メーターの動作を次に示す。

(1)について,G メーターは1時間ごとに LP ガスの流量積算値を測定して,測定時刻と測定値(以下,測定データという)をメモリに記録し,毎日午前0時の測定の後,⑥ランダムな時間経過後に,前日に測定した1時間ごとの測定データを 24 回に分けて G メーター管理サーバに送信する。⑦LP ガスの流量積算値の測定又は測定データ送信後,次の測定を行う時刻までの間は,G メーターはスリープ状態になる。

(2)について,G メーターはウェイクアップして測定を行うタイミングを利用して,G メーター自身の稼働状態をチェックし,異常を検知したときに異常内容を G メーター管理サーバに送信する。

X 主任は,G メーターの動作を基に,G メーターと G メーター管理サーバとの間の通信方法をまとめた。G メーターと G メーター管理サーバとの間の通信の概要を図7に,G メーターによる測定と測定データの送信タイミングを図8に示す。

2つのシーケンス図。(1) 遠隔検針の通信:G メーターから G メーター管理サーバへ CON〔0x11ab〕POST /0時測定データ,管理サーバから ACK〔0x11ab〕2.01 Created。続いて CON〔0x22cd〕POST /1時測定データ,ACK〔0x22cd〕2.01 Created。途中を省略して,最後に CON〔0x99ef〕POST /23時測定データ,ACK〔0x99ef〕2.01 Created。(2) 異常通知の通信:G メーターから G メーター管理サーバへ CON〔0x1234〕POST /異常情報,管理サーバから ACK〔0x1234〕2.01 Created。
図7 G メーターと G メーター管理サーバとの間の通信の概要
G メーターと G メーター管理サーバの2本の時間軸。G メーターの軸には1時,(省略),23時,0時,1時,2時に測定(▽)の印がある。0時の測定の後,1時の測定までの間に,測定データの送信(▼)が複数回(…で省略)あり,それぞれ G メーター管理サーバへ矢印が向かっている。凡例:▽:測定,▼:測定データの送信。
図8 G メーターによる測定と測定データの送信タイミング

図7中の(1)及び図8に示したように,G メーターは,毎日午前0時の測定を行った後,1時までの間のランダムな時間経過後に,1時間ごとに記録した1日分 24 件の測定データを,それぞれ POST メソッドで G メーター管理サーバに送信する。これによって,図7中の(1)では,G メーターが POST メソッドを 24 回発行することになる。⑧CoAP でやり取りされる IP パケットの数は,HTTP バージョン 1.1 を利用して同様の方法で測定データを送信する場合と比べると少ないので,測定データの通信時間は短くて済む。

図7で示した CoAP 通信で DTLS を利用すると,G メーターで実施する通信処理の負荷が,G メーターの性能に影響を与えるおそれがある。そこで,X 主任は,⑨今回開発する IoT システムでは,DTLS を利用しなくても CoAP 通信のセキュリティは確保されると判断し,DTLS は利用しないことにした。

G メーターは図8に示した動作を行うので,時計機能の実装が必要になる。G メーターに精度の高いリアルタイムクロックを実装しても,⑩G メーターを長時間稼働させると時刻の誤差が無視できないほど大きくなるおそれがある。そこで,X 主任は,⑪G メーターに時刻の誤差を抑えるための処理を組み込むことにした。

これらの検討を基に,X 主任は,IoT システムの構成を設計した。X 主任が設計した IoT システムの構成を図9に示す。

G メーター―h1(複数)と G メーター―hz(複数)が LTE-M の無線で LPWA 閉域接続サービスに接続している。LPWA 閉域接続サービスの中の GW は,Z 社サービス拠点のルータに接続し,ルータは IPsec ルータ1に接続している。IPsec ルータ1はインターネットに接続している。インターネットには,LP ガス販売業者 h1 〜 LP ガス販売業者 hz(それぞれ管理用 PC がある)が接続している。Y 社サービス拠点では,インターネットに IPsec ルータ2と FW がそれぞれ接続している。IPsec ルータ2は G メーター管理サーバに接続し,G メーター管理サーバは FW にも接続している。FW は DMZ(破線の枠)の L2SW に接続し,L2SW に情報提供サーバ,メールサーバ,NTP サーバが接続している。G メーターと G メーター管理サーバには網掛けがある。凡例:L2SW:レイヤー2スイッチ,FW:ファイアウォール。注記1 図中の網掛けは,CoAP 通信を行う機器を示す。注記2 G メーター―h1 は,LP ガス販売業者 h1 社が所有する G メーターであり,G メーター―hz は,LP ガス販売業者 hz 社が所有する G メーターである。
図9 X 主任が設計した IoT システムの構成(抜粋)

図9中の Y 社サービス拠点のサーバは,NTP サーバとの間で時刻同期を行う。

G メーター管理サーバは,全 G メーターから1日分の測定データを受信した後に,2時から G メーターごとに LP ガス消費量などを集計する。集計したデータは LP ガス販売業者別に情報提供サーバに送信される。情報提供サーバは,受信した情報を LP ガス販売業者向けに公開する。

G メーターから送信される異常情報は,G メーター管理サーバを介して情報提供サーバに送信される。情報提供サーバは,LP ガス販売業者宛ての異常通知メールを作成し,メールサーバに送信する。

IoT システムの機能と構成の検討が完了したので,X 主任は,検討結果を W 課長に報告した。W 課長は,報告内容を基に,IoT システム開発の概要を経営会議で提案した。提案内容が承認され,IoT システム開発プロジェクトが本格的に開始されることになった。

出題趣旨(IPA)

様々なものをインターネットに繋げるIoTが普及してきている。IoTでは,無線通信,通信プロトコル及び情報セキュリティに関する技術などについて,IoT向けの技術の理解がネットワーク技術者に求められる。本問では,LPガス消費量の遠隔検針を題材として,ネットワークの設計,構築,運用に関わる受験者が,実務や学習などを通して蓄積したネットワーク及びネットワークセキュリティ技術が,LPWA(Low Power Wide Area)を利用する無線回線の選択,CoAP(Constrained Application Protocol)の利用検討,及びIoTシステムの情報セキュリティ対策の検討などに活用できるかどうかを問う。

設問と解答例

設問1 解答欄6つ

本文中の a 〜 f に入れる適切な字句を答えよ。

〔a〕解答例

  • 消費

〔b〕解答例

  • 非セルラー

〔c〕解答例

  • セルラー

〔d〕解答例

  • ISM

〔e〕解答例

  • 干渉

〔f〕解答例

  • 3GPP
解説

本文の根拠

〔IoT 向けの無線技術の調査と無線回線の選定〕

IoT 向けには,LPWA(Low Power Wide Area)と呼ばれる,低 a 電力の無線通信技術が利用される。

〔IoT 向けの無線技術の調査と無線回線の選定〕

LPWA は,セルラー系と非セルラー系の二つに大別される。b 系には LoRaWAN,Sigfox などがあり,c 系には LTE-M(LTE Cat.M1),NB-IoT(LTE Cat.NB1)などがある。

〔IoT 向けの無線技術の調査と無線回線の選定〕

920 MHz 帯は Wi-Fi が利用する周波数帯と同様に,d バンドと呼ばれる周波数帯であるが,2.4 GHz 帯と比べて電波 e の影響が少ない。

〔IoT 向けの無線技術の調査と無線回線の選定〕

LTE-M,NB-IoT は,f と呼ばれる標準化プロジェクトが作成した技術仕様を基に,通信事業者が全国規模で構築した LTE 網でサービスが提供されている。

a は LPWA の Low Power を訳した「低消費電力」の「消費」。b と c は,携帯電話網(セルラー網)を使うかどうかで分ける。LTE-M・NB-IoT は通信事業者の LTE 網(セルラー網)を使うのでセルラー系,LoRaWAN・Sigfox は自前の基地局やゲートウェイで 920MHz 帯を使うので非セルラー系。本文は b に LoRaWAN,c に LTE-M を置いているので,b=非セルラー,c=セルラーの順になる。

d は,産業・科学・医療(Industrial, Scientific and Medical)用に割り当てられた ISM バンド。Wi-Fi の 2.4GHz 帯はこれに当たり(ITU 無線通信規則 5.150),無線局の免許なしで多くの機器が使う。本文は 920MHz 帯も同様に ISM バンドと呼ばれるとしている。e は,同じ周波数を多くの機器が使うことで起きる電波の「干渉」。2.4GHz 帯は Wi-Fi や Bluetooth,電子レンジなどが混み合うのに対し,920MHz 帯はそれより空いている。f は,LTE などの移動体通信の技術仕様を作る標準化プロジェクト 3GPP(3rd Generation Partnership Project)。LTE-M と NB-IoT は 3GPP の Release 13 で仕様化された。

講評は d と f の正答率が低かったとしている。b と c は順番を取り違えやすい(空欄の直後に並ぶ技術名で決める)。e は「減衰」と迷うが,本文は 2.4GHz 帯との比較で「影響が少ない」としており,周波数が混み合うことによる問題なので干渉である。

採点講評(IPA)

設問1では,dとfの正答率が低かった。Wi-Fiなどで利用する2.4GHz帯と920MHz帯はISM(Industrial Scientific and Medical)バンドに割当てられていること,LTEなどの移動体通信の技術仕様は3GPPで作成されていることは覚えておいてほしい。

設問2 解答欄5つ

本文中の g 〜 k に入れる適切な字句又は数字を答えよ。

〔g〕解答例

  • 2

〔h〕解答例

  • Gメーター管理サーバ

〔i〕解答例

  • SIM

〔j〕解答例

  • 372

〔k〕解答例

  • RESTful
解説

本文の根拠

〔Z 社の IoT 向け通信サービスの調査〕

図1中の IPsec ルータ1で動作する IKEv2 は,IPsec ルータ2との間で,四つのメッセージの交換を g 往復で行い,SAD(Security Association Database)を作成する。

〔Z 社の IoT 向け通信サービスの調査〕

IPsec ルータ1の SPD(Security Policy Database)中のセレクターには,h 宛てのパケットを受信したとき,SAD を参照して IPsec の処理を行うことが設定されている。

〔Z 社の IoT 向け通信サービスの調査〕

G メーターには,通信事業者が契約者を識別する情報を記録している i カードを装着する。

〔Z 社の IoT 向け通信サービスの調査〕

G メーター1台当たりの1回の検針時の通信量を 100 バイトとし,1時間ごとに検針を実施する。

〔Z 社の IoT 向け通信サービスの調査〕

通信費は1か月の通信量 1,000 バイト当たり1円とし,G メーターごとに割り当てる1回線当たりの基本料金は月額 300 円とする。

〔Z 社の IoT 向け通信サービスの調査〕

CoAP は,Web システムにおける API の形式である k アーキテクチャを採用しているので,Web 技術で IoT システムを構築する場合に適している。

g:IKEv2 は IKE_SA_INIT と IKE_AUTH の2つの交換で SA を作る。それぞれ要求と応答の1往復なので,4つのメッセージを2往復でやり取りする(RFC 7296 1.2節)。h:IPsec ルータ1が IPsec で保護して送るのは,G メーターから Y 社サービス拠点へ向かうパケット,つまり図1で IPsec ルータ2の先にある G メーター管理サーバ宛てのパケットである。i:通信事業者が契約者を識別する情報を記録したカードは SIM(Subscriber Identity Module)カード。

j は計算する。1台の1日の通信量は 100 バイト × 24 回=2,400 バイト,30 日で 72,000 バイト。1,000 バイト当たり1円なので通信費は 72 円。基本料金 300 円を足して 372 円になる。k:CoAP は Web と同じくリソースを URI で指定し,GET・POST・DELETE などのメソッドで操作する REST の考え方に沿っている(RFC 7252 の冒頭は“RESTful”な環境向けの Web 転送プロトコルと説明している)。本文の表1にもメソッドコードが並んでいる。

間違えやすい点。g は「メッセージの数(4)」ではなく往復の数を問うている。h は IP アドレスではなく機器名で答える(本文には IP アドレスが出てこない)。j は基本料金の足し忘れと,1日24回(1時間ごと)の掛け忘れに注意。k は空欄の後ろが「アーキテクチャ」なので REST でも意味は通るが,解答例は RESTful。

設問3(1) 解答欄5つ

本文中の l 〜 p に入れる適切な字句を答えよ。

〔l〕解答例

  • トランスポート

〔m〕解答例

  • 順不同

〔n〕解答例

  • 重複

〔o〕解答例

  • 同期

〔p〕解答例

  • バックオフ
解説

本文の根拠

〔CoAP の調査〕

CoAP は,l 層のプロトコルである UDP 上での動作を前提としている。通信品質の劣るネットワークなどでは,パケットが m で到着したり,n して出現したり,通知なしに消失したりすることがあるので

〔CoAP の調査〕

CoAP では,図3中の(ⅰ)に示したように,ACK の受信を待たずに連続して CON を送信することができる,非 o 通信が行われる。

〔CoAP の調査〕

ACK が受信できなかった場合は,指数 p と呼ばれる方式で算出した b の時間経過後に CON を再送する。

l:UDP は TCP と並ぶトランスポート層のプロトコル。m・n:RFC 7252 の4節は,CoAP が UDP のような信頼性の無いトランスポートに載るため,メッセージが順序どおりでなく到着したり,重複して現れたり,通知なく失われたりしうると述べている。本文の文はこれに当たり,m は「順不同」,n は「重複」。

o:図3の(ⅰ)では,サーバ1への CON の ACK を待たずにサーバ2へ CON を送っている。応答を待たずに次へ進むやり方は非同期通信である(RFC 7252 の冒頭も CoAP が非同期のメッセージ交換を扱うとしている)。p:RFC 7252 4.2節では,CON を送ったら ACK_TIMEOUT(既定2秒)に乱数係数(既定1.5まで)を掛けた時間だけ待ち,届かなければ再送し,再送のたびに待ち時間を2倍にする。これが指数バックオフ(exponential back-off)で,図3(ⅱ)の a が最初の待ち時間,b がその後の待ち時間に当たる。

講評は p の正答率が低かったとしている。講評のとおり,バックオフはイーサネット(CSMA/CD の衝突後の再送)でも使われる考え方である。o は空欄の前に「非」があるので「同期」だけを書く。m は「順番どおりでない」の意味を3字で表した「順不同」。

採点講評(IPA)

設問3では,(1)のp及び(6)の“判断できること”の正答率が低かった。pのバックオフは,再送時の成功率を高めるためにイーサネットでも利用されている技術なので,覚えておいてほしい。DTLSのハンドシェークに対する攻撃には複数のパターンが考えられるが,“判断できること”では,cookieの作成方法を基に,正答を導き出してほしい。

設問3(2) 解答欄2つ

本文中の下線①について,(ⅳ)で送信できなかったデータが送信されるメッセージを,図5中の(ⅰ)〜(ⅸ)で答えよ。また,そのメッセージが(ⅰ)の要求に対する応答であると判断できる理由を,15 字以内で答えよ。

〔メッセージ〕解答例

  • ⅷ

〔理由〕解答例

  • トークン値が一致するから
解説

本文の根拠

図5

(ⅰ) 機器からサーバへ CON〔0xbc90〕GET /data1(トークン 0x71)。

図5

(ⅳ) サーバから機器へ ACK〔0xbc90〕。

図5

(ⅷ) サーバから機器へ CON〔0xcdf2〕2.05 Content(トークン 0x71)“データ Z”。

〔CoAP の調査〕

CoAP クライアントはトークンの値によって,どの要求に対して応答された情報なのかを判断する。

(ⅳ)は(ⅰ)と同じメッセージ ID 0xbc90 の ACK だが,データ(Content)が付いていない空の ACK である。サーバは「要求は受け取った」とだけ返し,データの用意ができてから改めて送る。RFC 7252 5.2.2節の Separate Response(分離応答)で,後から送る応答は新しい CON になる。

図5で後から来るのは(ⅷ)の CON〔0xcdf2〕で,2.05 Content とデータ Z を運んでいる。メッセージ ID は 0xcdf2 で(ⅰ)とは違うが,トークンが 0x71 で(ⅰ)のトークンと同じである。本文のとおり,どの要求への応答かはトークンで判断するので,(ⅷ)が(ⅰ)への応答だと分かる。(ⅸ)の ACK は,機器がこの CON を受け取ったことをサーバに知らせている。

理由は15字に収める。解答例は「トークン値が一致するから」で12字。「メッセージ ID が一致するから」は誤り。メッセージ ID はメッセージ1つごとの確認(CON と ACK の対応)に使うもので,分離応答では変わる。

設問3(3)

本文中の下線②について,サーバが送信した ACK を,図5中の(ⅰ)〜(ⅸ)で答えよ。

解答例

  • ⅴ
解説

本文の根拠

図5

(ⅱ) 機器からサーバへ CON〔0xab20〕GET /data2(トークン 0x82)。

図5

(ⅴ) サーバから機器へ ACK〔0xab20〕2.05 Content(トークン 0x82)“データ X”。

〔CoAP の調査〕

このように,CoAP では,ACK に Content のデータを加えて送信する,ピギーバックと呼ばれる応答方式が利用される。

(ⅱ)の CON はメッセージ ID 0xab20,トークン 0x82 である。これに対する ACK は同じメッセージ ID をもつ(ⅴ)で,2.05 Content とデータ X が載っている。要求を受けてすぐデータを送れたので,ACK にデータを載せて返すピギーバック応答(RFC 7252 5.2.1節)になっている。

本文の図4の説明と同じ形である。図4でも CON〔0x1234〕に対して ACK〔0x1234〕が 2.05 Content とデータ A を運んでいた。対照的に(ⅰ)への ACK である(ⅳ)はデータを載せていないので,下線①の「すぐに送信できない場合」に当たる。

間違えやすい点。(ⅱ)に対応するかどうかはメッセージ ID(0xab20)で見る。トークン 0x82 も一致するが,ACK と CON を結び付けるのはメッセージ ID である。(ⅵ)と(ⅶ)は(ⅲ)への応答なので選ばない。

設問3(4) 解答欄2つ

本文中の下線③について,受信した機器が重複した ACK であると判断する理由及び実施する処理を,それぞれ 30 字以内で答えよ。

〔理由〕解答例

  • 二つのパケットのメッセージIDが同じだから

〔処理〕解答例

  • 受信した(ⅶ)のACKは処理済みなので無視する。
解説

本文の根拠

図5

(ⅵ) サーバから機器へ ACK〔0xde10〕2.05 Content(トークン 0x90)“データ Y”。(ⅶ) ACK〔0xde10〕2.05 Content(トークン 0x90)“データ Y”が機器に届く。

〔CoAP の調査〕

メッセージ ID は,要求と応答のメッセージを関連付けるとともに,メッセージの重複を検出するのに使用される。

〔CoAP の調査〕

(ⅶ)は,ネットワーク上の何らかの原因によって,(ⅵ)と重複した ACK が機器に到達したことを示している。

(ⅵ)と(ⅶ)はどちらもメッセージ ID が 0xde10 である。本文のとおり,メッセージ ID はメッセージの重複を検出するのに使う。同じ ID の ACK を2度受け取ったので,後の(ⅶ)は重複だと判断できる。

処理の側は,RFC 7252 4.5節の考え方どおり,同じメッセージは一度だけ処理する。(ⅵ)を受け取った時点で(ⅲ)の要求は完了しており,データ Y も取得済みである。(ⅶ)を改めて処理するとデータを二重に扱うことになるので,(ⅶ)は処理済みのものとして捨てる(無視する)。ACK に対してさらに ACK を返すことは無い。

それぞれ30字に収める。解答例は理由が「二つのパケットのメッセージIDが同じだから」で21字,処理が「受信した(ⅶ)のACKは処理済みなので無視する。」で24字。理由に「トークンが同じ」と書くのは不十分。トークンは要求と応答を結ぶもので,別々のメッセージでも同じ値になりうる((ⅲ)の CON と(ⅵ)の ACK も同じトークン)。

設問3(5) 解答欄2つ

本文中の下線④について,攻撃者が行う偽装の内容を,40 字以内で具体的に答えよ。また,その攻撃は,複数の DDoS 攻撃の手法の中で,何と呼ばれる手法の攻撃か。攻撃名を答えよ。

〔内容〕解答例

  • 送信元IPアドレスを,攻撃対象のホストのIPアドレスに偽装する。

〔攻撃名〕解答例

  • リフレクション
解説

本文の根拠

〔CoAP の調査〕

④攻撃者が(ⅰ)の ClientHello メッセージの送信元を偽装して送信した場合,TLS サーバはパケットサイズの大きな(ⅱ)の ServerHello メッセージを返送することになり,TLS サーバが DDoS 攻撃の加害者になるおそれがある

〔CoAP の調査〕

CoAP は,伝送効率を考慮して標準では UDP を利用し

UDP にはコネクションの確立が無いので,送信元 IP アドレスを偽ったパケットでもサーバはそのまま受け付けて応答する。攻撃者は ClientHello の送信元 IP アドレスを攻撃対象のホストの IP アドレスに書き換えて送る。サーバの ServerHello(証明書などを含む大きな応答)は攻撃対象に届く。小さな要求で大きな応答を送らせるので,攻撃者の送信量より多くのトラフィックを攻撃対象に浴びせられる。

第三者のサーバに応答を「反射」させて攻撃対象を狙うこの手法をリフレクション攻撃(応答が大きくなる点を強調してアンプ攻撃,増幅攻撃とも)という。RFC 9147 5.1節も,偽った送信元アドレスで接続開始のメッセージを送り,サーバを増幅器として使う攻撃を挙げている。本文の「TLS サーバが DDoS 攻撃の加害者になる」はこのことである。

内容は40字に収める。解答例は「送信元IPアドレスを,攻撃対象のホストのIPアドレスに偽装する。」で32字。「何を」(送信元 IP アドレスを)「何に」(攻撃対象のホストのアドレスに)の両方を書く。「送信元を偽装する」だけでは下線の言い換えにしかならない。

設問3(6) 解答欄2つ

本文中の下線⑤について,cookie が正しい場合に DTLS サーバが判断できることを,30 字以内で答えよ。また,cookie が不正のものであると判断した場合に DTLS サーバが行う対応を,30 字以内で答えよ。

〔判断できること〕解答例

  • (ⅰ)の送信元が,偽装されたものでないこと

〔対応〕解答例

  • (ⅳ)を送信せず,ハンドシェークを終了する。
解説

本文の根拠

〔CoAP の調査〕

(ⅰ)の ClientHello メッセージを受信した DTLS サーバが,(ⅱ)の HelloRetryRequest メッセージに cookie を添付して送信する。(ⅱ)を受信した DTLS クライアントは,受信した cookie を添付した(ⅲ)の ClientHello メッセージを再度送信する。

〔CoAP の調査〕

⑤DTLS サーバは,(ⅲ)に添付された cookie を検査し,cookie が不正な場合は対応する処理を行う。

図6

(ⅳ) DTLS サーバから DTLS クライアントへ ServerHello,以下,省略。

サーバは cookie を(ⅱ)でクライアントの IP アドレス宛てに送る。正しい cookie を添えた(ⅲ)が返ってくるのは,(ⅱ)を実際に受け取れた相手,つまり(ⅰ)の送信元 IP アドレスに本当にいるクライアントだけである。送信元を偽った攻撃者には(ⅱ)が届かないので,正しい cookie を返せない。RFC 9147 5.1節も,cookie によって攻撃者・クライアントが cookie を受け取れることを強制し,偽った IP アドレスによる DoS 攻撃を難しくすると説明している。

cookie が不正なら,(ⅰ)の送信元は偽装されていた疑いがある。大きな ServerHello((ⅳ))を送れば④の攻撃に加担するので,送らずにハンドシェークを打ち切る。RFC 9147 5.1節は,不正な cookie の ClientHello を受けたサーバは illegal_parameter アラートでハンドシェークを終了しなければならないとしている。

それぞれ30字に収める。解答例は判断できることが「(ⅰ)の送信元が,偽装されたものでないこと」で21字,対応が「(ⅳ)を送信せず,ハンドシェークを終了する。」で22字。講評は「判断できること」の正答率が低かったとし,cookie の作成方法(相手の IP アドレスに結び付けて作る)から考えるよう求めている。「cookie が改ざんされていない」では,何を確かめたのかが言えていない。

採点講評(IPA)

設問3では,(1)のp及び(6)の“判断できること”の正答率が低かった。pのバックオフは,再送時の成功率を高めるためにイーサネットでも利用されている技術なので,覚えておいてほしい。DTLSのハンドシェークに対する攻撃には複数のパターンが考えられるが,“判断できること”では,cookieの作成方法を基に,正答を導き出してほしい。

設問4(1) 35字以内

本文中の下線⑥について,測定データの送信をランダムの時間控えることによる効果を,35 字以内で答えよ。

解答例

  • Gメーター管理サーバやネットワークへの負荷の集中が避けられる。
解説

本文の根拠

〔IoT システムの機能と構成の検討〕

G メーター管理サーバは数万台の G メーターを管理することを前提に

〔IoT システムの機能と構成の検討〕

⑥ランダムな時間経過後に,前日に測定した1時間ごとの測定データを 24 回に分けて G メーター管理サーバに送信する

〔IoT システムの機能と構成の検討〕

毎日午前0時の測定を行った後,1時までの間のランダムな時間経過後に,1時間ごとに記録した1日分 24 件の測定データを,それぞれ POST メソッドで G メーター管理サーバに送信する。

G メーターは数万台あり,どれも午前0時に測定する。測定の直後に一斉に送信すると,数万台分の通信が同じ瞬間に G メーター管理サーバと閉域網(LTE 網,IPsec VPN)に集中する。1台ずつ 0時〜1時の間のランダムな時刻にずらせば,送信が1時間に散らばり,負荷がならされる。

本文は「数万台」を前提に置き,送信を「1時までの間のランダムな時間経過後」としている。さらに1台当たり 24 回に分けて送るので,同時に送れば数十万件の要求が重なる。集中すれば,サーバの処理が追いつかなかったり,パケットが失われて CoAP の再送が重なり,さらに混み合ったりする。

35字に収める。解答例は「Gメーター管理サーバやネットワークへの負荷の集中が避けられる。」で31字。サーバとネットワークの両方を挙げ,「集中を避ける(分散させる)」ことを書く。

設問4(2) 25字以内

本文中の下線⑦について,スリープ状態になることによる効果を,25 字以内で答えよ。

解答例

  • Gメーターの消費電力を抑えることができる。
解説

本文の根拠

要件(2)

(2) G メーターは電池で動作させるので,長時間の稼働を可能にすること

〔IoT システムの機能と構成の検討〕

⑦LP ガスの流量積算値の測定又は測定データ送信後,次の測定を行う時刻までの間は,G メーターはスリープ状態になる。

G メーターは電池で動くので,電池の持ちがそのまま稼働時間になる。測定も送信もしていない時間に回路や無線を止めておけば,電力をほとんど使わない。1時間ごとの測定と1日1回の送信の間の大半をスリープにすることで,消費電力を抑えられる。

本文冒頭の要件(2)が「電池で動作させるので,長時間の稼働を可能にすること」としており,スリープはこの要件に応えるための動作である。LPWA が「低消費電力」の無線通信技術である(設問1の a)のも同じ狙いである。

25字に収める。解答例は「Gメーターの消費電力を抑えることができる。」で21字。「電池が長持ちする」「長時間稼働できる」も同じ効果だが,消費電力を抑えることが直接の効果で,長時間稼働はその結果である。

設問4(3) 35字以内

本文中の下線⑧について,HTTP バージョン 1.1 を利用した場合,やり取りする IP パケットの数が多くなる理由を,35 字以内で答えよ。

解答例

  • TCPコネクション確立とコネクション切断の処理が行われるから
解説

本文の根拠

〔IoT システムの機能と構成の検討〕

これによって,図7中の(1)では,G メーターが POST メソッドを 24 回発行することになる。

〔IoT システムの機能と構成の検討〕

⑧CoAP でやり取りされる IP パケットの数は,HTTP バージョン 1.1 を利用して同様の方法で測定データを送信する場合と比べると少ないので,測定データの通信時間は短くて済む。

〔CoAP の調査〕

CoAP は,伝送効率を考慮して標準では UDP を利用し

HTTP/1.1 は TCP の上で動く。TCP では,データを送る前に3ウェイハンドシェーク(SYN,SYN/ACK,ACK)でコネクションを確立し,終わったら FIN と ACK でコネクションを切断する(RFC 9293)。データそのもの以外に,このためのパケットがやり取りされる。

CoAP は UDP を使うので,コネクションの確立も切断も無い。図7の(1)では1件の測定データにつき CON と ACK の2パケットで済む。HTTP/1.1 で同様に 24 件を送れば,その都度(あるいは少なくとも最初と最後に)コネクションの確立と切断のパケットが加わり,数が多くなる。講評もこの点に着目するよう求めている。

35字に収める。解答例は「TCPコネクション確立とコネクション切断の処理が行われるから」で30字。確立と切断の両方を書く。講評はこの設問の正答率が低かったとしている。「ヘッダーが大きいから」はパケットの大きさの話で,パケットの数が多くなる理由ではない。

採点講評(IPA)

設問4では,(3)の正答率が低かった。CoAPとHTTPバージョン1.1では利用するトランスポート層のプロトコルが異なる。TCPでは,UDPでは行われないコネクションの確立とコネクションの切断のためのパケットが発生することに着目して,正答を導き出してほしい。

設問4(4) 30字以内

本文中の下線⑨について,DTLS を利用しなくてもセキュリティが確保されると判断した理由を,30 字以内で答えよ。

解答例

  • CoAP通信は,Y社向けの閉域網の中で行われるから
解説

本文の根拠

〔Z 社の IoT 向け通信サービスの調査〕

Z 社は,GW とルータとの間を専用線で接続し,Z 社サービス拠点と Y 社サービス拠点との間は IPsec VPN で接続することによって,Y 社向けの閉域網を構成する。

図9 注記1

図中の網掛けは,CoAP 通信を行う機器を示す。

〔IoT システムの機能と構成の検討〕

⑨今回開発する IoT システムでは,DTLS を利用しなくても CoAP 通信のセキュリティは確保されると判断し,DTLS は利用しないことにした

CoAP 通信を行うのは,図9で網掛けされた G メーターと G メーター管理サーバだけである。その間の経路は,LTE-M の LPWA 閉域接続サービス,GW とルータの間の専用線,インターネット上は IPsec VPN で,Z 社が Y 社向けに作った閉域網の中に収まっている。

閉域網の外の第三者は CoAP のパケットに触れられず,インターネットを通る区間も IPsec で暗号化されている。DTLS で G メーターと管理サーバの間を改めて暗号化しなくても,盗聴や改ざんから守られていると判断できる。本文が DTLS を使わない理由として挙げる G メーターの処理負荷とも両立する。

30字に収める。解答例は「CoAP通信は,Y社向けの閉域網の中で行われるから」で25字。「IPsec VPN で暗号化されるから」だけでは,LTE-M と専用線の区間が抜ける。閉域網という本文の語を使うと全区間をまとめて言える。

設問4(5) 30字以内

本文中の下線⑩について,時刻の誤差によって発生する問題を,30 字以内で答えよ。

解答例

  • 測定と送信が誤った時刻に行われることになる。
解説

本文の根拠

〔IoT システムの機能と構成の検討〕

G メーターは図8に示した動作を行うので,時計機能の実装が必要になる。

〔IoT システムの機能と構成の検討〕

G メーターは1時間ごとに LP ガスの流量積算値を測定して,測定時刻と測定値(以下,測定データという)をメモリに記録し,毎日午前0時の測定の後

〔IoT システムの機能と構成の検討〕

2時から G メーターごとに LP ガス消費量などを集計する。

G メーターは自分の時計に従って,毎正時に測定し,午前0時の測定の後に送信する。時計が進んだり遅れたりすると,測定がずれた時刻に行われ,記録される測定時刻も実際とずれる。送信も0時〜1時の間から外れうる。

本文の運用は時刻を前提にしている。G メーター管理サーバは2時から集計を始めるので,時計が大きく遅れた G メーターの送信は集計に間に合わない。1時間ごとの測定値も,時刻がずれていれば正しい時間帯の使用量にならない。

30字に収める。解答例は「測定と送信が誤った時刻に行われることになる。」で22字。測定と送信の両方を挙げる。「時刻がずれる」だけでは下線⑩の言い換えで,ずれによって何が起きるかが書けていない。

設問4(6) 40字以内

本文中の下線⑪について,時刻の誤差を抑えるために考えられる,CoAP 通信を利用した処理の内容を,40 字以内で答えよ。

解答例

  • Gメーター管理サーバから現在時刻を取得して,Gメーターの時刻を更新する。
解説

本文の根拠

〔IoT システムの機能と構成の検討〕

⑪G メーターに時刻の誤差を抑えるための処理を組み込むことにした

図9 の説明

図9中の Y 社サービス拠点のサーバは,NTP サーバとの間で時刻同期を行う。

図9 注記1

図中の網掛けは,CoAP 通信を行う機器を示す。

時刻の誤差を抑えるには,正しい時刻をもつ相手から時刻を受け取り,自分の時計を合わせ直せばよい。本文によれば,Y 社サービス拠点のサーバは NTP サーバと時刻同期しているので,G メーター管理サーバは正確な時刻をもっている。

G メーターが通信できるのは CoAP で G メーター管理サーバとだけである(図9の網掛け)。NTP サーバは DMZ にあり,G メーターから直接は使わない構成になっている。そこで,G メーターが CoAP の GET で管理サーバから現在時刻を取得し,それで自分の時計を更新する。1日1回の送信の機会などに行えば,誤差が積み重なる前に正せる。

40字に収める。解答例は「Gメーター管理サーバから現在時刻を取得して,Gメーターの時刻を更新する。」で36字。「どこから」(G メーター管理サーバから)と「何をするか」(時刻を取得して更新する)を書く。設問は「CoAP 通信を利用した処理」としているので,「NTP で同期する」は条件に合わない。

出典:令和7年度 春期 ネットワークスペシャリスト試験 午後Ⅱ 問2(表記を一部改変)