ルーティングエンジンベースの静的HTTPリダイレクトサービスの設定
Junos OS Release 19.3R2以降、MXシリーズで次世代サービスを有効にしている場合、HTTPリダイレクトサービスもサポートされます。
MS-MPC/MS-MIC または MX-SPC3 サービス カードを使用する代わりに、ルーティング エンジンで HTTP リダイレクト サービスを設定できます。ウォールドガーデンをファイアウォールサービスフィルターとして設定します。ウォールドガーデンは、キャプティブポータルを介した再承認を必要とせずに、ウォールドガーデン内のサイトへの加入者アクセスを提供するサーバーのグループです。ウォールド ガーデン サービス フィルターは、ウォールド ガーデン宛てのトラフィックとウォールド ガーデンの外部宛てのトラフィックを識別します。ウォールに囲まれた庭の外を宛先とするHTTPトラフィックのみが、HTTPリダイレクトサービスによる処理のためにルーティングエンジンに送信されます。CPCDサービスは、サービスセットによってルーティングエンジン上のサービスインターフェイスに関連付けられています。
ルーティング エンジン上のサービス インターフェイスは、si- プレフィックス(例:si-1/1/0)で識別されます。si- interfaceは、ルーティングエンジン向けのすべてのリダイレクトおよび書き換えトラフィックとサービスを処理します。キャプティブポータルコンテンツ配信(CPCD)サービスを有効化および有効化するには、si- インターフェイスが up のステータスで動作している必要があります。CPCDサービスが有効になった後は、si- インターフェイスの動作状態を変更しても、既存のCPCDサービスには影響しません。
CPCDサービスは、ウォールドガーデン宛てではないサブスクライバーHTTPリクエストトラフィックをリダイレクトサーバーに送信し、リダイレクトサーバーはリダイレクトURLで応答します。リダイレクトURLは、不正な外部サイトではなく、キャプティブポータルにトラフィックを送信します。キャプティブポータルは、リダイレクトされた加入者に認証および許可サービスを提供してから、ウォールドガーデンの外にある保護されたサーバーへのアクセスを許可します。
リダイレクトサーバーは、ローカルまたはリモートにすることができます。
ローカルリダイレクトサーバー—ルーターに常駐し、加入者トラフィックを壁に囲まれた庭内のキャプティブポータルにリダイレクトします。
リモートリダイレクトサーバー:ルーターの背後にある壁に囲まれた庭内のポリシーサーバーなどのデバイスに存在します。サブスクライバーの HTTP トラフィックの宛先アドレスは、リモートリダイレクトサーバーのアドレスに書き換えられます。リモートサーバーは、加入者のトラフィックをその壁に囲まれた庭内のキャプティブポータルにリダイレクトします。
ウォールドガーデンをファイアウォールサービスフィルターとして構成する
ウォールドガーデンをファイアウォールサービスフィルターとして設定すると、ウォールドガーデン内のサーバーを宛先とするトラフィックが識別され、スキップされます。他のすべてのHTTPトラフィックは、ウォールに囲まれた庭の外のアドレスに宛てられます。このトラフィックはフィルター条件に一致しないため、処理のためにルーティング エンジンに流れます。
ウォールド ガーデンにキャプティブ ポータルまたはサーバのリストとして単一のサーバが含まれるようにサービス フィルタを設定できます。
単一のサーバーを持つウォールドガーデンをキャプティブポータルとして構成します。
サービス フィルターを作成します。
[edit] user@host# edit firewall family address-family service-filter filter-name
フィルター条件を定義して、キャプティブポータルへのトラフィックの処理を識別し、スキップします。
キャプティブ ポータルの宛先アドレスと宛先ポートを指定して、キャプティブ ポータルを宛先とするトラフィックを照合するフィルタ条件を指定します。
[edit firewall family inet service-filter filter-name] user@host# set term name from destination-address ip-address user@host# set term name from destination-port port-number
一致するトラフィックがラインカードでの処理をスキップすることを指定します。
[edit firewall family inet service-filter filter-name] user@host# set term name then skip
前の条件に一致しなかったすべてのトラフィックからHTTPトラフィックを識別するフィルタ条件を定義し、CPCDサービスルールによる処理のために送信します。
スキップされた HTTP トラフィックと一致する 1 つ以上の HTTP ポート番号を指定します。
[edit firewall family inet service-filter filter-name] user@host# set term name from destination-port http-port-number
一致するトラフィックが CPCD サービスによって処理されることを指定します。
[edit firewall family inet service-filter filter-name] user@host# set term name then service
フィルター条件を定義して、残りの非HTTPトラフィックに対するそれ以上のアクションをスキップします。
[edit firewall family inet service-filter filter-name] user@host# set term name then skip
例えば、以下の設定では、キャプティブポータルが192.0.2.0であるIPv4 HTTPトラフィック用のフィルタwalled-v4を作成します。アドレスに一致するトラフィックの処理はスキップされます。トラフィックはキャプティブ ポータルに送信されます。一致しないトラフィックは用語 http になり、スキップされたすべてのトラフィックから HTTP トラフィックが選択され、CPCD サービスに従って処理されるように送信されます。最後に、タームスキップにより、残りの非HTTPトラフィックがすべてスキップされます。
[edit] user@host# edit firewall family inet service-filter walled-v4 [edit firewall family inet service-filter walled-v4] user@host# set term portal from destination-address 192.0.2.0 user@host# set term portal from destination-port 80 user@host# set term portal then skip user@host# set term http from destination-port 80 user@host# set term http then service user@host# set term skip then skip
ウォールド ガーデンをサーバーのリストまたはサブネットとして構成します。
サービス フィルターを作成します。
[edit] user@host# edit firewall family address-family service-filter filter-name
フィルター条件を定義します。
サーバーの宛先プレフィックスリストを指定して、ウォールドガーデン内の任意のサーバー宛てのトラフィックに一致するフィルター条件を指定します。
[edit firewall family inet service-filter filter-name] user@host# set term name from destination-prefix-list list-name user@host# set term name from destination-port port-number
一致するトラフィックがラインカードでの処理をスキップすることを指定します。
[edit firewall family inet service-filter filter-name] user@host# set term name then skip
前の条件に一致しなかったすべてのトラフィックからHTTPトラフィックを識別するフィルタ条件を定義し、CPCDサービスルールによる処理のために送信します。
スキップされた HTTP トラフィックと一致する 1 つ以上の HTTP ポート番号を指定します。
[edit firewall family inet service-filter filter-name] user@host# set term name from destination-port http-port-number
一致するトラフィックが CPCD サービスによって処理されることを指定します。
[edit firewall family inet service-filter filter-name] user@host# set term name then service
フィルター条件を定義して、残りの非HTTPトラフィックに対するそれ以上のアクションをスキップします。
[edit firewall family inet service-filter filter-name] user@host# set term name then skip
(オプション)ウォールド ガーデン内のサーバーを指定するプレフィックス リストを定義します。サブネットまたは複数の個別のアドレスを指定できます。
[edit policy-options] user@host# set prefix-list list- name ip-address/mask user@host# set prefix-list list- name ip-address1 user@host# set prefix-list list- name ip-address2
例えば、以下の構成では、IPv6 HTTPトラフィック用のフィルタ、walled-v6-listを作成し、プレフィックスリストwg-listで、ウォールドガーデンに2台のサーバーを指定します。フィルター条件portal6は、ウォールドガーデン宛てのIPv6トラフィックを識別します。一致しないトラフィックは用語 http6 になり、スキップされたすべてのトラフィックから HTTP トラフィックが選択され、CPCD サービスに従って処理されるように送信されます。最後に、用語 skip6 を指定すると、残りの非 HTTP トラフィックがすべてスキップされます。
[edit] user@host# edit firewall family inet6 service-filter walled-v6-list user@host# set term portal6 from destination-prefix-list wg-list user@host# set term portal6 then skip user@host# set term http6 from destination-port [80 8080] user@host# set term http6 then service user@host# set term skip6 then skip [edit policy-options] user@host# set prefix-list wg-list 2001:db8::10.10 user@host# set prefix-list wg-list 2001:db8::10.22
ローカルおよびリモートリダイレクトサーバーのHTTPリダイレクトの設定
ウォールドガーデン外のサイトに対してHTTPリクエストが行われると、CPCDはトラフィックをキャプティブポータルにリダイレクトして認証と承認を行うことができます。
ウォールド ガーデンの外側を宛先とするトラフィックに対して実行するアクションを指定する CPCD サービス ルールを設定します。このトラフィックは、ウォールド ガーデン サービス フィルターによって識別されてサービスに渡されるか、ウォールド ガーデン サービス ルールによって識別されて受け入れられました。構成するアクションは、ローカルまたはリモートのどちらのHTTPリダイレクトサーバーを使用しているかによって異なります。
ルーターでローカル HTTP リダイレクト サーバーを使用している場合は、リダイレクト アクションを指定します。
ルーターの後ろの壁に囲まれた庭にあるリモート HTTP リダイレクト サーバーを使用している場合は、リダイレクト URL を単純に指定することはできません。この場合、サービス ルールはトラフィックの IP 宛先アドレスを書き換える必要があります。新しい宛先アドレスは、リモート HTTP リダイレクト サーバーのアドレスです。次に、リモート サーバーは、トラフィックをキャプティブ ポータルに送信するためのリダイレクト URL を提供します。
CPCD サービスは、サービス・セットによってサービス・インターフェースに関連付けられます。サービス セットとウォールド ガーデン サービス フィルターの両方が、静的に設定されたインターフェイスに適用されます。
たとえば、次のローカル サーバーの構成では、CPCD サービス ルール redir-svc はトラフィックをキャプティブ ポータル http://www.portal.example.com
にリダイレクトします。サブスクライバーが入力した元の URL がリダイレクト URL に追加されます。
user@host# edit services captive-portal-content-delivery user@host# edit rule redir-svc user@host# set match-direction input user@host# set term redir1 then redirect http://www.portal.example.com/url=%dest-url%
リモート・サーバーに対する以下の構成では、元の宛先アドレスをリモート・サーバーのアドレス 192.0.2.230 に書き換える CPCD サービス・ルール rewr-svc を作成します。
user@host# edit services captive-portal-content-delivery user@host# edit rule rewr-svc user@host# set match-direction input user@host# set term rewr1 then rewrite destination-address 192.0.2.230
サービス プロファイルとサービス インターフェイスを関連付けるためのサービス プロファイルおよびサービス セットの設定
サービスセットは、ルーティングエンジンが実行する1つ以上のサービスを定義します。HTTP リダイレクト・サービスの場合、CPCD ルールを含む CPCD サービス・プロファイルを定義します。サービス・セットは、CPCD サービス・プロファイルを特定のサービス・インターフェースに適用します。
たとえば、次の設定では、CPCD ルール redir-svc を参照する CPCD サービス プロファイル redir-prof が作成されます。サービス・セット ss2 は、ルーティング・エンジン・ベースの CPCD 用として指定されています。このセットは、CPCD サービスプロファイル redir-prof をサービスインターフェイス si-4/0/0 に関連付けます。
[edit services captive-portal-content-delivery] user@host# edit profile redir-prof user@host# set cpcd-rules redir-svc [edit services] user@host# edit service-set ss2 user@host# set service-set-options routing-engine-service user@host# set captive-portal-content-delivery-profile redir-prof user@host# set interface-service-service-interface si-4/0/0
論理インターフェースへの CPCD サービス・セットとサービス・フィルターのアタッチ
HTTP リダイレクト・サービスを使用するには、CPCD サービス・セットを論理インターフェースに接続する必要があります。ウォールド ガーデンがサービス フィルタとして設定されている場合は、サービス セットと同じインターフェイスに接続する必要があります。そのインターフェイスに出入りするトラフィックは、サービスフィルターによってフィルタリングされます。サービス対象として識別されたトラフィックは、CPCD プロファイルが適用されているルーティング エンジン サービス インターフェイスに送信されます。
例えば、以下の設定では、ラインカードのシャーシ スロット 4 のラインカードとスロット 0 の MIC でインライン サービスが有効になります。論理インターフェイスにアドレスを割り当てます。次に、サービス セット sset2 とサービス フィルター walled-v4 を IPv4 アドレス ファミリの ge-2/0/1.0 にアタッチします。サービス セットとフィルターは、どちらもインターフェイスの入力と出力に適用されます。
user@host# edit chassis fpc 4 pic 0 inline-services bandwidth 1g user@host# edit interfaces ge-2/0/1 unit 0 family inet user@host# set address 203.0.113.5 user@host# set service input service-set sset2 service-filter walled-v4 user@host# set service output service-set sset2 service-filter walled-v4
HTTP サーバーがコンテンツアクセスを制御するために使用できる GET ヘッダータグの挿入
場合によっては、HTTP サーバーで、ユーザーにコンテンツへのアクセスを許可するかどうかを決定したいことがあります。Junos OS リリース 19.1 以降、ルーティング エンジンベースの静的 HTTP リダイレクト サービス フィルターを構成して、ルーティング エンジンが HTTP GET メッセージのパケット ヘッダーに挿入するタグを指定できます。ルーターのホスト名または加入者のMACアドレス、IPv4アドレス、またはIPv6アドレスのタグを挿入できます。
次の手順は 、図 1 に対応しています。
ユーザーのデバイスであるHTTPクライアントは、HTTPサーバーとTCPハンドシェイクシーケンスを実行します。
ハンドシェイクが成功すると、クライアントはユーザーが要求した URL を含む HTTP GET を送信します。
ルーティング エンジンは、/$ と $/ で囲まれたランダムな文字列を連結して、その URL を変更します。文字列の長さは、後で挿入されるタグの合計長と一致します。文字列は、クライアントから返されたときに識別子として機能します。
挿入するタグの長さが 30 文字で、要求された URL が http://192.51.100.20/test.html であるとします。ルーティング エンジンは、次の例のように、ランダムな 30 文字の文字列で変更された URL を返します。
http://192.51.100.20/test.html/$IIGSbVdNDTDvnJFIAyoysXwVJawoYj$/
ルーティング エンジンは、変更された URL をステータス コード 302 (Found) または 307 (一時リダイレクト) で送信します。送信されるコードは、使用されているHTTPのバージョンとBNG上のJunos OSのバージョンによって異なります。どちらのコードも、変更された URL でアクセス要求を再送信する必要があることをクライアントに示しています。
ルーティング エンジンは、クライアントおよびサーバーとの TCP 接続をリセットします。
クライアントは、変更された URL に対して HTTP サーバーとの TCP ハンドシェークを実行します。
クライアントは、変更された URL を使用して HTTP GET を送信します。
ルーティング エンジンは、連結された文字列の長さがクライアントに送信された長さと同じかどうかをチェックします。
長さが正しい場合は、URL を元の要求された URL に戻し、タグを GET ヘッダーに挿入して、GET を HTTP サーバーに転送します。構成されている場合、必要に応じて、GET を元の要求されたサーバーではなくリダイレクト URL に転送できます。
長さが正しくない場合、ルーティング エンジンはパケットをドロップし、ドロップ カウンターをインクリメントします。
HTTP サーバーは GET メッセージを評価し、アクセスを許可する場合は 200 (OK)、要求が拒否された場合は 403 (禁止) の状態コードを含む応答をクライアントに送信します。
ルーティング エンジンは、クライアントとサーバーとの TCP 接続を終了します。

