09-14

2022-01-23

09-14

 都と岸谷は一斉に固まった。都は、緊張が体を走っていくのを覚えた。大きなしゃがれ声は、間違いないくあの高齢の客だ。離れたところから聞こえてくる、癇癪を爆発せたような怒鳴り声は、都に体が震えるくらいの緊張をもたらすのに十分だった。しばらく固まっていた後、都は恐る恐る、岸谷の顔を見上げた。岸谷がこの状況にショックを受けていたらどうしよう。今の自分に、彼女に何か気の利いたことを言ってやれる自信はない。むしろ、都自身がこの場から逃げて出してしまいたい。しかし岸谷は、PBX部屋の開け放しの扉の向こうを、その大きな瞳で睨んでいて、臆したところなど全くなく、むしろ、高齢の客の癇癪を、理不尽なものだと、納得いかないものだと、義憤を表明しているようにすら見える。
 「ちょっと…。なんですかあ、あれ…。」
 岸谷は、都が岸谷を見上げているのに気がついて、都を見やり、小声で言った。あまりの理不尽さに苦笑い、といった風だが、都を見つめる瞳には、さっき都が見た、睨むような鋭い光はなくて、都なら自分の言っていることに同意してくれるという、信頼と親愛が混ざったようなものが宿っている。その苦笑いとその瞳は、都の緊張を少し解すのに役立った。岸谷は、少しでも状況をつかもうと思ったのか、通路スペースへ出た。都は、少しでも現場に近づくのが嫌で、PBX部屋から出たくなかったが、ついて行くしかなかった。
 通路スペースに出ても、しゃがれ声の怒鳴り声しか聞こえて来なかった。関係者が集っているあの打ち合わせ卓の回りは、緊迫した空気になっているだろう。しゃがれ声の怒鳴り声はやまない。しかし、何を言っているのか明確に聞き取れない。いや、聞き取れないのではない。都が防衛機制として、聞こうとしてない、聞こえてくるものを理解しようとしていないだけだ。都は恐怖で、体が一回大きく震えてしまった。一体何がお客を怒らせたのか。お前ら、自分たちで十分確認した、問題ないと言っただろう、俺たちを騙してるのか、と言っているのが聞き取れてしまった。今日の、この一時のトラブルについて怒っているのではなく、度重なるトラブルや、そのフォローでの手際の悪さなど、いろいろなことが積み重なった上での、癇癪の爆発なのか。もっとも、この高齢の客の癇癪は、常に爆発させているもののようにも思えた。それは高齢の客のいままでの態度や、口調、口に出す言葉から、推定出来る。強烈な癇癪を起こしがちな男だというプロファイルは、都が実際に対面して持ったイメージと容易に一致する。あの高齢の客はいつも、使っているベンダーに対して、もしかしたら、自分の同僚に対しても、こんな感じなのかもしれない。実際に目の前で怒鳴られている、営業二人、平下と橋本はどんな気持ちだろう。もっとも、営業職だから、こういうお客はここだけではなくて、都のようなショックは受けないのだろうか。下手をすると、また始まった、くらいにしか思っていないかもしれない。
 都は少しでも、この緊張感から逃れたくて、この通路スペースから離れたかった。一番良いのは、渡り通路を抜けて、反対側へ逃げ込んでしまうことだ。トイレを理由にしたって良いだろう。もう一回PBX部屋へ引っ込むだけでも良い。本来、そこで待機なのだから。しかし、岸谷はどうする。
 岸谷が派遣先の正社員で、都がそこへ派遣されている、ただの派遣元の登録スタッフだからと言って、年齢的にも、職業経験上も都の方が先輩にあたるのに、後輩を見捨てて、一人目の前の恐怖や緊張から逃れていいわけはない。しかし、遠くにとは言え、あの高齢の客の怒鳴り声が聞こえてくる環境は、都に体が震えるほどの緊張を強いる。呼吸が苦しくなってきてしまう。都は、こういう時に堂々とはしていられなかった。それは元々の精神的な弱さのせいでもあるし、もし言われてしまえれば、結局アルバイトと派遣社員しかやったことがないから、社会で向き合わなくてはならない、プレッシャーと緊張が伴う場面での耐性が培われていないからだ。
 都は岸谷の顔をもう一度見上げた。岸谷は、多少は緊張しているようだが、その大きな瞳をしっかりと開いて、開け放たれた、オフィスエリアへと続く扉の向こうを睨むように見やっている。それは、聞こえてくる高齢の客の怒鳴り声だけではなく、かすかに聞こえてくる他の声も含めて、何が話されているのか聞き漏らさないようにし、オフィスエリアで何が起こっているのか把握しようとしているようだ。具体的な内容について何も聞きたくない、耳を塞げないから、どこかへ逃げたいと思っている都とは大違いだ。大学も途中で辞めてしまったから、卒業論文もやっていないし、新卒の就職活動もしたことがない。そう言った経験の不足のせいで、新入社員の岸谷でさえ動じずにいるこの状況に、都は、耳を塞ぎたい、聞こえないところへ逃げてしまいたいと、子供のような反応しか出来ないというのか。自分の不甲斐なさとか、だから所詮派遣しか出来ないのだとか、自分を卑下する感情が強くなる。しかし、その自己卑下すらも、現場の緊張した状況から意識を逸らしたいという、防衛的反応でしかない気すらする。
 「間宮さん、ちょー怖くないですか、あの人。」
 岸谷は都の方に顔を近づけて、囁くように言った。それは怖がっている女子の言い様ではなく、視覚で把握出来てはいないが、自分が今いる現場で何が起きているかを、客観的に見ているというより、劇場の舞台の上で繰り広げされている諍いを、観劇しているかのように、面白がっているような言い様だ。仕事という公の場で、お客とベンダーという他社同士で、協力して同じ目的を達成しなければいけない現場で、何かトラブルがあったからと言って、癇癪を起こしてどちらかを怒って責めたところで何も解決しない、そんな至極当然な意見を持ってもいるだろうし、高齢の客の、なんでも怒鳴れば良い、というような態度にも、だから年寄りは、という若者ならではの反抗心もあるだろう。
 「そんな怒鳴ったて何も解決しないんだよー!とか平下さんもキレちゃったりしてみればよくないですか。」
 岸谷は、平下が言えばいいのにと言っているのに、しゃがれ声の真似をして言うので、都は可笑しくて笑ってしまいそうになったが、笑い声を出すのは簡単に我慢できた。都が感じている恐怖と緊張のせいで、笑うと言う行為が、今の都には難しかった。しかし、その岸谷の冗談は、都の緊張をさらにもう少し和らげはした。こんな時でも、冗談を思いつく、しかも怒っている客の物真似すら小声でやってみせるその胆力に、都はただ感心してしまう。
 「とりあえず、何が起こってるのかは知りたいね…。ちょっとルーター入って様子見てみようか。何かわかるかも。」
 都は岸谷のその余裕のおかげで、少し固まってしまっていた思考が回り出した。何が起こっているのか確認するには、オフィスエリアに行って、平下たちに聞くと言う手があるが、今現場作業員の都たちがズカズカと、緊迫したところへ出て言って、何事ですか、のような質問をするのは、火に油にしかならない恐れがある。営業、オフィスのPM、お客と、問題を解決しようとする話し合いがある程度進んでいれば、都たちが割って入ると、都たちへの説明のために、その流れを堰き止めてしまい、それが客の不興を買ってしまう。まして、都たちは現場作業員でしかないのだから、平下たち営業か、オフィスにいるPMの指示がない限りは、待機しているのが、体制上も、工事の安全遂行のためにも、とるべき行動ということにはなる。
 しかし、都たちは、通常現場作業員として派遣される、外部ベンダーの作業員よりも、高いスキルを持った作業員として、今回この現場へ来ている。ルーターにログインすることは、特にPMのガイダンスなしで可能だし、多少のスクリプトの間違いは自身で修正して流し込める。だから、自分たちで現状を把握して、気づきを報告することであれば、炎上を鎮めるには多少役に立つかもしれない。それよりも、都にとっては、この高齢の客の怒鳴り声と、打ち合わせ卓の緊迫した空気すら感じられるような、この通路スペースから逃げられる絶好の口実だった。
 都と岸谷は、PBX部屋に入り、PCの前に二人で並んでしゃがみこんだ。ターミナルソフトでメイン側のルーターにログインしてみる。インターフェイスの説明文一覧を表示するコマンドを叩く。LANインターフェイスは、岸谷が抜いてそのままなので、落ちている。WANインターフェイスはもちろん上がっている。都は、PCの前にしゃがみこんでコマンドを叩いていると、多少気持ちが落ち着いてくる。客の激昂が聞こえる環境でただ突っ立ていると、気持ちの逃げ場がないが、作業をしていれば、コマンドを打つことに、返された出力を精査し、状況を把握することに、意識を持っていかなければならないので、その分、目の前の怒号が飛ぶ環境から意識を逸らすことが出来、しゃがれ声の怒鳴り声が言う言葉も、頭には入らなくて済む。
 都は考えるよりも前に手が動いて、BGPの状態を確認するコマンドを叩いた。もちろんWAN側のBGPは上がっている。次に、BGPでプロバイダエッジへ広告しているルートについて確認する。今は、メイン側ルーターのLANインターフェイスを落としているのだから、お客のトラフィックはバックアップに寄っていることになる。そのため、こういったメイン・バックアップ構成の場合、メイン側ルーターのLAN断時は、BGPの広告は基本的に止まっているはずだ。もっともメイン側ルーターに、保守や何かのためにアサインしてあるループバックインターフェイスがあれば、それだけは広告されているだろうが、LAN側のネットワークについては全て、基本的に広告は止まる。そうでなければ、網内から、本社拠点へ下ってくるトラフィックが、メイン側へ吸い込まれてしまい、メイン側ルーターで宛先知れずとなり、パケットは落とされてしまう。メイン側から広告されているルートが、網内で必ず優先されるような設定が、客宅ルーターでなされているはずだからだ。
 BGPの広告ルートを確認すると、ルートが2本広告されたままだ。1本は32ビットマスクの、ホストIPなので、おそらくこのルーターにアサインされたループバックIPだろう。こちらは問題がなさそうだ。しかし、もう1本は、クラスAのプライベートアドレスの、一番大きい集約ネットワークになる、10.0.0.0、サブネットマスクが8のものだ。バックアップ側ルーターから細かいマスクのルートが、通信に必要な分だけきちんと出ていれば問題はないが、そうであれば、この集約ネットワークは、なんのためにメイン側ルーターから広告されているのか。
 都はまず、この集約ルートについて、BGPテーブル上でどういう属性がついているのか確認するコマンドを叩いた。すると、メイン側ルーター自身で、細かいルートを種に、BGPの集約設定で作られたルートだ、となっている。つまり、Null0インターフェイスに対して、10.0.0.0/8のスタティックルートを作成し、それをBGPでピックアップし、広告する、という方法ではなく、BGPテーブル上に、これに含まれる細かいルートが存在すれば、自動で集約ルートを作成し、広告する、という方法を取っているということだ。
 32ビットマスクのルートは、この集約ネットワークには包含されないIPアドレスなので、問題はない。現状、LANインターフェイスが落ちているわけだから、LAN側のルートは存在しないはずだ。都は念のため、このルーターで回っているルーティングプロトコルを表示するコマンドを叩き、ダイナミックルーティングとしては、BGPとOSPFだけが回っていることを確認してから、BGP以外のソースで、ルーティングテーブルに乗っているルートがあるかどうか、それぞれに絞って表示するコマンドを叩いた。スタティックとOSPFがソースのルートは存在しないし、接続セグメントもWANインターフェイスと、ループバックインターフェイスだけだ。なんらかの間違いや不具合でLAN側のルーティングが消えていない、ということもなさそうだ。
 都は、プロバイダエッジルーターから受け取っているBGPルートを確認した。15本程度のルートが確認できるが、網内で保守のために使われているグローバルIPを除けば、全て、クラスA、10点台のプライベートIPアドレスだ。続けて、コンフィグのBGPの部分だけ抜き出して表示するコマンドを叩く。ネットワークアドレス、サブネットマスクが正確に一致した、別ルーティングプロトコルがソースのネットワークを拾い上げ、BGPで広告させるためのコマンドが20行程度入っている。保守用のループバックIPはグローバルレンジ、その他一部、クラスBに当たる、172点台のルートが数本あるが、その他は全て、10.0.0.0、サブネットマスクが8の集約で包含できるルートだ。
 そして、10.0.0.0、サブネットマスクが8に包含されるルートは全て、10.0.0.0/8のルート1本に集約し、それのみを広告する、172.16.0.0、サブネットマスクが12に包含されるルート全てについても、同じように172.16.0.0/12の1本に集約し、それのみを広告する、という集約設定が入っていた。この集約設定には、集約の条件のオプションがついていない。そのため、BGPテーブルに載った、集約ルートに包含される細かいルートが一つでもあれば、集約ルートは作成されてしまう。その細かいルートが、網内からもらったルートでもだ。これはきちんと検討して、集約条件オプションなしでもOKであることが確認取れていないと、ほぼ間違いなくトラブルの元になる。今回の場合、このメイン側のルーターが、網内から集約の種となるルートを受け取るので、集約オプションなしだと、LAN断時も集約ルートを吐き出し続けてしまうことは、プロジェクトメンバーで検討済みで、問題ないことを確認出来ているかどうかだ。
 コンフィグから判断すると、正常系の状態であれば、このルーターは、3本のルートしか広告していないことになる。普通に考えて、これより細かいルートがバックアップルーターから広告されていることは考えられない。もし、そうであれば、対向の海外拠点から本社拠点へのトラフィックで、宛先がその細かいルートに含まれてしまえば、常にバックアップ側の回線を使うことになる。いくつかのルートについて、意図的にそうしている、ということは考えられることではある。メイン・バックアップ構成だと、バックアップ側の回線は、メイン側が生きている時は常に未使用だ。そういう風にしておきたくない、コスト・エフェクティブにバックアップ側のリンクも常に使用したい、という要望があった場合に、バックアップ側も常に利用できる設計を考えることになる。トラフィックによって、パスを使い分ける、というのは、SD−WANで実現した方が良い要件だが、たった2拠点だけだと、導入コストに見合うかどうかは微妙かもしれない。
 もし、ある宛先群への下りパケットを、バックアップ側に吸い込むのであれば、細かいルートをバックアップルーターから広告すれば良い。メイン側は集約ルートしか広告しない設定になっているのだから。しかし、その宛先群からの戻りトラフィックを、対称的にバックアップルーターから網へ戻すのは難しい。ルーティングは基本的に、その宛先に基づいてパケットの行く先を決定する。戻りのパケットを、行きのパスと揃えるためには、送信元に基づいてルーティングしなければならない。このためには、パケットがLANインターフェイスからルーターに入った時、送信元アドレスでパケットを引っ掛けて、そのパケットの投げ先、つまりネクストホップを、宛先ルーティングで選択されるものとは異なるIPに指定する、と言うポリシーを作成し、それに基づいたルーティングをさせる設定が必要だ。しかし、それなりに手間もかかるし、メイン側の断だけではなく、バックアップ側が断になった時の挙動についても考慮しなければならず、その対策を取るのはかなり骨が折れる。
