Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

Для управления данным функционалом нужен модуль Freeradius DHCP.

Начиная в версии 0.74 есть альтернатива для Freeradius DHCP. - управление через mikrotik_dhcp_leases.pl
Управление DHCP серверами на Mikrotik'e

перед началом работ настройте Freeradius c Mikrotik

При данной схеме работы DHCP запросы клиентов приходят на Mikrotik DHCP, затем Mikrotik их трансформирует в radius запрос и отправляет на RADIUS сервер где происходит авторизация пакета и отправка результата на Mikrotik. После получения результата от RADIUS сервера Mikrotik формирует пакет DHCP для клиента.

Возможности

  • Динамическая и статическая раздача IP адресов

  • Option 82 (Удобная система интеграции с любым нестандартным оборудованием)

  • Нарезка скорости абонентам

  • Гостевой доступ

Настройка

Скопировать модуль

Code Block
cp Mac_auth2.pm /usr/abills/Abills/mysql/


config.pl

Code Block
$AUTH{mikrotik_dhcp}='Mac_auth2';
$ACCT{mikrotik_dhcp}='Mac_auth2';

...

Так как DNS, маска сети и шлюз прописываются на Mikrotik (/ IP / DHCP Servers/ Networks ) и их нельзя изменить через RADIUS.

Image Added


Для гостевых сетей можно отправлять только параметры длительности lease для IP адреса и использовать часть сети как гостевые адреса для dhcp.Пример параметров для гостевого пула

Code Block
$conf{DHCPHOSTS_GUEST_POOLS}='0:16:Session-Timeout=300';

Параметр Session-Timeout=300 - время через которое система переспрашивает у RADIUS сервера статус клиента. Если не указывать, Mikrotik обновляет сессию не запрашивая статус. Данный параметр должен быть такой же как и NAS AliveПримечание: в настройках пула адресов, который используется как гостевой, обязательно отметить параметр "Гостевой доступ".

Примечание: сеть, которая должна будет выдаваться абоненту - должна быть предварительно записана на BRAS'e.


Настройка DHCP

через терминал

Code Block
/ip dhcp-server add interface=ether2 address-pool=static-only authoritative=after-2sec-delay use-radius=yes lease-time=5min10m disabled=no
/radius add address=192.168.1.62 secret=secretpass timeout=300ms3000ms authentication-port=1812 accounting-port=1813 service=dhcdhcp

с помощью Winbox
IP > DHCP Server > New DHCP Server Image Removed

Image Added

Красным подчёркнуты поля, которые важно изменить. Interface - интерфейс, на котором будет работать DHCP сервер, Lease Time - рекомедованное значение - 10 минут, Use RADIUS - yes.

Radius > New Radius Server Image Removed

Image Added


Если все правильно настроено на RADIUS сервер приходят следующие пары в дебаг режиме (radiusd -X).

...

Code Block
$conf{AUTH_EXPR}='Agent-Circuit-Id:0x0004(\S{4})\d{2}([0-9a-f]{2}):VLAN,PORT;Agent-Remote-Id:0x0006([0-9a-f]{12}):MAC;'
. 'Agent-Circuit-Id:0x([0-9a-f]{4})\d{2}([0-9a-f]{4})$:VLAN,PORT_DEC;Agent-Remote-Id:0x([0-9a-f]{12})$:MAC;';

примеры выражений

Шейпер

По умолчанию система производит шейпер по средством правил

...

где CLIENT_67 это CLIENT_ префикс адрес листа, а 67 ID тарифного плана

ISC-DHCP

При использовании ISC-DHCP настраиваем DHCP RELAY на микротике с помощью Winbox

IP > DHCP RELAY

Image RemovedImage Added

Подсчет трафика

Подсчет трафика осуществляется через модуль IPNIPoE Traffic Collectors .

возможные ошибки

Нет связи с радиусом


Code Block
/log print
17:28:45 dhcp,error ONU: radius authentication failed for 40:ED:98:60:33:59: RADIUS server is not responding 

...

Code Block
Access-Request packet from host 172.30.9.1 port 35496, id=32, length=111
      NAS-Port-Type = Ethernet
      NAS-Port = 2211448818
      Calling-Station-Id = "1:40:ed:98:60:33:59"
      Called-Station-Id = "ONU"
      User-Name = "40:ED:98:60:33:59"
      User-Password = "P\301\377cJ\237\255\244\302\350\2230\3370=\335"
     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
      NAS-Identifier = "MikroTik"
      NAS-IP-Address = 172.30.9.1

Sending Access-Accept of id 31 to 172.30.9.1 port 50139
      Framed-IP-Address = 10.0.0.2
      Mikrotik-Address-List = "CLIENTS_1"
      Session-Timeout = 600

скорее всего (RADIUS видит приходящие запросы с Mikrotik, отвечает на них, но Mikrotik не видит ответов.)

Проверьте, совпадает ли секретный ключ radius secret не совпадаетна Mikrotik и в биллинге. Нужно повторно внести в поле пароля управления RADIUS секрет и перезагрузить радиус, также этот пароль нужно обновить на микротикена Mikrotik.

Если проблема осталась:

Проверяете через tcpdump, нормально ли приходят запросы:

Code Block
languagebash
tcpdump -n host *IP*

где *IP*  - IP-адрес Mikrotik.

Возможная проблема: Mikrotik посылает RADIUS-запрос, ему приходит ответ, но Mikrotik не принимает ответ, отвечает ICMP port unreachable:

Code Block
IP 172.16.0.4.33280 > 10.0.0.1.1812: RADIUS, Access-Request (1), id: 0x24 length: 116
IP 10.0.0.1.1812 > 172.16.0.4.33280: RADIUS, Access-Accept (2), id: 0x24 length: 93
IP 172.16.0.4 > 10.0.0.1: ICMP 172.16.0.4 udp port 33280 unreachable, length 129

Здесь 172.16.0.4 - Mikrotik, 10.0.0.1 - RADIUS-сервер.

Вероятно, ответ на Mikrotik приходит не с того IP-адреса, на который Mikrotik отправил запрос - где-то между Mikrotik и RADIUS-сервером происходит трансляция адресов (NAT). Можно убедиться, запустив на Mikrotik Packet Sniffer.

Решение: разместить Mikrotik и RADIUS-сервер в одной сети, или правильно настроить NAT.