Netgate Discussion Forum
    • Categories
    • Recent
    • Tags
    • Popular
    • Users
    • Search
    • Register
    • Login

    Ограничить доступ по MAC к интерфейсу

    Scheduled Pinned Locked Moved Russian
    11 Posts 4 Posters 1.5k Views
    Loading More Posts
    • Oldest to Newest
    • Newest to Oldest
    • Most Votes
    Reply
    • Reply as topic
    Log in to reply
    This topic has been deleted. Only users with topic management privileges can see it.
    • D
      DesCod @Hitch
      last edited by

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

      H 1 Reply Last reply Reply Quote 1
      • H
        Hitch @DesCod
        last edited by

        @descod это несколько не то. Это уже получается мак получил доступ к интерфейсу и всю инфу с дхцп заалчил.
        А я хочу прям на сетевом уровне банить.

        K werterW 2 Replies Last reply Reply Quote 0
        • K
          Konstanti @Hitch
          last edited by

          @hitch
          Добрый
          Из коробки PF работает на сетевом уровне и выше , а Вам нужен канальный

          Я лично вижу решение Вашей проблемы 2 путями
          1 использовать фильтрацию MAC адресов на уровне коммутатора
          2 если нужно именно решать проблему через PF , то можно ее решить с помощью сетевой подсистемы Freebsd Netgraph

          1 Reply Last reply Reply Quote 1
          • werterW
            werter @Hitch
            last edited by

            Добрый.
            @hitch
            Развернуть radius в сети?

            H 1 Reply Last reply Reply Quote 1
            • H
              Hitch @werter
              last edited by

              @werter ни разу не пробовал это делать. Раньше юзал WatchGuard XTM. Там это просто делалось прям на интерфейсе соответствующем.

              werterW 1 Reply Last reply Reply Quote 0
              • werterW
                werter @Hitch
                last edited by werter

                @hitch
                Есть еще вариант с дхцп, когда получение ip возможно только разрешенным МАКам.

                H 1 Reply Last reply Reply Quote 0
                • H
                  Hitch @werter
                  last edited by

                  @werter да, это я пробовал. Нет особого смысла. Руками вносят адрес и работают спокойно

                  werterW 1 Reply Last reply Reply Quote 0
                  • werterW
                    werter @Hitch
                    last edited by werter

                    @hitch
                    тогда radius
                    возможно, понадобится свитч, к-ый умеет в radius
                    поищите инфу

                    1 Reply Last reply Reply Quote 1
                    • H
                      Hitch @Hitch
                      last edited by

                      @Hitch это не то. IP легко подменить

                      K 1 Reply Last reply Reply Quote 0
                      • K
                        Konstanti @Hitch
                        last edited by Konstanti

                        @Hitch
                        Здравствуйте

                        Как я уже писал ранее , проблема в том , что PF работает чуть выше уровнем , чем Вам надо (см статью в этой ветке порядок прохождения пакетов )
                        Если все-таки надо фильтровать на уровне канальном с анализом Ethernet заголовка и именно на PF , то я бы решал эту проблему через Netgraph ( но в лоб ее не решить , нужно приложить некие усилия )
                        Суть в том , что эта подсистема позволяет перехватывать и анализировать трафик именно в том момент , когда он передается от драйвера адаптера к ядру системы и наоборот
                        Таким образом , можно отсеивать пакеты с неразрешенными Mac- адресами и пропускать валидные пакеты
                        Тут есть 2 пути
                        1 использовать комбинацию модулей ng_ether +ng_bpf
                        (они уже встроены в ядро PF , и тут надо только написать грамотный скрипт и составить bpf- программу , используя tcpdump)
                        пример такой программы

                        printf "Configuring ${INTERFACE}_bpf..."
                            ngctl msg ${INTERFACE}_bpf: setprogram { thisHook=\"${INTERFACE}_to_bpf_from_tee\" \
                                                        ifMatch=\"${INTERFACE}_from_bpf_to_one2many\" ifNotMatch=\"drop\" \
                                                        bpf_prog_len=19 bpf_prog=[ { code=40 jt=0 jf=0 k=12 } { code=21 jt=16 jf=0 k=34525 } \
                                                        { code=21 jt=0 jf=15 k=2048 } { code=48 jt=0 jf=0 k=23 } { code=21 jt=0 jf=13 k=17 } \
                                                        { code=40 jt=0 jf=0 k=20 } { code=69 jt=11 jf=0 k=8191 } { code=177 jt=0 jf=0 k=14 } \
                                                        { code=72 jt=0 jf=0 k=14 } { code=21 jt=0 jf=8 k=53 } { code=80 jt=0 jf=0 k=24 } \
                                                        { code=84 jt=0 jf=0 k=128 } { code=21 jt=0 jf=5 k=128 } { code=32 jt=0 jf=0 k=30 } \
                                                        { code=21 jt=2 jf=0 k=3232236006 } { code=84 jt=0 jf=0 k=4294967264 } \
                                                        { code=21 jt=0 jf=1 k=3232235808 } { code=6 jt=0 jf=0 k=65535 } { code=6 jt=0 jf=0 k=0 } ] }
                              
                            printf "OK! \n"
                        

                        2 использовать комбинацию модулей ng_ether + ng_macfilter
                        тут все несколько отличается от пути 1 и конфигурируется тоже легче , НО тк модуль ng_macfilter не интегрирован в ядро PF , то
                        его придется отдельно собирать под конкретную версию Freebsd
                        https://www.gsp.com/cgi-bin/man.cgi?section=4&topic=NG_MACFILTER

                        https://github.com/freebsd/freebsd-src/blob/main/sys/netgraph/ng_macfilter.c

                        посмотреть , с какими модулями собрано ядро можно командой
                        kldstat -v | grep ng_

                        1 Reply Last reply Reply Quote 0
                        • First post
                          Last post
                        Copyright 2025 Rubicon Communications LLC (Netgate). All rights reserved.