{code}
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 authentication ppp 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
{code}
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 authentication ppp 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
{code}