SNAT(Secure Network Address Translation)とは、F5が提供するロードバランサである「F5 BIG-IP Local Traffic Management(LTM)」が実装する機能の1つです。受け取ったパケットの送信元IPアドレスを、別のIPアドレスに変換します。BIG-IP LTMにはNAT機能も装備されており、これによってプライベートIPアドレスとグローバルIPアドレスを1対1で変換できます。SNATはNATによく似ていますが、SNATでは複数のオリジナル アドレスを1つの変換アドレスにマップングできるようになっています。
変換の方法としては、1つ以上のオリジナル アドレスを特定の変換アドレスに直接マッピングする方法、変換アドレスとしてBIG-IP自身のIPアドレスの中から1つを自動的に選択する方法(SNAT automap)、iRuleに記述されたルールに従う方法(Intelligent SNAT)があります。SNATの用途としては、内部ネットワークのサーバから発信されたリクエストに含まれる送信元のプライベートIPアドレスを、グローバルIPアドレスに変換するといった使い方があります。しかしより重要なのは、外部のクライアントからのリクエストにおけるアドレス変換だと言えます。
基本的にBIG-IP LTMは、外部のクライアントからパケットを受け取り、事前に設定されたルールにもとづいて、宛先のグローバルIPアドレスを内部ネットワークのプライベートIPアドレスに変換し、サーバに引き渡します。サーバからのレスポンスは、通常であればBIG-IP LTMに渡され、ここで送信元となったサーバのプライベートIPアドレスをグローバルIPアドレスに変換した上で、クライアントに送信します。
しかしネットワーク構成によっては、レスポンスが必ずしもBIG-IPを通らないことがあります。例えばクライアントとBIG-IP、サーバが全て同じネットワーク上にあるワンアーム構成の場合、サーバからのレスポンスはBIG-IPを経由せず、直接クライアントに渡されてしまいます。この時クライアント側は、自分がリクエストを送り出した宛先IPアドレスと、サーバのレスポンスに含まれる送信元IPアドレスが異なるため、このパケットの受け取りを拒否することになります。またワンアーム構成ではなく、クライアント側のセグメントとサーバ側のセグメントがBIG-IPによって分けられている場合でも、間に他のルータが存在し、そちらがデフォルト ゲートウェイになっている場合には、同様の問題が発生します。
SNATを利用すると、このような問題を回避できます。BIG-IPが受け取ったパケットの送信元アドレスをBIG-IP自身のIPアドレスに変換してサーバに渡せるため、レスポンスのパケットも必ずBIG-IPを経由するようになるからです。