ipoe_ctx.cfg

Skip to end of metadata
Go to start of metadata
configure
@@@ if clear=='1'
 no context {{ctx_name}}
@@@ endif
!
context {{ctx_name}}
!
 no ip domain-lookup

 !!! поддержка фрагментированных пакетов для нат
 nat fragments

!!! логировать нат привязки, через отдельный nf9
nat logging-profile NAT_LOG_CARBON
 export-version v9
 destination {{billing_ip}} port 9996
!

!!! проходим по всем nat_policy и создаем их
@@@ for policy in nat_policy

!!! создаем nat pool
 ip nat pool NAT_POOL_{{policy.name}} napt paired-mode logging
!!! paired-mode обязательная опция и должна быть в лицензии
!!! раздаем по 32 абонента на 1 нат адрес и не более 2000 портов, потом следующий и по кругу
  paired-mode subscriber over-subscription 32 port-limit 2000
  logging-profile NAT_LOG_CARBON context {{ctx_name}}

!!! указываем подсети которыми натить
  @@@ for nat_pool in policy.nat_pool
    address {{nat_pool}}
!!! не использовать известные порты
      exclude well-known
  @@@ endfor

!!!! и/или ренджи которыми натить
  @@@ for nat_range in policy.nat_range
    address {{nat_range.replace("-", " to ")}}
!!! не использовать известные порты
      exclude well-known
  @@@ endfor

!!! создаем политику управляемую по радиусу
 nat policy POL_NAT_{{policy.name}} radius-guided enhanced
!!! огранничиваем колво нат на одного пользователя по типам трафика
  connections tcp maximum {{ connlimit_tcp_max or 500 }}
  connections udp maximum {{ connlimit_udp_max or 500 }}
  connections icmp maximum {{ connlimit_icmp_max or 20 }}
! Default class
  ignore
  inbound-refresh udp
  icmp-notification
! Named classes
!!! натим все что папало в ACL_NAT в класс ABON_GRAY
  access-group ACL_NAT
   class ABON_GRAY
    pool NAT_POOL_{{policy.name}} {{ctx_name}}
    !!! задаем короткое время жизни сессий, чтоб таблица нат не переполнилась от торрентов и сканов
    timeout tcp 1800
    timeout udp 60
    timeout fin-reset 60
    timeout icmp 30
    timeout syn 60
    timeout basic 300
    timeout abandoned 1800
    admission-control tcp
    admission-control udp
    admission-control icmp
    endpoint-independent filtering tcp
    endpoint-independent filtering udp
    inbound-refresh udp
    icmp-notification
!
@@@ endfor

!!! создаем интерфейсы контекста которые привяжем к физическим портам с авторизацией
 @@@ for bind in abon_binds
 interface if_{{ctx_name}}_{{bind.name}}
  description only for bind context with port, because multibind is not safe to use this
  @@@ if bind.if_ip
        ip address {{bind.if_ip}}
  @@@ endif
 @@@ endfor

!!! можно было бы все ip адреса шлюзов для пользователей повешать на  interface if_{{ctx_name}}_{{bind.name}}
!!! НО count of secondary address is limited поэтому нужно создать мультибинды

!!! создаем мультибинд интерфейс на который будут приклеены пользователи, иначе пользователь не сможет авторизоваться
  @@@ for multi in multibind_ip
   interface if_{{ctx_name}}_{{multi.ip}}_multi multibind
   ip address {{multi.ip}}
   @@@ if multi.pool
    ip pool {{multi.pool}}
   @@@endif
  @@@ endfor

!!! создаем loopback интерфейс, чтоб запросы разных протоколов шли от него
interface if_{{ctx_name}}_system loopback
  description for connect to billing and other private-system net, and for indentify nas context
  ip address {{context_ip}}
   ip source-address telnet snmp ssh radius tacacs+ syslog dhcp-server tftp ftp netop flow-ip
 no logging console

!!! создаем дополнительные интерфейсы, если нужно иметь связь этого контекста с другими физ.портами
@@@ if context_int
@@@ for int in context_int
 interface if_{{ctx_name}}_{{int.if_ip}}_system
  description for connect to billing and other private-system net, and for indentify nas context
  ip address {{int.if_ip}}
   ip source-address telnet snmp ssh radius tacacs+ syslog dhcp-server tftp ftp netop flow-ip
 no logging console
@@@ endfor
@@@ endif

!!! указываем acl какие сети натить, тк этот acl можно указать только внутри контекста
 policy access-list ACL_NAT
  seq 1010 permit ip 10.0.0.0 0.255.255.255 class ABON_GRAY
  seq 1020 permit ip 192.168.0.0 0.0.255.255 class ABON_GRAY
  seq 1030 permit ip 172.16.0.0 0.15.255.255 class ABON_GRAY

!!! задаем страницу переадресации при блокировке админом
 http-redirect profile CARBON_URL_BLOCKED
  url "http://{{cabinet_ip}}/html/blocked.php"

!!! задаем страницу переадресации при отрицательном балансе
 http-redirect profile CARBON_URL_NEGBAL
  url "http://{{cabinet_ip}}/html/negbal.php"

