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

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

    Scheduled Pinned Locked Moved Russian
    11 Posts 4 Posters 1.4k 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.
    • H
      Hitch
      last edited by

      Хай. гайз!
      Как осуществить сабж?
      Не могу найти как это сделать. Например, я хочу, чтобы в локальной сети некоторые девайсы никак не могли добраться до смотрящего в этот сегмент интерфейса pfSense.
      Спасибо!

      D H 2 Replies Last reply Reply Quote 0
      • 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.