<html><body>
<p>Dear all,<br>
<br>
I am trying to use FreeRadius 2.1.8 for AAA in a wimax network. The problem I am facing is that the WiMAX-MSK keys are not generated by FreeRadius. Can someone help me figure out what I am not doing OR doing incorrectly?<br>
<br>
I have configured the "raddb/sites-available/default" and "raddb/modules/wimax" files per instructions included in the files themselves. For reference, here are the configuration stanzas in the post-auth section of "default":<br>
<br>
<tt>update request {<br>
        WiMAX-MN-NAI = "%{User-Name}"<br>
}</tt><br>
<tt>update reply {<br>
         WiMAX-FA-RK-Key = 0x00<br>
         WiMAX-MSK = "%{EAP-MSK}"<br>
}</tt><br>
<tt>wimax</tt><br>
<br>
Run-log from "radiusd -X" is also included at the end of this message. Here is the message that indicates that EAP is not computing MSK and EMSK:<br>
<tt>[wimax] No EAP-MSK or EAP-EMSK.  Cannot create WiMAX keys.</tt><br>
<br>
Thank you in advance, and I apologize if this question has been answered before -- I did not find answers/pointers in the FAQ or the Wiki.<br>
<br>
Best Regards,<br>
Sumedh<br>
<br>
----------------------------------------------<br>
<tt>FreeRADIUS Version 2.1.8, for host x86_64-unknown-linux-gnu, built on May 11 2010 at 23:50:30<br>
Copyright (C) 1999-2009 The FreeRADIUS server project and contributors. <br>
There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A <br>
PARTICULAR PURPOSE. <br>
You may redistribute copies of FreeRADIUS under the terms of the <br>
GNU General Public License v2. <br>
Starting - reading configuration files ...<br>
including configuration file /usr/local/etc/raddb/radiusd.conf<br>
including configuration file /usr/local/etc/raddb/proxy.conf<br>
including configuration file /usr/local/etc/raddb/clients.conf<br>
including files in directory /usr/local/etc/raddb/modules/<br>
including configuration file /usr/local/etc/raddb/modules/acct_unique<br>
including configuration file /usr/local/etc/raddb/modules/always<br>
including configuration file /usr/local/etc/raddb/modules/attr_filter<br>
including configuration file /usr/local/etc/raddb/modules/attr_rewrite<br>
including configuration file /usr/local/etc/raddb/modules/chap<br>
including configuration file /usr/local/etc/raddb/modules/checkval<br>
including configuration file /usr/local/etc/raddb/modules/counter<br>
including configuration file /usr/local/etc/raddb/modules/cui<br>
including configuration file /usr/local/etc/raddb/modules/detail<br>
including configuration file /usr/local/etc/raddb/modules/detail.example.com<br>
including configuration file /usr/local/etc/raddb/modules/detail.log<br>
including configuration file /usr/local/etc/raddb/modules/digest<br>
including configuration file /usr/local/etc/raddb/modules/echo<br>
including configuration file /usr/local/etc/raddb/modules/etc_group<br>
including configuration file /usr/local/etc/raddb/modules/exec<br>
including configuration file /usr/local/etc/raddb/modules/expiration<br>
including configuration file /usr/local/etc/raddb/modules/expr<br>
including configuration file /usr/local/etc/raddb/modules/files<br>
including configuration file /usr/local/etc/raddb/modules/inner-eap<br>
including configuration file /usr/local/etc/raddb/modules/ippool<br>
including configuration file /usr/local/etc/raddb/modules/krb5<br>
including configuration file /usr/local/etc/raddb/modules/ldap<br>
including configuration file /usr/local/etc/raddb/modules/linelog<br>
including configuration file /usr/local/etc/raddb/modules/logintime<br>
including configuration file /usr/local/etc/raddb/modules/mac2ip<br>
including configuration file /usr/local/etc/raddb/modules/mac2vlan<br>
including configuration file /usr/local/etc/raddb/modules/mschap<br>
including configuration file /usr/local/etc/raddb/modules/ntlm_auth<br>
including configuration file /usr/local/etc/raddb/modules/otp<br>
including configuration file /usr/local/etc/raddb/modules/pam<br>
including configuration file /usr/local/etc/raddb/modules/pap<br>
including configuration file /usr/local/etc/raddb/modules/passwd<br>
including configuration file /usr/local/etc/raddb/modules/perl<br>
including configuration file /usr/local/etc/raddb/modules/policy<br>
including configuration file /usr/local/etc/raddb/modules/preprocess<br>
including configuration file /usr/local/etc/raddb/modules/radutmp<br>
including configuration file /usr/local/etc/raddb/modules/realm<br>
including configuration file /usr/local/etc/raddb/modules/smbpasswd<br>
including configuration file /usr/local/etc/raddb/modules/smsotp<br>
including configuration file /usr/local/etc/raddb/modules/sql_log<br>
including configuration file /usr/local/etc/raddb/modules/sqlcounter_expire_on_login<br>
including configuration file /usr/local/etc/raddb/modules/sradutmp<br>
including configuration file /usr/local/etc/raddb/modules/unix<br>
including configuration file /usr/local/etc/raddb/modules/wimax<br>
including configuration file /usr/local/etc/raddb/eap.conf<br>
including configuration file /usr/local/etc/raddb/policy.conf<br>
including files in directory /usr/local/etc/raddb/sites-enabled/<br>
including configuration file /usr/local/etc/raddb/sites-enabled/default<br>
including configuration file /usr/local/etc/raddb/sites-enabled/inner-tunnel<br>
including configuration file /usr/local/etc/raddb/sites-enabled/control-socket<br>
main {<br>
                 allow_core_dumps = no<br>
}<br>
including dictionary file /usr/local/etc/raddb/dictionary<br>
main {<br>
                 prefix = "/usr/local"<br>
                 localstatedir = "/var"<br>
                 logdir = "/var/log/radius"<br>
                 libdir = "/usr/local/lib"<br>
                 radacctdir = "/var/log/radius/radacct"<br>
                 hostname_lookups = no<br>
                 max_request_time = 30<br>
                 cleanup_delay = 5<br>
                 max_requests = 1024<br>
                 pidfile = "/var/run/radiusd/radiusd.pid"<br>
                 checkrad = "/usr/local/sbin/checkrad"<br>
                 debug_level = 0<br>
                 proxy_requests = yes<br>
 log {<br>
                 stripped_names = no<br>
                 auth = no<br>
                 auth_badpass = no<br>
                 auth_goodpass = no<br>
 }<br>
 security {<br>
                 max_attributes = 200<br>
                 reject_delay = 1<br>
                 status_server = yes<br>
 }<br>
}<br>
radiusd: #### Loading Realms and Home Servers ####<br>
 proxy server {<br>
                 retry_delay = 5<br>
                 retry_count = 3<br>
                 default_fallback = no<br>
                 dead_time = 120<br>
                 wake_all_if_all_dead = no<br>
 }<br>
 home_server localhost {<br>
                 ipaddr = 127.0.0.1<br>
                 port = 1812<br>
                 type = "auth"<br>
                 secret = "testing123"<br>
                 response_window = 20<br>
                 max_outstanding = 65536<br>
                 require_message_authenticator = no<br>
                 zombie_period = 40<br>
                 status_check = "status-server"<br>
                 ping_interval = 30<br>
                 check_interval = 30<br>
                 num_answers_to_alive = 3<br>
                 num_pings_to_alive = 3<br>
                 revive_interval = 120<br>
                 status_check_timeout = 4<br>
                 irt = 2<br>
                 mrt = 16<br>
                 mrc = 5<br>
                 mrd = 30<br>
 }<br>
 home_server_pool my_auth_failover {<br>
                 type = fail-over<br>
                 home_server = localhost<br>
 }<br>
 realm example.com {<br>
                 auth_pool = my_auth_failover<br>
 }<br>
 realm LOCAL {<br>
 }<br>
