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

    Перенаправление локального трафика

    Scheduled Pinned Locked Moved Russian
    25 Posts 4 Posters 2.3k 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.
    • K
      Konstanti @a7lan
      last edited by

      @a7lan

      Здр

      а покажите , пож , как Вы это делали с iptables . Нужно увидеть принцип , тогда станет понятно , можно ли это реализовать с PF

      A 1 Reply Last reply Reply Quote 0
      • A
        a7lan @Konstanti
        last edited by

        @konstanti
        Да там одно простое правило для таблицы nat
        iptables -t nat -I OUTPUT -d 192.168.200.200 -j DNAT --to 1.2.3.4

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

          @a7lan
          так никто Вам не мешает создать такое же правило NAT Outbound на исходящем интерфейсе PF ( например , Lan )

          если я все верно понял

          c397d513-32b8-41f0-b1b6-4239057dcad0-image.png

          A 1 Reply Last reply Reply Quote 0
          • A
            a7lan @Konstanti
            last edited by

            @konstanti
            Если бы все так было просто) Я это уже пробовал. Во первых выбор LAN интерфейса вообще ничего не дает. Пакеты на 192.168.200.200 просто уходят с интернет интерфейса. Если же мы там укажем вместо LAN интернет интерфейс, то мы не назначение меняем, а адрес отправителя. На языке iptables мы не DNAT делаем, а SNAT.
            В tcpdump это выглядит вот так

            14:10:28.019980 IP 4.2.2.2 > 192.168.200.200: ICMP echo request, id 35330, seq 0, length 64
            

            вместо 1.2.3.4 я взял 4.2.2.2 для примера.

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

              @a7lan
              Секунду
              Еще раз по пунктам

              1. Адрес 192.168.200.200 - он живой ????
              2. На каком интерфейсе должна произойти подмена назначения ?

              DNAT - в iptables используется для проброса портов ( насколько я понимаю ) с заменой адреса получателя

              A 1 Reply Last reply Reply Quote 0
              • A
                a7lan @Konstanti
                last edited by

                @konstanti Нет. Я просто его придумал. Но пусть даже будет живой. Думаю это не суть важно. Мне надо просто исходящий в интернет адрес назначения подменять. Получается на интерфейсе интернета. С транзитным трафиком это работает. Я пингую тот же 192.168.200.200 с компа в сети, и он перенаправляется на 4.2.2.2. А вот если тоже самое делать на самом шлюзе, то имеющееся правило не работает. То что я добавил видимо аналог PREROUTING в iptables. Куда естественно трафик локальных процессов не попадает.

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

                  @a7lan
                  Теперь все стало понятно
                  Боюсь , что такой "финт ушами" с базовым функционалом PF , не провернуть ( мб и есть такое решение , но мне оно не известно )
                  У Freebsd есть такая подсистема , называется Netgraph . Вот с ее помощью такое сделать можно

                  Так , на вскидку
                  Нужны будут модули
                  ng_ether
                  ng_bpf
                  ng_patch
                  это для модификации пакетов в обоих направлениях
                  Те идея такая - подключаемся в разрыв между ядром и сетевым адаптером (ng_ether) , отлавливаем все пакеты с назначением , к примеру 192.168.200.200 ( ng_bpf) и меняем поле назначение ip пакета (ng_patch) ( к примеру на 2.2.2.2)
                  В обратном направлении - отлавливаем все пакеты от 2.2.2.2 и меняем назначение на 192.168.200.200

                  • нужно будет не забыть пересчитать контрольные суммы ip пакетов

                  все это работает на уровне ядра ( те очень быстро )
                  трудность в том , что ng_ether и ng_bpf уже есть в ядре pf
                  а ng_patch нет . Те нужно качать версию Freebsd , соответствующую Вашей версии PF и компилировать этот модуль и вручную переносить его на PF

                  A 1 Reply Last reply Reply Quote 0
                  • A
                    a7lan @Konstanti
                    last edited by

                    @konstanti Понял. Жаль. Спасибо. Будем думать что делать.

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

                      @a7lan
                      если что , пишите мне в личку , думаю , что с моим вариантом смогу помочь ( если не найдете другого решения )

                      Iptables в этом отношении более гибкая подсистема , чем PF

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

                        @a7lan

                        Дело в том, что при обращении к ресурсам ВНУТРИ сети трафик НЕ ИДЕТ через пф.

                        A 1 Reply Last reply Reply Quote 0
                        • A
                          a7lan @werter
                          last edited by

                          @werter
                          То есть мы не может даже блокировать исходящий трафик к локальным ресурсам?

                          P werterW 2 Replies Last reply Reply Quote 0
                          • P
                            pigbrother @a7lan
                            last edited by pigbrother

                            @a7lan said in Перенаправление локального трафика:

                            То есть мы не может даже блокировать исходящий трафик к локальным ресурсам?

                            Если работа сети в одном L2 сегменте, то ни pfSense, ни любой другой роутер не управляют этим трафиком. Если вы даже отключите pfSense вообще, хосты внутри сети продолжат общаться.
                            pfSense рулил бы трафиком, если бы сеть была поделена на подсети, а pfSense был бы между этими сетями маршрутизатором.

                            A 1 Reply Last reply Reply Quote 0
                            • A
                              a7lan @pigbrother
                              last edited by

                              @pigbrother Я не про обмен пакетами между устройствами в одной сети. Вопрос был Pfsens не умеет свой локальный трафик исходящий обрабатывать? блокировать например. Просто из комментария @werter звучит так, что исходящих трафик локальных процессов не идет через pf.
                              Говоря терминалогией iptables, тут нет iptables -t filter -A OUTPUT ... -j DROP ?

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

                                @a7lan
                                Вопрос был Pfsens не умеет свой локальный трафик исходящий обрабатывать? - может

                                Говоря терминалогией iptables, тут нет iptables -t filter -A OUTPUT ... -j DROP ? - есть

                                6f2f64c0-5d18-497f-9bbf-1c79f2a9166c-image.png

                                A 1 Reply Last reply Reply Quote 0
                                • A
                                  a7lan @Konstanti
                                  last edited by

                                  @konstanti Жаль значит нет ната для локального трафика

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

                                    @a7lan
                                    я Вам об этом уже писал ранее . Блокировать исходящие пакеты PF умеет . То что вы хотите - нет . Решение существует . Но не из коробки .

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

                                      @a7lan
                                      Это может Proxmox VE со своим 3-х уровневым Firewall-ом )

                                      A 1 Reply Last reply Reply Quote 0
                                      • A
                                        a7lan @werter
                                        last edited by

                                        @werter В проксмокс тот же iptables) только я не совсем понял причем тут proxmox.

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

                                          @a7lan
                                          Вы хотите решить задачу?
                                          Из коробки пф ТАК не умеет (Konstanti написал, что может помочь).
                                          Но так умеет Прокс. И если вы его пользуете, то можно ограничиться Проксом.

                                          Зы. Возможно, что в Проксе уже nftables )
                                          Зы2. Вариант покупки L3-свитча тоже вам подойдет.

                                          A 1 Reply Last reply Reply Quote 0
                                          • A
                                            a7lan @werter
                                            last edited by

                                            @werter
                                            Просто почему именно гипервизор? Я этого не совсем понял. Я понял что pf не может. Но почему не просто какой нибудь Linux дистр. Пытаюсь причинно-следственную связь найти. =)

                                            Сейчас у меня в планах либо перевесить на Ubuntu server (так как с ним больше всего опыта работы). Либо готовое на основе него программное решение. Главное чтоб можно было в консоли в случае чего что-то поправить, так как бывает так, что не хватает функционала настроек из вебки

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