Просмотр Исходного

{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

flow record CRB_IPv4_REC
match ipv4 source address
match ipv4 destination address
match ipv4 protocol
match interface input
match transport source-port
match transport destination-port
match ipv4 tos
collect counter packets
collect counter bytes
!
!
flow exporter CRB_EXPORTER
destination {{billing_ip}}
ttl 7
transport udp 9996
template data timeout 60
!
!
flow monitor CRB_IPv4_MONITOR
exporter CRB_EXPORTER
cache timeout inactive 20
cache timeout active 180
record CRB_IPv4_REC
!

!!! создаем радиус группу для авторизации по 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



!!! Настройки DHCP relay
ip dhcp relay information option
ip dhcp relay information policy keep
no ip dhcp relay information check
ip dhcp relay information trust-all





!!! создаем полиси контрол для перехвата первого пакета и авторизации абонетов
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 session-start
10 authorize aaa list AAA_LIST_IPOE password password identifier circuit-id
!
class type control always event timed-policy-expiry
1 service disconnect
!
class type control always event account-logoff
1 service disconnect
!
class type control always event access-reject
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 monitor CRB_IPv4_MONITOR input
ip flow monitor CRB_IPv4_MONITOR output
ip nat inside
ip helper-address {{billing_ip}}
no ip unreachables
no ip proxy-arp
ip verify unicast source reachable-via rx allow-self-ping
service-policy type control CTRL_IPOE
ip subscriber l2-connected
initiator dhcp
@@@ endfor

end
exit
{code}