radiusd: #### Loading Clients ####<br>
 client localhost {<br>
                 ipaddr = 127.0.0.1<br>
                 require_message_authenticator = no<br>
                 secret = "testing123"<br>
                 nastype = "other"<br>
 }<br>
radiusd: #### Instantiating modules ####<br>
 instantiate {<br>
 Module: Linked to module rlm_exec<br>
 Module: Instantiating exec<br>
  exec {<br>
                 wait = no<br>
                 input_pairs = "request"<br>
                 shell_escape = yes<br>
  }<br>
 Module: Linked to module rlm_expr<br>
 Module: Instantiating expr<br>
 Module: Linked to module rlm_expiration<br>
 Module: Instantiating expiration<br>
  expiration {<br>
                 reply-message = "Password Has Expired  "<br>
  }<br>
 Module: Linked to module rlm_logintime<br>
 Module: Instantiating logintime<br>
  logintime {<br>
                 reply-message = "You are calling outside your allowed timespan  "<br>
                 minimum-timeout = 60<br>
  }<br>
 }<br>
radiusd: #### Loading Virtual Servers ####<br>
server inner-tunnel {<br>
 modules {<br>
 Module: Checking authenticate {...} for more modules to load<br>
 Module: Linked to module rlm_pap<br>
 Module: Instantiating pap<br>
  pap {<br>
                 encryption_scheme = "auto"<br>
                 auto_header = no<br>
  }<br>
 Module: Linked to module rlm_chap<br>
 Module: Instantiating chap<br>
 Module: Linked to module rlm_mschap<br>
 Module: Instantiating mschap<br>
  mschap {<br>
                 use_mppe = yes<br>
                 require_encryption = no<br>
                 require_strong = no<br>
                 with_ntdomain_hack = no<br>
  }<br>
 Module: Linked to module rlm_unix<br>
 Module: Instantiating unix<br>
  unix {<br>
                 radwtmp = "/var/log/radius/radwtmp"<br>
  }<br>
 Module: Linked to module rlm_eap<br>
 Module: Instantiating eap<br>
  eap {<br>
                 default_eap_type = "md5"<br>
                 timer_expire = 60<br>
                 ignore_unknown_eap_types = no<br>
                 cisco_accounting_username_bug = no<br>
                 max_sessions = 4096<br>
  }<br>
 Module: Linked to sub-module rlm_eap_md5<br>
 Module: Instantiating eap-md5<br>
 Module: Linked to sub-module rlm_eap_leap<br>
 Module: Instantiating eap-leap<br>
 Module: Linked to sub-module rlm_eap_gtc<br>
 Module: Instantiating eap-gtc<br>
   gtc {<br>
                 challenge = "Password: "<br>
                 auth_type = "PAP"<br>
   }<br>
 Module: Linked to sub-module rlm_eap_tls<br>
 Module: Instantiating eap-tls<br>
   tls {<br>
                 rsa_key_exchange = no<br>
                 dh_key_exchange = yes<br>
                 rsa_key_length = 512<br>
                 dh_key_length = 512<br>
                 verify_depth = 0<br>
                 pem_file_type = yes<br>
                 private_key_file = "/usr/local/etc/raddb/certs/server.pem"<br>
                 certificate_file = "/usr/local/etc/raddb/certs/server.pem"<br>
                 CA_file = "/usr/local/etc/raddb/certs/ca.pem"<br>
                 private_key_password = "whatever"<br>
                 dh_file = "/usr/local/etc/raddb/certs/dh"<br>
                 random_file = "/usr/local/etc/raddb/certs/random"<br>
                 fragment_size = 1024<br>
                 include_length = yes<br>
                 check_crl = no<br>
                 cipher_list = "DEFAULT"<br>
                 make_cert_command = "/usr/local/etc/raddb/certs/bootstrap"<br>
    cache {<br>
                 enable = no<br>
                 lifetime = 24<br>
                 max_entries = 255<br>
    }<br>
   }<br>
 Module: Linked to sub-module rlm_eap_ttls<br>
 Module: Instantiating eap-ttls<br>
   ttls {<br>
                 default_eap_type = "md5"<br>
                 copy_request_to_tunnel = no<br>
                 use_tunneled_reply = no<br>
                 virtual_server = "inner-tunnel"<br>
                 include_length = yes<br>
   }<br>
 Module: Linked to sub-module rlm_eap_peap<br>
 Module: Instantiating eap-peap<br>
   peap {<br>
                 default_eap_type = "mschapv2"<br>
                 copy_request_to_tunnel = no<br>
                 use_tunneled_reply = no<br>
                 proxy_tunneled_request_as_eap = yes<br>
                 virtual_server = "inner-tunnel"<br>
   }<br>
 Module: Linked to sub-module rlm_eap_mschapv2<br>
 Module: Instantiating eap-mschapv2<br>
   mschapv2 {<br>
                 with_ntdomain_hack = no<br>
   }<br>
 Module: Checking authorize {...} for more modules to load<br>
 Module: Linked to module rlm_realm<br>
 Module: Instantiating suffix<br>
  realm suffix {<br>
                 format = "suffix"<br>
                 delimiter = "@"<br>
                 ignore_default = no<br>
                 ignore_null = no<br>
  }<br>
 Module: Linked to module rlm_files<br>
 Module: Instantiating files<br>
  files {<br>
                 usersfile = "/usr/local/etc/raddb/users"<br>
                 acctusersfile = "/usr/local/etc/raddb/acct_users"<br>
                 preproxy_usersfile = "/usr/local/etc/raddb/preproxy_users"<br>
                 compat = "no"<br>
  }<br>
 Module: Checking session {...} for more modules to load<br>
 Module: Linked to module rlm_radutmp<br>
 Module: Instantiating radutmp<br>
  radutmp {<br>
                 filename = "/var/log/radius/radutmp"<br>
                 username = "%{User-Name}"<br>
                 case_sensitive = yes<br>
                 check_with_nas = yes<br>
                 perm = 384<br>
                 callerid = yes<br>
  }<br>
 Module: Checking post-proxy {...} for more modules to load<br>
 Module: Checking post-auth {...} for more modules to load<br>
 Module: Linked to module rlm_attr_filter<br>
 Module: Instantiating attr_filter.access_reject<br>
  attr_filter attr_filter.access_reject {<br>
                 attrsfile = "/usr/local/etc/raddb/attrs.access_reject"<br>
                 key = "%{User-Name}"<br>
  }<br>
 } # modules<br>
} # server<br>
server {<br>
 modules {<br>
 Module: Checking authenticate {...} for more modules to load<br>
 Module: Checking authorize {...} for more modules to load<br>
 Module: Linked to module rlm_preprocess<br>
 Module: Instantiating preprocess<br>
  preprocess {<br>
                 huntgroups = "/usr/local/etc/raddb/huntgroups"<br>
                 hints = "/usr/local/etc/raddb/hints"<br>
                 with_ascend_hack = no<br>
                 ascend_channels_per_line = 23<br>
                 with_ntdomain_hack = no<br>
                 with_specialix_jetstream_hack = no<br>
                 with_cisco_vsa_hack = no<br>
                 with_alvarion_vsa_hack = no<br>
  }<br>
 Module: Checking preacct {...} for more modules to load<br>
 Module: Linked to module rlm_acct_unique<br>
 Module: Instantiating acct_unique<br>
  acct_unique {<br>
                 key = "User-Name, Acct-Session-Id, NAS-IP-Address, Client-IP-Address, NAS-Port"<br>
  }<br>
 Module: Checking accounting {...} for more modules to load<br>
 Module: Linked to module rlm_detail<br>
 Module: Instantiating detail<br>
  detail {<br>
                 detailfile = "/var/log/radius/radacct/%{Client-IP-Address}/detail-%Y%m%d"<br>
                 header = "%t"<br>
                 detailperm = 384<br>
                 dirperm = 493<br>
                 locking = no<br>
                 log_packet_header = no<br>
  }<br>
 Module: Instantiating attr_filter.accounting_response<br>
  attr_filter attr_filter.accounting_response {<br>
                 attrsfile = "/usr/local/etc/raddb/attrs.accounting_response"<br>
                 key = "%{User-Name}"<br>
  }<br>
 Module: Checking session {...} for more modules to load<br>
 Module: Checking post-proxy {...} for more modules to load<br>
 Module: Checking post-auth {...} for more modules to load<br>
 Module: Linked to module rlm_wimax<br>
 Module: Instantiating wimax<br>
  wimax {<br>
                 delete_mppe_keys = no<br>
  }<br>
 } # modules<br>
} # server<br>
radiusd: #### Opening IP addresses and Ports ####<br>
listen {<br>
                 type = "auth"<br>
                 ipaddr = *<br>
                 port = 0<br>
}<br>
listen {<br>
                 type = "acct"<br>
                 ipaddr = *<br>
                 port = 0<br>
}<br>
listen {<br>
                 type = "control"<br>
 listen {<br>
                 socket = "/var/run/radiusd/radiusd.sock"<br>
 }<br>
}<br>
Listening on authentication address * port 1812<br>
Listening on accounting address * port 1813<br>
Listening on command file /var/run/radiusd/radiusd.sock<br>
Listening on proxy address * port 1814<br>
Ready to process requests.<br>
rad_recv: Access-Request packet from host 127.0.0.1 port 33946, id=0, length=99<br>
                 NAS-IP-Address = 127.0.0.1<br>
                 NAS-Port = 0<br>
                 Service-Type = Authenticate-Only<br>
                 User-Name = "00:11:22:33:44:55"<br>
                 EAP-Message = 0x020100160130303a31313a32323a33333a34343a3535<br>
                 Message-Authenticator = 0xfd69faa6c99f7a3370053df2352bf710<br>
