AlexPan Опубликовано 24 мая, 2007 · Жалоба Кто занимался вопросом выдачи IP с привязкой к портам свитча? Меня интересует более сложная задача. Как сделать выдачу динамически, с использованием базы под MySQL. Я знаю, что многие просто динамически генерят hdcpd.conf, но это не красиво. Может есть какие патчи к isc-dhcp, что-бы делать непосредственные запросы в MySQL? Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
Andrey Andruschenko Опубликовано 24 мая, 2007 · Жалоба Кто занимался вопросом выдачи IP с привязкой к портам свитча? Меня интересует более сложная задача. Как сделать выдачу динамически, с использованием базы под MySQL. Я знаю, что многие просто динамически генерят hdcpd.conf, но это не красиво. Может есть какие патчи к isc-dhcp, что-бы делать непосредственные запросы в MySQL? Не ISC, но возможно то, что вам нужно: http://freshmeat.net/projects/dhcpsql/ Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
mr.Scamp Опубликовано 26 мая, 2007 · Жалоба А оно умеет обновлять DNS-записи для клиентских хостов? Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
_IX_ Опубликовано 27 мая, 2007 · Жалоба тоже интересует, как выдать клиенту IP с привязкой к порту (без привязки к mac)?? Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
vIv Опубликовано 29 мая, 2007 · Жалоба ПОСМОТРЕТЬ в эту Option 82! Ну примитив же! http://www.p-dw.com/content/projects/dhcpsnooper/isc.php Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
AlexPan Опубликовано 5 июня, 2007 · Жалоба Задача в общем простая и примитивная. Всю информацию по клиентам держать в одной базе и по этой базе разные сервисы клиента авторизуют, выдают разные адреса и индентификаторы. Есть приблуда для того, что-бы например базу ISC-DHCP держать в LDAP. Но это опять получается шиворот на выворот. Т.е. не сервис лезет в центральную базу, а кто-то постоянно подсовывает этому сервису новые данные. Не подсунул, произошла рассинхронизация... Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
PereIks Опубликовано 6 июня, 2007 · Жалоба столкнулся с этой же проблемой. Щас задача чтоб хранить IP адреса, номер порта и номер свича в базе (UTM) и dhcp сервером оттуда выдирать их. Пока смотрю и подозреваю что проще наверное будет написать свой DHCP Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
mr.Scamp Опубликовано 9 июня, 2007 · Жалоба Многие используют скрипт, который выдирает нужные данные из БД, перестраивает конфиг и регулярно перезапускает dhcpd. imho - костыль. Можно ещё кстати посмотреть в сторону dhcp+ldap, но это уже что-то странное. Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
ram_scan Опубликовано 9 июня, 2007 · Жалоба А что странного ? К ldap приворачивается как зранилище данных тот-же mysql, и через оный ldap можно делать универсально большое количество вещей, включая авторизацию и аутенификацию. Имхо достаточно красиво. Настраивать только надо бубна много иногда. Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
mr.Scamp Опубликовано 10 июня, 2007 · Жалоба Бубна надо, да. Все привыкли к Radius. Вот прикрутить бы dhcp к радиусу...) Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
Bushi Опубликовано 14 июня, 2007 · Жалоба В свое время написал демон на сях - netflow collector, radius, dhcp, snmp мониторинг в одном флаконе. В базу ходит через odbc-драйвер, управляется демон по протоколу xml-rpc. До этого генерился конфиг dhcpd.conf из базы. Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
Andrey Andruschenko Опубликовано 19 июня, 2007 · Жалоба В свое время написал демон на сях - netflow collector, radius, dhcp, snmp мониторинг в одном флаконе. В базу ходит через odbc-драйвер, управляется демон по протоколу xml-rpc. До этого генерился конфиг dhcpd.conf из базы. А не поделитесь ? :) Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
snark Опубликовано 16 июля, 2007 · Жалоба В свое время написал демон на сях - netflow collector, radius, dhcp, snmp мониторинг в одном флаконе. В базу ходит через odbc-драйвер, управляется демон по протоколу xml-rpc. До этого генерился конфиг dhcpd.conf из базы. поделитесь плииз, уж очень надо... Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
Bushi Опубликовано 17 июля, 2007 · Жалоба Написано для внутренних нужд, документация отсутствует, autoconf, automake отсутствует, Makefile создан статически (компилится и работает под фряхой, под линуксом компилится, запускать не пробовал). Без документации разобраться сложно. Если есть желание разбираться - через недельку выложу. Самое сложное там - это спроектировать базу данных под демона, так как использует дофига таблиц, вся конфигурация хранится в SQL (абоненты, сетевые сервисы, сети, устройства и интерфейсы, тарифы, зоны трафика). Проверял работу с mysql и postgresql, теоретически под oracle должно заработать. Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
snark Опубликовано 17 июля, 2007 · Жалоба Без документации разобраться сложно. Если есть желание разбираться - через недельку выложу. Самое сложное там - это спроектировать базу данных под демона, так как использует дофига таблиц, вся конфигурация хранится в SQL (абоненты, сетевые сервисы, сети, устройства и интерфейсы, тарифы, зоны трафика). Проверял работу с mysql и postgresql, теоретически под oracle должно заработать. имея на руках сорцы разобраться и заставить работать вполне возможно ... главное бубен далеко не убирать ;) в общем - желание разбираться есть, выложите пожалуйста... "жду!"(с) Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
Bushi Опубликовано 18 июля, 2007 · Жалоба Я сейчас в отпуске. Выйду - выложу. Терпение. Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
snark Опубликовано 8 октября, 2007 · Жалоба Я сейчас в отпуске. Выйду - выложу. Терпение. Вы только скажите сколько ждать, а дальше уже - вопрос времени ... Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
sirmax Опубликовано 8 октября, 2007 · Жалоба Тлько что сам задался вопросом Кто поделится простейшим конфигом с примерами? PS Свич - des 3526, dhcp-server включен непосредственно в него, в 1-й влан, клиенты во втором... Или на Длинке фича не работате, пробегало где-то что интерфейс управления свичем должен быть в клиентском сегменте? http://www.hub.ru/forum/lofiversion/index.php/t20915.html - у меня такая же проблема... Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
snark Опубликовано 8 октября, 2007 · Жалоба Кто поделится простейшим конфигом с примерами? Свич - des 3526, dhcp-server включен непосредственно в него, в 1-й влан, клиенты во втором... Или на Длинке фича не работате, пробегало где-то что интерфейс управления свичем должен быть в клиентском сегменте? вот, тестовый конфиг в аккурат для Вашей задачи ... почему тестовый? потому что там много комментариев ;) в рабочем щас их практически нет ...authoritative; ddns-update-style none; default-lease-time 1800; # 1/2 hour max-lease-time 3600; # 1 hour min-lease-time 900; # 1/4 hour use-lease-addr-for-default-route on; one-lease-per-client on; deny duplicates; deny bootp; option arp-cache-timeout 3600; option netbios-node-type 1; #----------------------------------------------------------------------------- # logging if exists agent.remote-id and exists agent.circuit-id { # этакий глухой дебаг :) # log(info, "------------------------------------------------------------------------------"); # log(info, concat("Lease for ", binary-to-ascii(10, 8, ".", leased-address))); # log(info, "raw option-82:"); # log(info, concat("Remote ID: ", binary-to-ascii(16, 8, "|", option agent.remote-id), " Circuit ID: ", binary-to-ascii(10, 8, "|", option agent.circuit-id))); # log(info, "get via substring:"); # log(info, concat("Remote ID: ", binary-to-ascii(16, 8, ":", substring(option agent.remote-id, 2, 6)), " ", "Circuit ID: ", binary-to-ascii(10, 8, ".", substring(option agent.circuit-id, 5, 1)))); # log(info, "get via suffix:"); # log(info, concat("Remote ID: ", binary-to-ascii(16, 8, ":", suffix(option agent.remote-id, 6)), " ", "Circuit ID: ", binary-to-ascii(10, 8, ".", suffix(option agent.circuit-id, 1)))); if binary-to-ascii(16, 8, "", substring(option agent.remote-id, 2, 1)) = "0" { set switch-mac = concat("0", binary-to-ascii(16, 8, "", substring(option agent.remote-id, 2, 1)), ":", binary-to-ascii(16, 8, ":", substring(option agent.remote-id, 3, 6))); } else { set switch-mac = binary-to-ascii(16, 8, ":", substring(option agent.remote-id, 2, 6)); } set switch-addr = binary-to-ascii(10, 8, ".", packet(24, 4)); set switch-port = binary-to-ascii(10, 8, "", substring(option agent.circuit-id, 5, 1)); set switch-port-vlan = binary-to-ascii(10, 8, "", substring(option agent.circuit-id, 2, 2)); log(info, concat("- Lease: ", binary-to-ascii(10, 8, ".", leased-address), " via IP: ", switch-addr, " (MAC: ", switch-mac, ") on port: ", switch-port, " in VLAN: ", switch-port-vlan)); } #----------------------------------------------------------------------------- # получение данных через suffix (нечетные порты) class "00:19:5b:ed:91:81:1" { match if binary-to-ascii(16, 8, ":", suffix(option agent.remote-id, 6)) = "0:19:5b:ed:91:81" and binary-to-ascii(10, 8, "", suffix(option agent.circuit-id, 1)) = "1"; } # получение данных через substring (четные порты) class "00:19:5b:ed:91:81:2" { match if binary-to-ascii(16, 8, ":", substring(option agent.remote-id, 2, 6)) = "0:19:5b:ed:91:81" and binary-to-ascii(10, 8, "", substring(option agent.circuit-id, 5, 1)) = "2"; } # т.к. в agent.remote-id 1-й байт равен не 2-м нулям, а 1-му нулю # то берем в agent.remote-id не 6 байт, а 5 байт class "00:19:5b:ed:91:81:3" { match if binary-to-ascii(16, 8, ":", suffix(option agent.remote-id, 5)) = "19:5b:ed:91:81" and binary-to-ascii(10, 8, "", suffix(option agent.circuit-id, 1)) = "3"; } # это РАБОЧЕЕ решение! #class "00:19:5b:ed:91:81:4" { # match if binary-to-ascii(16, 8, ":", substring(option agent.remote-id, 3, 6)) = "19:5b:ed:91:81" and binary-to-ascii(10, 8, "", substring(option agent.circuit-id, 5, 1)) = "4"; #} # это по идее рабочее решение, # МАС не надо брать в кавычки и преобразовывать в ascii текст т.к. МАС бинарный и при переводе в текст нулики теряются class "00:19:5b:ed:91:81:4" { match if substring(option agent.remote-id, 2, 6) = 00:19:5b:ed:91:81 and binary-to-ascii(10, 8, "", substring(option agent.circuit-id, 5, 1)) = "4"; } # вместо MAC-а из agent.remote-id, берем IP_adress свича из пакета class "00:19:5b:ed:91:81:5" { match if binary-to-ascii(10, 8, ".", packet(24, 4)) ="172.31.255.6" and binary-to-ascii(10, 8, "", suffix(option agent.circuit-id, 1)) = "5"; } class "00:19:5b:ed:91:81:6" { match if binary-to-ascii(10, 8, ".", packet(24, 4)) ="172.31.255.6" and binary-to-ascii(10, 8, "", substring(option agent.circuit-id, 5, 1)) = "6"; } # те же яйца только в профиль, просто так запись короче, вместо: # `agent.remote-id = "MAC" and agent.circuit-id = "port"` или `dhcp.relay.ip.addr = "IP" and agent.circuit-id = "port"` # имеем: # `agent.remote-id:agent.circuit-id = "MAC:port"` или `dhcp.relay.ip.addr:agent.circuit-id = "IP:port"` # итого - нужные данные всего в одном месте вместо 2-х как выше class "00:19:5b:ed:91:81:7" { match if concat(binary-to-ascii(16, 8, ":", suffix(option agent.remote-id, 5)), ":", binary-to-ascii(10, 8, "", suffix(option agent.circuit-id, 1))) = "19:5b:ed:91:81:7"; } class "00:19:5b:ed:91:81:8" { match if concat(binary-to-ascii(16, 8, ":", substring(option agent.remote-id, 3, 6)), ":", binary-to-ascii(10, 8, "", substring(option agent.circuit-id, 5, 1))) = "19:5b:ed:91:81:8"; } class "00:19:5b:ed:91:81:9" { match if concat(binary-to-ascii(10, 8, ".", packet(24, 4)), ":", binary-to-ascii(10, 8, "", suffix(option agent.circuit-id, 1))) = "172.31.255.6:9"; } class "00:19:5b:ed:91:81:10" { match if concat(binary-to-ascii(10, 8, ".", packet(24, 4)), ":", binary-to-ascii(10, 8, "", substring(option agent.circuit-id, 5, 1))) = "172.31.255.6:10"; } class "00:19:5b:ed:91:81:21" { match if concat( binary-to-ascii(16, 8, ":", substring(option agent.remote-id, 3, 6)), ":", binary-to-ascii(10, 8, "", substring(option agent.circuit-id, 5, 1)) ) = "19:5b:ed:91:81:21"; } class "00:19:5b:ed:91:81:23" { match if concat(binary-to-ascii(10, 8, ".", packet(24, 4)), ":", binary-to-ascii(10, 8, "", suffix(option agent.circuit-id, 1))) = "172.31.255.6:23"; } # это 2-й свич! class "00:19:5b:ed:a0:2a:21" { match if concat(binary-to-ascii(16, 8, ":", substring(option agent.remote-id, 3, 6)), ":", binary-to-ascii(10, 8, "", substring(option agent.circuit-id, 5, 1))) = "19:5b:ed:a0:2a:21"; } class "00:19:5b:ed:a0:2a:23" { match if concat(binary-to-ascii(10, 8, ".", packet(24, 4)), ":", binary-to-ascii(10, 8, "", suffix(option agent.circuit-id, 1))) = "172.31.255.7:23"; } #----------------------------------------------------------------------------- shared-network "clients" { subnet 172.31.255.0 netmask 255.255.255.0 { } subnet 192.168.0.0 netmask 255.255.255.0 { option routers 192.168.0.1; option domain-name-servers 192.168.0.1; pool { range 192.168.0.11; allow members of "00:19:5b:ed:91:81:1"; } pool { range 192.168.0.12; allow members of "00:19:5b:ed:91:81:2"; } pool { range 192.168.0.13; allow members of "00:19:5b:ed:91:81:3"; } pool { range 192.168.0.14; allow members of "00:19:5b:ed:91:81:4"; } pool { range 192.168.0.15; allow members of "00:19:5b:ed:91:81:5"; } pool { range 192.168.0.16; allow members of "00:19:5b:ed:91:81:6"; } pool { range 192.168.0.17; allow members of "00:19:5b:ed:91:81:7"; } pool { range 192.168.0.18; allow members of "00:19:5b:ed:91:81:8"; } pool { range 192.168.0.19; allow members of "00:19:5b:ed:91:81:9"; } pool { range 192.168.0.20; allow members of "00:19:5b:ed:91:81:10"; } pool { range 192.168.0.31; allow members of "00:19:5b:ed:91:81:21"; } pool { range 192.168.0.33; allow members of "00:19:5b:ed:91:81:23"; } } subnet 10.0.0.0 netmask 255.255.255.0 { range 10.0.0.5 10.0.0.245; } } http://www.hub.ru/forum/lofiversion/index.php/t20915.html - у меня такая же проблема...так какая проблема то? то что RADIUS адрес не выдает? так он и не должен ... проблема написать скрипт? это действительно проблема? Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
Bushi Опубликовано 17 декабря, 2007 (изменено) · Жалоба Выкладываю. Документацию только начал делать. Введение http://www.chics.ru/~daniil/scnd/doc/ Исходники http://www.chics.ru/~daniil/scnd/scnd.tar.gz Изменено 17 декабря, 2007 пользователем Bushi Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
Bushi Опубликовано 21 декабря, 2007 · Жалоба Небольшие изменения архитектуры. Добавлена возможность динамического обновления DNS записей для хостов абонентов. Продолжаю писать документацию. Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
BuHast Опубликовано 16 мая, 2008 (изменено) · Жалоба Новую ветку создавать не стал... Но вопрос такой: Amino --- DES3526 --- DHCP Server на FreeBSD DES-3526 - 192.168.0.209 (поднят DHCP relay Option 82) Server - 192.168.0.213 Задача: Выдать AMINO адрес из подсети 192.168.1.0/24 по признаку vendor-class-identifier = Aminoaminet123fisys; конфиг dhcpd.conf: option domain-name "example.com"; #option domain-mame-servers 92.168.0.213; option subnet-mask 255.255.255.0; log-facility local7; default-lease-time 3600; max-lease-time 7200; ddns-update-style none; if exists agent.circuit-id { log ( info, concat ( " Lease for ", binary-to-ascii (10, 8, ".", leased-address), " Switch port: ", binary-to-ascii (10, 8, ".", option agent.circuit-id), " Switch MAC: ", binary-to-ascii (16, 8, ".", option agent.remote-id))); log ( info, concat ( " Vendor ", option vendor-class-identifier)); } #match if exists agent.circuit-id; #} class "Amino" { match if substring (option vendor-class-identifier, 0, 19) = "Aminoaminet124fisys"; } subnet 192.168.0.0 netmask 255.255.255.0 { range 192.168.0.110 192.168.0.160; option routers 192.168.0.6; allow unknown-clients; } subnet 192.168.1.0 netmask 255.255.255.0 { option routers 192.168.1.213; pool { range 192.168.1.55 192.168.1.100; allow members of "Amino"; } } Что видим в логах: May 16 15:08:35 test_FreeBSD dhcpd: Lease for 192.168.0.160 Switch port: 0.4.0.20.0.5 Switch MAC: 0.6.0.19.5b.84.44.c1 May 16 15:08:35 test_FreeBSD dhcpd: Vendor Aminoaminet124fisys May 16 15:08:35 test_FreeBSD dhcpd: DHCPDISCOVER from 00:02:02:0e:49:45 via 192.168.0.209 May 16 15:08:36 test_FreeBSD dhcpd: DHCPOFFER on 192.168.0.160 to 00:02:02:0e:49:45 via 192.168.0.209 May 16 15:08:36 test_FreeBSD dhcpd: Lease for 192.168.0.128 Switch port: 0.4.0.20.0.5 Switch MAC: 0.6.0.19.5b.84.44.c1 May 16 15:08:36 test_FreeBSD dhcpd: Vendor Aminoaminet124fisys May 16 15:08:36 test_FreeBSD dhcpd: DHCPDISCOVER from 00:02:02:0e:49:45 via 192.168.0.209 May 16 15:08:37 test_FreeBSD dhcpd: DHCPOFFER on 192.168.0.128 to 00:02:02:0e:49:45 via 192.168.0.209 May 16 15:08:37 test_FreeBSD dhcpd: Lease for 192.168.0.128 Switch port: 0.4.0.20.0.5 Switch MAC: 0.6.0.19.5b.84.44.c1 May 16 15:08:37 test_FreeBSD dhcpd: Vendor Aminoaminet124fisys May 16 15:08:37 test_FreeBSD dhcpd: DHCPREQUEST for 192.168.0.128 (192.168.0.213) from 00:02:02:0e:49:45 via 192.168.0.209 May 16 15:08:37 test_FreeBSD dhcpd: DHCPACK on 192.168.0.128 to 00:02:02:0e:49:45 via 192.168.0.209 May 16 15:08:37 test_FreeBSD dhcpd: Lease for 192.168.0.128 Switch port: 0.4.0.20.0.5 Switch MAC: 0.6.0.19.5b.84.44.c1 May 16 15:08:37 test_FreeBSD dhcpd: Vendor Aminoaminet124fisys May 16 15:08:37 test_FreeBSD dhcpd: DHCPREQUEST for 192.168.0.128 from 00:02:02:0e:49:45 via 192.168.0.209 May 16 15:08:37 test_FreeBSD dhcpd: DHCPACK on 192.168.0.128 to 00:02:02:0e:49:45 via 192.168.0.209 тк признак в логах появляется, значит сервер его распознаёт. Но как заставить ему выдать нужный ИП? Что я делаю не так? Исковырял себе весь мозх уже... Сильно не пинать, тк поставил FreeBSD 3 дня назад и вот теперь разбираюсь. Изменено 16 мая, 2008 пользователем BuHast Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...