BIG-IP Forward Proxy セットアップガイド

最終更新日: 2020年7月13日

本ドキュメントでは、BIG-IPのForward Proxy設定について解説します。

はじめに

このページでは、これらのオフィシャルなドキュメントの補足となる資料や、複数の機能を組合せてソリューションを実現する方法をご紹介いたします。 F5のオフィシャルなドキュメントはこちらにございます。

BIG-IP Forward Proxyにおける基礎知識

本章では、BIG-IPをForward Proxyとして構成する際に前提となる基礎知識について、紹介します。

関連するオブジェクト

本節では、BIG-IPをForward Proxyで利用する上で必要となる、オブジェクトの概要について紹介します。 詳細は、下図をご参照ください。

_images/mod1-1.png

BIG-IPでForward Proxyを構成する際のオブジェクト

  • HTTP Explicit Profile

    BIG-IPをクライアントから見た明示 (Explicit) プロキシとして設定する場合に利用するプロファイルです。

  • HTTP Transparent Profile

    BIG-IPをクライアントから見た透過 (Transparent) プロキシとして設定する場合に利用するプロファイルです。

  • DNS Resolver

    Forward Proxyとして動作するBIG-IPがクエリを行う、DNSサーバのアドレスを指定します。DNSサーバのレスポンスは、BIG-IP内にキャッシュされます。

  • Virtual Server

    BIG-IPで、サービスを受け付けるリスナーとして動作します。Virtual Serverで指定したIPアドレスおよびポート番号を、クライアント端末のWebブラウザ等に設定します。

HTTPプロファイルの種類

プロキシモードを指定するHTTPプロファイルは、下表の通りです。

プロキシモード 説明
Reverse (デフォルト) リバースプロキシとして利用
Explicit 明示プロキシとして利用
Transparent 透過プロキシとして利用

アウトバウンド (=内部からインターネットへのアクセス)通信処理を行う際には、ExplicitもしくはTransparentを指定したHTTPプロファイルを割り当てます。

HTTP-Tunnel

プロキシサーバを経由したHTTPS通信では、httpのCONNECTメソッドが使われます。クライアントからCONNECTメソッドを受け取ると、HTTPSプロキシ (=BIG-IP)は対象ホストにTCP 3-wayハンドシェイクによる接続を行います。HTTPSプロキシはソケット接続を代行して送受信データを処理するのみ で、流れるデータの内容には一切関与はしません。(IPヘッダとTCPヘッダのみ変更します。)

上記の処理を、BIG-IPでは”HTTP-Tunnel”と明記しています。

Explicit Forward Proxy トポロジー

BIG-IPを明示 (Explicit)プロキシとして使用するの場合のトポロジーは、下図の通りです。

_images/mod1-4.png
  • BIG-IPを明示 (Explicit)プロキシとして構成する場合は、クライアント端末のWebブラウザ等でリクエストをプロキシサーバ宛に送信するように設定します。PAC (Proxy Auto Config)ファイルやWPAD (Web Proxy Auto Discovery Protocol)を使用することで、ブラウザ側の設定を自動化することも可能です。
  • 既存ネットワーク構成の変更は最小限で済むトポロジーです。

Transparent Forward Proxy トポロジー

BIG-IPを透過 (Transparent)プロキシとして使用するの場合のトポロジーは、下図の通りです。

_images/mod1-5.png
  • BIG-IPを透過 (Transparent)プロキシとして構成する場合は、BIG-IPをルータやFireWall等の間に"挟み込む"形で導入することで、クライアントからのリクエストが自動的にプロキシサーバに送信されます。この構成の場合、クライアントはプロキシの存在を意識しないため、Webブラウザ等の設定は不要です。
  • リクエストがプロキシサーバに送られるようにするために、既存ネットワーク構成の変更が必要となる場合があります。

HTTPS Explicit Forward Proxyの基本設定

本章では、BIG-IPをHTTPS用のExplicitプロキシとして構成する手順について、紹介します。

サンプル構成

本章で紹介する構成は、以下の通りです。