+- entering group authorize {...}<br>
++[preprocess] returns ok<br>
++[chap] returns noop<br>
++[mschap] returns noop<br>
[suffix] No '@' in User-Name = "00:11:22:33:44:55", looking up realm NULL<br>
[suffix] No such realm "NULL"<br>
++[suffix] returns noop<br>
[eap] EAP packet type response id 1 length 22<br>
[eap] No EAP Start, assuming it's an on-going EAP conversation<br>
++[eap] returns updated<br>
++[unix] returns notfound<br>
[files] users: Matched entry 00:11:22:33:44:55 at line 50<br>
++[files] returns ok<br>
++[expiration] returns noop<br>
++[logintime] returns noop<br>
[pap] Found existing Auth-Type, not changing it.<br>
++[pap] returns noop<br>
Found Auth-Type = EAP<br>
+- entering group authenticate {...}<br>
[eap] EAP Identity<br>
[eap] processing type md5<br>
rlm_eap_md5: Issuing Challenge<br>
++[eap] returns handled<br>
Sending Access-Challenge of id 0 to 127.0.0.1 port 33946<br>
                 EAP-Message = 0x0102001604106bbf07a4c14f3a8827abfc156663de53<br>
                 Message-Authenticator = 0x00000000000000000000000000000000<br>
                 State = 0x6657d5226655d142401be8626f19b077<br>
