Сеть на DHCP Option82 – это просто

в 21:21, , рубрики: биллинг, ит-инфраструктура, сети передачи данных, системное администрирование, Телекомы, метки: , ,

В данной статье речь пойдет о построении сети с использованием технологии подключения пользователей, известной как IPoE с использованием динамической выдачи адресов по протоколу DHCP с использованием опции 82.

Итак нашей задачей является построить сеть в которой от пользователя требуется минимум действий для авторизации и работы в сети. Можно даже назвать это как: «воткнул кабель в компьютер, и заработало».

В качестве биллинговой системы мы будем использовать бесплатную (до 200 абонентов) сертифицированную АСР Felix2. В качестве DHCP сервера будем использовать ISC DHCP сервер.

Общая схема работы

image

Когда пользователь включает компьютер, операционная система отправляет DHCP запрос на получение IP адреса в сеть. На коммутаторе включено перенаправление DHCP запросов (DHCP Relay) и включена поддержка опции 82 протокола DHCP, поэтому он перехватывает DHCP запрос от пользователя, добавляет данные Option82 (Agent Circuit ID и Agent Remote ID) к DHCP пакету и перенаправляет запрос на DHCP сервер.

Когда DHCP запрос попадает на DHCP сервер, тот выдает IP-адрес основываясь на данных текущей конфигурации. В конфигурации задано соответствие IP-адреса, выдаваемого пользователю, IP-адресу и порту коммутатора к которому подключен пользователь. Конфигурация DHCP сервера формируется АСР Felix2 по имеющейся в базе данных информации.

АСР Felix2 периодически забирает от DHCP сервера данные о MAC адресах пользователей (которым были выданы IP-адреса) на портах коммутаторов. По IP-адресу и номеру порта коммутатора система находит пользователя в базе и отмечает, что MAC адрес принадлежит этому пользователю.

Также АСР Felix2 периодически забирает ARP таблицу с маршрутизатора (таблица соответствий IP — MAC) и, если пара IP-MAC соответствует пользователю в базе, данный пользователь считается авторизованным. Как только пара IP-MAC пропадает (пользователь выключает компьютер) система переводит пользователя в список неавторизованных (выполнив перед этим проверку, что оборудование абонента действительно выключено).
 
 
 
 

Практическая реализация

Для начала нам потребуется компьютер с двумя сетевыми картами и любой коммутатор, поддерживающий DHCP Relay (option 82). Первую (тестовую) сеть будем строить по следующей схеме:

image

В данной схеме система на АСР Felix2 будет выполнять дополнительно функцию маршрутизатора.
 
 
 
 

Установка

Скачаем (felix2.ru/download) и установим любым из описанных способов на сервер АСР Felix2.
В данной статье мы будем использовать «Установочный диск АСР Felix2». Подробная инструкция по установке АСР Felix2 находится здесь: felix2.ru/documentation
После установки входим в систему, используя логин root и пароль, указанный во время установки.
Сетевой интерфейс eth0 после установки сконфигурирован для работы с внутренней сетью:

IP-адрес: 10.1.1.1
Маска подсети: 255.255.255.0

Интерфейс eth1 нужно настроить для работы с вышестоящим Интернет провайдером:

ifconfig eth1 1.1.1.2 netmask 255.255.255.0
route add default gw 1.1.1.1

Здесь 1.1.1.2 — IP-адрес выданный нам вышестоящим Интернет провайдером, 1.1.1.1 – IP-адрес шлюза провайдера.
Чтобы конфигурация сети не сбросилась после перезагрузки, ее нужно описать в файле /etc/network/interfaces

Установим ISC-DHCP сервер:

apt-get update
apt-get install isc-dhcp-server

Сразу после установки DHCP сервер не запустится, так он еще не сконфигурирован:

root@felix2:~# cat /var/log/syslog | grep dhcp | tail -n 10
May 8 21:48:33 felix2 dhcpd: 
May 8 21:48:33 felix2 dhcpd: 
May 8 21:48:33 felix2 dhcpd: No subnet declaration for eth0 (10.1.1.1).
May 8 21:48:33 felix2 dhcpd: ** Ignoring requests on eth0.  If this is not what
May 8 21:48:33 felix2 dhcpd:    you want, please write a subnet declaration
May 8 21:48:33 felix2 dhcpd:    in your dhcpd.conf file for the network segment
May 8 21:48:33 felix2 dhcpd:    to which interface eth0 is attached. **
May 8 21:48:33 felix2 dhcpd: 
May 8 21:48:33 felix2 dhcpd: 
May 8 21:48:33 felix2 dhcpd: Not configured to listen on any interfaces!

 
 
 
 

Конфигурирование

Файл шаблона конфигурации ISC DHCP сервера (dhcp_opt82_ip-port.conf) и все остальные необходимые конфигурационные файлы можно скачать отсюда:
ftp://download.felix2.ru/config.examples/felix2_dhcp_opt82.tar.gz

Скачиваем, распаковываем, заменяем конфигурационные файлы:

wget ftp://download.felix2.ru/config.examples/felix2_dhcp_opt82.tar.gz
tar -xf felix2_dhcp_opt82.tar.gz -C /etc/felix2/

Перезапускаем АСР Felix2:

