Настройка DHCP с opt 82 на примере коммутатора D-Link

Skip to end of metadata
Go to start of metadata

Настройку необходимо проводить через веб-интерфейс

Для включения и настройки DHCP сервера необходимо в базовой системе выбрать раздел "Система сбора статистики"

далее раздел Настройки DHCP и поставить галочку Включить DHCP:

Затем нужно добавить список DHCP подсетей, которые будет обслуживать сервер. Это делается в разделе DHCP Subnets

Выберите пункт «Добавить».

Необходимо заполнить следующие пункты:

  1. Обязательно. DHCP SUBNET. Указать подсеть вида 10.0.0.0/8.
  2. DHCP RANGE для динамической раздачи. Указать диапазон, из которого адреса будут выдаваться динамически. (Примечание: данная опция не рекомендуется для использования провайдерам)
    ВНИМАНИЕ! Не нужно указывать DHCP RANGE для статической раздачи при привязке к mac или к opt82
  3. DHCP шлюз для клиентов. Шлюз для клиентов из данной подсети.
  4. DNS сервер для клиентов. Сервера DNS, если их несколько то указывать через запятую. Например: 10.0.0.1, 10.0.0.2.
  5. WINS сервер для клиентов. Для Windows сетей указывается WINS сервер.
  6. Маршруты для клиентов. Маршруты, передаваемые клиентам. Например: 10.1.1.0/24 10.1.1.1. Примечание: не все ОС поддерживают данную опцию.
  7. Дополнительные опции DHCP. Дополнительные опции вида: option domain-name example.com; max-lease-time 7200;

Примечание

  • для запуска сервера должна быть заведена хотя бы одна подсеть;
  • все адреса, для которых сделана привязка mac+ip должны входить в заведенные подсети.

После добавления подсетей необходимо определить интерфейсы, на которых будут приниматься DHCP запросы. По умолчанию запросы будут приниматься на всех локальных интерфейсах. Если нужно указать конкретный интерфейс — нужно добавить в список его номер. Номера интерфейсов можно посмотреть в базовой системе - Настройка сервера.

Указывать нужно в формате: eth1, eth2 и т.д.

Для привязки ip адреса клиента к mac адресу или опции 82 необходимо в биллинге, в учетной записи абонента заполнить соответствующие поля: 

Для работы opt82 используются следующие поля:

  1. IPv4
  2. Тип авторизации - по ip static
  3. Галочка OPT82
  4. SWITCH
  5. PORT
  6. VLAN
  7. Дополнительный параметр Opt82
  8. GPON-порт на приставке

Обязательными являются поля "IPv4", "Тип авторизации", галочка "OPT82", "SWITCH", "PORT" или "VLAN". Остальные поля заполняются в зависимости от того, по каким параметрам необходимо идентифицировать абонента. Заполнив эти поля нужно сохранить настройки. DHCP-сервер перезапустится автоматически.

Внимание! если vlan не используется укажите vlan 0

Пример

Для примера возмем простую схему сети, в которой Carbon Billing выступает в роли dhcp сервера, а коммутатор фирмы D-Link перенаправляет DHCP запросы на Carbon Billing. Ниже приведем схему сети:

Настройка коммутаторов фирмы D-Link

Для примера возмем коммутатор des-3526.

Предположим, что у нас настроена подсеть 10.100.0.0/16 для пользователей. Адрес интерфейса на Carbon Billing будет 10.100.0.1, этот же адрес будет раздаваться в параметрах dhcp как основной шлюз. На интерфейсе настроен vlan 100. Для управления коммутаторами и приема dhcp запросов нужно создать еще один интерфейс с номером vlan 10. На нем объявим ip адрес 10.10.0.1 и маску сети 255.255.0.0. Следовательно, все коммутаторы в сети должны иметь административный vlan 10 и ip адрес из сети 10.10.0.0/16 и перенаправлять все dhcp запросы на адрес 10.10.0.1.

Предположим, что 1-й порт коммутатора подключен к Carbon Billing.
Тогда, на коммутаторе произведены следующие настройки:

Создадим административный Vlan

config vlan default delete 1-26
create vlan vlan10 tag 10
config vlan vlanid 10 add tagged 1

