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
      last edited by

      Здравствуйте. Хочу перенаправить трафик, который будет исходить с самого сервера. Например 2.2.2.2 хочу перенаправить на 3.3.3.3. С транзитным проблем нет, в настройках nat создал соотвествующее правило. Но оно не распространяется на трафик исходящий с самой машины.

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

        Добрый
        @a7lan
        Вы хотите пакеты ВНУТРИ сети редиректить? Пф рулит только трафиком уходящим ВОВНЕ.

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