12-07

2022-01-29

12-07

 都は乗りかかった船なので、ログインしている1号機ルーターのWANインターフェイスのサブネットを確認すると、別のターミナルウィンドウを開いて網内の保守ルーターへログインし、このWANインターフェイスのサブネットが、このお客のVRFのルーティングテーブル上で持っているネクストホップを調べて、そのネクストホップへ、保守ルーターのグローバルルーティングテーブルを使い、遠隔ログインを試みた。ログインクレデンシャルを聞いてきたので、到達は出来たようだ。プロバイダエッジルーターのログインクレデンシャルは、一切ドキュメント化されておらず、一部の人間だけに口頭で伝えられている。都はこれを知っていたので、それを使ってログインし、このお客のVRFのBGPネイバーがいるかどうか確認するコマンドを叩いた。客宅ルーターの筐体メーカーと、異なるメーカーの筐体を使っているプロバイダエッジルーターだったので、コマンドの書式がかなり違うが、このコマンドは叩き慣れているので、特に戸惑わなかった。ネイバーは存在していて、そのネイバーのIPは、別のターミナルウィンドウでログインしている、客宅ルーターのWANIPと同じで、プロバイダエッジルーターから見たネイバーASも、客宅ルーターのAS番号だ。このプロバイダエッジルーターで間違いない。
 都は、ログインしているプロバイダエッジルーターで、このVRFのBGPネイバーの詳細情報を表示するコマンドを叩いた。その中に、ネイバーのインバウンドにフィルターを掛けているかいないかが確認できる項目があり、都は出力を上から嘗めて行って、当該項目を探した。
 「あー…。フィルタありだよ、これ。」
 フィルタがあることを示すフラグが立っていた。植松はどこを見るのかわからないと言うので、都は指でその項目を差した。
 「これだけだと、どんなルートをフィルタしているかがわからないからー…。」