/etc/init.d/felix2 restart

 
 
 
 

Создание оборудования и тестового пользователя в АСР Felix2

Зайдем в веб-интерфейс администратора. Можно для этого использовать тестовую машину, временно поставив на ней статический IP-адрес (например 10.1.1.10/24). Веб интерфейс администратора доступен на 444 порту по протоколу HTTPS. Логин/пароль по умолчанию: su/su.

image

Чтобы появились дополнительные поля в интерфейсе, укажем в настройках интерфейса (Конфигурация -> Настройки интерфейса) что используется схема выдачи адресов DHCP-Opt82:

image

Теперь добавим наш коммутатор в базу оборудования (Оборудование -> Новое оборудование):
Статус: Установлено, IP-адрес: 10.1.1.253, Модель: DES-3200-28, и нажмем «Добавить».

image

Создаем нового пользователя (Пользователи -> Новый пользователь). Выбираем адрес подключения. Система автоматически предложит подсеть, используемую в данном доме и выберет первый свободный IP-адрес.

Выбираем оборудование к которому будет подключен пользователь. Система предложит выбрать оборудование из списка оборудования, установленного в данном доме.

Указываем что пользователь будет подключен к первому порту коммутатора. Отмечаем флаг «Подключение выполнено» и нажимаем «Добавить».

image

После этого пополняем счет (Пополнения счета -> Новое пополнение), активируем тарифный план (Платежи -> Платеж по тарифу). Посмотреть текущее состояние пользователя можно в (Пользователи -> Личная статистика).

Проверим, что конфигурационный файл DHCP сервера обновился:

cat /etc/dhcp/dhcpd.conf

Проверим, что DHCP сервер работает:

ps ax | grep dhcpd

 
 
 
 

Настройка коммутатора

Теперь нужно настроить коммутатор. Если коммутатор «из коробки», в инструкции должен быть указан IP-адрес «по умолчанию». Если оборудование «б/у», и вы не знаете какой у него IP-адрес/логин/пароль, нужно сбросить конфигурацию через консольное подключение.

В данной статье мы будем использовать коммутатор DES-3200-28 «из коробки».

Ставим на тестовой машине статический IP-адрес (например 10.90.90.1/8) Подключаемся к коммутатору по протоколу telnet:

image

Включаем, настраиваем DHCP Relay:

enable dhcp_relay
config dhcp_relay hops 16 time 0
config dhcp_relay option_82 state enable
config dhcp_relay option_82 check disable
config dhcp_relay option_82 policy replace
config dhcp_relay option_82 remote_id default
config dhcp_relay add ipif System 10.1.1.1

Теперь коммутатор будет перехватывать DHCP запросы, добавлять идентификационную информацию (option 82) и отправлять на DHCP сервер (10.1.1.1)
Задаем маршрут «по умолчанию» и новый IP-адрес коммутатора:

create iproute default 10.1.1.1
config ipif System vlan default ipaddress 10.1.1.253/24 state enable

После последней команды (смена IP-адреса) соединение будет разорвано. Ставим на тестовой машине статический IP-адрес (например 10.1.1.10/24) Подключаемся к коммутатору по новому адресу, сохраняем конфигурацию:

save

Включаем на тестовом компьютере получение сетевых настроек по DHCP.
Подключаем тестовый компьютер в первый порт коммутатора. Проверяем что DHCP-Relay пакеты от коммутатора доходят до сервера и клиент получает IP-адрес:

tail –n 1000 /var/log/syslog | grep dhcpd

image

Проверяем, что данные пользователя правильно отображаются в интерфейсе АСР Felix2.

image

 
 
 
 

Реальная схема сети

Рассмотренная выше схема сети была тестовой (в один коммутатор много пользователей не подключишь). Ниже приведен пример реальной схемы сети (не более ~600 абонентов). Аплинк от магистрального провайдера приходит в оптический порт коммутатора. Этот порт нужно объединить в VLAN с портом, куда подключается сетевая карта eth1 от сервера с АСР Felix2.

Например, объединяем 1 и 24 порт в 1000й VLAN:

create vlan v1000 tag 1000
config vlan v1000 add untagged 1,24

image

При росте сети также желательно разнести дома по отдельным VLAN.

 
 
 
 

Схема сети с выделенным маршрутизатором

При росте внутрисетевого(локального) трафика, соединение между коммутатором и сервером с АСР Felix2, выполняющим одновременно роль маршрутизатора, станет узким местом. Чтобы избежать этого, нужно установить выделенный маршрутизатор.

Также нужно указать АСР Felix2 получать ARP таблицу с внешнего маршрутизатора. Отредактируем файл /etc/felix2/felix2.xml:

<arp_fetcher>
    <connection name="DGS-3627G" address="10.1.1.1" port="22" 
        protocol="ssh" login="admin" passwd="12345" interface="DLINK" />
</arp_fetcher>

Модуль arp_fetcher может получать таблицу ARP адресов с оборудования CISCO (interface=«CISCO»), D-Link (interface=«DLINK»), или с программного маршрутизатора на базе Linux (interface=«Linux»).

image

 
 
Если возникли вопросы с установкой/конфигурацией, пишите в комментариях, постараюсь помочь.

Автор: LDestroy


* - обязательные к заполнению поля


https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js