FreeRADIUSを用いて、ダイナミック認証VLANの実現するための設定例です。ダイナミック認証VLANとは、同一ESSID (eduroam) で接続した際に、認証されたユーザごとに異なる定められたVLANに接続する方法のことです。この機能を利用すると、たとえば、教員用ネットワーク、学生用ネットワーク、ビジター用ネットワークの3つを用意しておき、ネットワークに接続するユーザの属性に応じて接続先のネットワークを切り替えることができます。

1) ダイナミックVLAN設定に必要なRADIUSのパラメータ

Tunnel-Type, Tunnel-Medium-Type, Tunnel-Private-Group-Id の3つを設定し、アクセスポイントに渡す必要がある。

たとえば以下のような値を渡すことで、認証後に利用者のネットワークが VLAN 1 に接続される。

Tunnel-Type = 13
Tunnel-Medium-Type = 6
Tunnel-Private-Group-Id = 100 (VLAN番号)

数値を指定する代わりに、数値に対応して定義された文字列をしていることも可能(アクセスポイント側の仕様を確認のこと)。

Tunnel-Type = VLAN
Tunnel-Medium-Type = IEEE-802
Tunnel-Private-Group-Id = VLAN100

2) テストアカウントの設定

FreeRADIUS であれば、たとえば、raddb/users ファイルに以下のようにユーザを定義することで、テスト用のアカウントとパラメータを定義することができる。

test    Cleartext-Password := "Password", Realm == "example.jp"
        Tunnel-Type = 13,
        Tunnel-Medium-Type = 6,
        Tunnel-Private-Group-Id = 100

3) パラメータの中継

FreeRADIUSをプロキシサーバとして利用する場合、ダイナミックVLANに関連するパラメータは、デフォルトで「中継」しない設定になっている。もしプロキシサーバにおいてパラメータの中継が必要な場合(組織内でプロキシサーバを多段で運用している等)は、設定の変更が必要である。
(一般的な環境では、このような「中継」の設定は不要。)

raddb/mods-config/attr_filter/post-proxy ファイルの最後にある DEFAULT の定義の中に以下の行を追加する。(継続の "," を忘れずに)

DEFAULT
        (略)
        Tunnel-Type =* ANY,
        Tunnel-Medium-Type =* ANY,
        Tunnel-Private-Group-Id =* ANY,
        (略)

4) 特定のレルムに対するダイナミックVLANパラメータの追加

認証時に、特定のレルムに対してダイナミックVLANを設定したい場合は、mods-config/attr_filter/post-proxy ファイルに以下のようなレルムの設定を追加する。

example.ac.jp
        Tunnel-Type := 13,
        Tunnel-Medium-Type := 6,
        Tunnel-Private-Group-Id := 200, (指定したいVLAN番号)
        Fall-Through = Yes

最後の Fall-Through = Yes により、DEFAULT の処理に続ける。(最終行以外は、継続行があることを示す「,」を行末につけることを忘れずに。)

DEFAULT では、Tunnel-Type, Tunnel-Medium-Type, Tunnel-Private-Group-Id の定義は行わない(従って、それ以外のレルムに対してはVLAN番号は設定されない)。

なお、VLAN番号の指定がない場合に、どのVLANに接続するかは、アクセスポイントに設定する。

5) それ以外のレルムに対するダイナミックVLANパラメータの追加

前項 4) に加えて、それ以外のレルムに対してVLAN番号を設定したい場合には、mods-config/attr_filter/post-proxy ファイルにおいて以下のように設定する。

example.ac.jp
    ここに元のDEFAULTの内容全部をコピーし、最終行を継続行(","をつける)にする
        Tunnel-Type := 13,
        Tunnel-Medium-Type := 6,
        Tunnel-Private-Group-Id := 200 (指定したいVLAN番号)
(最後の Fall-Through = Yes はここでは不要)

DEFAULT
    (略) 最終行を継続行(","をつける)にして以下を追加する
        Tunnel-Type := 13,
        Tunnel-Medium-Type := 6,
        Tunnel-Private-Group-Id := 300 (指定したいVLAN番号)

6) 動作確認

設定内容が意図通りに反映されているかどうかは、実際にアクセスポイントを利用して確認する以外にも、eopol_test などのツールを用いて確認することもできる。

設定ファイルの例

network={
     ssid="eduroam"
     eapol_flags=255
     key_mgmt=WPA-EAP
     eap=PEAP
     identity=test@example.jp
     password="Password"
     phase2="autheap=GTC"
}

 コマンドの実行例

eapol_test -c 設定ファイル名 -a RADIUSサーバのアドレス -s RADIUSサーバへのアクセスパスワード

アクセスパスワードは、アクセス元のIPアドレス等とともに、FreeRADIUSのclients.confに定義されるものです。