無線機能 / キャプティブポータル
キャプティブポータル(Web認証)の設定にかかわるコマンドは以下のとおりです。| キャプティブポータル設定の作成 | 未作成 | captive-portal(local)(無線ネットワークモード) |
| キャプティブポータルの有効・無効 | 無効 | enable(local)(キャプティブポータル設定モード) |
| 認証モード | クリックスルー | mode(local)(キャプティブポータル設定モード) |
| 認証ページプロキシ | 無効 | page-proxy-url(local)(キャプティブポータル設定モード) |
| 外部ページリダイレクト | 未設定 | external-page-url(local)(キャプティブポータル設定モード) |
| RADIUSサーバーグループ | 未設定 | radius auth group(local)(キャプティブポータル設定モード) |
| RADIUSパケットの検証 | 無効 | verify-radius-packet enable(local)(キャプティブポータル設定モード) |
| 認証後リダイレクト(固定URL) | 無効 | redirect-url(local)(キャプティブポータル設定モード) |
| 認証後リダイレクト(セッション維持) | 無効 | session-keep(local)(キャプティブポータル設定モード) |
| セッションタイムアウト時の動作 | reauthentication | session-timeout-action(local)(キャプティブポータル設定モード) |
| セッションタイムアウト間隔 | 3600秒 | session-timeout-interval(local)(キャプティブポータル設定モード) |
| RADIUSアカウンティング | 無効 | radius accounting enable(local)(キャプティブポータル設定モード) |
| ウォールドガーデン | 未設定 | walled-garden entry(local)(キャプティブポータル設定モード) |
| ウォールドガーデン用DNSプロキシ | 無効 | walled-garden-dns-proxy enable(local)(キャプティブポータル設定モード) |
| ウォールドガーデン一覧 | show wireless captive-portal network walled-garden(local)(非特権EXECモード) | |
Web認証では以下の方式を利用可能です。
| RADIUSサーバー(外部RADIUS) | RADIUSサーバーを利用して認証を行います。 |
| クリックスルー | 無線ネットワークの利用者に対して利用規約のページを表示し、ボタンクリックで規約に同意してもらうことにより通信を許可します。 |
| 外部ページリダイレクト | SNSなどの第三者機関のWeb認証を使用して接続できるようになります。 |
RADIUSサーバー(外部RADIUS)
ここでは、任意のVAPインターフェース(セキュリティーはWPAパーソナル)において、RADIUSサーバー(外部RADIUS)を利用したWeb認証を設定する方法を説明します。- Web認証で使用するローカルRADIUSサーバーの設定を行うには、RADIUSサーバーモードに移行します。
awplus(config)# radius-server local
- ローカルRADIUSサーバーのユーザーとパスワードを設定します。ここではユーザーを「user」、パスワードを「password」とします。
awplus(config-radsrv)# user user password password
- ローカルRADIUSサーバーを有効にします。
awplus(config-radsrv)# server enable
- グローバルコンフィグモードに戻り、RADIUSクライアントの設定で自身のローカルRADIUSサーバーを使用するように指定します。
ここでは、ホストのIPアドレスを「127.0.0.1」、RADIUSサーバーとの通信に使用する共有パスワードを「awplus-local-radius-server」とします。
awplus(config-radsrv)# exit awplus(config)# radius-server host 127.0.0.1 key awplus-local-radius-server
- VAPインターフェースに設定する、セキュリティーとネットワークの設定をします。
- WPAパーソナルの設定を行います。無線設定モードに移行し、さらにWPAパーソナル設定モードに移行します。
ここでは、セキュリティー設定番号を「2」とします。
awplus(config)# wireless awplus(config-wireless)# security 2 mode wpa-personal
- WPAパーソナルのセキュリティーキーの設定を行います。
ここでは、セキュリティーキーを「1234567890」とします。
awplus(config-wireless-sec-wpa-psnl)# key 1234567890
- 無線設定モードに戻り、無線ネットワークモードに移行します。
ここでは無線ネットワーク設定番号は「2」とします。
awplus(config-wireless-sec-wpa-psnl)# exit awplus(config-wireless)# network 2
- SSIDを指定します。
ここでは、「network2」とします。
awplus(config-wireless-network)# ssid network2
- 手順3で設定したネットワークにセキュリティーを割り当てます。
awplus(config-wireless-network)# security 2
- WPAパーソナルの設定を行います。無線設定モードに移行し、さらにWPAパーソナル設定モードに移行します。
- Web認証を有効にし、Web認証に使用するRADIUSサーバーグループを指定します。
awplus(config-wireless-network)# web-auth radius auth group radius
- キャプティブポータル設定モードに移行し、キャプティブポータル(Web認証)を有効にします。
awplus(config-wireless-network)# captive-portal awplus(config-wireless-network-cp)# enable
- Web認証の動作モード(外部RADIUS)を設定します。
awplus(config-wireless-network-cp)# mode radius
- 認証に使用するRADIUSサーバーを指定します。
awplus(config-wireless-network-cp)# radius auth group radius
- 外部RADIUSでは以下の機能を使用できます。必要に応じて設定を行ってください。
- 認証ページプロキシ:外部Webサーバーに設置されたカスタムページを指定します。ここではカスタムページのアドレスを「http://www.example.com/captive_portal」とします。
awplus(config-wireless-network-cp)# page-proxy-url http://www.example.com/captive_portal
- 認証後リダイレクト(セッション維持):認証成功後、Web認証前にユーザーが指定していた本来のURLにWebブラウザーをリダイレクトさせる機能を有効にします。
awplus(config-wireless-network-cp)# session-keep
- 認証後リダイレクト(固定URL):認証成功後、固定URLにWebブラウザーをリダイレクトさせる機能を有効にします。ここでは、固定URLのアドレスを「http://www.example.com/captive_portal2」とします。
awplus(config-wireless-network-cp)# redirect-url http://www.example.com/captive_portal2
- ウォールドガーデン :Web認証が完了する前のユーザーや未認証のユーザーに対して閲覧可能なページを指定できる機能を有効にします。
ここでは、FQDNのアドレスをワイルドカードを使用して「*.example-ex.com」とします。
awplus(config-wireless-network-cp)# walled-garden entry *.example-ex.com
- ウォールドガーデン用DNSプロキシ :ウォールドガーデン機能使用時に無線APに接続されている無線クライアントからのDNS問合せや無線クライアントへのDNS応答を代理で行う機能を有効にします。
awplus(config-wireless-network-cp)# walled-garden-dns-proxy enable
- 認証ページプロキシ:外部Webサーバーに設置されたカスタムページを指定します。ここではカスタムページのアドレスを「http://www.example.com/captive_portal」とします。
- 無線設定モードに戻り、APプロファイルモードからAPプロファイル・無線モードに移行し、無線1を有効にします。
awplus(config-wireless-network-cp)# exit awplus(config-wireless-network)# exit awplus(config-wireless)# ap-profile local awplus(config-wireless-ap-prof)# radio 1 awplus(config-wireless-ap-prof-radio)# enable
- VAP2インターフェースにネットワーク2を割り当てます。
awplus(config-wireless-ap-prof-radio)# vap 2 network 2
- 特権EXECモードに戻り設定を適用します。
awplus(config-wireless-ap-prof-radio)# end awplus# wireless ap-configuration apply ap local
認証ページプロキシで使用するHTMLファイル
RADIUSサーバーを利用したWeb認証で認証ページプロキシを使用する場合は、「ベースURL」で指定したWebサーバー上のディレクトリーに以下のHTMLファイルを用意してください。- ログインページ(HTMLファイル名:radius_login.html)
ログインページのHTMLには、以下の要件を満たすログインフォームを含む必要があります。
- method属性が post である <form> タグ
- name 属性が userid である <input> タグ
- name 属性が password である <input> タグ
- type 属性が submit である <input> タグ
<html> <head> <title>Web Authentication Page</title> </head> <form method="post"> ユーザー名:<input type="text" name="userid"> パスワード:<input type="password" name="password"> <input type="submit" value="Connect"></input> </form> </html>
- method属性が post である <form> タグ
- ログイン失敗ページ(HTMLファイル名:radius_login_fail.html)
ログインに失敗したときに表示されるページです。ログインページと同じ要件を満たすログインフォームを含む必要があります。
- ログイン成功ページ(HTMLファイル名:welcome.html)
ログインに成功したときに表示されるページです。特別な要件はありません。任意のHTMLページを使用できます。
クリックスルー
ここでは、任意のVAPインターフェース(セキュリティーはWPAパーソナル)において、クリックスルー方式のWeb認証を設定する方法を説明します。- VAPインターフェースに設定する、セキュリティーとネットワークの設定をします。
- WPAパーソナルの設定を行います。無線設定モードに移行し、さらにWPAパーソナル設定モードに移行します。
ここでは、セキュリティー設定番号を「2」とします。
awplus(config)# wireless awplus(config-wireless)# security 2 mode wpa-personal
- WPAパーソナルのセキュリティーキーの設定を行います。
ここでは、セキュリティーキーを「1234567890」とします。
awplus(config-wireless-sec-wpa-psnl)# key 1234567890
- 無線設定モードに戻り、無線ネットワーク設定モードに移行します。
ここでは無線ネットワーク設定番号を「2」とします。
awplus(config-wireless-sec-wpa-psnl)# exit awplus(config-wireless)# network 2
- SSIDを指定します。
ここでは、SSIDを「network2」とします。
awplus(config-wireless-network)# ssid network2
- 手順3で設定したネットワークにセキュリティーを割り当てます。
awplus(config-wireless-network)# security 2
- WPAパーソナルの設定を行います。無線設定モードに移行し、さらにWPAパーソナル設定モードに移行します。
- キャプティブポータル設定モードに移行し、キャプティブポータル(Web認証)を有効化します。
awplus(config-wireless-network)# captive-portal awplus(config-wireless-network-cp)# enable
- Web認証の動作モード(クリックスルー)を設定します。
awplus(config-wireless-network-cp)# mode click-through
- クリックスルーでは以下の機能を使用できます。必要に応じて設定を行ってください。
- 認証ページプロキシ:外部Webサーバーに設置されたカスタムページを指定します。ここではカスタムページのアドレスを「http://www.example.com/captive_portal」とします。
awplus(config-wireless-network-cp)# page-proxy-url http://www.example.com/captive_portal
- 認証後リダイレクト(セッション維持):認証成功後、Web認証前にユーザーが指定していた本来のURLにWebブラウザーをリダイレクトさせる機能を有効にします。
awplus(config-wireless-network-cp)# session-keep
- 認証後リダイレクト(固定URL):認証成功後、固定URLにWebブラウザーをリダイレクトさせる機能を有効にします。
ここでは、固定URLのアドレスを「http://www.example.com/captive_portal2」とします。
awplus(config-wireless-network-cp)# redirect-url http://www.example.com/captive_portal2
- ウォールドガーデン :Web認証が完了する前のユーザーや未認証のユーザーに対して閲覧可能なページを指定できる機能を有効にします。
ここでは、FQDNのアドレスをワイルドカードを使用して「*.example-ex.com」とします。
awplus(config-wireless-network-cp)# walled-garden entry *.example-ex.com
- ウォールドガーデン用DNSプロキシ :ウォールドガーデン機能使用時に無線APに接続されている無線クライアントからのDNS問合せや無線クライアントへのDNS応答を代理で行う機能を有効にします。
awplus(config-wireless-network-cp)# walled-garden-dns-proxy enable
- 認証ページプロキシ:外部Webサーバーに設置されたカスタムページを指定します。ここではカスタムページのアドレスを「http://www.example.com/captive_portal」とします。
- 無線設定モードに戻り、APプロファイルモードからAPプロファイル・無線モードに移行し、無線1を有効にします。
awplus(config-wireless-network-cp)# exit awplus(config-wireless-network)# exit awplus(config-wireless)# ap-profile local awplus(config-wireless-ap-prof)# radio 1 awplus(config-wireless-ap-prof-radio)# enable
- VAP2インターフェースにネットワーク2を割り当てます。
awplus(config-wireless-ap-prof-radio)# vap 2 network 2
- 特権EXECモードに戻り設定を適用します。
awplus(config-wireless-ap-prof-radio)# end awplus# wireless ap-configuration apply ap local
認証ページプロキシで使用するHTMLファイル
クリックスルーで認証ページプロキシを使用する場合は、「ベースURL」で指定したWebサーバー上のディレクトリーに以下のHTMLファイルを用意してください。- ログインページ(同意ページ)(HTMLファイル名:click_through_login.html)
ユーザーに利用規約を提示して同意を求めるログインページのHTMLには、以下の要件を満たすフォームを含む必要があります。
- method属性が post である <form> タグ
- type 属性が submit である <input> タグ
<pre class="code screen"> <html> <head> <title>Terms of Service</title> </head> <form method="post"> <input type="submit" value="Agree"></input> </form> </html>
- method属性が post である <form> タグ
- ログイン成功ページ(HTMLファイル名:welcome.html)
ログインに成功したときに表示されるページです。特別な要件はありません。任意のHTMLページを使用できます。
外部ページリダイレクト
ここでは、任意のVAPインターフェース(セキュリティーはWPAパーソナル)において、外部ページリダイレクトによるWeb認証を設定する方法を説明します。- VAPインターフェースに設定する、セキュリティーとネットワークの設定をします。
- WPAパーソナルの設定を行います。無線設定モードに移行し、さらにWPAパーソナル設定モードに移行します。
ここでは、セキュリティー設定番号を「2」とします。
awplus(config)# wireless awplus(config-wireless)# security 2 mode wpa-personal
- WPAパーソナルのセキュリティーキーの設定を行います。
ここでは、セキュリティーキーを「1234567890」とします。
awplus(config-wireless-sec-wpa-psnl)# key 1234567890
- 無線設定モードに戻り、無線ネットワークモードに移行します。
ここでは無線ネットワーク設定番号は「2」とします。
awplus(config-wireless-sec-wpa-psnl)# exit awplus(config-wireless)# network 2
- SSIDを指定します。
ここでは、「network2」とします。
awplus(config-wireless-network)# ssid network2
- 手順3で設定したネットワークにセキュリティーを割り当てます。
awplus(config-wireless-network)# security 2
- WPAパーソナルの設定を行います。無線設定モードに移行し、さらにWPAパーソナル設定モードに移行します。
- キャプティブポータル設定モードに移行し、キャプティブポータル(Web認証)を有効にします。
awplus(config-wireless-network)# captive-portal awplus(config-wireless-network-cp)# enable
- Web認証の動作モード(外部ページリダイレクト)を設定します。
awplus(config-wireless-network-cp)# mode external-page-redirect
- 外部ページリダイレクトでは以下の機能を使用できます。必要に応じて設定を行ってください。
- 外部ページURL:外部Webサーバーに設置されたカスタムページを指定します。ここではカスタムページのアドレスを「http://www.example.com/captive_portal」とします。
awplus(config-wireless-network-cp)# external-page-url http://www.example.com/captive_portal
- 認証後リダイレクト(セッション維持):認証成功後、Web認証前にユーザーが指定していた本来のURLにWebブラウザーをリダイレクトさせる機能を有効にします。
awplus(config-wireless-network-cp)# session-keep
- 認証後リダイレクト(固定URL):認証成功後、固定URLにWebブラウザーをリダイレクトさせる機能を有効にします。
ここでは、固定URLのアドレスを「http://www.example.com/captive_portal2」とします。
awplus(config-wireless-network-cp)# redirect-url http://www.example.com/captive_portal2
- ウォールドガーデン :Web認証が完了する前のユーザーや未認証のユーザーに対して閲覧可能なページを指定できる機能を有効にします。
ここでは、FQDNのアドレスをワイルドカードを使用して「*.example-ex.com」とします。
awplus(config-wireless-network-cp)# walled-garden entry *.example-ex.com
- ウォールドガーデン用DNSプロキシ :ウォールドガーデン機能使用時に無線APに接続されている無線クライアントからのDNS問合せや無線クライアントへのDNS応答を代理で行う機能を有効にします。
awplus(config-wireless-network-cp)# walled-garden-dns-proxy enable
- 外部ページURL:外部Webサーバーに設置されたカスタムページを指定します。ここではカスタムページのアドレスを「http://www.example.com/captive_portal」とします。
- 無線設定モードに戻り、APプロファイルモードからAPプロファイル・無線モードに移行し、無線1を有効にします。
awplus(config-wireless-network-cp)# exit awplus(config-wireless-network)# exit awplus(config-wireless)# ap-profile local awplus(config-wireless-ap-prof)# radio 1 awplus(config-wireless-ap-prof-radio)# enable
- VAP2インターフェースにネットワーク2を割り当てます。
awplus(config-wireless-ap-prof-radio)# vap 2 network 2
- 特権EXECモードに戻り設定を適用します。
awplus(config-wireless-ap-prof-radio)# end awplus# wireless ap-configuration apply ap local
外部ページリダイレクトで使用するHTMLファイル
外部ページリダイレクトを使用する場合は、下記の条件にしたがって「外部ページURL」が指し示す場所にWeb認証用のHTMLページを作成してください。外部認証ページにリダイレクトする際に以下の情報をクエリ文字列として付加します。
- switch_url:APの認証ページのURL
- ap_mac:無線クライアントが接続しているVAPのBSSID
- wlan:無線クライアントが接続しているVAPのSSID
- client_mac:無線クライアントのMACアドレス
- statusCode:認証状態(0:通常のリクエスト、5:認証失敗)
- redirect:無線クライアントが接続しようとしていたページのURL
- MIME typeは "application/x-www-form-urlencoded" です。
- キーと値は '=' で繋ぎ、それぞれのキーバリューは '&' で繋いでください。
- キーバリューの値はパーセントエンコーディングしてください。
- 以下のキーバリューを送信してください。
- キー:'userid' or 'username'、値:RADIUS認証に用いるユーザーID
- キー:'password'、値:RADIUS認証に用いるパスワード
- キー:'userid' or 'username'、値:RADIUS認証に用いるユーザーID
- 認証先は、無線APの認証ページにする必要があります。
- form の場合は action 属性で指定できます。
- `?redirect=`を追加すると、認証後のリダイレクト先を指定できます。
- form の場合は action 属性で指定できます。
<html>
<head>
<title>Captive Portal</title>
<script>
function loadaction() {
var queryString = window.location.search;
var queryObject = new Object();
if (queryString) {
queryString = queryString.substring(1);
var parameters = queryString.split('&');
for (var i = 0; i < parameters.length; i++) {
var element = parameters[i].split('=');
var paramName = decodeURIComponent(element[0]);
var paramValue = decodeURIComponent(element[1]);
queryObject[paramName] = paramValue;
}
}
var redirectUrl = "https://" + queryObject["redirect"];
document.forms[0].action = queryObject["switch_url"] + "?redirect=" + redirectUrl;
if (queryObject["statusCode"] == 5) {
window.alert("Invalid username or password!");
}
}
</script>
</head>
<body onload="loadaction();">
<form method="POST" action="">
User Name<input type="text" name="username"><br>
Password<input type="password" name="password"><br>
<input type="submit" value="Connect"></input>
</form>
</body>
</html>