Назначим административный vlan и ip адрес/маску системному интерфейсу.

config ipif System ipaddress 10.10.0.2/16 vlan vlan10

Cоздадим маршрут по умолчанию

create iproute default 10.10.0.1

На этом этапе можно проверить, есть ли связь до сервера Carbon Billing. Выполним для этого команду ping 10.10.0.1.

Если на этом этапе все настроенно верно, то продолжим настройку. Теперь настроим DHCP Relay

Включаем DHCP Relay

enable dhcp_relay

Указываем максимальное количество хопов до dhcp сервера

config dhcp_relay hops 16 time 0

Настраиваем option 82

config dhcp_relay option_82 state enable
config dhcp_relay option_82 check enable
config dhcp_relay option_82 policy replace
config dhcp_relay option_82 remote_id default

Указываем IP адрес dhcp-сервера

config dhcp_relay add ipif System 10.10.0.1

Теперь необходимо настроить пользовательский Vlan 100. Делается это аналогично административному Vlan -у.

create vlan vlan100 tag 100
config vlan vlanid 100 add tagged 1
config vlan vlanid 100 add untagged 2-26

Опционально может понадобиться отключить(DISABLE) опцию:

config dhcp_relay option_82 check

На этом настройка коммутатора завершена.

Теперь необходимо создать 2 локальных интерфейса на Carbon Billing с номерами vlan 10 и 100. Vlan 10 будет принимать dhcp запросы от коммутатора, поэтому номер этого интерфейса нужно добавить в локальном меню:
Конфигурирование сервера → DHCP-сервер... → Номера интерфейсов DHCP.

Для корректной работы dhcp сервера нужно добавить 2 подсети: 10.10.0.0/16 и 10.100.0.0/16.

В настройках пользовательской подсети (10.100.0.0/16) необходимо указать корректные настройки:

  • DHCP SUBNET
  • DHCP RANGE
  • DHCP шлюз для клиентов
  • DNS сервер для клиентов.

Остальные настройки делаются опционально.

Примечание

Не забыть включить DHCP-сервер.

Осталось зарегистрировать пользователей через Carbon Manager и указать привязку ip адреса к mac адресу, ip-адресу коммутатора, номеру vlan, номеру порта.

Отладка

Если по как-то причине есть проблемы с выдачей адресов на портах коммутатора нужно:

Шаг 1. Зайти в  /var/log/boot найти строку типа: dhcpd: DHCPREQUEST for 10.9.2.26 from 64:70:02:96:3f:35 via 10.95.9.102

Шаг 2. Адрес, указанный после via должен пинговаться

Шаг 3. Настроить только выдачу по MAC и посмотреть логи в /var/log/boot, а именно поля Switch port: Switch IP: VLAN: Если полей нет, то релей настроен неверно.

При корректной работе в /var/log/boot будут записи формата:

Lease for 10.0.0.8 Switch port: 1 Switch IP: (ip коммутатора куда подключена машина с которой идет запрос) Switch.agent IP: (ip коммутатора, который отрелэил запрос на биллинг) VLAN:13

Шаг 4. Cмотреть утилитой tshark пакеты от коммутатора, есть ли там agent.circuit-id

Файлы конфигурации и логов dhcp сервера

При отладке полезно посмотреть настройки и логи dhcp сервера.

Файл конфигурации

Файл формируется автоматически

/app/collector/etc/dhcp/dhcpd.conf
Файл выданных IP адресов с метками времени аренды
/app/collector/var/lib/dhcpd/dhcpd.leases
Файл выданных IP адресов. Хранит архив состояний аренды. Состояние до последнего создания файла dhcpd.leases
/app/collector/var/lib/dhcpd/dhcpd.leases~
Файл лога dhcp сервера
/app/collector/var/log/boot.log

Привязка абонента к порту

Привязка делается чтобы исключить подстановку ип адреса вручную абонентом.

Настройка привязки абонента к порту делается Только после отладки OPT82

Нужно выполнить следующие команды

enable address_binding dhcp_snoop

config address_binding dhcp_snoop max_entry ports 2-24 limit 10

