FR2 - proxying inner tunnel

Dmitry Sergienko trooper+freeradius+users at email.dp.ua
Wed Feb 6 00:16:05 CET 2008


Hi!

Alan DeKok wrote:
> Dmitry Sergienko wrote:
>> Does anyone here have working inner tunnel proxying with freeradius 2.0.x?
>>
>> Still having troubles with doing EAP-PEAP-MSCHAPv2 authorization.
>> Switched to FreeRadius 2.0.1 from 1.1.7.
> 
>   I think the issue was introduced recently.  Try editing
> src/main/event.c, function request_post_handler()
> 
> ...
> 	if (request->root->proxy_requests &&
> 	    /* !request->proxy &&  */         // comment out this line
>             !request->in_proxy_hash &&        // add this line
> 	    (request->reply->code == 0) &&
> 	    (request->packet->dst_port != 0) &&
> 	    (request->packet->code != PW_STATUS_SERVER)) {
> ...
> 
>   Re-build && install.  See if that helps...

Thanks for the tip.
successfully_proxied_request() also needs patching:

         /* 

          *      If it was already proxied, do nothing. 

          * 

          *      FIXME: This should really be a serious error. 

          */ 

/*      if (request->in_proxy_hash || request->proxy) { */ 

         if (request->in_proxy_hash) { 

                 return 0; 

         } 


AFAIU this function relies on empty request->packet, but it is not empty because has been 
filled in eappeap_process():

                         /* 

                          *      Seed the proxy packet with the 

                          *      tunneled request. 

                          */ 

                         rad_assert(request->proxy == NULL); 

                         request->proxy = fake->packet; 



The second oddity: when setting "proxy_tunneled_request_as_eap = no" proxying is not 
working because no inner MSCHAPv2 request extracted. Debug looks like this:

Wed Feb  6 00:33:09 2008 : Debug:   PEAP: Calling authenticate in order to initiate 
tunneled EAP session.
Wed Feb  6 00:33:09 2008 : Debug:   WARNING: Unknown value specified for Auth-Type. 
Cannot perform requested action.

Solution is quite simple: write down the following in proxy-inner-tunnel file after 
authorize {} section:

     authenticate { 

         eap 

     } 



module_authenticate() is being called in eappeap_process() to extract MSCHAPv2 request and 
when no authenticate section in virtual server proxying will fail. IMHO it will be useful 
to have these lines in example proxy-inner-tunnel as a comment for 
"proxy_tunneled_request_as_eap" set to "no". Maybe someone will run into the same issue 
and spend several hours or days to figure out how to fix this.



-- 
Best regards,
Dmitry Sergienko



More information about the Freeradius-Users mailing list