Infusino, Michael - ADP Dataphile wrote:

I am using radius to authenticate access from VPN.

Would anyone now how to record the IP address the user is assigned after they log in.

Michael

How does a little dynamic dns strike you? Make sure to actualy read below and attached scripts and setup a DNS key.

--------------radiusd.conf-------------
----modules section--------
   exec ddns_update {
                wait = no
                program = "/usr/local/sbin/radius-dns-update.sh"
                input_pairs = request
                packet_type = Accounting-Request
                shell_escape = yes

        }
------------end modules----
----instantiate section-------
         ddns_update
-----------end section--------


#!/bin/bash

#must setup this key!!
#man nsupdate
NSUPDATE="nsupdate -k 
/etc/freeradius/keys/Kradius-dns-updates.+157+08981.private"

function usage()
{
        echo "Usage: `basename $0` -u User-Name -t Hint -s Acct-Status-Type -i 
Framed-IP-Address"
        exit 1
}


while getopts "u:t:s:i:" opt; do
        case "$opt" in
        u) USER_NAME=$OPTARG;;
        t) HINT=$OPTARG;;
        s) ACCT_STATUS_TYPE=$OPTARG;;
        i) FRAMED_IP_ADDRESS=$OPTARG;;
        *) usage;;
        esac;
done


HINT=`echo ${HINT} | tr -d  '"'`
USER_NAME=`echo ${USER_NAME} | tr -d '"'`
ACCT_STATUS_TYPE=`echo ${ACCT_STATUS_TYPE} | tr -d '"'`
FRAMED_IP_ADDRESS=`echo ${FRAMED_IP_ADDRESS} | tr -d '"'` 

if [[ "${USER_NAME}" == "" ]] || 
   [[ "${HINT}" == "" ]] ||
   [[ "${ACCT_STATUS_TYPE}" == "" ]] ||
   [[ "${FRAMED_IP_ADDRESS}" == "" ]]; then exit 1; fi


#make sure you update below list to something that fits your setup!
case "${HINT}" in 
        XXX) DOMAINNAME="xxx.you.net";;
        YYY) DOMAINNAME="yyy.you.net";;
        *)exit 1;;
esac;

USER_NAME="[EMAIL PROTECTED]"
DNS_A_REC="${USER_NAME}.${DOMAINNAME}"

DELETE_DNS_A_REC="prereq yxdomain ${DOMAINNAME}\nupdate delete ${DNS_A_REC} A"
ADD_DNS_A_REC="update add ${DNS_A_REC} 300 in A ${FRAMED_IP_ADDRESS}"
TOUCH_DNS_A_REC="prereq nxdomain ${DNS_A_REC}\n"

case "${ACCT_STATUS_TYPE}" in
        Start)
                echo -e "${DELETE_DNS_A_REC}\n${ADD_DNS_A_REC}\nsend" | 
$NSUPDATE
                ;;
        Stop)
        #comment below to leave logged out users in DNS
                echo -e "${DELETE_DNS_A_REC}\nsend" | $NSUPDATE
                ;;
        Alive)
        #uncomment below to flood active users in during turnup
        #       echo -e "${TOUCH_DNS_A_REC}\n${ADD_DNS_A_REC}\nsend" | $NSUPDATE
                exit 0;;
        *)
                exit 1;;
esac;
#!/bin/bash

STAGE2="/usr/local/sbin/radius-dns-update.s2.sh"

if [[ "${USER_NAME}" == "" ]] || 
   [[ "${HINT}" == "" ]] ||
   [[ "${ACCT_STATUS_TYPE}" == "" ]] ||
   [[ "${FRAMED_IP_ADDRESS}" == "" ]]; then exit 0; fi

if [[ -x $STAGE2 ]]; then 
        $STAGE2 -u"${USER_NAME}" -t"${HINT}" -s"${ACCT_STATUS_TYPE}" 
-i"${FRAMED_IP_ADDRESS}" 2>&1 >/dev/null
fi

exit 0
- 
List info/subscribe/unsubscribe? See http://www.freeradius.org/list/users.html

Reply via email to