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.
    • A
      a7lan @werter
      last edited by

      @werter не сосем. Я хочу например пакеты, отпралыяемые на некий локальный адрес (к примеру 192.168.200.200) перенаправлять на некий внешний (например 1.2.3.4). С транзитным трафиком проблем нет. Достаточно одно правило в перенаправление портов добавить и оно работает. Но вот с локальным такое не прокатывает, а нао как раз с локальным, которое генерируется самим шлюзом. Например если я делаю пинг до 192.168.200.200 то оно перенаправлялось на внешний адрес.

      В linux с iptables я это делал очень просто. А тут пока не пойму как локальный вот так перенаправить.

      K 1 Reply Last reply Reply Quote 0
      • 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
                                            • First post
                                              Last post
                                            Copyright 2025 Rubicon Communications LLC (Netgate). All rights reserved.