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

    Выборочная переадресация 2

    Russian
    2
    13
    9.1k
    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.
    • G
      goliy
      last edited by

      Всех приветствую, уважаемые дамы и господа!
      Всплыл очень старый вопрос (даже тему залочили педыдущую), собственно, с той же задачей.
      Требуется все запросы от всех адресов дефолтно перенаправлять на отдельный веб-сервер(на его 80й порт). По сути, все не учтенные ип-адреса должны любом запросе попадать только туда.

      (да,я понимаю, это фактически captive portal, но он не подходит)
      и очень хочется слезть со связки squid+squidguard, так как у нее в качестве этой единственной задачи, на мой взгляд, есть ряд серьезных недостатков.

      не могу соорудить корректные правила редиректа. пусть даже не в вебе.

      Судя по man'y pf, ребуется сделать что-то типа:
      rdr on $int_if proto tcp from $int_net to $ext_if port 80 -> $server
      no nat on $int_if proto tcp from $int_if to $int_net
      nat on $int_if proto tcp from $int_net to $server port 80 -> $int_if

      Cейчас могу перенаправить на локальный веб, поседством:
      rdr on $int_if proto tcp from $lan_net to any -> 127.0.0.1 port 80

      Надо только нат прикрутить, чтобы тоже, только на внешний сервак..
      Да вот как-то не выходит совсем, аж стыдно.

      Выручите, знатоки pf'a, очень вас прошу. Уже кучу времени на это убил, а результа все нет.

      2.0.2-RELEASE (i386)
      Intel(R) Atom(TM) CPU 330 @ 1.60GHz
      eth: Intel 82574L
      DOM sata, 1Gb
      over 150 users

      1 Reply Last reply Reply Quote 0
      • D
        dr.gopher
        last edited by

        А средствами virtualhost
        http://thin.kiev.ua/index.php?option=com_content&view=article&id=464:vhost&catid=50:pfsense&Itemid=81

        Или ежели уже на внутренний веб есть форвард, средствами хтмл

        1. Переадресация на нужный нам адрес
        В файле index.php прописываем

        FAQ PfSense 2.0

        И не забываем про Adblock дабы не видеть баннеров.

        И многое другое на www.thin.kiev.ua

        1 Reply Last reply Reply Quote 0
        • G
          goliy
          last edited by

          @dr.gopher:

          А средствами virtualhost
          http://thin.kiev.ua/index.php?option=com_content&view=article&id=464:vhost&catid=50:pfsense&Itemid=81

          Или ежели уже на внутренний веб есть форвард, средствами хтмл

          1. Переадресация на нужный нам адрес
          В файле index.php прописываем

          Хм, а не совсем понимаю зачем в примере по ссылке хосты поднимаются на внешнем интерфейсе? Предполагается, что это белый адресс и он видится из интернета?
          И если мы делаем переадресацию наоборот (из локальной сети), то сервер висит, соответственно, на локальном интерфейсе. Все верно?

          Но, по сути, тут без файрвольного редиректа не обойтись(сам lighthttpd, насколько я знаю, не умеет переадресовывать). А при успешной реализации редиректа - vhosts уже не нужны.
          Это, по сути, просто веб-сервер.

          Тогда уж nginx ставить лучше, там встроенные средства редиректа. Но это все дополнительная нагрузка и лишние элементы.

          2.0.2-RELEASE (i386)
          Intel(R) Atom(TM) CPU 330 @ 1.60GHz
          eth: Intel 82574L
          DOM sata, 1Gb
          over 150 users

          1 Reply Last reply Reply Quote 0
          • D
            dr.gopher
            last edited by

            @goliy:

            Хм, а не совсем понимаю зачем в примере по ссылке хосты поднимаются на внешнем интерфейсе?

            При попытке создания виртуального хоста на лан интерфейсе на 80 порту, П.Ф. ругался:

            Potential DNS Rebind attack detected, see http://en.wikipedia.org/wiki/DNS_rebinding
            Try accessing the router by IP address instead of by hostname.

            @goliy:

            И если мы делаем переадресацию наоборот (из локальной сети), то сервер висит, соответственно, на локальном интерфейсе. Все верно?

            Да верно. Похоже пакет виртуал хост слушает лан и ван.

            @goliy:

            Тогда уж nginx ставить лучше, там встроенные средства редиректа. Но это все дополнительная нагрузка и лишние элементы.

            Вам решать. Я лишь предложил вариант. :-)

            FAQ PfSense 2.0

            И не забываем про Adblock дабы не видеть баннеров.

            И многое другое на www.thin.kiev.ua

            1 Reply Last reply Reply Quote 0
            • G
              goliy
              last edited by

              Подскажите, пожалуйста, что может быть не так:
              правило
              rdr on em1 proto tcp from 1.0.0.0/29 to any port 80 -> 1.0.0.1 port 8001 (создается в Firewall -.>NAT -> Port Forward)
              Правило работает хорошо, может редиректить любые запросы на нужный порт. Дело за малым
              Ставлю vhosts, он работает на ура, но при переадресации какая-то шляпа..

              Т.е., фактически, на какой бы порт я не перевесил админку - на нее я могу переслать запрос (1.0.0.1:2222), но как я ни старался редирект на порт 2222 хоста abc, который прописан в dns как 1.0.0.1, не проходит.  точнее на сервер мы попадаем, но вместо страницы видим печальный 404 - Not Found (локального сервера) Есть особенность, что ту же страницу 404 можно увидеть при редиректе на локалхост в случае попытке входа в не дефолтную на сервере локацию, т.е. любое место кроме hostname.domain (прим, c ya.ru переадресация работает, а  с ya.ru/*/ уже 404)
              Короче, что-то не так с vhost'ом, мне кажется, он не может обработать запрос типа 1.0.0.1:port, такое ощущение, что он его заменяет на что-то, получается редирект видит 404

              Пол ночи голову ломаю - все не могу придумать, что же это.. Неужели придется доп. веб-сервер ставить для одной страницы.?!

              2.0.2-RELEASE (i386)
              Intel(R) Atom(TM) CPU 330 @ 1.60GHz
              eth: Intel 82574L
              DOM sata, 1Gb
              over 150 users

              1 Reply Last reply Reply Quote 0
              • D
                dr.gopher
                last edited by

                Вы редиректите IP, а вхост ждет доменное имя. :-(
                Думаю должна быть дефолтовая дириктория, куда можно зайти по ip.

                FAQ PfSense 2.0

                И не забываем про Adblock дабы не видеть баннеров.

                И многое другое на www.thin.kiev.ua

                1 Reply Last reply Reply Quote 0
                • G
                  goliy
                  last edited by

                  @dr.gopher:

                  Вы редиректите IP, а вхост ждет доменное имя. :-(
                  Думаю должна быть дефолтовая дириктория, куда можно зайти по ip.

                  Именно так -) сегодня пол дня пытался понять и подкрутить и из дефолтной директории все заработало. Отлично!
                  Кому интересно, после стандартного добавления хоста, заходим в конфиг файл и правим (/var/etc/vhosts-http.conf):

                  $SERVER["socket"] == "lan_if_ip:8001" {
                  $HTTP["host"] == "info" {                                                      #находим имя созданного ранее хоста       
                  server.document-root        = "/usr/local/www"                  #меняем тут папку на указанную
                  }
                  }
                  url.rewrite-once = ("^/(.*)$" => "/info.php")                                      #эта регулярка позволит нам по любому адресу попадать на указанную страницу (конечно, там ее надо создать самому =)

                  сохраняем, перезапускаем сервис и вуаля - все работает!

                  Да, вот правило фаервола для редиректа:
                  no rdr on $lan_if proto tcp from <test>to any port = http
                  rdr on $lan_if inet proto tcp from $lan_subnet to any port = http -> $web_serv_ip port 8001

                  Первое правило позволяет пропускать группу разрешенных адресов</test>

                  2.0.2-RELEASE (i386)
                  Intel(R) Atom(TM) CPU 330 @ 1.60GHz
                  eth: Intel 82574L
                  DOM sata, 1Gb
                  over 150 users

                  1 Reply Last reply Reply Quote 0
                  • D
                    dr.gopher
                    last edited by

                    @goliy:

                    Да, вот правило фаервола для редиректа:
                    no rdr on $lan_if proto tcp from <test>to any port = http
                    rdr on $lan_if inet proto tcp from $lan_subnet to any port = http -> $web_serv_ip port 8001</test>

                    Стесняюсь спросить, а куда его вставлять (где его прописывать)? :-)
                    Рад что у Вас вс

                    FAQ PfSense 2.0

                    И не забываем про Adblock дабы не видеть баннеров.

                    И многое другое на www.thin.kiev.ua

                    1 Reply Last reply Reply Quote 0
                    • G
                      goliy
                      last edited by

                      @dr.gopher:

                      Стесняюсь спросить, а куда его вставлять (где его прописывать)? :-)

                      Я же уже описывал в посте выше:
                      Firewall -.>NAT -> Port Forward, жмем плюс,лан интерфейс,tcp, сурс - лан подсеть, дестанэйшен - хттп, таржет ип - локальный адресс веб-сервера(в случае vhosts лан адресс машины-пф), редирект порт - тот порт, на котором висит vhost (в моем случае 8001, стандартный)
                      проверяем правило в command prompt , pfctl -sa | grep rdr , там должно появиться правило, как я приводил в посте выше. Если правило такое, и vhosts работают по айпи-адресу (т.е. в строке браузера введя именно ИП:порт и попадаем на нужную страницу), то переадресация будет работать!  и никаких сквидов, сквидгвардов, каптив порталов и прочей лабуды =)_

                      2.0.2-RELEASE (i386)
                      Intel(R) Atom(TM) CPU 330 @ 1.60GHz
                      eth: Intel 82574L
                      DOM sata, 1Gb
                      over 150 users

                      1 Reply Last reply Reply Quote 0
                      • D
                        dr.gopher
                        last edited by

                        @goliy:

                        Требуется все запросы от всех адресов дефолтно перенаправлять на отдельный веб-сервер(на его 80й порт). По сути, все не учтенные ип-адреса должны любом запросе попадать только туда.

                        Все неучтенные….

                        Я так понимаю, что учтенные это зарезервированные в дхцп и имеющие право работать в сети. А как вы сделаете, чтобы они (зарезервированные) не попадали под правило форварда и не попадали на веб страничку вхоста?

                        FAQ PfSense 2.0

                        И не забываем про Adblock дабы не видеть баннеров.

                        И многое другое на www.thin.kiev.ua

                        1 Reply Last reply Reply Quote 0
                        • G
                          goliy
                          last edited by

                          @dr.gopher:

                          @goliy:

                          Требуется все запросы от всех адресов дефолтно перенаправлять на отдельный веб-сервер(на его 80й порт). По сути, все не учтенные ип-адреса должны любом запросе попадать только туда.

                          Все неучтенные….

                          Я так понимаю, что учтенные это зарезервированные в дхцп и имеющие право работать в сети. А как вы сделаете, чтобы они (зарезервированные) не попадали под правило форварда и не попадали на веб страничку вхоста?

                          http://forum.pfsense.org/index.php/topic,47447.msg250168.html#msg250168

                          @goliy:

                          Да, вот правило фаервола для редиректа:
                          no rdr on $lan_if proto tcp from <test>to any port = http
                          rdr on $lan_if inet proto tcp from $lan_subnet to any port = http -> $web_serv_ip port 8001
                          Первое правило позволяет пропускать группу разрешенных адресов</test>

                          По сути, в веб-интерфейсе там же, где создавали редирект, нужно щелкнуть на + от правила редиректа, и включить галку на No rdr, заменить lan subnet на нужный алиас. Переместить это правило Перед правилом редиректа.

                          2.0.2-RELEASE (i386)
                          Intel(R) Atom(TM) CPU 330 @ 1.60GHz
                          eth: Intel 82574L
                          DOM sata, 1Gb
                          over 150 users

                          1 Reply Last reply Reply Quote 0
                          • D
                            dr.gopher
                            last edited by

                            Опробовал и описал. Возможно кто-то найдет применение данному решению
                            http://thin.kiev.ua/index.php?option=com_content&view=article&id=550:pf-vhost&catid=50:pfsense&Itemid=81

                            FAQ PfSense 2.0

                            И не забываем про Adblock дабы не видеть баннеров.

                            И многое другое на www.thin.kiev.ua

                            1 Reply Last reply Reply Quote 0
                            • G
                              goliy
                              last edited by

                              Проблема затерания файла после перезагрузки элегантно решается установком флага "неизменяемости" следующим образом:
                              chflags uchange /var/etc/vhosts-http.conf

                              2.0.2-RELEASE (i386)
                              Intel(R) Atom(TM) CPU 330 @ 1.60GHz
                              eth: Intel 82574L
                              DOM sata, 1Gb
                              over 150 users

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