Finished request 0.<br>
Going to the next request<br>
Waking up in 4.9 seconds.<br>
rad_recv: Access-Request packet from host 127.0.0.1 port 33946, id=1, length=117<br>
                 NAS-IP-Address = 127.0.0.1<br>
                 NAS-Port = 0<br>
                 Service-Type = Authenticate-Only<br>
                 User-Name = "00:11:22:33:44:55"<br>
                 State = 0x6657d5226655d142401be8626f19b077<br>
                 EAP-Message = 0x020200160410c5ef19bc837126c1f52cff9375b3dfbd<br>
                 Message-Authenticator = 0x4bd0892e19ab27690245b2a54eb0039a<br>
+- entering group authorize {...}<br>
++[preprocess] returns ok<br>
++[chap] returns noop<br>
++[mschap] returns noop<br>
[suffix] No '@' in User-Name = "00:11:22:33:44:55", looking up realm NULL<br>
[suffix] No such realm "NULL"<br>
++[suffix] returns noop<br>
[eap] EAP packet type response id 2 length 22<br>
[eap] No EAP Start, assuming it's an on-going EAP conversation<br>
++[eap] returns updated<br>
++[unix] returns notfound<br>
[files] users: Matched entry 00:11:22:33:44:55 at line 50<br>
++[files] returns ok<br>
++[expiration] returns noop<br>
++[logintime] returns noop<br>
[pap] Found existing Auth-Type, not changing it.<br>
++[pap] returns noop<br>
Found Auth-Type = EAP<br>
+- entering group authenticate {...}<br>
[eap] Request found, released from the list<br>
[eap] EAP/md5<br>
[eap] processing type md5<br>
[eap] Freeing handler<br>
++[eap] returns ok<br>
+- entering group post-auth {...}<br>
++[exec] returns noop<br>
                 expand: %{User-Name} -> 00:11:22:33:44:55<br>
++[request] returns noop<br>
                 expand: %{EAP-MSK} -> <br>
++[reply] returns noop<br>
[wimax] No EAP-MSK or EAP-EMSK.  Cannot create WiMAX keys.<br>
++[wimax] returns noop<br>
Sending Access-Accept of id 1 to 127.0.0.1 port 33946<br>
                 EAP-Message = 0x03020004<br>
                 Message-Authenticator = 0x00000000000000000000000000000000<br>
                 User-Name = "00:11:22:33:44:55"<br>
                 WiMAX-FA-RK-Key = 0x00<br>
                 WiMAX-MSK = 0x<br>
Finished request 1.<br>
Going to the next request<br>
Waking up in 4.9 seconds.<br>
Cleaning up request 0 ID 0 with timestamp +119<br>
Cleaning up request 1 ID 1 with timestamp +119<br>
Ready to process requests.</tt></body></html>