都は、メイン側ルーターのLANインターフェイス部分のコンフィグだけ抽出して表示させた。ポリシーに基づいてルーティングする設定は入っていたが、中身を確認すると、優先制御のため、指定パケットに異なるIPプリシーデンス値をマーキングする動作のみが規定されているだけで、パケットの投げ先指定はない。つまり、メイン側ルーターでは、どんなパケットのルーティングも、宛先ルーティングで処理される。おそらく、完全メイン・バックアップ構成だと判断して良さそうだ。念のため、WANインターフェイスのトラフィック量を見てみた。上りはわずかで、4kビット毎秒程度。おそらくBGPのパケットだけだろう。下り、つまりこのルーターへ網から入ってくるパケットはそれよりも多めで、100kビット毎秒程度ある。対向の海外拠点から試験用のパケットがまだ来続けていて、集約ルートをBGPが作成した時にできる、BGPソースのNullルートに吸い込まれ、ロストしているパケットだと推測できそうだ。しかしこれだけでは、判断し切るには根拠が弱い。正常系の場合、一定の宛先について、網からの下りだけは、バックアップを使うようにして、その戻りである上りについては、メイン側を通るで良い、という要件のお客もいる。
 バックアップ側のルーターへのログインを試みてみる。この場合、MPLS網内からログインすることになるので、宛先はバックアップルーターのトンネルインターフェイスのIPになる。都はバックアップルーター用のスクリプトを開いて、トンネルインターフェイスのIPを拾い、そのIPに対してメイン側ルーターからアクセスを試みるが、弾かれた。接続を拒絶された、とログが出たので、リモートアクセスのソースを絞るフィルタが適用されているということだ。不正アクセスを防ぐために、客宅ルーターには必ず設定するものだ。保守用のために、各客宅ルーターにアサインするループバックインターフェイスのIPは、一定のグローバルアドレスのレンジからアサインされている。このレンジをひとまとめでリモートログインを許可する設定にしているプロジェクトは多い。都は、ループバックインターフェイスをソースにして、バックアップルーターへログインを試みた。ログイン・グレデンシャルを聞いてくるログが出て来た。バックアップ用のスクリプトを開いて、そこに書かれたクレデンシャルを使うと、ログインに成功した。
 都は手早く、BGPの状態、広告しているルートを確認した。広告しているルートは、ループバックインターフェイスのアドレスを除けば、メイン側ルーターで広告する設定になっているものと同じ、10.0.0.0/8と、172.16.0.0/12だけだった。バックアップルーターの、コンフィグのBGP部分を確認すると、BGPのアウトバウンドにポリシーが当てられているのがわかった。そのアウトバウンドのポリシーの中身を確認すると、ルートの広告時にASパスを追加して、バックアップルーターから広告されたルートのASパス長を長くすようにするものだった。メイン側ルーターにはこの設定はない。この差分のため、網内では、もし両ルーターから同じルートが広告されている状態の場合、BGPの、ASパス長が短い方が、最適パスとなる法則に基づいて、必ずメイン側ルーターからのルートが最適パスになる。
 つまり、今はメイン側ルーターから、10.0.0.0/8が広告されてしまっているので、メイン側のLANが断になっている現状において、宛先アドレスがここに含まれるパケットについては、メイン側ルーターへ吸い込まれて、不達になってしまっている。おそらく、メイン側のLANを断にしてから、ずっとお客試験が終わらず、平下が戻ってこれず、ついに高齢の客の怒鳴り声が木霊し始めたのは、これが原因だろう。念のため、バックアップ側ルーターのLANインターフェイスが上がっていることと、OSPFでもらっているルートも、LAN側を向いているスタティックルートも、ルーティングテーブルに載ってることを確認した。
 「これ…かな…。」