サイト間 VPN 内の NAT が居場所を得るとき
変換は重複するプレフィックスや片側だけの戻り経路を救えるが、すべてのポリシーが見るアドレスを変えてしまう。マッピングは明示的に設計すべきだ。
二つのサイトが同じプライベート範囲を使っていて、トンネルは上がるのに有益なものは何も通らない。変換はよくある答えであり、実際に有効な答えでもある。遠い側に別の範囲を見せれば、重複や、もう一方のネットワークがルーティングできない戻り経路を解決できる。見落とされがちなのは、変換があらゆる後続の判断が見るアドレスを変えるということだ。これは文書化された設計判断として、書かれたマッピングとともに扱うべきであり、ping が通るまでルールを足していくものではない。
どのアドレスを書き換えるかを決める
送信元変換は、遠隔のサービスとそのログがクライアントとして見るものを変えるため、支店のホストは到着時にゲートウェイのアドレスになる。これに対して宛先変換やプレフィックス変換は、遠隔リソースの代替アドレスを提示する。両側で協調した変換が必要な配備もあり、そうしないと同一の二つのネットワークを分離できない。混乱の多くはこの組み合わせから始まる。
変換前の送信元、アプリケーションが呼ぶ宛先、そして各ゲートウェイが照合するアドレスの組を書き留める。三列で足り、三列目こそが抜け落ちやすい。
セレクタの順序も重要だ。IPsec ポリシーの選択と変換は決められた段階で行われるため、変換前のアドレス向けに書かれたセレクタは、想定した段階のパケットに決して一致しないことがある。インストールされたポリシーを確認すること。インストールしようとしたポリシーではなく、一方のコンポーネントがルールを受け入れ、別のコンポーネントが無視したときに両者は食い違う:
ip xfrm policy show
ip xfrm state show
nft list ruleset | grep -A4 nat
ペイロードと戻り経路を追う
変換後の送信元を個々の支店ホストの代わりに記録するサーバーは、元のアドレスに紐づくあらゆるルールやレポートを壊す。マッピングを変える前に、そのフィールドから下流の何かが判断していないかを調べる。アクセスリスト、監査レポート、レート制限、ライセンス確認などだ。いずれも、変換が後から説明のつかない障害として現れる場所である。
ペイロードの中にアドレスを持つプロトコルは別途の計画が要る。外側のヘッダーを書き換えても内側の参照には触れないからだ。アクティブ FTP、SIP、一部のリモートアクセス製品が典型例で、これらを無視した設計は Web トラフィックでは動いても、肝心のアプリケーションでは失敗する。
戻りトラフィックはステートフルなマッピングに依存する。ゲートウェイのフェイルオーバーで状態を失うことがあり、非対称ルーティングはそれを迂回し、再起動は遠い側でセッションが開いたままでも状態を消す。だからこそ、宛先に届く要求と完了するセッションは別の受理結果なのだ。
サイトの再番号付けと比べる
競合する一方のサイトを再番号付けすれば、マッピングは完全に不要になり、変換表なしで読めるアドレス計画が残る。運用上のコストは高い。DNS レコード、静的割り当て、ファイアウォール規則、文書化されたすべてのアドレスを同時に変える必要がある。コストは計画された作業枠で一度だけ発生し、最終状態は明確だ。その代わりに得られるのは、何年後でも参照表なしでパケットキャプチャを読めることである。
変換はほとんどのローカル変更を避けるが、DNS、文書、トラブルシューティングで永久に維持すべきマッピングを生む。コストは、トンネル内で一つのプレフィックスが別の意味を持つと学ぶ未来の技術者という形で、継続的に発生する。
一時的な接続や、自分が管理しないパートナーネットワークなら、継続的なコストは通常払う価値がある。自分が所有し何年も所有する二つのサイトなら、移行を正直に数えれば再番号付けのほうが安い判断になることが多い。
実際のセッションで両方向を証明する
単一のプローブではなく、アプリケーションのセッションを試す。エコー要求の成功は一つのプロトコルの一方向が動くことしか証明せず、ステートフルなものに対して失敗する戻り経路とも完全に両立する。設計のきっかけになったサービスを使い、遠い側のログを読んで、どの送信元アドレスが記録されたかを確認する。
tcpdump -ni any host 10.40.9.20 and port 443
conntrack -L | grep 10.40.9.20
ip route get 10.40.9.20
次に、マッピング越しに到達できるのが意図したサービスだけであることを確認する。変換はアドレス指定を変えるだけで認可には何もしない。何が許可されるかは依然としてファイアウォールポリシーが決める。不明瞭な変換済みプレフィックスをアクセス制御の代わりにする設計には、アクセス制御がまったくない。
マッピング、試したセッション、両側が観測したアドレスを記録する。このトンネルを次にデバッグする人には、設定ファイルよりもその三つの事実のほうが役に立つ。