FreeRADIUSを使って、認証ユーザごとに異なるVLANを割り当てる設定方法を説明する。
AP側の設定はこちらを参照のこと。

FreeRADIUSでは、/etc/raddb/usersファイルでユーザを管理する。この中に、ユーザ情報とともに属性値(VLANIDの情報など)を設定する。設定する属性値は3つ。
・Tunnell-Typeとは、どのようなトンネルの方式を使うかの設定(802.1Xの場合"VLAN")
・Tunnel-Medium-Typeとは、トンネルプロトコル(上記で設定したVLAN)をどのようにトランスポート(輸送)するかを設定(802.1Xの場合"IEEE-802")
Tunnel-private-Group-Idは認証後に所属するVLANIDを指定する。

設定例は以下のとおり。
testuser001       Cleartext-Password := "パスワード"
        Tunnel-Type = VLAN,    ←全ユーザでVLAN固定
        Tunnel-Medium-Type = IEEE-802,      ←全ユーザでIEEE-802固定
        Tunnel-Private-Group-Id = 210       ←VLANIDを210に設定
testuser002       Cleartext-Password := "パスワード"
        Tunnel-Type = 13,    ←全ユーザでVLAN固定(別の書き方)
        Tunnel-Medium-Type = 6,   ←全ユーザでIEEE-802固定(別の書き方)
        Tunnel-Private-Group-Id = 220       ←VLANIDを220に設定
testuser003       Cleartext-Password := "パスワード"
        Tunnel-Type = 13,
        Tunnel-Medium-Type = 6,
        Tunnel-Private-Group-Id = 200
※カンマの有無に注。
※testuser001とtestuser002では、Tunnel-TypeとTunnel-Medium-Typeの記述の仕方を変えているが、同じ意味の設定である。Tunnel-Typeが6であればVLANを意味し、 Tunnel-Medium-Typeが13ならばIEEE-802を意味するからだ。
※Arubaの設定では、本来Tunnel-Private-Group-IDにVLANIDを設定するだけでVLANを割り当て可能。しかし、一般的には3つの属性値を必要とする機種もあるため、ここでは3箇所とも設定している。
※DEFAULT設定が残っているときちんと動作しないことがある。余分な設定を全部消して、ユーザ情報だけにしておくほうがよい。

また、/etc/raddb/eap.confでも設定変更が必要。ユーザ名に基づく属性情報をNAS(オーセンティケータ)に送るかどうかのパラメータである。(noは送らない、yesは送る)
peap {
  ・・・
  use_tunneled_reply = no yes        ←デフォルトがnoなので、yesに変更
  ・・・

オーセンティケータとの認証シーケンスにおいて、アクセス認可と同時にこれらの属性値がRADIUSサーバからオーセンティケータに送信される。オーセンティケータは属性値に基づいて、ユーザのVLANを設定する。
RADIUSサーバからのパケットの一例を示す。usersで設定した属性値がオーセンティケータに送信されている。
RADIUSキャプチャ














(補足)
上記の/etc/raddb/usersは、下記のような書き方もできる。
testuser001       Cleartext-Password := "****"
        Tunnel-Private-Group-Id = 210
testuser002       Cleartext-Password := "****"
        Tunnel-Private-Group-Id = 220
testuser003       Cleartext-Password := "****"
        Tunnel-Private-Group-Id = 200

DEFAULT Auth-Type == EAP
        Tunnel-Type = VLAN,
        Tunnel-Medium-Type = IEEE-802
 全ユーザで共通となるTunnel-TypeとTunnel-Medium-Typeをデフォルト値として共用にしておく。こうしておけば、各ユーザのところでは Tunnel-Private-Group-Idを設定しておくだけでよい。
 なお、DEFALUTは全ユーザを定義した後に記述すること。ユーザ名より前に記述するときちんと動作しない。