ルーティングエンジンベースの静的HTTPリダイレクトサービスの設定
Junos OSリリース19.3R2以降では、MXシリーズで次世代サービスを有効にしている場合、HTTPリダイレクトサービスもサポートされます。
MS-MPC/MS-MIC または MX-SPC3 サービス カードを使用する代わりに、ルーティングエンジンで HTTP リダイレクト サービスを設定できます。ウォールドガーデンをファイアウォールサービスフィルターとして設定します。ウォールドガーデンとは、キャプティブポータルを介した再認証を必要とせずにウォールドガーデン内のサイトへの加入者アクセスを提供するサーバーのグループです。ウォールドガーデンサービスフィルターは、ウォールドガーデン宛てのトラフィックとウォールドガーデンの外を宛先とするトラフィックを識別します。ウォールドガーデンの外宛てのHTTPトラフィックのみが、HTTPリダイレクトサービスによる処理のためにルーティングエンジンに送信されます。CPCDサービスは、サービスセットによってルーティングエンジン上のサービスインターフェイスに関連付けられます。
ルーティングエンジン上のサービスインターフェイスは、si-プレフィックス(例えば、si-1/1/0)で識別されます。si-インターフェイスは、ルーティングエンジンのすべてのリダイレクトおよび書き換えトラフィックとサービスを処理します。キャプティブポータルコンテンツ配信(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
注:Junos OS Evolvedでは、複数のプレフィックスリストを作成でき、それぞれに最大3つまたは4つのプレフィックスを含めることができます。一致するトラフィックがラインカード上の処理をスキップすることを指定します。
[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を作成し、ウォールドガーデン内の2台のサーバーを指定するプレフィックスリストwg-listを付けます。フィルター条件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でインラインサービスを有効にします。論理インターフェイスにアドレスを割り当てます。次に、IPv4アドレスファミリー用にサービスセットsset2とサービスフィルターwalled-v4を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$/
ルーティングエンジンは、ステータスコード302(発見)または307(一時リダイレクト)の変更されたURLを送信します。送信されるコードは、使用されている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トラフィックを処理します。
次の設定例を考えてみましょう。タグリダイレクトルールは、入力インターフェイス上のトラフィックを照合し、GETヘッダーに加入者のIPアドレスの値とルーターのホスト名の2つのタグを挿入するように定義されています。その後、ルールはタグ付けされたトラフィックのリダイレクト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
サービスフィルターウォールドタグは、3種類のトラフィックを識別して作用します:192.0.2.100のウォールドガーデンに送信するHTTPトラフィック、198.51.100.50宛てのサービス処理に送信するHTTPトラフィック、その他すべてのトラフィックをスキップします。これは、サービスルールではなくサービスフィルターで宛先アドレスを一致させる例です。
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とサービスフィルターwalled-tagは、論理インターフェイスに適用されます。
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
変更履歴テーブル
サポートされる機能は、使用しているプラットフォームとリリースによって決まります。 機能エクスプローラー を使用して、機能がお使いのプラットフォームでサポートされているかどうかを確認します。