表示調整
閉じる
挿絵表示切替ボタン
▼配色
▼行間
▼文字サイズ
▼メニューバー
×閉じる

ブックマークに追加しました

設定
0/400
設定を保存しました
エラーが発生しました
※文字以内
ブックマークを解除しました。

エラーが発生しました。

エラーの原因がわからない場合はヘルプセンターをご確認ください。

ブックマーク機能を使うにはログインしてください。
コード・オブ・ザ・ワールド ~廃プログラマー、異世界で神のシステムを書き換える~  作者: ネオ・チー


この作品ページにはなろうチアーズプログラム参加に伴う広告が設置されています。詳細はこちら

39/77

第39話 ネットワーク・ダウン

馬を飛ばして二日。


ネットワーク連合の中枢都市ポート・ハブに到着した時、街は混乱の渦中にあった。


普段なら光の糸のように街を走り回る通信魔法の軌跡が——一本もない。転送門は沈黙し、伝令鳥だけが空を飛び回っている。アナログな通信手段だ。鳥が飛べる距離には限界がある。


「ひどいな……」ガルドが呟いた。


ポート・ハブは五大王国への転送ゲートが集結する要衝だ。商人、冒険者、外交官——あらゆる人間が行き交う都市のはずが、今は通りに座り込んだ人々が途方に暮れている。


「荷物が届かない」「家族と連絡が取れない」「商取引が全部止まってる」


悲鳴に近い声が、あちこちから聞こえた。


「マスター」メモリが俺の肩で小さく言った。「この街のコード、かなり荒れています。ネットワーク層が——ほぼ全損です」


俺はデバッガーズ・アイを起動した。


街全体を覆う源コードが見える。通常なら青く安定しているはずの通信関連のコードが——赤黒く点滅していた。


  [NETWORK_HUB: PORT_HUB]

  STATUS: CRITICAL

  Active_Connections: 3/12,847

  Relay_Tower_Online: 2/847

  Packet_Loss_Rate: 99.97%

  DDoS_Detection: POSITIVE

  Attack_Vector: Distributed - Multiple sources


「パケットロス九十九・九七パーセント」


俺は読み上げた。


「ほぼ全滅だ」




連合議長パケット卿の執務室は、戦場のような慌ただしさだった。


壁一面に張られた地図の上に、赤い点が無数に灯っている。停止した中継塔の位置だ。ほぼ全てが赤だった。


「よく来てくれた、冒険者殿」


パケット卿は痩せた初老の男だった。鷲鼻に小さな眼鏡。神経質そうな指が、絶えず地図の上を動いている。


「三日前から始まった。最初は辺境の中継塔が数基停止した程度だった。だが——一日で五十基。二日目で三百基。そして昨日——残り全てが落ちた」


「指数関数的な拡大ですね」シェルが言った。


「その通りだ。我々の技師が復旧を試みたが——直してもすぐに再停止する。まるで——」


「治療しても再感染する、と」


俺が言うと、パケット卿が頷いた。


「中継塔を見せてくれ」




ポート・ハブの外周に、中継塔が建っていた。


石造りの塔の頂上に、青い結晶が嵌め込まれている。通信魔法の中継装置——この世界のルーターだ。


結晶は消灯していた。死んだ目のように、灰色の表面を晒している。