config address_binding ip_mac ports 2-24 arp_inspection strict
config address_binding ip_mac ports 2-24 allow_zeroip enable

config address_binding ip_mac ports 2-24 forward_dhcppkt enable

config address_binding ip_mac ports 2-24 state enbled

где 2-24 порты абонентов, а 1 это аплинк.

5 - это колво мак привязок разрешенных можно указывать от 1 до 10, обычно 2.

После этих команд абонент сможет пройти сквозь коммутатор, только пройдя полный цикл opt82 получения адреса.

Посмотреть привязки можно командой:

show address_binding ip_mac  all

M(Mode) - D:DHCP, S:Static ACL - A:Active I:Inactive

 IP Address                              MAC Address       M  ACL Ports
 -------------------- ---------- -- -- -------------
 10.22.0.35                              00-0C-42-70-93-20 D  I  1 

Полезно

clear address_binding port 2

config address_binding ip_mac ports 1-24 mode acl stop_learning_threshold 500

config address_binding dhcp_snoop inactive_ageout_time <hour 1-65535>

----

CLI комнады d-link 3200

DES-3200_Series_CLI_Reference_Guide_R4.03.pdf

Полезная информация

Также обязательно нужно настроить опции фильтрации DHCP ответов от чужих и случайных DHCP серверов.

config filter dhcp_server add permit server_ip 10.10.0.1

config filter dhcp_server ports 1-24 state enable

Либо если коммутатор не поддерживает эту опцию настроить hex фильтрацию

----

Очень много информации здесь

http://www.d-link.ru/ru/faq/62/

http://www.d-link.ru/ru/faq/62/244.html

Вопрос: Как ограничить пропуск ARP-запросов на порту коммутатора определёнными адресами назначения?


Ответ: 
# Создание профиля и правил, разрешающих ARP-запросы на адреса:
# 0000AC100001, 0000AC100002 и 0000AC100003.
create access_profile packet_content_mask offset_0-15 0x0 0x0 0x0 0x0 offset_16-31 0xFFFFFFF 0x0 0xFFFF0000 0x0 offset_32-47 0x0 0x0 0x0000FFFF 0xFFFF0000 profile_id 1
config access_profile profile_id 1 add access_id 1 packet_content_mask offset_0-15 0x0 0x0 0x0 0x0 offset_16-31 0x08060001 0x0 0x00010000 0x0 offset_32-47 0x0 0x0 0x0000AC10 0x00010000 port 1 permit
config access_profile profile_id 1 add access_id 2 packet_content_mask offset_0-15 0x0 0x0 0x0 0x0 offset_16-31 0x08060001 0x0 0x00010000 0x0 offset_32-47 0x0 0x0 0x0000AC10 0x00020000 port 2 permit
config access_profile profile_id 1 add access_id 3 packet_content_mask offset_0-15 0x0 0x0 0x0 0x0 offset_16-31 0x08060001 0x0 0x00010000 0x0 offset_32-47 0x0 0x0 0x0000AC10 0x00030000 port 3 permit

# Создание профиля и правила, запрещающего все остальные ARP-запросы.
create access_profile packet_content_mask offset_0-15 0x0 0x0 0x0 0x0 offset_16-31 0xFFFFFFF 0x0 0xFFFF0000 0x0 profile_id 2
config access_profile profile_id 2 add access_id 1 packet_content_mask offset_0-15 0x0 0x0 0x0 0x0 offset_16-31 0x08060001 0x0 0x00010000 0x0 port 1-23 deny

Выражаем благодарность Samuel за предоставленный материал.


Парсеры для DLINK

DLINK_DES-1228/ME
SWIP(txt): substring(option agent.remote-id, 2, 14)
VLAN(bin8): binary-to-ascii(10, 16, \"\", substring(option agent.circuit-id, 2, 2))
PORT(bin8): binary-to-ascii(10, 8, \"\", suffix( option agent.circuit-id, 1))
MAC(bin8)(необязателен): binary-to-ascii(16, 8, \":\", substring(option agent.remote-id, 2, 6))

Введите метки, чтобы добавить к этой странице:
Please wait 
Ищите метку? просто начните печатать.