這將刪除頁面 "Home"。請三思而後行。
Welcome to the Eye wiki!
Проект появился где-то в 2008 году, когда мне понадобилось быстро сделать замену виндовому шлюзу с трафик-инспектором. Вэб-интерфейс написан на php, бэкенд - на перле. В процессе жизни обе части дополнялись разными фичами, которые мне требовались. В принципе, сейчас, обе части имеют дублирующие друг у друга функции ядра и могли бы заменить друг друга, но вторую часть переписывать мне лень, а потому две части на разных языках программирования так и останутся.
Состоит из двух частей - вэб-интерфейс и бэкенд, плюс имеет связи с другими системами мониторинга (nagios|cacti|torrus|wiki). Изначально система создавалась для контроля и ограничения выхода сотрудников/оборудования в сеть интернет. В качестве шлюзов можно использовать либо линуксовый роутер (в этом случае система генерит конфиги для iptables) либо роутер от микротик. В связи с этим, общая идеология такая - есть список логинов, к которому биндится список используемых ими ip-адресов. На каждый ip-адрес можно повесить различные параметры выхода в интернет. Настраиваются как ширина используемого канала, так и ограничения по портам/протоколам, плюс есть ограничения по трафику в сутки и в месяц. Логины можно группировать в группы для удобства анализа/управления. Трафик снимается с коллекторов netflow, обсчитывается, затем применяются правила по лимиту трафика. Позднее в систему была добавлена возможность управлять конфигурацией dhcp-сервера, dns-сервера и нагиоса. Вместе с этим было внедрено сканирование сети для идентификации мест подключения каждого ip-адреса.
Вся логика работы крутится вокруг ip-адреса:
В "Пользователи" заводим запись на сотрудника или устройство. Затем к этой записи добавляем используемые ip-адреса и соответствующий mac-адрес.
Т.о. пользователь, как правило, - это все адреса, принадлежащие определённому устройству. Однако, можно также вносить адреса оборудования, используемые каким-то сотрудником, если нам не важно, что это за оборудование.
Например, у сотрудника есть телефон, ноутбук, планшет. Мы не хотим заводить каждое из этих устройств, как отдельную запись пользователя, потому что нам в общем всё равно, что это за устройства - они не относятся к нашей сетевой/серверной инфраструктуре, а являются чисто потребителями трафика и принадлежат одному человеку. В этом случае мы просто указываем все адреса этих устройств в записи пользователя. В комментарий к ip-адресу - пишем что это за устройство.
Пользователей можно собирать в группы. Группа, как правило, подразумевает какое-то логическое объединение для сотрудников/устройств.
Мы можем создать правила для автоматического назначения нового ip-адреса в группу по маку, принадлежности ip-адреса какой-то подсети, или по имени устройства, которым оно представляется dhcp-серверу. В этом случае для адреса будет создан логин в этой группе и сразу назначены права доступа в интернет.
Правила автоназначения есть как у групп, так и у пользователей. Поэтому алгоритм назначения принадлежности для нового адреса выглядит так:
При анализе правил сначала проверяется нахождение ip-адреса в сетях хотспота. При совпадении - все прочие правила игнорируются.
Затем выполняется проверка по правилам автоназначения для записей пользователей:
Если совпадений не найдено, эти проверки повторяются в той же последовательности для правил автоназначения групп.
Если совпадений не найдено, в группе с флагом Default (по умолчанию, это группа DHCP) будет заведён пользователь с логином на основе mac-адреса с этим ip-адресом.
Если адрес соответствует сети хотспота, он будет помещён в группу, с установленным флагом HotSpot. Если таковой не создано - в группу с флагом Default.
Для адресов, принадлежащих пользователям в группах DHCP или HOTSPOT есть ряд ограничений. Основное - им нельзя выдать доступ в интернет:
Для группы DHCP - из соображений безопасности. Чтобы любое вновь появившееся оборудование не начало общаться с внешним миром.
Для группы HOTSPOT - потому что доступ в интернет для этой группы управляется хотспотом.
Адреса (и пользователи) в этих группах (DHCP|HOTSPOT) живут согласно времени аренды, указанной в соответствующей им сети (или пока адрес активен). При получении dhcp-release пакета (когда оборудование освобождает ip-адрес, полученный по dhcp), адреса автоматически удаляются из базы.
Если пользователю назначена любая другая группа, то адреса, принадлежащие этому пользователю, получают статическую привязку ip-адреса к маку для dhcp-сервера, а пользователю становится возможным выдать доступ в интернет.
Для определения порта свича, к которому подключен ip-адрес, необходимо создать в "Инфраструктура" иерархию подключения свичей.
Для этого:
Создаём для свича запись в "Пользователи". В поле Логин пишем имя свича, и указываем все используемые им ip-адреса.
Сам свитч создаём из учётной записи пользователя, для чего жмём кнопку "+Устройство". Указываем модель свича, число портов и доступ.
Свитч обязательно должен иметь доступ по SNMP, который мы и указываем в его записи. Затем, на странице "Порты" щёлкаем в номер порта, который является аплинком этого свича и указываем к какому оборудованию он подключен и устанавливаем флаг Uplink.
Для работы необходимо указать используемую вами сеть:
Настройки - Сети:
В поле "Новая сеть" указываем используемую организацией сеть в формате / (например: 192.168.0.0/24). Здесь:
Жмём добавить.
Затем - кликаем в ссылку названия сети и указываем параметры:
Система работает с dhcp-сервером dnsmasq и dhcp-сервером на роутере Микротик.
Ничего дополнительно не нужно. Конфиг для dnsmasq всегда генерится для всех зарегистрированных в системе сетей с флагом "офисная".
В записи ip-адреса пользователя, есть несколько полей, относящихся к dhcp-серверу:
Если запись пользователя находится в группе с флагами DHCP или Hotspot, статической привязки создано не будет! Адреса в этих группах рассматриваются как динамические и будут удаляться по событию dhcp-release от dhcp-сервера!
Причин несколько, но основная - только dnsmasq позволяет сделать привязку к маку для разных подсетей.
Вы можете сделать резервирование мака в разных подсетях и dnsmasq это спокойно обработает.
Чтобы добиться такого же функционала от ISC DHCPD или его форков, надо хорошо извратиться (пример скрипта для этого варианта есть в addons), но конфиг становится сложно-читаем.
Windows DHCP такого не может вообще.
Если используется Windows DHCP сервер, можно написать power-shell скрипт, который будет мониторить лог и обрабатывать события выделения адресов, дёргая api (как это делает микротик).
Для работы с DNS необходимо указать в настройках ("Настройки"=>"Параметры"):
Для связки с dhcp-сервером, необходимо:
Для того, чтобы это вообще работало, надо:
ktutil
add_entry -password -p dns_updater@YOURDOMAIN.COM -k 1 -e aes256-cts-hmac-sha1-96
wkt /opt/Eye/scripts/cfg/dns_updater.keytab
quit
include "/etc/bind/rndc.key";
controls {
inet 127.0.0.1 port 953 allow { 127.0.0.1; } keys { "rndc-key"; };
};
N.B. Если используется dnsmasq в качестве днс-сервера - не надо ничего. Ни указывать днс-сервер в настройках, ни писать его тип.
DNS-записи могут быть статическими и динамическими.
Динамические записи обновляют имя (A-запись) и обратную зону (PTR-запись) по запросу dhcp-сервера.
Эта операция выполняется при выполнении условий:
В записи ip-адреса пользователя есть три поля, отвечающие за статические записи в DNS (помимо ip-адреса):
N.B. Если устройство перемещается между несколькими сетями, надо отслеживать актуальность привязки DNS-имени к адресу!
Альтернативой будет для доменной машины убрать статическую привязку и оставить изменение DNS-записи по DHCP-запросу. Сложнее дело обстоит с устройствами, которые не входят в windows-домен. В этом случае придётся отключать проверку на существование компьютера в домене (что приведёт к захламлению основной зоны мусором). Или отслеживать изменения вручную.
Система поддерживает создание "внешних" относительно офисного домена dns-записей.
Для этого, днс-имя необходимо внести с точкой в конце.
Имена с точкой в конце не добавляются (и не удаляются) из офисного днс-сервера.
Если в dns-имени есть точка, то в обработка будет зависеть от типа используемого dns-сервера:
Для bind - никакой разницы нет. Будет просто создана A-запись с точкой в имени
Для Windows DNS - разница есть! Будет создан поддомен из строки после точки и указанного ip-адреса. Поэтому, если вам нужно будет создать несколько таких записей внутри одного поддомена, первой записью должна быть основная запись для обращения к указанному поддомену!
Например, у вас есть роутер к которому вы хотите обращаться, как router1, а на роутере есть несколько интерфейсов - vlan1, vlan2 и т.д.
Последовательность прописывания dns-имён должна быть такой:
這將刪除頁面 "Home"。請三思而後行。