_images/mod2-1-1.png
  • クライアントソフトウェア (ブラウザ)では、リクエストを直接プロキシサーバ (=BIG-IP)に転送するように設定します。
  • BIG-IPにおいて、プロキシサーバとして動作するVirtual Serverを設定します。また、BIG-IP (プロキシサーバ)はホストの名前解決にDNSリゾルバを使用します。 (例: www.f5.com → 104.219.104.148)
_images/mod2-1-2.png
  • HTTPS Forward Proxyの場合は、HTTPにおける設定に加えて、前述のHTTPトンネル用のVirtual Serverの設定が必要となります。

DNSリゾルバの設定

BIG-IPのConfiguration Utilityで、DNSリゾルバを設定します。

Network >> DNS Resolver を選択して、DNSリゾルバを作成します。下図の例では"dns_resolover"という名前のDNSリゾルバを作成しています。

_images/mod2-2-1.png

作成したDNSリゾルバにおいて、Forward Zone を選択します。

_images/mod2-2-2.png

Forward Zoneの名前を". (ドット)"と指定して、BIG-IPがクライアントとして名前解決を行うDNSサーバのアドレスを入力します。

_images/mod2-2-3.png

TLSをサポートするHTTP Tunnelの設定

TLS (SSL)をサポートするHTTP Tunnelを設定します。

Network >> Tunnels を選択して、HTTP Tunnelを作成します。ここではForward Proxyとして構成するため、Profileとして tcp-forward を指定します。

_images/mod2-3.png

HTTPプロファイル設定

Explicit Forward Proxyを構成するHTTPプロファイルを設定します。

Local Traffic >> Profiles >> Services を選択して、HTTPプロファイルを作成します。

  • General Properties のセクションで以下の設定を行います。

    • Proxy Mode: "Explicit"を選択
    • Parent Profile: "http-explicit"を選択
    _images/mod2-4-1.png
  • Explicit Proxy のセクションで以下の設定を行います。
  • DNS Resolver: "DNSリゾルバの設定"の項で作成したものを選択します。
  • Tunnel Names: "TLSをサポートするTCPトンネルの設定"の項で作成したものを選択します。
_images/mod2-4-2.png

Explicit Proxy用Virtual Server設定

Explicit Forward Proxyを構成するVirtual Serverを設定します。このVirtual Serverは、クライアントから見たプロキシサーバとして動作します。

Local Traffic >> Virtual Server を選択して新規にVirtual Serverを構成し、以下の設定を行います。

  • Destination Address/Mask: クライアントのブラウザで指定するIPアドレス、およびサブネットマスク

  • Service Port: クライアントのブラウザで指定するポート番号

  • HTTP Profile: "HTTP Profile設定"の項で作成したものを指定

  • VLAN and Tunnel Traffic: 必要なVLANとトンネルを指定

  • Source Address Translation: "Automap"もしくは"SNAT"を指定

  • Address Translation: 有効 (チェックを入れる)

  • Port Translation: 有効 (チェックを入れる)

    _images/mod2-5-1.png
    _images/mod2-5-2.png

トンネル用Virtual Server設定

HTTPS通信においてトンネルを構成するVirtual Serverを設定します。

Local Traffic >> Virtual Server を選択して新規にVirtual Serverを構成し、以下の設定を行います。

  • Destination Address/Mask: "0.0.0.0/0"を指定

  • Service Port: 通常は"443" (HTTPS)を指定

  • Source Address Translation: "Automap"もしくは"SNAT"を指定

  • Address Translation: 無効 (チェックを外す)

  • Port Translation: 無効 (チェックを外す)

    _images/mod2-6-1.png
    _images/mod2-6-2.png

アクセス確認

クライアントPCのWebブラウザから正常にアクセスできることを確認します。この例では https://www.f5.com にアクセスします。

_images/mod2-7-1.png

SSL Forward Proxyの基本設定

本章では、BIG-IPをSSL Forwardプロキシとして構成する手順について、紹介します。SSL Forwardプロキシを構成することで、BIG-IPでSSL通信を可視化することができます。

以下の設定については、前章の手順を参照してください。

  • サンプル構成
  • DNSリゾルバの設定
  • TLSトンネルをサポートするHTTP Tunnelの設定
  • HTTPプロファイル設定
  • Explicit Proxy用Virtual Server設定

本章では上記の設定に加えて、以下の内容を紹介します。

