configure terminal !!! включаем, что subscriber ы должны авторизовываться subscriber authorization enable !!! включаем, что можно по радиус реплай передать несколько сервисов в ответ на логи пароль. subscriber service multiple-accept !!! выключаем отдельный аккаунтинг подключеных сервисов !!! нам достаточно только аккаунтинга пользователя no subscriber service session-accounting !!! включаем нетфлоу отправку ip flow-export version 5 ip flow-cache timeout active 20 ip flow-cache timeout inactive 30 ip flow-export source {{to_billing_int}} ip flow-export destination {{billing_ip}} 9996 !!! создаем радиус группу для авторизации по ip subscriber no aaa group server radius CRB_AAAGS_IPOE aaa group server radius CRB_AAAGS_IPOE server-private {{billing_ip}} auth-port 1812 acct-port 1813 timeout 3 retransmit 2 key {{radius_secret}} ip radius source-interface {{to_billing_int}} deadtime 1 !!! тут идет магия, но при других наборах параметров работать не будет aaa authentication login AAA_LIST_IPOE group CRB_AAAGS_IPOE aaa authorization network AAA_LIST_IPOE group CRB_AAAGS_IPOE !!! эта строчка выглядит не логично, но она Верная aaa authorization subscriber-service AAA_LIST_IPOE local group CRB_AAAGS_IPOE !!! и эта строка нужна aaa authorization subscriber-service default local !!! включаем accounting для листа AAA_LIST_IPOE aaa accounting network AAA_LIST_IPOE action-type start-stop group CRB_AAAGS_IPOE ! !!! ждать назначения ip адреса aaa accounting delay-start all !!! делаем рандом сдвиги, чтоб при ресете не было пиковых одновременных аккаунтингов aaa accounting jitter maximum 10 !!! период accounting в минутах aaa accounting update periodic 20 !!! влкючаем обратный радиус для приема coa no aaa server radius dynamic-author aaa server radius dynamic-author client {{billing_ip}} server-key {{coa_psw}} port {{coa_port}} auth-type any !!! общий сессион ID для пользователя и его сервисов aaa session-id common !!! разрешаем управлять по радиусу интерфейсами, в теории нужно только для ppp доступа и здесь не нужно aaa policy interface-config allow-subinterface !!! создаем полиси контрол для перехвата первого пакета и авторизации абонетов no policy-map type control CTRL_IPOE class-map type control match-all CTRL_TIMER_UNAUTH !!! если пользователь авторизован ранее с ошибкой, то ничего не делаем(return), пока не кончится таймер TIMER_UNAUTH match authen-status unauthenticated match timer TIMER_UNAUTH !!! если пользователь авторизован и не закончился таймер TIMER_AUTH, то return class-map type control match-all CTRL_TIMER_AUTH match authen-status authenticated match timer TIMER_AUTH !!! если кончился таймер, то отключаем сервисы policy-map type control CTRL_IPOE class type control always event timed-policy-expiry 1 service disconnect !!! если стопнули радиус сессию, то отключаем сервисы class type control always event account-logoff 1 service disconnect !!! если радиус не отвечает, даем инет со скоростью 512кбит на 10 минут class type control always event radius-timeout 10 set-timer TIMER_UNAUTH 10 20 service-policy type service name FWPOL_DEFAULT !!! если это первый пакет, то пробуем авторизоваться class type control always event session-start 10 set-timer TIMER_AUTH 10080 !!! если авторизовались, то будет неявный return 20 authorize aaa list AAA_LIST_IPOE password servicemode identifier source-ip-address !!! если reject, то вешаем таймер на 5 минут и перенаправляем на страницу редиректа админом 30 set-timer TIMER_UNAUTH 5 40 service-policy type service name FWPOL_BLOCKED_TRUSTED 50 service-policy type service name FWPOL_BLOCKED_REDIRECT !!! на все интерфейсы из списка abon_ints вешаем обязательную авторизацию по первому пакету через контрол CTRL_IPOE по ip-address @@@ for abon_int in abon_ints interface {{abon_int}} ip flow ingress ip flow egress ip nat inside service-policy type control CTRL_IPOE ip subscriber routed initiator unclassified ip-address @@@ endfor end exit