Jump to content

Recommended Posts

Posted

Здраствуйте, ей богу пытался до последнего сам разобраться но уже как 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 , ну как уже только не пробывал, со всех форумов конфиги брал, чтто тока не делал ... руки опускаются

Posted

Он же пишет:

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-релея должен быть в той же подсети, из которой раздаются адреса клиентам.

Posted

забыл кстати вывести настройки комутатора

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

 

:( ничего не получается ...

 

Posted
Адрес интерфейса DHCP-релея должен быть в той же подсети, из которой раздаются адреса клиентам.

хм ... впервые о таком слышу, а на Dlink пишут что DHCP Server может находится за шлюзом, иммено для этого и включена поддержка сокетов в ISC-DHCP, поднят udp 67 порт, и именно дл этого как мне кажется мы и указываем на коммутаторе ip dns сервера а не его mac ....

Поправьте если я не прав ?

Posted

Не путаем relay и server.

 

Сервер действительно может располагаться в пределах достижимости по IP. А релей должен смотреть в широковещательный сегмент, в котором находятся DHCP-клиенты.

 

Чтобы определить, из какого диапазона надо назначать адрес клиенту, DHCP сервер смотрит через какой DHCP relay пришел запрос.

 

В данном случае, сервер получает запрос "via 192.168.2.100". Соответственно, он ищет в у себя в конфиге и пытается выдать адрес из "subnet 192.168.2.0 netmask 255.255.255.0".

 

 

Posted

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";
      }
  }
}

 

Примерно так попробуй...

  • 6 years later...
Posted (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 by zhenya`
Posted

Я, после полугодичного секаса с ISC-DHCP, с передергиваниями сервака и прочего генерирования конфига, перешел на перловый дхцп от Ивана, подпилил под нас и забыл.

Posted

но тут встал вопрос смен маков. лиза у нас дается на сутки и каждый день очень много заявок на смену мака. хочется написать портал смены мака.

А зачем вы привязываетесь к маку, если и так знаете свич и порт абонента?

  • 1 month later...
Posted (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 by hsvt

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

×
×
  • Create New...
На сайте используются файлы cookie и сервисы аналитики для корректной работы форума и улучшения качества обслуживания. Продолжая использовать сайт, вы соглашаетесь с использованием файлов cookie и с Политикой конфиденциальности.