俺はデバッガーズ・アイで塔のコードを読んだ。


  [RELAY_TOWER #0042]

  STATUS: OFFLINE (OVERLOADED)

  QUEUE: 847,291,003 pending packets

  PROCESSING_CAPACITY: 10,000/sec

  INCOMING_RATE: 2,400,000/sec

  ERROR: Buffer overflow - Queue exceeded maximum capacity

  ATTACK_SIGNATURE: DDoS (Distributed Denial of Service)

  SOURCE: [MULTIPLE - 12,847 unique origins detected]


「DDoS攻撃だ」


俺は宣告した。


「大量のゴミデータが全方位から同時に送り込まれている。中継塔の処理能力を遥かに超えたデータ量が押し寄せて、正規の通信パケットが処理できなくなっている」


パケット卿が眉をひそめた。「ゴミデータ? 意図的な攻撃だと?」


「間違いない。このパターンは——DDoS。分散型サービス拒否攻撃。前の世界でも、サーバーを落とすのに使われた手法だ」


「復旧しても再停止するのは——」


「攻撃が続いているからだ。蛇口を開きっぱなしで、バケツの水を掻き出しているようなものだ。蛇口を閉めない限り、永遠に溢れ続ける」


パケット卿の顔が蒼白になった。


「攻撃元を特定できるか」




問題はそこだった。


DDoS攻撃の厄介なところは、攻撃元が分散していることだ。一万二千以上のソースから同時に攻撃が来ている。一つ一つを潰しても追いつかない。


「シェル」


「はい」


「クエリ魔法で攻撃元を追跡できるか」


シェルが手帳を開き——すぐに閉じた。


「できません。クエリ魔法は通信ネットワークを経由して情報にアクセスします。そのネットワーク自体がダウンしている以上——」


「オフラインか」


「はい。私の魔法は——今、ほぼ使えません」


シェルの声に、わずかな苛立ちが混じった。情報魔法使いが情報にアクセスできない。武器を取り上げられたようなものだ。


俺は考えた。


ネットワークがダウンしている。オンラインでの追跡は不可能。だが——


「オフラインで追跡する方法がある」


俺は中継塔の根元にしゃがみ込んだ。


「中継塔にはログが残っている。どのパケットが、いつ、どの方向から来たか。タイムスタンプ付きで記録されているはずだ」


パケット卿が頷いた。「各塔にローカルログはある。だが量が膨大で——」


「量は問題じゃない。パターンが大事だ」


俺はデバッガーズ・アイで中継塔のローカルログにアクセスした。


  [LOCAL_LOG: RELAY_TOWER #0042]

  ...

  [T-00:00:03] PKT_IN: src=UNKNOWN_847 → size=64KB → JUNK

  [T-00:00:03] PKT_IN: src=UNKNOWN_2941 → size=64KB → JUNK

  [T-00:00:02] PKT_IN: src=UNKNOWN_119 → size=64KB → JUNK

  [T-00:00:02] PKT_IN: src=UNKNOWN_7720 → size=64KB → JUNK

  [T-00:00:01] PKT_IN: src=UNKNOWN_4455 → size=64KB → JUNK

  ...

  [Total junk packets in last hour: 8,640,000]


ゴミパケットの洪水。しかし——全てが完全に同時ではない。


「メモリ」


「はい、マスター」


「各中継塔のログを比較する。攻撃パケットのタイムスタンプを分析して、最初に攻撃を受けた塔——攻撃の起点を逆算する。できるか」


メモリの目が光った。


「できます! 各塔のローカルログにアクセスして、タイムスタンプの差分から伝播パターンを再構築します。ネットワークが生きていなくても——物理的に塔を巡れば、ログは読めます」


「全塔を回る必要はない」俺は言った。「サンプリングでいい。東西南北に散った塔のログを数十基分読めば、三角測量の原理で発信源を特定できる」




五人で手分けした。


ガルドとアリアが東方面の塔を。シェルと俺が西方面を。メモリが上空から全体の座標計算を担当する。


馬で塔を回り、ログを手作業で読み取る。地道な作業だった。


前の世界で障害対応をしていた時を思い出す。ネットワーク障害が起きた時、ダッシュボードが死んでいたら、物理的にサーバールームに行ってログを見る。泥臭い作業だ。でもそれが一番確実だ。


三時間後。


俺たちは中継塔二十三基分のログを持って、パケット卿の執務室に戻った。


「メモリ、分析を」


「はい!」


メモリの瞳が全力で明滅した。回路模様が体中を走り回る。


二十三基のタイムスタンプデータが、メモリの頭の中で重ね合わされていく。


「パケットの到達時間差から——攻撃波の伝播パターンを再構築します。最初に攻撃を受けた塔は——中継塔#0721。位置は——北北東、距離約二百キロ」


「その方角にある塔の次に攻撃を受けたのは?」


「中継塔#0688。#0721の二十七ミリ秒後。位置は——北方向へさらに百五十キロ」


俺は地図の上に点を打った。


「次は?」


「中継塔#0655。さらに十九ミリ秒後。位置——」


メモリが座標を読み上げるたびに、俺は地図に点を打つ。


点が線になった。線が矢印になった。


矢印が指し示す方向——攻撃の波が広がった中心点。全ての攻撃パケットが最初に発信された場所。


俺は矢印の収束点に印をつけた。


地図を見た。


心臓が冷えた。




収束点は——ロジカ王国だった。


それだけじゃない。


ロジカ王国の——王都ロジカリスの——ほぼ中心。


王宮だ。


部屋が静まり返った。


パケット卿が地図と俺の顔を交互に見ている。ガルドが腕を組んだまま固まった。シェルが眼鏡を押し上げた——その手が、微かに震えていた。


メモリが俺の肩で小さくなっている。


俺は——アリアの顔を見た。


アリアは——地図の上の印を見つめていた。


自分の国。自分の家。


攻撃の発信源が、そこにある。


「アリア——」


俺が名前を呼んだ。


アリアは一瞬だけ目を閉じた。


長い瞬きだった。


目を開けた時——その目に、涙はなかった。


代わりに——決意があった。


「行きましょう」


アリアが言った。


静かな声だった。震えてはいなかった。


「行って——確かめましょう」




パケット卿に応急処置の方法を伝えた。


「ゴミパケットのパターンは六十四キロバイト固定だ。この特徴を持つパケットをフィルタリングして、到達前にドロップする設定を各塔に入れてくれ。完璧じゃないが——少なくとも正規の通信パケットの一部は通るようになる」


  // EMERGENCY FILTER RULE

  IF packet.size == 64KB

  AND packet.header.checksum == [NULL]

  THEN DROP packet

  // This will reduce attack traffic by ~80%

  // Legitimate packets with same size will also be dropped (false positive ~2%)


パケット卿は即座に技師を集め、手動で——物理的に各塔を回って——フィルタを適用する作業を開始した。


ネットワークが死んでいるから、設定変更すらオフラインでやるしかない。


アナログだ。泥臭い。でもそれしかない。


「ありがとう、冒険者殿」パケット卿が俺の手を握った。「ロジカ王国で——何が起きているのか、確かめてきてくれ」


「ああ」


俺は頷いた。


そしてアリアを見た。


アリアは——もう、俺を見ていなかった。


北の方角を——ロジカ王国の方角を——見つめていた。




ロジカ王国への道中。


転送魔法が使えないから、馬で二日の旅になる。


初日の夜。野営の焚き火の前で、俺とアリアが並んで座っていた。ガルド、シェル、メモリは先に眠っている。


アリアが——口を開いた。


「もし兄が——ヴァリドが関わっていたら、私は——」


声が途切れた。


俺は焚き火を見つめたまま言った。


「まだ確定じゃない。攻撃の発信源が王都だとしても、王宮内の誰かが——ヴァリドじゃない可能性もある」


「……ええ」


「でも」


俺は続けた。


「事実は事実として向き合わないと」


アリアが小さく笑った。苦い笑みだった。


「あなたは強いですね。感情に流されずにいられて」


「……強いんじゃない」


俺は言った。


「前にも同じ失敗をしたことがあるだけだ。問題を感情で処理しようとして、もっと大きな問題になった」


前の世界の記憶が蘇る。


上司が書いたコードにバグがあった。深刻な設計ミスだった。俺は気づいていた。だが——上司との関係を気にして、指摘しなかった。「まあ、本番で問題が出る前に誰かが見つけるだろう」と。


結果——本番環境で大規模障害が発生した。数百万ユーザーに影響が出た。復旧に三日かかった。


あの時、最初に気づいた段階で報告していれば——一時間で直せた問題だった。


「見て見ぬふりをするのが一番まずい」俺は言った。「事実から目を逸らすと、問題は必ず大きくなる。プログラムでも、人間関係でも——同じだ」


アリアが俺を見た。


焚き火の光が、アリアの目に映っている。


「……ありがとうございます」


アリアが言った。


「事実を確かめに行きます。何が起きていても——向き合います」


「ああ」


俺は頷いた。


それ以上の言葉は、要らなかった。






次回、第40話「インサイダー」——ロジカ王都に帰還した蓮たちが目にするもの。そしてアリアの兄、ヴァリド王子の変貌。

評価をするにはログインしてください。
ブックマークに追加
ブックマーク機能を使うにはログインしてください。
― 新着の感想 ―
このエピソードに感想はまだ書かれていません。
感想一覧
+注意+

特に記載なき場合、掲載されている作品はすべてフィクションであり実在の人物・団体等とは一切関係ありません。
特に記載なき場合、掲載されている作品の著作権は作者にあります(一部作品除く)。
作者以外の方による作品の引用を超える無断転載は禁止しており、行った場合、著作権法の違反となります。

↑ページトップへ