Dushes Posted July 21, 2008 Posted July 21, 2008 Здраствуйте, ей богу пытался до последнего сам разобраться но уже как 3 дня мучаюсь, никак не получается, помогите пожалуйста ... Как вы уже наверно поняли пытаюсь раздавать ip по порту комутатора, сделал следущее: 1) Поставил ISC-DHCP из портов, компилил с USE_SOCKETS dhcpd -v Internet Systems Consortium DHCP Server V3.0.5 .... 2) конечно добавил в rc.conf dhcpd_enable="YES" dhcpd_conf="/usr/local/etc/dhcpd.conf" dhcpd_ifaces="eth0" 3) вот сделал простейший конфиг dhcpd.conf хотя бы что бы заработало ddns-update-style none; default-lease-time 600; max-lease-time 7200; log-facility local7; local-address 192.168.2.50; if exists agent.circuit-id { log ( info, concat( "Lease for ", binary-to-ascii (10, 8, ".", leased-address), " raw option-82 info is CID: ", binary-to-ascii (10, 8, ".", option agent.circuit-id), " AID: ", binary-to-ascii(16, 8, ".", option agent.remote-id))); } subnet 192.168.2.0 netmask 255.255.255.0 { deny unknown-clients; } subnet 192.168.1.0 netmask 255.255.255.0 { class "port-12" { match if binary-to-ascii (10, 8, "", suffix( option agent.circuit-id, 1)) = "12"; } pool { range 192.168.1.12; allow members of "port-12"; } } 4) далее /usr/local/etc/rc.d/isc-dhcpd start 5) смотрим что получилось netstat -an ........... udp4 0 0 192.168.2.50.67 *.* ........... 6) Коммутатор DES-3028, dhcp reley + option 82 на нём уже настроил DES-3028:4#show dhcp_relay Command: show dhcp_relay DHCP/BOOTP Relay Status : Enabled DHCP/BOOTP Hops Count Limit : 4 DHCP/BOOTP Relay Time Threshold : 0 DHCP Relay Agent Information Option 82 State : Enabled DHCP Relay Agent Information Option 82 Check : Disabled DHCP Relay Agent Information Option 82 Policy : Replace Interface Server 1 Server 2 Server 3 Server 4 ------------ --------------- --------------- --------------- -------------- System 192.168.2.50 7) Пробуем с помощью другого компа получить адрес по dhcp, адрес конечно же не получает /var/log/dhcpd.log Jul 21 22:38:59 gate dhcpd: Lease for 192.168.2.40 raw option-82 info is CID: 0.4.0.1.0.12 AID: 0.6.0.1c.f0.9e.66.6b Jul 21 22:38:59 gate dhcpd: DHCPDISCOVER from 00:16:e6:32:df:da via 192.168.2.100: unknown client ----------------------------------------------------------------- Вообще есть предположение что я не верно оформил class в dhcpd.conf , ну как уже только не пробывал, со всех форумов конфиги брал, чтто тока не делал ... руки опускаются Вставить ник Quote
ilgizk Posted July 22, 2008 Posted July 22, 2008 Он же пишет: Jul 21 22:38:59 gate dhcpd: DHCPDISCOVER from 00:16:e6:32:df:da via 192.168.2.100: unknown client при том что в конфиге: subnet 192.168.2.0 netmask 255.255.255.0 { deny unknown-clients; } Как настроено, так и работает. Адрес интерфейса DHCP-релея должен быть в той же подсети, из которой раздаются адреса клиентам. Вставить ник Quote
Dushes Posted July 22, 2008 Author Posted July 22, 2008 забыл кстати вывести настройки комутатора show switch****** MAC Address : 00-1C-F0-9E-66-6B IP Address : 192.168.2.100 (Manual) VLAN Name : default Subnet Mask : 255.255.255.0 Default Gateway : 0.0.0.0 Boot PROM Version : Build 1.00-B04 Firmware Version : Build 1.02-B10 Hardware Version : 1A1G хм... сделал следущим образом dhcpd.conf subnet 192.168.2.0 netmask 255.255.255.0 { range 192.168.2.90 192.168.2.100; allow unknown-clients; } на что получил следущее, компьютер получил ip=192.168.2.99 а лог выдал следущее Jul 22 12:19:21 gate dhcpd: Lease for 192.168.2.100 raw option-82 info is CID: 0.4.0.1.0.12 AID: 0.6.0.1c.f0.9e.66.6b Jul 22 12:19:21 gate dhcpd: DHCPDISCOVER from 00:16:e6:32:df:da via 192.168.2.100 Jul 22 12:19:21 gate dhcpd: ICMP Echo reply while lease 192.168.2.100 valid. Jul 22 12:19:21 gate dhcpd: Abandoning IP address 192.168.2.100: pinged before offer Jul 22 12:19:21 gate dhcpd: Abandoning IP address 192.168.2.100: pinged before offer Jul 22 12:19:21 gate dhcpd: Abandoning IP address 192.168.2.100: pinged before offer Jul 22 12:19:34 gate dhcpd: Lease for 192.168.2.99 raw option-82 info is CID: 0.4.0.1.0.12 AID: 0.6.0.1c.f0.9e.66.6b делаю орентируясь на статью http://xgu.ru/wiki/Опция_82_DHCP :( ничего не получается ... Вставить ник Quote
Dushes Posted July 22, 2008 Author Posted July 22, 2008 Адрес интерфейса DHCP-релея должен быть в той же подсети, из которой раздаются адреса клиентам. хм ... впервые о таком слышу, а на Dlink пишут что DHCP Server может находится за шлюзом, иммено для этого и включена поддержка сокетов в ISC-DHCP, поднят udp 67 порт, и именно дл этого как мне кажется мы и указываем на коммутаторе ip dns сервера а не его mac .... Поправьте если я не прав ? Вставить ник Quote
ilgizk Posted July 22, 2008 Posted July 22, 2008 Не путаем relay и server. Сервер действительно может располагаться в пределах достижимости по IP. А релей должен смотреть в широковещательный сегмент, в котором находятся DHCP-клиенты. Чтобы определить, из какого диапазона надо назначать адрес клиенту, DHCP сервер смотрит через какой DHCP relay пришел запрос. В данном случае, сервер получает запрос "via 192.168.2.100". Соответственно, он ищет в у себя в конфиге и пытается выдать адрес из "subnet 192.168.2.0 netmask 255.255.255.0". Вставить ник Quote
MS Posted July 22, 2008 Posted July 22, 2008 shared network net1 { subnet 192.168.2.0 netmask 255.255.255.0 { deny unknown-clients; } subnet 192.168.1.0 netmask 255.255.255.0 { class "port-12" { match if binary-to-ascii (10, 8, "", suffix( option agent.circuit-id, 1)) = "12"; } pool { range 192.168.1.12; allow members of "port-12"; } } } Примерно так попробуй... Вставить ник Quote
zhenya` Posted September 20, 2014 Posted September 20, 2014 (edited) А есть интересная задумка. В общем пользуем патч на сабклассы. на доступе глобал релей. все на шаредах типа include "сеть доступа"; include "файлы пулов описалов"; pool { range 5.****; allow members of "ABONENTS" "192.168.182.10:2";} pool { range 5.****; allow members of "ABONENTS" "192.168.182.6:6";} pool { range 5.****; allow members of "ABONENTS" "192.168.182.7:8";} и т.д. include "фейковая сеть для подключенцев"; в этом файле pool { deny members of "ABONENTS" "192.168.182.10:2"; range 10.8.0.2 10.8.0.253; } денай на каждую запись из allow (чтобы кто уже имеет адрес никак не получили ип из этой сети). но тут встал вопрос смен маков. лиза у нас дается на сутки и каждый день очень много заявок на смену мака. хочется написать портал смены мака. хочется из последнего пула выдать адрес (вместо no free leases), однако если просто убрать deny members of "ABONENTS" "192.168.182.10:2"; абонент получит фейк из этого пула, не смотря на запись в первом файле. не поможет ли мне allow unknown-clients; и deny known-clients; во втором файле?.. или нужно что-то еще.. и делать запреты по макам.. во втором пуле вместо связки коммутатор-порт. Edited September 20, 2014 by zhenya` Вставить ник Quote
pppoetest Posted September 20, 2014 Posted September 20, 2014 Я, после полугодичного секаса с ISC-DHCP, с передергиваниями сервака и прочего генерирования конфига, перешел на перловый дхцп от Ивана, подпилил под нас и забыл. Вставить ник Quote
terrible Posted September 23, 2014 Posted September 23, 2014 но тут встал вопрос смен маков. лиза у нас дается на сутки и каждый день очень много заявок на смену мака. хочется написать портал смены мака. А зачем вы привязываетесь к маку, если и так знаете свич и порт абонента? Вставить ник Quote
hsvt Posted November 7, 2014 Posted November 7, 2014 (edited) Может кто нибудь поделиться кусочком конфига для реализации так называемой гостевой сети - для юзеров которые не внесены в БД и не зарегестрированы по порту, влану и т.д. то есть для тех адресных пулов которым не обходимо делать редирект на сраничку авторизации. Или в целом логику построения по реализации IPoE ? в 10.200/16 - коммутаторы D-Link, с dhcp_local_relay и address binding dhcp snoop Вот текущие конфиги: dhcpd.conf default-lease-time 300; max-lease-time 300; min-lease-time 120; ddns-update-style none; authoritative; one-lease-per-client true; deny duplicates; ignore client-updates; local-address 192.168.254.218; log-facility local7; log(info, "***"); if exists agent.circuit-id { log( info,concat("Leased IP: ",binary-to-ascii(10,8,".",leased-address)," (with opt82)") ); log( info,concat("MAC: ",binary-to-ascii(16,8,":",substring(hardware,1,6))) ); log( info,concat("Remote-ID: ",binary-to-ascii(16,8,":",substring(option agent.remote-id,2,6))) ); log( info,concat("Switch addr: ",substring(option agent.remote-id, 2, 15)) ); log( info,concat("Port: ",binary-to-ascii(10,8,"",suffix(option agent.circuit-id,1))) ); log( info,concat("VLAN: ",binary-to-ascii(10,16,"",substring(option agent.circuit-id,2,2))) ); } log(info, "***"); shared-network ipoe { subnet 10.200.0.0 netmask 255.255.255.0 { } subnet 192.168.254.0 netmask 255.255.255.0 { option routers 192.168.254.250; option broadcast-address 192.168.254.255; option subnet-mask 255.255.255.0; include "/usr/local/etc/dhcpd.d/10.200.0.1.conf"; } } 10.200.0.1.conf class "10.200.0.1:4" { match if ( binary-to-ascii(10,16, "", substring(option agent.circuit-id,2,2)) = "777" and binary-to-ascii(10,16, "", substring(option agent.circuit-id,4,2)) = "4" and substring(option agent.remote-id, 2, 15) = "10.200.0.1" ); } pool { range 192.168.254.81; allow members of "10.200.0.1:4"; } Edited November 7, 2014 by hsvt Вставить ник Quote
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.