タグは、設定時と同じ順序でヘッダーに挿入されます。タグ名では大文字と小文字が区別されるため、 tag ABCD
と tag abcd
は異なる名前として処理されます。
GET ヘッダーに挿入するタグを構成するには:
例えば、以下の設定では、入力インターフェイスのトラフィックに一致するサービス・ルール insert-rule を作成します。用語 t1 は、加入者の MAC アドレスを持つ x-mac-addr と、加入者の IPv4 アドレスの値を持つ x-sub-ip の 2 つのタグを挿入します。
[edit] user@host# edit services captive-portal-content-delivery rule insert-rule user@host# set match-direction input user@host# set term t1 then insert tag x-mac-addr tag-value subscriber-mac-addr user@host# set term t1 then insert tag x-sub-ip tag-value subscriber-ip
次のサンプル ルールでは、宛先アドレスが 198.51.100.50 または 198.51.100.75 に一致するトラフィックにのみタグが付けられます。加入者のIPアドレスとルーターのホスト名にタグが挿入されます。ルールの 2 番目の用語は、トラフィックが最初に要求された URL に送信されるのではなく転送されるリダイレクト URL を提供します。
user@host# edit services captive-portal-content-delivery user@host# set match-direction input user@host# set rule tag-redirect term t1 from destination-address 198.51.100.50 user@host# set rule tag-redirect term t1 from destination-address 198.51.100.75 user@host# set rule tag-redirect term t1 then insert tag x-sub-ip tag-value subscriber-ip user@host# set rule tag-redirect term t1 then insert tag x-hostname tag-value hostname user@host# set rule tag-redirect term t2 then redirect http://www.portal.example.com user@host# set profile http-insert-redirect cpcd-rules tag-redirect
ルーティング・エンジン・ベースの HTTP リダイレクトの CPCD サービス・ルールと同様に、CPCD サービス・プロファイルにルールを組み込んでから、CPCD サービス・セットを使用してプロファイルをインライン・サービス・インターフェースに関連付ける必要があります。ルーティング エンジンは、ルールを使用して、サービス セットと同じ論理インターフェイス上のサービス フィルターに渡された HTTP トラフィックを処理します。
次の構成例を考えてみます。tag-redirect ルールは、入力インターフェイス上のトラフィックを照合し、加入者の IP アドレスの値とルーターのホスト名の 2 つのタグを GET ヘッダーに挿入するように定義されています。次に、ルールはタグ付けされたトラフィックのリダイレクト URL を提供します。CPCD サービス・プロファイル http-insert-redirect は、この規則を含むように定義されています。
user@host# edit services captive-portal-content-delivery user@host# set match-direction input user@host# set rule tag-redirect term t1 then insert tag x-sub-ip tag-value subscriber-ip user@host# set rule tag-redirect term t1 then insert tag x-hostname tag-value hostname user@host# set rule tag-redirect term t2 then redirect http://www.portal.example.com user@host# set profile http-insert-redirect cpcd-rules tag-redirect
サービス・セット sset1 は、ルーティング・エンジン・ベースの CPCD 用として定義されます。CPCD サービス・プロファイルをインライン・サービス・インターフェースに適用します。
user@host# edit services service-set sset1 user@host# set service-set-options routing-engine-services user@host# set captive-portal-content-delivery-profile http-insert-redirect user@host# set interface-service service-interface si-1/1/0
サービスフィルターwalled-tagは、192.0.2.100のウォールドガーデンに送信するHTTPトラフィック、198.51.100.50を宛先とするHTTPトラフィックがサービス処理に送信され、その他すべてのトラフィックをスキップする3種類のトラフィックを識別して動作します。これは、サービス ルールではなく、サービス フィルターで宛先アドレスを照合する例です。
user@host# edit firewall family inet service-filter walled-tag user@host# set term portal from destination-address 192.0.2.100 user@host# set term portal from destination-port 80 user@host# set term portal then skip user@host# set term http-tag from destination-address 198.51.100.50 user@host# set term http-tag from destination-port 80 user@host# set term http-tag then service user@host# set term skip then skip
サービスセットsset1とサービスフィルターの壁付きタグが論理インターフェイスに適用されます。
user@host# edit chassis fpc 4 pic 0 inline-services bandwidth 1g user@host# edit interfaces ge-2/0/1 unit 0 family inet user@host# set address 203.0.113.5 user@host# set service input service-set sset1 service-filter walled-tag user@host# set service output service-set sset1 service-filter walled-tag
変更履歴テーブル
機能のサポートは、使用しているプラットフォームとリリースによって決まります。 機能エクスプローラー を使用して、機能がプラットフォームでサポートされているかどうかを判断します。