!!! включаем админов контекста в локальной базе паролей
 aaa authentication administrator local
 aaa authentication administrator maximum sessions 1

!!! включаем авторизацию абонов через радиус
 aaa authentication subscriber radius
 aaa password default {{users_psw}}

!!! включаем аккаунтинг абонов
 aaa accounting subscriber radius

!!! интервал отправки accounting 20 минут
 aaa update subscriber 20

!!! максимальное колво абонентов
 aaa maximum subscriber active 8000

!!! сервер для аккаунтинга
 radius accounting server {{billing_ip}} key {{radius_secret}}

!!! обратный сервер для приема соа
 radius coa server {{billing_ip}} key {{coa_psw}} port 3799

!!! сервер для авторизации
 radius server {{billing_ip}} key {{radius_secret}}

!!! максимальное колво попыток
 radius max-retries 3

!!! интервал ожидания, должен быть больше чем указан в радиус сервере, чтоб радиус сервер не тработал работал зря
 radius timeout 15

!!! максимальное колво одновременных радиус запросов
 radius max-outstanding 256

!!! вырезаем домен, привет виндоуз
 radius strip-domain

!!! помечаем на 1 минуту, что радиус сервер не рабочий, если не отвечает
 radius deadtime 1

!!! не отправлять acc-stop если авторизация не удалась
 aaa accounting suppress-acct-on-fail


!!! указываем политики по-умолчанию для subscriber
 subscriber default
   qos policy policing DEFAULT_IN
   qos policy metering DEFAULT_OUT
!!! укажим первый нат пул если есть как дефалтный, чтоб белые адреса, использовать без передачи фиктивного нат пула
@@@ for policy in nat_policy
    @@@ if loop.index==1
     nat policy-name POL_NAT_{{policy.name}}
    @@@ endif
@@@ endfor

!!! опцию не включать без обращения в саппорт редбека
!!! enable onlys reback support ack   flow apply admission-control profile FLOW_CONNLIMIT bidirectional

!!! включам отправку netflow
   flow apply ip profile FLOW_PROF_CARBON both

!!! создаем радиус профиль, который будем передавать через радиус, и указываем дефалтные значения переменных профиля
 radius service profile SERVICE_INET
  parameter value Rate-Inet-in 1234
  parameter value Burst-Inet-in 125000
  parameter value ExBurst-Inet-in 250000
  parameter value Rate-Inet-out 1234
  parameter value Burst-Inet-out 125000
  parameter value ExBurst-Inet-out 250000
  seq 10 attribute Dynamic-Policy-Filter "ip in forward class CLS_INET qos"
  seq 20 attribute Dynamic-Policy-Filter "ip out forward class CLS_INET qos"
  seq 30 attribute Dynamic-Policy-Filter "ip in forward class CLS_LOCAL qos"
  seq 40 attribute Dynamic-Policy-Filter "ip out forward class CLS_LOCAL qos"
  seq 50 attribute Dynamic-Qos-Parameter "meter-class-rate CLS_INET rate-absolute $Rate-Inet-out"
  seq 60 attribute Dynamic-Qos-Parameter "meter-class-burst CLS_INET $Burst-Inet-out"
  seq 70 attribute Dynamic-Qos-Parameter "meter-class-excess-burst CLS_INET $ExBurst-Inet-out"
  seq 80 attribute Dynamic-Qos-Parameter "police-class-rate CLS_INET rate-absolute $Rate-Inet-in"
  seq 90 attribute Dynamic-Qos-Parameter "police-class-burst CLS_INET $Burst-Inet-in"
  seq 100 attribute Dynamic-Qos-Parameter "police-class-excess-burst CLS_INET $ExBurst-in"
  seq 110 attribute Dynamic-Qos-Parameter "meter-class-rate CLS_LOCAL rate-absolute 100000"
  seq 120 attribute Dynamic-Qos-Parameter "meter-class-burst CLS_LOCAL 6250000"
  seq 130 attribute Dynamic-Qos-Parameter "meter-class-excess-burst CLS_LOCAL 125000000"
  seq 140 attribute Dynamic-Qos-Parameter "police-class-rate CLS_LOCAL rate-absolute 100000"
  seq 150 attribute Dynamic-Qos-Parameter "police-class-burst CLS_LOCAL 6250000"
  seq 160 attribute Dynamic-Qos-Parameter "police-class-excess-burst CLS_LOCAL 125000000"
  seq 170 attribute Service-Interim-Accounting 900

!!! создаем маршруты в инет и другие сети
 @@@ for route in routes
 ip route {{route.net}} {{route.gw}}
 @@@ endfor

!!! создаем маршруты до пользователей на L3 коммутатор ядра
 @@@ for route in abon_nets
  @@@ if route.gw
 ip route {{route.net}} {{route.gw}}
  @@@ endif
 @@@ endfor

!!! указываем куда и какой слать netflow
 flow collector CARBON_COLLECTOR
  ip-address {{billing_ip}}
  port 9996
  export-version v5
  ip profile FLOW_PROF_CARBON
!
end
Введите метки, чтобы добавить к этой странице:
Please wait 
Ищите метку? просто начните печатать.