この春の WLAN 更新に向けて,PoE Switch 等の検証でお借りしている N3132PX-ON で,有線ポートの認証機能を試してみました.
networking-n3100-series_user's-guide13_en-us.pdf (認証関係は p.253 から) を参考にしていたのですが,6.6 で変更されたコマンド等が反映されていなくて,少し苦労したので纏めておきたいと思います.
今回の認証ポートの要件は以下の通りです.
・認証には Windows NPS と FreeRadius の Radius Proxy を利用する.
・MAC Address が登録されている Client は MAB でポート開放.
・MAC Address の登録が無い Client は 802.1x で認証してポート開放.
* Switch の基本的な設定については省略します.
Radius サーバと認証設定
まず,Global Configuration mode で 802.1x を有効にします.
n3132(config)#aaa new-model n3132(config)#dot1x system-auth-control
次に radius server auth コマンドで Radius server の IP Address を指定して,Radius Server Configuration mode に入り,以下設定します.
・name コマンドで名称設定(今回は "vmug_radius" )
・primary コマンドで明示的に primary radius server に指定
・usage authmgr で radius サーバの Type を指定します.default は all です.
legacy upper-case だと "18:DB:F2:25:B2:D4" の形式です.
n3132(config)#radius server auth YOUR_RADIUS_SERVER_IP_ADDR n3132(config-auth-radius)#name "vmug_radius" n3132(config-auth-radius)#primary n3132(config-auth-radius)#usage authmgr n3132(config-auth-radius)#exit
Radius Sever Configuration mode から exit したので,ここから再び Global Configuration mode で設定していきます.
Radius server key を指定します.
n3132(config)#radius server key 7 THIS_IS_YOUR_SECRET
radius server source-ip コマンドで Radius server との通信で利用するソース IPv4 アドレスを指定します.OOB を使用しない際にはこれを設定しないと通信できませんでした.
n3132(config)#radius server source-ip YOUR_NSERIES_IPV4_ADDR
ポートの認証を有効にする前に,uplink port が Block state にならない様 authentication port-control force-authorized を設定しておきましょう.
(Interface Configuration mode で作業します.)
n3132(config-if-Te1/0/3)#authentication port-control force-authorized n3132(config-if-Te1/0/3)#exit
認証と Dynamic VLAN(Radius らの Attribute で動的に VLAN をアサイン) を有効にします.
n3132(config)#authentication enable n3132(config)#authentication dynamic-vlan enable
802.1x 認証メソッドの default を radius に,加えて認可も Radius で行うよう設定します.
n3132(config)#aaa authentication dot1x default radius n3132(config)#aaa authorization network default radius
これで Radius 認証・認可の設定は完了です.続けて認証ポートを設定します.
MAB & 802.1x 認証ポートの設定
Interface Configuration mode で設定します.
・switchport mode コマンドで VLAN Membership mode を general にします.
(動的に VLAN アサインするため)
・host-mode は multi-auth にします.
(認証ポート配下の島ハブ接続 Client をそれぞれ個別に認証するため)
・MAB を有効にし,auth-type を PAP にします.
MAC Address は Radius の users に登録してあるので PAP にします.
・認証の優先順位を MAB -> 802.1x の順にします.
n3132(config-if-Gi1/0/1)#switchport mode general n3132(config-if-Gi1/0/1)#authentication host-mode multi-auth n3132(config-if-Gi1/0/1)#mab auth-type pap n3132(config-if-Gi1/0/1)#authentication order mab dot1x n3132(config-if-Gi1/0/1)#exit
RADIUS で MAB
まず,MAB 認証を成功させてみます.
Client の MAC Address を FreeRadius の users に 登録して,radiusd を debug mode で起動します.
・user 名は MAC Address,Password も同じです.
・Tunnel-Medium-Type で 6 (IEEE-802) を指定します.
・Tunnel-Type は 13 (VLAN) を指定します.
・Tunnel-Private-Group-Id はアサインしたい VLAN ID です.
18:DB:F2:25:B2:D4 Cleartext-Password := "18:DB:F2:25:B2:D4" Tunnel-Medium-Type = 6, Tunnel-Type = 13, Tunnel-Private-Group-Id = 1234
FreeRadius は -x で debug mode にて起動します.
[root@dradius raddb]# /usr/sbin/radiusd -X
登録済み MAC Address を持つ Client を認証ポートに接続すると,Login が成功します.
(0) Login OK: [18:DB:F2:25:B2:D4] (from client n3132 port 1 cli 18DBF225B2D4) (0) Sent Access-Accept Id 137 from YOUR_RADIUS_SERVER_IP_ADDR:1812 to YOUR_NSERIES_IPV4_ADDR:37663 length 0 (0) Tunnel-Medium-Type = IEEE-802 (0) Tunnel-Type = VLAN (0) Tunnel-Private-Group-Id = "1234" (0) Finished request Waking up in 4.9 seconds.
Switch 側でも認証された Client が確認できます.
n3132#show authentication clients all Interface MAC-Address Method Host Mode Control Mode VLAN Assigned Reason --------- ----------------- ------- ------------------------ ------------ -------------------------- Gi1/0/1 18:DB:F2:25:B2:D4 mab multi-auth auto RADIUS Assigned VLAN (1234)
802.1x に fall back
MAC Address 登録の無い Client を想定して,users ファイルを書き換えて,MAB を失敗させてみます.
(0) pap: WARNING: No "known good" password found for the user. Not setting Auth-Type (0) pap: WARNING: Authentication will fail unless a "known good" password is available (0) [pap] = noop (0) } # authorize = ok (0) ERROR: No Auth-Type found: rejecting the user via Post-Auth-Type = Reject (0) Failed to authenticate the user (0) Using Post-Auth-Type Reject (0) # Executing group from file /etc/raddb/sites-enabled/default (0) Post-Auth-Type REJECT { (0) attr_filter.access_reject: EXPAND %{User-Name} (0) attr_filter.access_reject: --> 18:DB:F2:25:B2:D4 (0) attr_filter.access_reject: Matched entry DEFAULT at line 11 (0) [attr_filter.access_reject] = updated (0) [eap] = noop (0) policy remove_reply_message_if_eap { (0) if (&reply:EAP-Message && &reply:Reply-Message) { (0) if (&reply:EAP-Message && &reply:Reply-Message) -> FALSE (0) else { (0) [noop] = noop (0) } # else = noop (0) } # policy remove_reply_message_if_eap = noop (0) } # Post-Auth-Type REJECT = updated (0) Login incorrect (No Auth-Type found: rejecting the user via Post-Auth-Type = Reject): [18:DB:F2:25:B2:D4] (from client n3132 port 1 cli 18DBF225B2D4) (0) Delaying response for 1.000000 seconds Waking up in 0.3 seconds.
この直後に 802.1x 認証ダイアログが表示されるので,ID と Password を入力すると認証が成功します.
(13) Login OK: [kaz@vmug.jp] (from client n3132 port 1 cli 18DBF225B2D4) (13) Sent Access-Accept Id 154 from YOUR_RADIUS_SERVER_IP_ADDR:1812 to YOUR_NSERIES_IPV4_ADDR:57134 length 0 (13) Tunnel-Medium-Type:0 = IEEE-802 (13) Tunnel-Private-Group-Id:0 = "1234" (13) Tunnel-Type:0 = VLAN (13) EAP-Message = 0x030e0004 (13) Class = 0x97e9091c0000013700010200caeb807100000000000000000000000001d5b57ca2d0abca000000000055bc3a (13) MS-Link-Utilization-Threshold = 50 (13) MS-Link-Drop-Time-Limit = 120 (13) MS-CHAP-Domain = "\001AD" (13) MS-CHAP2-Success = 0x01533d46443041343137433239444339323738413931463144364645454346373933393643383239333730 (13) MS-MPPE-Send-Key = 0xa5996bc1486bb255e1027e04e07d086937253f792673b0b5a3c8f13870a14f12 (13) MS-MPPE-Recv-Key = 0xd810e4c67a67f6178612e9a58ae720af40581a31aa6729804a345a24d3648de1 (13) Message-Authenticator = 0xc1c0d312d69bb3g39148fa01d155dcc3 (13) Finished request Waking up in 4.9 seconds.
Switch 側でも Method が 802.1X で認証した事が確認できます.
n3132#show authentication clients all Interface MAC-Address Method Host Mode Control Mode VLAN Assigned Reason --------- ----------------- ------- ------------------------ ------------ -------------------------- Gi1/0/1 18:DB:F2:25:B2:D4 802.1X multi-auth auto RADIUS Assigned VLAN (1234)
今回ハマってた事
最近 Windows を触ってないのと,有線の 802.1x 認証も初めてだった事もあり,MAC Address を登録した Client で802.1X 認証を有効にすると MAB が失敗する原因特定に時間がかかってしまいました.
Log 確認すると,Radius 認証成功後に一旦 Port は Forwarding sate になるのですが,即座に認証された Client が削除されています.
<189> Jan 9 10:20:13 n3132-1 AUTHMGR[authmgrTask]: auth_mgr_client.c(1206) 431920 %% NOTE Deleting client authenticated with VLAN type RADIUS on interface Gi1/0/1. <189> Jan 9 10:20:11 n3132-1 TRAPMGR[trapTask]: traputil.c(721) 431919 %% NOTE Gi1/0/1 is transitioned from the Learning state to the Forwarding state in instance 0 <189> Jan 9 10:20:08 n3132-1 TRAPMGR[trapTask]: traputil.c(721) 431918 %% NOTE Gi1/0/1 is transitioned from the Forwarding state to the Blocking state in instance 0 <190> Jan 9 10:20:08 n3132-1 AUTHMGR[authmgrTask]: auth_mgr_sm.c(391) 431917 %% INFO Client authorized on port (Gi1/0/1) with VLAN type RADIUS.
しかし,これ単純に「承認されていないネットワーク アクセスにフォールバックする」(default は Off )のチェックをオンにしておけば良かったんですね.Switch の設定ばかり気にしていて気付きませんでした.反省(しかも,今回 VMUG も VMware も全く関係ないし).