DHCP пул адресов на группу MACов



  • Есть сеть 172.23.0.0/22

    есть несколько тестовых окружений, каждое состоит из 2 и более виртуалок.
    у каждой группы - маки схожи начальными октетами
    например группа 1 - 00:43:22 :::*  группа 2 - 00:34:22:::* и тд

    задача, что бы дхцп выдавал каждой группе адреса из своего диапазона,  например группе 1 адреса 172.23.1.1-10 группе 2 172.23.1.15-20 и тд
    как это реализовать в пфсенсе?



  • если я прав - стандартно в линухе делается так

    class "private-hosts" {
            match if substring (option hardware,0,10) = "1:00:50:56";
    }

    pool {
            range 192.168.0.150 192.168.0.175;
            allow members of "private-hosts";
    }



  • Доброго времени суток.
    Обновляю тему. Также очень интересует реализация такой задачи на pfsense. Гугл и мануал pfsense не как не помог.
    Примерно подобная ситуация. Хотел чтобы VoIP аппаратам выдавались ip определенного пула.  В общий пул dhcp добавил под пул и в настройках его указал начало от мак  адресов данных устройств.
    Вроде всё логично, но на практике все устройства получили Ip из общего пула, под пул не задействовался.
    Может кто подскажет как это реализуется? Как понял стандартные настройки линукса не применить на данной платформе.



  • @alexandrnew:

    Есть сеть 172.23.0.0/22

    есть несколько тестовых окружений, каждое состоит из 2 и более виртуалок.
    у каждой группы - маки схожи начальными октетами
    например группа 1 - 00:43:22 :::*  группа 2 - 00:34:22:::* и тд

    задача, что бы дхцп выдавал каждой группе адреса из своего диапазона,  например группе 1 адреса 172.23.1.1-10 группе 2 172.23.1.15-20 и тд
    как это реализовать в пфсенсе?

    Доброе.
    dnsmasq это умеет вроде. На pf это в Services: DNS forwarder : Advanced .
    Звучит странно, но dhcp на интерфейсах при этом в gui попробовать выкл при внесение правок в Services: DNS forwarder: Advanced

    Пример того,  как это выглядит в *nix :

    interface=br1
    #dhcp-option=br1,3,192.168.200.65
    dhcp-range=br1,192.168.200.66,192.168.200.126,255.255.255.192,15m
    dhcp-option=br1,6,77.88.8.2,77.88.8.88
    
    *br1 - имя вашего LAN инт. на pf
    

    Там же можно поколдовать с группой MAC

    P.s. Искать на странице http://www.thekelleys.org.uk/dnsmasq/docs/dnsmasq-man.html по слову wildcard

    -4, –dhcp-mac=set:<tag>, <mac address="">Map from a MAC address to a tag. The MAC address may include wildcards. For example --dhcp-mac=set:3com,01:34:23:::* will set the tag "3com" for any host whose MAC address matches the pattern.

    --dhcp-match=set:<tag>,<option number="">|option:</option><option name="">|vi-encap:<enterprise>[,<value>]
    Without a value, set the tag if the client sends a DHCP option of the given number or name. When a value is given, set the tag only if the option is sent and matches the value. The value may be of the form "01:ff:*:02" in which case the value must match (apart from wildcards) but the option sent may have unmatched data past the end of the value. The value may also be of the same form as in dhcp-option in which case the option sent is treated as an array, and one element must match</value></enterprise></option></tag></mac></tag>



  • @dilo:

    Доброго времени суток.
    Обновляю тему. Также очень интересует реализация такой задачи на pfsense. Гугл и мануал pfsense не как не помог.
    Примерно подобная ситуация. Хотел чтобы VoIP аппаратам выдавались ip определенного пула.  В общий пул dhcp добавил под пул и в настройках его указал начало от мак  адресов данных устройств.
    Вроде всё логично, но на практике все устройства получили Ip из общего пула, под пул не задействовался.
    Может кто подскажет как это реализуется? Как понял стандартные настройки линукса не применить на данной платформе.

    Я бы с vlan попробовал. Если есть подходящее оборудование, конечно.



  • @werter:

    Я бы с vlan попробовал. Если есть подходящее оборудование, конечно.

    Оборудование есть, но сделать будет затруднительно так как используется VoIP аппараты с wan и lan интерфейсами. Они вешаются на туже линию что и ПК, работая просто как свитч. Конечно настроить его можно и с работой по влану, но городить огород из костылей…пока не рассматривалось. Да и тогда проще добавить статические записи телефонов в DHCP из удобного диапазона.
    Всё равно спасибо за предложение.

    Вообще достаточно умный DHCP сервер должен уметь работать с несколькими пулами адресов и как-то разделять клиентов по ВЫБРАННЫМ параметрам. В данном случае у меня похожая ситуация что и у alexandrnew. DHCP должен глядя на мак определять из какого ip пула выдать адрес. Сам такое реализовывал на Микротике и freebsd. По интерфейсу pf видно что он также может, но как это работает у него не совсем понятно.

    Сам пробовал:

    Пул:

    Опции пула:

    Подскажите что не так :(

    Вот автор темы приводит пример как реализуется на линуксе:
    @alexandrnew:

    если я прав - стандартно в линухе делается так

    class "private-hosts" {
            match if substring (option hardware,0,10) = "1:00:50:56";
    }

    pool {
            range 192.168.0.150 192.168.0.175;
            allow members of "private-hosts";
    }



  • Подскажите что не так

    Всё не так, к сожалению.
    Это делается настройками dnsmasq. Где и как - я описал в предыдущ. сообщение.



  • @werter:

    Подскажите что не так

    Всё не так, к сожалению.
    Это делается настройками dnsmasq. Где и как - я описал в предыдущ. сообщение.

    Спасибо, протестирую. Назревает вопрос о блоке с пулами во вкладке dhcp, зачем тогда они нужны?



  • @dilo:

    @werter:

    Подскажите что не так

    Всё не так, к сожалению.
    Это делается настройками dnsmasq. Где и как - я описал в предыдущ. сообщение.

    Спасибо, протестирую. Назревает вопрос о блоке с пулами во вкладке dhcp, зачем тогда они нужны?

    Потому что так можно. Но не в вашем случае.



  • @werter:

    Потому что так можно. Но не в вашем случае.

    Можете подсказать в каком случае можно использовать данные пулы в пункте dhcp? По каком принципу оно работает? Есть ли какая-то более подробная документация?
    Заранее спасибо.



  • @dilo:

    @werter:

    Потому что так можно. Но не в вашем случае.

    Можете подсказать в каком случае можно использовать данные пулы в пункте dhcp? По каком принципу оно работает? Есть ли какая-то более подробная документация?
    Заранее спасибо.

    Вот, что говорит официальная документация:
    https://doc.pfsense.org/index.php/DHCP_Server#Multiple_Address_Pools

    Multiple Address Pools

    Multiple pools of addresses can be created within the same larger subnet. This can be used, for example, so that non-contiguous blocks of addresses can be used. It can also be used to map certain clients into specific known address space.
    MAC Address Control

    The allow and deny options for MAC addresses permits fine-grained control over which clients can and cannot obtain addresses from a specific pool. Multiple entries may be added by separating them with a comma.

    Partial MAC addresses may be entered and they are treated as a prefix. This is useful for creating a pool to be used by specific brands of gear, such as a group of IP phones or game consoles.

    Listing a MAC address in the deny list will prevent it from obtaining an IP address from a given pool, all others are permitted

    Listing a MAC address in the allow list will permit a client to use this pool AND it will prevent any other MAC address not in this allow list from using the pool. This does NOT prevent the specified MAC address from using other pools, it must also be denied there.

    Таки образом как-бы декларируется возможность назначать адреса, используя маску (prefix) MAC.



  • @pigbrother:

    @dilo:

    @werter:

    Потому что так можно. Но не в вашем случае.

    Можете подсказать в каком случае можно использовать данные пулы в пункте dhcp? По каком принципу оно работает? Есть ли какая-то более подробная документация?
    Заранее спасибо.

    Вот, что говорит официальная документация:
    https://doc.pfsense.org/index.php/DHCP_Server#Multiple_Address_Pools

    Multiple Address Pools

    Multiple pools of addresses can be created within the same larger subnet. This can be used, for example, so that non-contiguous blocks of addresses can be used. It can also be used to map certain clients into specific known address space.
    MAC Address Control

    The allow and deny options for MAC addresses permits fine-grained control over which clients can and cannot obtain addresses from a specific pool. Multiple entries may be added by separating them with a comma.

    Partial MAC addresses may be entered and they are treated as a prefix. This is useful for creating a pool to be used by specific brands of gear, such as a group of IP phones or game consoles.

    Listing a MAC address in the deny list will prevent it from obtaining an IP address from a given pool, all others are permitted

    Listing a MAC address in the allow list will permit a client to use this pool AND it will prevent any other MAC address not in this allow list from using the pool. This does NOT prevent the specified MAC address from using other pools, it must also be denied there.

    Таки образом как-бы декларируется возможность назначать адреса, используя маску (prefix) MAC.

    Данный ман читал и в принципе по нему и настраивал.
    Так это и требуется.
    Допустим требуется чтобы устройства от производителя  А с мак адресом начинающимся 11:22:33 получали ip адреса из пула c 192.168.1.10 по 192.168.1.20.
    Адреса от производителя Б с маками начинающимся 22:33:44 получали адреса с 192.168.1.21 по  192.168.1.30.
    Маки 33:44:55:66:77:88 и 33:44:88:77:66 получали ip адреса с пула 192.168.1.31 по 192.168.1.40 (ip больше маков)
    А все кто не перечислен в маках выше получали из пула 192.168.1.50 по 192.168.1.100/

    По официальному ману задача по данную функцию подходит. Или я всё таки не так понимаю? Если не прав то извиняюсь за не понятливость.

    Если данный пример подходит под использование пулов в dhcp то как он реализуется на pf?
    На скринах показал как пытался реализовать Я. Не одно устройство с маком 11:22:33 не получило ip из выделенного пула.
    Заранее спасибо.



  • В похожей ветке:
    https://forum.pfsense.org/index.php?topic=101477.0
    человеку вроде помог этот совет:
    If I recall this correctly (been a few years since i tinkered with it) you
    probably need a deny statement in your main pool, something along the lines
    of :
    deny members of "001516"
    deny members of "00085D"

    Think firewall first match problems. You main pool will always match the
    client and it stops there.
    http://lists.pfsense.org/pipermail/dev/2015-October/000720.html

    В примере, кстати маки указываются без разделительных двоеточий.



  • 2 dilo

    Listing a MAC address in the allow list will permit a client to use this pool AND it will prevent any other MAC address not in this allow list from using the pool. This does NOT prevent the specified MAC address from using other pools, it must also be denied there.

    Вот эта часть :

    This does NOT prevent the specified MAC address from using other pools, it must also be denied there

    Т.е. Вы должны создать два dhcp-пула. Сперва запрещающий, в к-ом МАС Deny должна быть wildcard ваших аппаратов. Как вариант, этот пул должен быть общий, т.е. с .1 до .254 или как у вас там организовано (надо проверять)

    И второй пул - разрешающий. В нем ,теперь уже в MAC Allow, должна быть wildcard ваших аппаратов.

    И посмотреть, не получили ли перед этими всеми манипуляциями с пулами ваши аппараты др. ip-адреса. Если получили - сбросить эти leases в pf.

    Как то так. Пробуйте.



  • @werter:

    2 dilo

    Listing a MAC address in the allow list will permit a client to use this pool AND it will prevent any other MAC address not in this allow list from using the pool. This does NOT prevent the specified MAC address from using other pools, it must also be denied there.

    Вот эта часть :

    This does NOT prevent the specified MAC address from using other pools, it must also be denied there

    Т.е. Вы должны создать два dhcp-пула. Сперва запрещающий, в к-ом МАС Deny должна быть wildcard ваших аппаратов. Как вариант, этот пул должен быть общий, т.е. с .1 до .254 или как у вас там организовано (надо проверять)

    И второй пул - разрешающий. В нем ,теперь уже в MAC Allow, должна быть wildcard ваших аппаратов.

    И посмотреть, не получили ли перед этими всеми манипуляциями с пулами ваши аппараты др. ip-адреса. Если получили - сбросить эти leases в pf.

    Как то так. Пробуйте.

    Спасибо. Всё получилось. Запретил требуемые префиксы в основном пуле и всё заработало. Похоже когда первоначально читал ман не обратил внимание на приписку что требуется заблокировать в других пулах. Думаю Этого решения и хотел автор темы.