В данной статье речь пойдет о построении сети с использованием технологии подключения пользователей, известной как IPoE с использованием динамической выдачи адресов по протоколу DHCP с использованием опции 82.
Итак нашей задачей является построить сеть в которой от пользователя требуется минимум действий для авторизации и работы в сети. Можно даже назвать это как: «воткнул кабель в компьютер, и заработало».
В качестве биллинговой системы мы будем использовать бесплатную (до 200 абонентов) сертифицированную АСР Felix2. В качестве DHCP сервера будем использовать ISC DHCP сервер.
Общая схема работы
Когда пользователь включает компьютер, операционная система отправляет 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). Первую (тестовую) сеть будем строить по следующей схеме:
В данной схеме система на АСР 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.
Чтобы появились дополнительные поля в интерфейсе, укажем в настройках интерфейса (Конфигурация -> Настройки интерфейса) что используется схема выдачи адресов DHCP-Opt82:
Теперь добавим наш коммутатор в базу оборудования (Оборудование -> Новое оборудование):
Статус: Установлено, IP-адрес: 10.1.1.253, Модель: DES-3200-28, и нажмем «Добавить».
Создаем нового пользователя (Пользователи -> Новый пользователь). Выбираем адрес подключения. Система автоматически предложит подсеть, используемую в данном доме и выберет первый свободный IP-адрес.
Выбираем оборудование к которому будет подключен пользователь. Система предложит выбрать оборудование из списка оборудования, установленного в данном доме.
Указываем что пользователь будет подключен к первому порту коммутатора. Отмечаем флаг «Подключение выполнено» и нажимаем «Добавить».
После этого пополняем счет (Пополнения счета -> Новое пополнение), активируем тарифный план (Платежи -> Платеж по тарифу). Посмотреть текущее состояние пользователя можно в (Пользователи -> Личная статистика).
Проверим, что конфигурационный файл DHCP сервера обновился:
cat /etc/dhcp/dhcpd.conf
Проверим, что DHCP сервер работает:
ps ax | grep dhcpd
Настройка коммутатора
Теперь нужно настроить коммутатор. Если коммутатор «из коробки», в инструкции должен быть указан IP-адрес «по умолчанию». Если оборудование «б/у», и вы не знаете какой у него IP-адрес/логин/пароль, нужно сбросить конфигурацию через консольное подключение.
В данной статье мы будем использовать коммутатор DES-3200-28 «из коробки».
Ставим на тестовой машине статический IP-адрес (например 10.90.90.1/8) Подключаемся к коммутатору по протоколу telnet:
Включаем, настраиваем 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
Проверяем, что данные пользователя правильно отображаются в интерфейсе АСР Felix2.
Реальная схема сети
Рассмотренная выше схема сети была тестовой (в один коммутатор много пользователей не подключишь). Ниже приведен пример реальной схемы сети (не более ~600 абонентов). Аплинк от магистрального провайдера приходит в оптический порт коммутатора. Этот порт нужно объединить в VLAN с портом, куда подключается сетевая карта eth1 от сервера с АСР Felix2.
Например, объединяем 1 и 24 порт в 1000й VLAN:
create vlan v1000 tag 1000
config vlan v1000 add untagged 1,24
При росте сети также желательно разнести дома по отдельным 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»).
Если возникли вопросы с установкой/конфигурацией, пишите в комментариях, постараюсь помочь.
Автор: LDestroy