CA証明書の設定例

SSL Forward Proxyを構成する場合は、BIG-IPにCA証明書と秘密鍵をインストールします。ここでは、BIG−IP上でCLIで設定する手順を紹介します。

# opensslに必要なファイルとディレクトリの作成
mkdir /config/ca
cd /config/ca
mkdir /config/ca/newcerts
mkdir /config/ca/private
mkdir /config/ca/crl
touch /config/ca/index.txt
echo 01 > /config/ca/serial

# openssl設定ファイルをコピー
cp /etc/pki/tls/openssl.cnf /config/ca

# openssl.cnfファイルの設定
vi /config/ca/openssl.cnf
unique_subject  = no
dir             = /config/ca

# BIG-IPがSSL可視化を行うために使用する、CA証明書とキーを生成
# 注: Common Nameとして"proxy_ca.example.com"を指定
openssl req -x509 -nodes -days 3650 -newkey rsa:2048 -out proxy_ca.pem -outform PEM -keyout proxy_ca.key

# CA証明書を確認
openssl x509 -in proxy_ca.pem -noout -text

# BIG-IPのファイルストアにインポート
tmsh install sys crypto cert proxy_ca.crt from-local-file /config/ca/proxy_ca.pem
tmsh install sys crypto key proxy_ca.key from-local-file /config/ca/proxy_ca.key

ブラウザでのアクセス時にセキュリティ警告が表示されるのを防ぐため、上記で生成したCA証明書をクライアント端末にインポートします。例えばWindowsの場合、「信頼されたルート証明機関」にBIG-IPが再署名に使用する証明書を追加します。

_images/mod3-1.png

SSLプロファイル設定

Explicit Forward Proxyを構成するクライアントおよびサーバSSLプロファイルを設定します。

  • クライアントSSLプロファイル

    • Local Traffic >> Profiles >> SSL >> Client を選択して、クライアントSSLプロファイルを作成します (この例では"clientssl_proxy")。親プロファイル (Parent Profile)として、clientsslを指定します。
    _images/mod3-2-1.png

 - SSL Forward Proxy のセクションで以下の設定を行います。

  • SSL Forward Proxy: 有効 (Enabled)
  • CA Certificate Key Chain: "CA証明書の設定例"の項で作成したCA証明書およびキーを指定
  • SSL Forward Proxy Bypass: 有効 (Enabled)
_images/mod3-2-2.png
  • サーバSSLプロファイル

    • Local Traffic >> Profiles >> SSL >> Server を選択して、サーバSSLプロファイルを作成します (この例では"serverssl_proxy")。親プロファイル (Parent Profile)として、serversslを指定します。合わせて、以下の設定を行います。
      • SSL Forward Proxy: 有効 (Enabled)
      • SSL Forward Proxy Bypass: 有効 (Enabled)
    _images/mod3-2-3.png
    • Server Authentication のセクションで以下の設定を行います。
      • Server Certificate: "require..."を選択
      • Trusted Bundled Authority: "ca-bundle.crt"を選択
    _images/mod3-2-4.png

トンネル用Virtual Server設定

HTTPS通信においてトンネルを構成するVirtual Serverを設定します。

Local Traffic >> Virtual Server を選択して新規にVirtual Serverを構成し、以下の設定を行います。

  • Destination Address/Mask: "0.0.0.0/0"を指定

  • Service Port: 通常は"443" (HTTPS)を指定

  • SSL Profile (Client): "SSLプロファイル設定"の項で作成したClient SSL Profileを指定

  • SSL Profile (Server): "SSLプロファイル設定"の項で作成したServer SSL Profileを指定

  • Source Address Translation: "Automap"もしくは"SNAT"を指定

  • Address Translation: 無効 (チェックを外す)

  • Port Translation: 無効 (チェックを外す)

    _images/mod3-3-1.png
    _images/mod3-3-2.png
    _images/mod3-3-3.png

アクセス確認

クライアントPCのWebブラウザから正常にアクセスできることを確認します。この例では https://www.f5.com にアクセスします。

_images/mod3-4-1.png

また、証明書の詳細を確認します。

_images/mod3-4-2.png

"CA証明書の設定例"の項で作成した証明書が利用されていることがわかります。