OpengateMreg - MACアドレス登録システム
概要
- MACアドレスを調査して登録するシステムである。
- 利用者が持参した携帯端末を前にして担当者が主導して操作することを想定している。
- Web機能を持つ端末では、利用者本人が担当者を介さずに登録・管理するシステムopengatemownの方が便利である。
- Web機能を持たない端末はこれを使って登録する。Web機能を持たない端末をサービスに含めないなら、このシステムは無くても良い。
- ゲートウェイ上で稼働する。
- 以下の2つのCGIプログラムからなる。
- opengatemchk.cgi: 持参端末のMACアドレスを調査するCGIプログラム
- opengatemreg.cgi: 上記で判明したMACアドレスを登録するCGIプログラム
インストール
- まず、openateMdのインストールを完了する。このシステムは同一ゲートウェイでデーモンopengatemdが稼働する必要
がある。
- MySQL、SqLite3、Apacheのインストールが必要である。認証に用いるシステムも必要に応じてインストールする。
- 上記アーカイブを展開して、ディレクトリmngsrcからインストールする。
tar xzvf opengatem0.0.0.tar.gz
cd opengatem0.0.0/mngsrc
make installmreg
- 設定ファイルを環境に合わせて調整する。少なくともMySQL設定、ネットワークインターフェース名、認証方法を変更する必要があ
る。認証は「MAC登録を管理する管理者の認証」と、「一般利用者の認証」のそれぞれについて、独立に方式を設定する。POP3、
FTP、LADIUS、LDAP、PAM、Shibboleth、HttpBasicに対応する。両認証には同一のサーバ/方式を設定し
て良い。ただしHttpBasicとShibbolethは両認証に同一方式を使えない(認証システム側で状態制御されるため)。
cp opengatemmng.conf.sample opengatemmng.conf
vi opengatemmng.conf
下記の設定例では、「ネットワークインターフェース名はfxp0」に、「MySqlはローカル・パスワードなし設定」に、「管理者認証は
POP3S」に、「一般利用者認証はShibboleth」に設定している。このシステムが不要のときは、管理者認証をdenyにする。
ユーザIDを限定するときは、例のようにAcceptUsersを設定する(未設定の時は限定なし)。
UidAttributeとMailAttributeはShibbolethにおけるユーザIDとメールアドレス保持の環境変数名である
(Shibboleth側の設定が必要)。
他の認証方式の場合のメールアドレスは、「<MailDomain>og.saga-u.ac.jp</MailDomain>)」
のようにドメイン名を設定するとユーザIDとこれをつなげてアドレス(user1@og.saga-u.ac.jp)とする。
----------------------------
<Device>fxp0</Device>
<MySqlDb>
<Server>localhost</Server>
<User>root</User>
<Password></Password>
<Database>opengatem</Database>
</MySqlDb>
<AuthServer>
<UserType>admin</UserType>
<Protocol>pop3s</Protocol>
<Address>192.168.0.2</Address>
<AcceptUsers>admin1 admin2
admin3</AcceptUsers>
</AuthServer>
<AuthServer>
<Protocol>shibboleth</Protocol>
<UidAttribute>uid</UidAttribute>
<MailAttribute>mail</MailAttribute>
</AuthServer>
-----------------------------
- 認証方式にHttpBasicまたはShibbolethを用いる場合は、.htaccessに以下のような対応記述を追加する。
「opengatemchk.cgiは管理者認証」を、「opengatemreg.cgiは一般利用者認証」を設定する。他の認証方式
の場合は不要である。
<FILES opengatemchk.cgi>
AuthType Basic
AuthUserFile /tmp/passwd.dat
AuthName "Admin"
Require valid-user
</FILES>
<FILES opengatemreg.cgi>
AuthType shibboleth
ShibRequestSetting requireSession 1
ShibRequireSession On
ShibUseHeaders On
Require valid-user
</FILES>
使用方法
- 登録を希望する端末で、管理用端末と同じネットワークに接続して、ネットワークアクセスを試み、ネットワークが利用できないこと
を確認する。
- 管理用端末でopengatemchk.cgiを起動し、MACアドレス調査ページを表示する。確認前に表示しているときはリロード
を行う。
- 同一ネットワークを最近利用した端末のアドレス一覧が表示される。リストの先頭が最も最近に検出した端末である。
- 登録希望端末と予想されるアドレスを選択して「開放」ボタンを押す。
- ネットワークを開放すると、タイマーが始動する。
- タイマー作動中に、登録希望端末でネットワークを利用してみる。
- 利用が不可であれば、「閉鎖」ボタンで閉鎖して、別のアドレスを試す。
- 利用が可能であれば、「閉鎖」ボタンで閉鎖して、利用が不可に戻ることを確認し、「登録」ボタンで登録ページへ移行する。
- 登録ページで、機器名を入力して登録ボタンを押す。
処理内容
- アドレス調査opemgatemchk.cgiの処理(Ajax処理を含む)
クライアント側の処理
- サーバから取得したMACアドレス一覧を表示する。
- Openボタン押下で、MACアドレスを引数としてOpen通知のAjax通信を行い、返答があるとタイマーを起動する。
- Closeボタン押下で、MACアドレスを引数としてClose通知のAjax通信を行い、返答があるとタイマーを止める。
- タイマー時間切れで、Close通知のAjax通信を行う。
- 登録ボタン押下で、MACアドレスを引数として登録CGIを起動する。
サーバ側の処理
- Open/Close要求以外の時(初期ロード時)
- ARPとNDPから、IPアドレスとMACアドレスの対を取得する。
- opengatemdのDBから、アドレス検出時間を取得する。
- cookieを作成する
- 作業DBに一時記録する(Mdの作業DBとMregの作業DBは別)。
- 検出時間の新しい方から順に、アドレス一覧を表示する。
- Open要求の時、
- 以下を行う子プロセスを起動してopenを返答し終了する。
- ファイアウォールを開放する。
- 作業DBに子プロセスID、ipfwルールを記録する。
- 指定時間スリープする。
- ファイアウォールを閉鎖して終了する。
- Close要求の時
- 作業DBから子プロセスID、ipfwルールを取得する。
- ファイアウォールを閉鎖する。
- 子プロセスを停止する。
- closeを返答して終了する。
- アドレス登録opengatemreg.cgiの処理
- シボレスからユーザID、メールアドレスを取得する。
- cookieを取得し作業DB記録との一致を確認する(直接表示禁止のため)。
- MACアドレスを受け取る。
- Register要求の時(データ設定後に登録ボタン押下時)
- 入力データを受け取る。
- 入力が正しければ管理データベースに登録する。
- 登録フォーム、既存登録端末一覧を表示する。
利用データベース
- MySQL: opengatem R/W (管理DB)
- SqLite3: opengetemmng.db R/W (openagteMreg/Mup用作業DB)
- SqLite3: opengatemd.db R (opengateMd用作業DB)