ライン

ポイント:インターネットに接続する際に、事前認証する仕組み

ライン

 はじめに

リベンジ

 何気にここまでいくつかチャレンジした試行錯誤がうまくいっていません。
そこで確実なところで、以下のようなイメージで構成した環境にして、試そうと思います。 

 WHR-G301N側のネットワークは、LANと無線LANから接続できるネットワーク。
有線LAN側(LAN1〜4は、接続するPCのMACアドレスで認証してプライベート側のNWに入れるようにします。
無線LANでは、SSIDと暗号キーが一致した場合で、さらにCaptive Portalによるウェブ画面認証によりIDとパスワードが一致しないとプライベート側のNWには行けないという形を構築しようと思います。

 今回は、VMware Hypervisor 5系のゲストOSにこれまで通り、pfSense 2.0.1を導入する形で進めていきます。

 環境構築

 まずは、VMware側にゲストOSとしてpfSenseを導入するところから開始し、その後にFreeRADIUSをインストール。
無線AP側のLAN側にノートPCを接続し、認証画面が表示されることを確認。
その後MACアドレス登録をすることで、インターネットが表示されることを確認します。
 また、無線Wi-Fi経由では、認証画面で通過した場合にインターネットが表示されるようになることを確認します。

 今回は、必死にRADIUSを使うためにという努力をすることなく、シンプルに接続することを目標を立て直しました。

VMware Hypervisor

 細かい手順を書いているときりがないので、以下のようにしました。
ネットワークは、インターネットにつながっているLAN側をプライベートNWとネーミング。
無線LANのある側のネットワークをWi-Fi側NWとしています。

 メモリーは、pfSenseとしてはそんなに必要はないのですが、Captive PortalやFreeRADIUS等が動作することを考慮して2GBを割り当てました。 導入は、ローカルISOでCDイメージをマウントして導入します。

どっちのアダプタが、どのMACアドレスかがわからなくなってしまわないように、ここで確認しておきました。

pfSense

 まず、ダウンロード ( pfSense-2.0.1-RELEASE-amd64.iso.gz )から。日本の近くからダウンロードできるところが良くわからずまま。ダウンロードには3分程度かかりました。
gzip形式なので、LHAPlusで解凍。pfSense.isoが取り出すことができました。これを VirtualBoxにマウントします。
 導入の流れは、今回もほとんど割愛。

 99を選択して導入。
インストール後のリブート後で起動してきたら、VMware側のネットワークを接続。これでDHCP有効でWAN側のIPアドレスが見えてきました。

 LAN側は、別のIPアドレス帯に変更し、DHCPを動作させるように変更します。
メニューの2を選択していきます。
(1) WANかLANのどちらのインターフェイスかの選択
(2)IPv4のIPアドレスの入力
(3)サブネットマスクの選択
(4)DHCPサーバの開始の選択。ここではYを指定
(5)振り出す開始IPアドレスの入力
(6)振り出す終了IPアドレスの入力
(7)Do you want to revert to HTTP as the webConfigurator protocol ?と聞かれる。これにはYを答える。
 これで終わり。ウェブで上記(2)で指定したアドレスにアクセスするとpfSenseのログイン画面が表示されたはずです。

 次の設定は、14のsshdを起動を選択し有効にします。
この設定を終えても、接続できるのはLAN側のみとなりますので、試すのはLAN側で実施します。
adminでログインすると、メニュー表示がされてから、8のShellを選択。
作成したユーザで実施する場合には、メニューは表示されずにShell状態から開始となります。
ただし、作成したユーザでは、suでrootになれないし、sudoが動作しないので使い方は考える必要があります。

 admin/pfsenseでログイン。※パスワードを変更している場合には、そのパスワードになります。
ユーザを作成している場合には、そちらからでもOKです。

 さて、ウェブでログインを確認します。

 ウェブも同じIDとパスワードです。ウェブ画面やCUIのメニューからパスワードの変更作業は早めに実施しておきましょう。

FreeRADIUSの追加

 初期の状態では、サービスメニューにRADIUSの項目は存在していません。

 この状態に、パッケージを追加していきます。
メニューのSystem→Packagesを選択すると以下の画面となります。+ の部分をクリックし、流れにより導入を完了させます。

 依存関係を含め、導入がされていきます。導入の失敗も結構あるので、うまく導入されているかを見ておく必要がありそうです。

# pkg_info -aI
bsdinstaller-2.0.2011.1212 BSD Installer mega-package
cyrus-sasl-2.1.25_1 RFC 2222 SASL (Simple Authentication and Security Layer)
freeradius-2.1.12   A free RADIUS server implementation
gdbm-1.9.1          The GNU database manager
gettext-0.18.1.1    GNU gettext package
krb5-1.9.2_1        An authentication system developed at MIT, successor to Ker
libiconv-1.13.1_1   A character set conversion library
libltdl-2.4_1       System independent dlopen wrapper
mysql-client-5.5.19 Multithreaded SQL database (client)
openldap-sasl-client-2.4.26 Open source LDAP client implementation with SASL2 support
perl-5.12.4_3       Practical Extraction and Report Language
postgresql-client-9.1.2 PostgreSQL database (client)
python27-2.7.2_3    An interpreted object-oriented programming language

 Python、PostgreSQL、MySQL、OpenLDAPなどのクライアントも導入されました。

Installation completed.
freeradius2 setup instructions:
Please visit Services: FreeRADIUS

のように表示されていましたので確認しておきます。

 ちゃんと加わっていました。(この辺りは前回と変わらないし。)

FreeRADIUSの設定

 メニューServices→FreeRADIUSを選択すると以下のような画面が表示されます。

上記のようなタブが確認できます。

以下のように、Settingの部分を修正していきます。
基本、現状はログの出力関連をEnableに変えています
次に、Interfacestaタブに追加していきます。
もう1つ追加します。

 Captive Portalの接続認証用アカウントを追加しました。

認証期間は1日がデフォルト。そのまま保存しました。
NAS/Clientsタブを選択。
Client IPアドレスには、RADIUSサーバのIPを記述。
Client Shortnameには、captiveportalとし、パスワードを設定。

 次に、Captive Portartalの設定画面を実施していきます。

Captive Portal

 Captive Portalとは、良くありがりな「ウェブで認証」して、OKだったら利用できるというシステムです。
どのURLを入力しても、認証画面が表示されるのみで、先のページには進まないというものです。

 pfSenseのServices→Captive Portal を選択します。
こんなに設定できる画面が準備されていました。

 ここのページを参照して少し勉強。
ポータルページは以下のような内容を含み、作成してアップする必要があるみたいだ。
(作らなくてもデフォルトページは参照される)
pfSense Tutorial network lab(Captive Portal mit pfSense)を参考にして作成はしておきました。

まだ反映させていませんが。

※(このページ群は詳しく書かれている。すばらしいです)

<form method="post" action="$PORTAL_ACTION$">		
     <input name="auth_user" type="text">
		     <input name="auth_pass" type="password">
		     <input name="auth_voucher" type="text">
		     <input name="redirurl" type="hidden" value="$PORTAL_REDIRURL$">
   <input name="accept" type="submit" value="Continue">
	</form>

 では、続きの設定を入れていきます。

以下のIPアドレスには、先ほど作成したRadiusサーバのIPアドレスを指定しておきます。
Shared secretも指定しておきます。
以下にチェックを入れます。
また、上記同様にShared secretも指定しておきます。
その先に出てくるMAC address formatはierfを選択。
そして「save」でここは完了。

 設定は、こんなところです。
早速、この配下LANにPCを接続してインターネットを参照することにします。

先ほどRADUISに登録したinternetというアカウントとパスワードを入力します。
はい、インターネットの画面が表示できるようになりました。
これから1日間は認証なしでネットが参照できるようになります。

一応、pfSenseのStatus→Captive Portalの設定画面で確認します。
以下のようにIPアドレスとマックアドレス、アカウント、開始時間が記録されていることを見ることができました。
上記を削除すれば、また認証画面が出てくることになります。

また、上記を最初の画面上でみれるように設定を加えます。
上記の右のように、接続されている状況は、本画面でも確認できるようになります。

これは、なかなかネットを使わせることを制限するのに便利に使えそうです。

さて、LANではMAC認証にして、無線LANではID/PASSWORDで接続するようにしようと思います。
ipconfig/ifconfigなどで接続するためのMACアドレスをコピー状態しに、FreeRADIUSのMACsのに追加します。
ただし、コロン編集ではダメなので、-のセパレータになるように修正して保存します。

この状態だと、認証画面はなく接続ができるようになりました。

 さて、無線LANで接続を試します。
SSIDをクリックしてみました。
以下のように、認証には「追加のログイン情報が必要です。クリックしてブラウザを開く」がバルーン表示されました。

 なかなか便利に使えるようになりました。

 今回は、pfSenseを使った確認方法でしたが、個別導入で使う際も同様で利用できそうです。
接続時ポータル画面をより、公衆のサービスのようにまともに作ると楽しそうです。

 Radiusを利用するためにDD-WRTを入れる(参考)

WHR-G301N

 使っていなかったWHR-G301NにDD-WRTを入れてRADIUS認証で試すことにしました。
他のページにも同様に試していますが、実験的にお試しする程度でお願いします。
この章は書く予定にありませんでしたが、自分用に備忘録として残す必要がある箇所のみ公開することにしました。
細かい設定部分は、特に記述していませんので、他の方のページでご確認いただきますようにお願いします。

 ファームの更新(ウェブ版)を入手して早速更新しようと思います。
次に、ネットワークケーブルをノートパソコンの有線NICで接続。192.168.11.2のIPアドレスがDHCPによりノートパソコンにつく。
ウェブブラウザで192.168.11.1にアクセス。ID/Passwordはroot/パスワードなし。
その他メニューにファームウェアを更新するがあるので、これを選択。
「ファームウェアデータが正しくありません。再起動します」が出る。面倒…。
本体の床面にあるRESETスイッチを長時間押していると、LEDの点滅が終わり、2つのLEDの点灯状態となる。
この状態でスイッチを離し、起動させる。(正面のDIAGランプが点灯するまで。3秒と書かれているが、そんなにすぐではない)
…でダメ。

 では、第2案で、過去に成功している人の多いファームにしてまず更新。
なるほど。これは、「ファームウェア更新中」に進む。
もう少しだけ詳しく書くと、DD-WRTのページのダウンロードページでOther Downloadsから以下をたどる。
Path: Downloads -> others -> eko -> BrainSlayer-V24-preSP2 -> 2010 -> 08-12-10-r14929 -> buffalo_whr_g300nv2
という流れをたどり、buffalo-to-dd-wrt_webflash-MULTI.binで更新すれば良いのだ。
最初からこれをするべきだったな。
更新は180秒待てというメッセージのインジケータが停まったら、ルータのLEDでDIAGが点滅または点灯せずであることを確認。
自分の設定に使っていたノートPCを 192.168.1.2に変更し、ウェブブラウザで 192.168.1.1にアクセス。
そうするとルータのユーザ名とパスワードを設定するためのDD-WRTの画面が表示されてきます。
 次に、最近のファームウェアに更新する作業。
日本語にして、時間も日本時間に変更。管理→ファームウェア更新を選択。先ほどに同様、
Path: Downloads -> others -> eko -> BrainSlayer-V24-preSP2 -> 2012 -> 03-19-12-r18777 -> buffalo_whr_g300nv2
という最新のものを選択し、whr-g300nv2-firmware-MULTI.binにて更新するファイルを取得。
これをもって更新する。
 機器診断→ファームウェアバージョンで、18777の版になっていることを確認。

 こんな感じで使えるようになっています。このままずっと使えると便利そうなんですけどね。

 ちなみに、tftpによる方法はここを参照。うんざりなんで使わないと思うけど。バッチファイルがあるのがいいなと思うのでリンクはしておく。

 ちなみに、戻す場合には、ここを参照することに。
 Windows 7でやってみましたが、20回やってダメ。タイミング難しすぎです。
ネットのページを参照して、ubuntu desktopのCDブートでterminal を使って作業することにしました。
tftpはパッケージが導入されていないので、表示されるままに導入を実施する。コマンドでtftpエンターすると、導入方法は表示される。
DD-WRTは192.168.1.1がデフォルトながら、ファームを戻すときには、192.168.11.1を指定する。
設定が他のIPアドレスになっていてもいいので、そういうものだと思って作業する。

 まず、ルータのアダプタを抜き差しした直後に、

# ifconfig eth0:1 192.168.11.2
# arp -s 192.168.11.1 10:6f:3f:XX:XX:XX
# tftp 192.168.1.1
tftp> bin
tftp> put whrg301n-182.bin
Sent 367856 in 2.9 seconds
tftp> quit

という流れとなる。電源入れたらすぐに、ifconfig入れて、arpをつっこみ、tftpを投入。
この早業はWindowsでやるよりは楽だけど、それでも難しいな。
 arp -aで余計なものが登録されていたら、arp -d IPアドレスで削除しておく。
何度か試せばこっちではうまくいきました。PC-BSDでLive CDでやった方が早かったかな…。
日本語のデスクトップを表示させてみたくて、遊んでしまいました。

 今回、この部分は余談部分ですがそのまま保存公開にしました。


【改訂履歴】作成:2012/04/30 更新日:2012/5/12


【参照ページ】

Quick Tip DD-WRT + RADIUS + pfSense Gridstorm I.T. Services…VirtualBoxにpfSenseを導入している例で書かれていたページ。DD-WRTも使っていて、非常にわかりやすいページでした
PFSenseDocs…pfSenseのドキュメントWiki
Chapter 12. Captive Portal…ハンドブック中のキャプティブポータルの章。
Pfsense Radius Captive Portal - YouTube…設定はこのビデオを見て本ページを試しました。わかりやすくて良いです

 
Copyright © 1996,1997-2006,2007- by F.Kimura,