都はそこまで言って、客宅ルーターのWANインターフェイスの説明書きに書かれた、1号機客宅ルーターが収容されているプロバイダエッジルーターのポートに振られるIDを確認し、ログインしているプロバイダエッジルーターにコンフィグされている全フィルタから、名前にこのIDのあるものだけ引っかかるようなオプションをつけて、フィルタ一覧を表示するコマンドを叩いた。すると、インバウンドのものとアウトバウンドのものがあったが、アウトバウンドのものは空のフィルターであるのは決まっているし、客宅ルーターから広告されてきたルートをフィルタするのだから、インバウンドのものが確認したい当該のフィルタになる。そのフィルタの中身を見るコマンドを叩くと、ちょうど、客宅ルーターがBGPで広告している4本のルートと、ネットワークアドレス、プレフィックス長が一致したルートのみを許可しているフィルタになっていた。
 東京のSEが担当する案件であれば、客宅ルーターのみの設定変更の場合、都たち自身が、都たちのタイミングで実施できるが、プロバイダエッジルーターは海外オフショアセンターのみが書き込み権限を持っているので、プロバイダエッジルーターの設定変更も含むとなると、海外オフショアセンターへチケットを上げ、彼らの担当エンジニアを統制したり、時にはコンフィグの確認をしたり、間違えていれば早急に直させるように指示したり、あるいは、切り戻しとなった時にも、切り戻し対応の統制、切り戻し後のコンフィグの確認などをやらないといけない。何れにせよ、きちんとチケットを上げておかないとやってくれないので、東京のSEがアサインされる案件の、ルート追加削除だからと言って、担当しているお客のネットワークについて、すべてのプロバイダエッジルーターがフィルタリングなのか上限設定型なのか、把握していないのであれば、これは事前に調べておかないといけない。
 「あー…。危なかったっすねえ。」
 植松は他人事のように笑っている。
 「ほんとだよー。ちゃんと確認しなよー。」
 都も思わず笑ってしまいながら叱った。
 「あの、間宮さん、今どうやってプロバイダエッジルーターにフィルタリングあるかないか確認しました?今後のためにも、ちょっと自分も覚えたいです。」
 植松は都に何か質問した時、都がルーターの確認コマンドを使って回答すると、こうやって良く自分でも覚えようと、熱心に聞いてくることがある。都は、保守ルーターの当該の客のVRFのルーティングテーブルで、対象の客宅ルーターのWANセグメントのネクストホップを探すところから、説明しながらやり直した。プロバイダエッジルーターの書き込み権限を始め、構築のほとんどの業務が、海外オフショアセンターに移管される以前は、プロバイダエッジルーターがフィルタリングありなのか、経路上限設定型なのかは、オーダーシステムに記録があったのだが、海外オフショアセンターのオーダーシステムに変わって以降は、オーダー情報として記録に残らなくなり、担当プロジェクトで設計資料にそれを記録していないと、実際のプロバイダエッジルーターにログインして確認するしか確認方法がなかった。もっとも、どんな場合でも実機に入って、正確な情報を確認することは大事だ。
 「あ、間宮さん、そのログちょっと欲しいです。僕、それで勉強して覚えます。」
 ターミナルソフト上で操作したログを取っておけば、どんなコマンドを使って、どんな出力を得た、と言うことを振り返ることが出来、自分が知らないコマンドを覚えるのには、良い手本となる。それは都自身も良くやる手法だ。都は、ログを取っていなかったので、ターミナルウィンドウをマウスで下から上へドラッグしながら、バックスクロールして、保守ルーターでこのお客のVRFのルーティングテーブルを表示させたあたりまでコピーし、空のテキストファイルを開いて貼り付け、勉強しろ!うえまっち!、と言う日本語のファイル名をつけて、植松とその隣の席で共有している専用端末のデスクトップ上に保存した。
 「ありがとうございまーす。」
 植松は礼を言いながら、また東南アジアの丁寧な挨拶のように、手を合わせて腰を軽く折った。都は、笑顔で謙遜を返して、立ち上がり、丸椅子を片そうとしたが、植松が自分で片付けるからと言うので、彼に任せて自席に戻ることにした。
 この植松の案件も東京のSEを使う案件なのだから、担当のSEがいるはずだが、都に聞いてきたのは何故なんだろうと、都は少し思った。担当SEが休みで不在なのだろうか。
 自席の島近くへ近づくと、ちょうど立ち上がっていた岸谷と目が合った。
 「まみやさーん、おわんなーい。」
 岸谷は泣き言を冗談のように、あるいは冗談を泣き言のように、都に訴えかけてきた。
 「えー。」
 都もちょっとだけわざとらしく驚いて見せた。都が岩砂の案件の緊急設定変更をやるために席を離れてから結構経つ。壁にかかっている時計に目をやると、もう13時くらいになる。そういえば植松に声をかけたのは、絶賛昼休み中だったけど、大丈夫だっただろうかと少し気になった。このオフィスはグローバル案件がメインなこともあり、国内案件にしても、今岸谷がやっている統制の件のように、お昼にかかる工事も珍しくないので、昼休みをずらして取る人は多い。そういったこのオフィスの風習に加えて、都は基本的に昼食を取らないので、人の昼休みに気配りがきかない時がある。
 「いったいなにー。」
 都は自分の席に戻るために、少し岸谷に道を開けてもらいながら聞いた。
 「お客さんー、LANのサブネットマスク間違えて申請しててー…。」
 「は?」
 岸谷が少し冗談のように、軽妙な感じで訴えるので、都は笑ってしまいながら、素直に驚いた。
 「正確にはネットワークアドレス間違いですね。」
 自席に机を背中にしながら腰掛けた都に、秋田が椅子を都の方に回転させながら捕捉した。LANのサブネットマスクは25ビットで、24ビットマスクの前半25ビットでオーダーは出ているが、お客が実際に使うのは後半25ビット部分だったと言う。
 「えー。プロバイダエッジルーターは経路指定?それとも上限設定?」
 国内網のプロバイダエッジルーターにも、客宅ルーターからのBGP広告について、事前に申請した経路のみを受信するフィルタリングオプションと、経路はなんでも受信するが、規定されたルート数以上は受け取らず、万が一この上限を超えた場合は、BGPピアを落としてしまう、経路上限設定のオプションとがあり、どちらかをオーダー時に選ぶ必要がある。
 万が一、グローバル網で、フィルタリングの経路が一部間違っていることが工事当日に発覚した場合、PMの海外オフショアセンター担当者とのネゴシエーションによっては、当日すぐに直してくれることもある。しかし、国内網のプロバイダエッジルーターの、開通・設定変更工事作業は、ツール化されたGUIで実施されているらしく、担当者も技術的に明るくないことが少なくないため、急なトラブル対応が難しいことが多い。それに、都の勤めるこのキャリアの国内に閉じた担当部門は、予定されている工事以外は絶対にやってはならない、という厳格な工事ルールが敷かれており、エスカレーション掛けたところで、9割9分、オーダーの申請間違いを当日直してくれることはない。それは彼らにとっては、設定変更にあたるので、それのオーダープロセスが一から必要になる。稀にエスカレーションが通って当日修正作業を実施してくれると、後日後付けで、通常の長いオーダープロセスが走っていることがあって、このオーダー関連の人たちの膨大な稼働は何のためなのだろうと、CCされたメールを見ていると、思うことが都にはあった。
 「幸い、上限設定オプションだったので、客宅ルーターを変更すれば良いだけでした。まあ、お客や営業に当日変えられるんだ、と思われたのであれば、全く幸いじゃないんですけどね。」
 秋田は、構築担当としては至極まっとうな感想も付け足していた。都は苦笑いで同意を返さざるを得なかった。
 「それは解決したの?」
 「はい、それは解決したんですけどー、まだお客さん通信できないって言っていてー…。」
 岸谷がそこまで言ったところで、都の隣の空き席に置いた岸谷のPHSが鳴った。岸谷が電話に出たので、後を秋田が引き継いだ。
 「LANのサブネット直した後も、うちのルーターのLANインターフェイスにpingが届かない、とか言ってたんですが、それはお客さんの方で、何かは具体的に聞いてないんですけど、何かを直したら、うちのLANインターフェイスにはpingが届くようになったらしいんですね。うちのルーターからもお客の端末にping届くようになりましたし。」
 都は、何か、と言うところで、何かって何、と笑ってしまった。しかし、まだ対向拠点とは通信ができていないと言う。都は、客宅ルーターでその対向拠点のルートは見えているのか聞いたが、それは見えていると言う。客宅ルーターから、LANインターフェイスをソースとして、対向拠点のホストにpingを打つと通らないので、対向拠点のルーティングを疑っている。対向拠点は、客宅ルーターとして安価版のルーターが提供されていて、都たちの部署では担当しないものだ。しかし、トレースの結果から、おそらくはこの安価版ルーターまでは到達出来ているようだ。都も、秋田の話通りであれば、そのルーティング不足か、対向拠点側のファイヤーウォールの穴あけ漏れが濃厚だと思った。
 都は自分の通常端末がすっかりスリープモードになっていたので、マウスを揺するように動かして、通常端末に起きてもらった。スクリーンロックを解いて、まずは大森に相談を受けていた件の原因と、お客で取るべき対策をメールで送ろうと思った。多分2時間くらい待たせてしまっているが、昼休み終わってから、と思ってくれているだろう。普段のやりとりからそんな風に予想しているが、あまり待たせたくないので、とにかく急いでメールを書くことにした。隣では岸谷が、相変わらず落ち着いた調子で、現場作業員か、現地のお客担当者と電話で話している。岸谷の応答からして、お客からこちらの設定が間違っていることを疑われているらしく、そのようになっております、を何回か繰り返している。
 「間宮さーん、宛先NATの時ってこんなんスタティックルートで良いんでしたっけ?」
 秋田が、少しのんびりした調子で声を掛けてきた。のんびりした調子は、都にプレッシャーを掛けないよう、気を遣ってくれたのだろう。
 「え?どれですか?」
 都は、椅子の車輪を使って後ろ向きに椅子ごと移動しながら返事をした。都の真後ろの席も昼休みなのか今はいないので、自分の椅子に座ったまま、秋田の机に寄った。秋田は、まず運用中のコンフィグを表示するコマンドを叩いて、スペースキーで行の表示を進めて行き、宛先NATのコンフィグを見せた。
 NAT、ネットワーク・アドレス・トランスレーションは、パケットのヘッダにある宛先や送信元IPアドレスを変換し、相手から自分のIPを隠蔽したり、IPアドレスの重複が見込まれる空間において、その空間で一意となるIPアドレスへ送信元を変換し、その空間との通信を成り立たせるものだ。一般的には、プライベートアドレス空間から、インターネットへ出て行く時に、出口ルーターのインターネット側インターフェイスのグローバルアドレスへ送信元を変換し、インターネット通信を可能にさせることで使われる。完全プライベートアドレスのみで構成されるような閉域網ネットワーク空間でも、理由は様々にあるが、NATを実装し、拠点間のLANネットワークを、お互いに隠蔽する要件は多い。特に、これは国内案件で多く、本当に細かい、ポート単位でのスタティックNATを要求してきたり、都たちのキャリアが客宅ルーターとして提供するルーター筐体では実装できないような、複雑なNATの要求すらある。そういう要件に限って、都たちの担当が構築する拠点は2つだけだったりする。その拠点拠点が、お互いに自分の大きなネットワークを持っていて、お互いのネットワークでIPアドレスの重複を避けるためだ、という理由はほぼ聞かれず、単純に、システムの設計の問題、管理上の問題など、効率的なアドレスアサインするタイミングを逸し続けてしまっただけではないのかと、思ってしまうような理由が聞かれる。もっとも、都はネットワークエンジニアなので、さらに上位レイヤーを扱う、アプリケーションエンジニアの事情については良くわからない。都が知らないだけで、アプリケーション運用管理特有の事情があるのかもしれない。
 NATは文字通り、アドレスを変換する。つまり、OSI参照モデルでいうところの、レイヤー3のIPアドレス、IPパケットヘッダにある送信元もしくは宛先IPアドレスを変換するだけなのだが、アプリケーションによっては、このIPアドレス情報がペイロードにもあって、ここも変換しないと動かない、あるいは変換する機能を使用しても、アプリケーションのポート番号の実装によっては上手く動かなかったりするという問題が散見される。そのため、NATは避けられるのであれば、極力避けた方が良い。にも関わらず、国内案件では本当に需要が高い。そして、トラブルも多い。そのトラブルには、都たちキャリア側でお客要件をきちんと掴めていない故の、設計ミスやコンフィグミスなどもあることはある。しかし、どうもルーティングやIPアドレスアサインの再設計を投げてしまって、NATすれば何とかなるだろう、と言う楽観的観測でNATの採用を決めてしまい、アプリの挙動の検討や、NATを使ったとしても必要になるLAN内のルーティング、ファイヤーウォールのポリシー変更などが漏れていた、というお客要因でトラブルになることは珍しくない。
 秋田によると、今回のNAT要件は、この拠点のLANから見た、対向拠点の通信必要なホストは、この拠点のLAN接続セグメント内のホストとして偽装する、というものだ。例えば、LAN内のコネクテッドセグメントの、第4オクテットが10のIPは、それは対向拠点のLANセグメントの、ホストアドレスへ変換する、といった風に。LAN側をインサイド、WAN側をアウトサイドと、このルーターでは設定しているので、NATは送信元変換ではなく、宛先変換として設定する必要がある。都たちが客宅ルーターとして扱う筐体のメーカーのソフトウェアでは、インサイドからの通信は、NAT処理よりも、ルーティングが先になるので、この宛先変換の場合、偽装した実在しないIPへのルーティングをWAN向けに設定してやらなければならない。特にこの要件は、LAN接続セグメントの空きホストIPに、実際の宛先IPを偽装しているのだから、普通にルーティングしてしまうと、ARP解決のみで終わってしまい、不達になるおそれがある。
 この筐体には、宛先NATのコンフィグに、このNAT変換前ルーティングに必要なルートを、自動で追加してくれるオプションがあり、国内案件で宛先NATを設定する時は、このオプションを設定するのがルールになっていた。秋田は、ルーティングテーブルの表示コマンドを叩いて、その自動で作られたルートの部分をドラッグし、反転させた。確かに、表示としては、この偽装IPへのルートは、全く無関係そうな特定のIP経由で、と言う不思議な出力になっている。
 「あー…。このバイアの右側のIPって変換後の実IPですか?」
 都は念のため聞いた。viaどこそこ、という表示だ。
 「そうです。」
 「であれば、大丈夫ですよ。一応聞きますけど、その実IPへのルーティングってありますよね?」
 もう一つ念のため、都は聞いた。秋田はルーティングテーブルを少しだけスクロールして、そのルートを見つけた。
 「ありますね。まあ、pingは届かないんですけどね。」
 秋田はそう言いながら、変換後実IPに向けてpingコマンドを叩いた。不達を示すピリオドだけの表示が続く。実IPへのルーティングがあれば、自動で作られたスタティックルートのネクストホップに対して再帰ルーティングが働き、パケットはWANへルーティングされ、NAT処理へ入ることが出来る。
 「ちなみに、今NATテーブルってどうなってます?」
 都がそう聞くと、秋田は、NATテーブルを表示するコマンドを叩いてくれた。何も変換されたログは出ていない。こういう時の、何も変換されたログがない状態は、何も通信が発生していないだけなのか、こちらのコンフィグが間違っていて、変換されてないのかを、はっきり見極められるものとはならない。そのため秋田は、こちらのコンフィグミスという疑いを減らしておく意図で、都に自動で作られるルートがこれであっているかどうか、聞いてきたのだろう。都は、一度ざっと上からコンフィグを見せてくれと秋田にお願いして、見せてもらったが、NATのインバウンド、アウトバウンド設定も聞いた通りになっていて、こういう時に邪魔することが疑われるパケットフィルタリングの設定は何も入っていない。ルーティングも問題がないとなると、特に設計上・コンフィグ上の問題はないように思われる。
 「試しに、自動ルートオプションやめて、スタティックに書いてみる、と言うのも手ですけど…。」
 この情報量で、もし、客宅ルーターに問題があると言う前提で考えるとなると、今の都にはこれくらいしか思いつかなかった。
 「秋田さん、岸谷さんの今日の工事って一緒にやってますよね?今電話出れます?」
 秋田の席の島の一つ向こうの島に座っている、秋田と同じチームの派遣社員が、代表番号に掛かってきた岸谷宛の電話を取ったらしく、聞いてきた。岸谷は都と秋田の背中で、まだ他の電話に捕まっている。秋田が誰からと聞くと、今日の現場作業員の会社のマネージャーだと言う。
 「またあいつか。」
 秋田はそう悪態を付くと、保留番号を電話を取った派遣社員から聞き、秋田の机にある固定電話の受話器を取り、その保留番号のボタンを押した。