ネットワークアドレス変換(NAT)は、パケットが変換装置を通過するときにアドレスフィールドを書き換え、多くの場合はトランスポート層のポートも書き換えます。プライベート IPv4 アドレスを持つネットワークを、より少数の外部ルーティング可能アドレスを介して接続するために広く使われています。
サブネット化 · レッスン 6
NAT
送信元、宛先、ポートの変換が IPv4 フローと接続状態をどう変更するかを学びます。
送信元の変換
送信元 NAT は、パケットがネットワークから出るときに送信元アドレスを置き換えます。多対一の構成では、複数の内部フローが一つの外部アドレスを共有できるように、送信元ポートも変換します。このポートを考慮した方式は NAPT や PAT、外部アドレスが変化し得る場合はマスカレードとも呼ばれます。
変換装置は対応関係を追跡し、応答パケットを元の内部エンドポイント宛てに書き戻せるようにします。通常は同じトランスポートフローを転送するので、アプリケーションプロキシのように別のプロキシ接続を開く必要はありません。
送信元 NAT は外向きパケットの何を変更しますか?
宛先の変換
宛先 NAT は宛先アドレスまたはポートを書き換えます。一般には、外部エンドポイントを通じて内部サービスを公開するために使われます。ポート転送ルールでは、外部の TCP ポートを別の内部アドレスとポートに対応付けることがあります。戻りのトラフィックには、対応する一貫した逆変換が必要です。
受信ポート転送を実装する際に一般的に使われる NAT の形式はどれですか?
NAT とファイアウォールポリシー
NAT はファイアウォールではありません。ステートフルな変換装置には、要求されていない受信トラフィックに対応するマッピングがない場合があります。しかし、何に到達できるかを決めるのは、明示的な転送、宛先変換、フィルタリング、アプリケーションの公開です。セキュリティポリシーはアドレスの書き換えから推測するのではなく、ファイアウォールルール、最小権限のサービス、エンドツーエンドの制御によって明示し、監査してください。
NAT だけをセキュリティポリシーとして扱うべきでないのはなぜですか?
運用上の影響
NAT ではアドレスとポートの対応付けが枯渇することがあります。また、ピアツーピアプロトコルを複雑にし、アプリケーションから元の送信元を見えにくくし、アドレスを内部に埋め込むプロトコルに特別な処理を必要とする場合があります。フローを追跡する必要があるなら、ログには変換時刻とマッピングの詳細を残さなければなりません。
Linux では、現在のポリシーは一般に nftables とコネクショントラッキングで設定します。変更前に実際のルールセットを確認してください。
$ sudo nft list ruleset
$ sudo conntrack -L
2番目のコマンドには conntrack ツールと権限が必要です。ルールセットの変更でリモートアクセスが切断される可能性があるため、コンソールからの復旧手段、アトミックな設定、検証、切り戻しを用意してください。
共有アドレスを使うフローを内部クライアントまで追跡するには、どの証拠が必要ですか?
レッスン完了
NAT を完了しました
アドレス変換を、ルーティング、プロキシ、ファイアウォールポリシーから区別できるようになりました。
外向きフローの送信元変換を識別する。
公開サービスでの宛先変換を識別する。
ポートの対応付けによってアドレスを共有できる仕組みを理解する。
NAT をセキュリティと見なさず、明示的なフィルタリングを適用する。
変更時にはマッピングの証拠と復旧用アクセスを確保する。