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

    Port Forward - Multiplas URLS

    Scheduled Pinned Locked Moved Portuguese
    32 Posts 4 Posters 13.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.
    • V Offline
      vromero.rj
      last edited by

      Caros amigos,

      O PfSense é o melhor firewall que existe. Mas infelizmente, ou felizmente(Se alguem conseguir me ajudar) ele não publica mais de uma url com portas iguais. EX:

      IP DMZ 1 : 192.168.2.2
      IP DMZ 2 : 192.168.2.3

      IP WAN: X.X.X.X

      No dyndns criei as seguintes urls como ex:
      http://testepagina.dyndns-remote.com
      http://testepagina1.dyndns-remote.com
      Todas as duas urls apontam pro endereço wan.

      Quando crio a regra de NAT port forward no Sense na porta 80, o que acontece:

      interface:wan
      protocolo: tcp
      destination: wan address
      destination port range: 80
      redirect target ip: 192.168.2.2

      E digito no browser http://testepagina.dyndns-remote.com, ele abre a pagina do 192.168.2.2, mas quando crio uma segunda regra para 192.168.2.3, ele continua abrindo a pagina do 192.168.2.2.

      O Sense não consegue vincular o endereço de url ao ip da maquina interna??O ISA faz isso.

      Ficaria assim:

      wan -> x.x.x.x -> 192.168.2.2 -> http://testepagina.dyndns-remote.com
      wan -> x.x.x.x -> 192.168.2.3 -> http://testepagina1.dyndns-remote.com

      Se alguem souber como me ajudar…Por favor...rs

      abraços

      1 Reply Last reply Reply Quote 0
      • marcellocM Offline
        marcelloc
        last edited by

        vromero.rj,,

        Nat é e sempre será o mapeamento de alguma coisa externa para outra interna e não de uma para várias.
        Se ainda sim quiser o nat, use a porta 80 para um servidor web e a 81 para o outro.

        O que você precisa realmente é instalar um proxy reverso/load balancer.

        No pfsense 2.0, se voce não precisar de https, sugiro o varnish. Ele faz o que você precisa além de deixar seu site muito mais rápido.

        Outras opções são o apache+mod_security e o haproxy.

        Utilizo em alguns clientes a combinação do Varnish(http) + haproxy(https).

        att,
        Marcello Coutinho

        Treinamentos de Elite: http://sys-squad.com

        Help a community developer! ;D

        1 Reply Last reply Reply Quote 0
        • V Offline
          vromero.rj
          last edited by

          Marcelo,

          Obrigado pelo feedback. Mas no caso de colocar uma porta 80 e a outra 81, seria ao digitar no browser?
          ex: www.teste.com.br:81 , ou poderia indicar essa porta no endereço interno somente e automaticamente o NAT atribuiria esse endereço para www.teste.com.br ?

          abcs

          1 Reply Last reply Reply Quote 0
          • marcellocM Offline
            marcelloc
            last edited by

            Com nat ficaria o :81 mesmo.

            Mas a melhor solução de longe é usar o proxy reverso.

            Da uma olhada no pacote do varnish.

            Treinamentos de Elite: http://sys-squad.com

            Help a community developer! ;D

            1 Reply Last reply Reply Quote 0
            • V Offline
              vromero.rj
              last edited by

              Show de bola Marcelo.

              Vou dar uma olhada.

              Forte abraço

              1 Reply Last reply Reply Quote 0
              • V Offline
                vromero.rj
                last edited by

                Marcelo,

                Dei uma lida sobre o Varnish, mas acho que não é o que eu quero. Pedi para um usuario no velox, acessar o endereço e a pagina nao abre.
                Ela só abre se eu inserir o NAT. Vou printar as telar para você entender melhor.

                web1.JPG
                web1.JPG_thumb
                web2.JPG
                web2.JPG_thumb
                web3.JPG
                web3.JPG_thumb

                1 Reply Last reply Reply Quote 0
                • V Offline
                  vromero.rj
                  last edited by

                  Com essas configuraçoes acima, o usuario externo digita http://omsteste.dyndns-remote.com e http://omsteste1.dyndns-remote.com e abre a mesma pagina. Eu queria que ela abrisse, de acordo com a relação dos meus servidores internos, mas pelo que vejo, o NAT pega semprea primeira regra.

                  1 Reply Last reply Reply Quote 0
                  • marcellocM Offline
                    marcelloc
                    last edited by

                    se voce conseguiu ver a mesma página quer dizer que voce já conseguiu:

                    • desativar o nat

                    • desativar o http redirect da gui do pfsense

                    • criar a regra na wan que libera acesso a porta 80

                    • criar os backends.

                    Muito bom.

                    O proximo passo é definir que paginas cada backend responde.
                    Vi nas suas telas que voce configurou a probe url.

                    A probe url define que parte do site o varnish vai testar para saber se o servidor esta no ar ou não.
                    precisar ser uma url completa e não o mapeamento do site:
                    ex: http://www.meusite.com.br/index.php

                    configura agora o backend mappings
                    sua configuracao pode ficar assim:
                    host equal omsteste1.dyndns-remote.com para um backend e
                    host equal omsteste.dyndns-remote.com para o segundo backend

                    Na nomeclatura do varnish, backend significa servidor web.
                    Uma cofiguracao mais avançada é criar o backends sem nenhum mapeamento e atribuir os sites na aba load balancer.

                    att,
                    Marcello Coutinho

                    Treinamentos de Elite: http://sys-squad.com

                    Help a community developer! ;D

                    1 Reply Last reply Reply Quote 0
                    • V Offline
                      vromero.rj
                      last edited by

                      Marcelo,

                      Mais uma vez obrigado pela atenção. Estarei efetuando os testes e te retorno com o feedback. Sua atenção foi de grande valia.

                      Abraços

                      1 Reply Last reply Reply Quote 0
                      • V Offline
                        vromero.rj
                        last edited by

                        Marcelo,

                        Segui todas as dicas que me passou, mas não funciona..nao sei o que estou fazendo de errado. Agora nao abre a pagina. Só esta brindo quando coloco NAT.

                        Segue o print das telas.

                        abcs

                        imagem1.JPG
                        imagem1.JPG_thumb
                        imagem2.JPG
                        imagem2.JPG_thumb
                        imagem3.JPG
                        imagem3.JPG_thumb
                        imagem5.JPG
                        imagem5.JPG_thumb

                        1 Reply Last reply Reply Quote 0
                        • marcellocM Offline
                          marcelloc
                          last edited by

                          Posta o arquivo de configuracao(aba view configuration)

                          Treinamentos de Elite: http://sys-squad.com

                          Help a community developer! ;D

                          1 Reply Last reply Reply Quote 0
                          • V Offline
                            vromero.rj
                            last edited by

                            Varnish configuration file

                            Automatically generated by the pfSense package system

                            This file is located in /var/etc/default.vcl

                            sub vcl_error {
                            if (obj.status == 503 && req.restarts < 1) {
                            restart;
                            }

                            set obj.http.Content-Type = "text/html; charset=utf-8";
                            synthetic {"
                            "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">

                            <title>"} obj.status " " obj.response {"</title>

                            We are very sorry but an error occurred during this request.

                            Please press refresh in your browser to try again.

                            Varnish Error "} obj.status " " obj.response {"

                            "} obj.response {"

                            Guru Meditation:

                            XID: "} req.xid {"

                            "};
                            return(deliver);

                            }

                            backend omstesteBACKEND {

                            used in catch_all

                            .host = "192.168.2.5";
                            .port = "80";
                            .first_byte_timeout = 300s;
                            .connect_timeout = 25s;
                            .probe = {
                            .url = "http://omsteste.dyndns-remote.com/testando.htm";
                            .interval = 1s;
                            .timeout = 1s;
                            .window = 5;
                            .threshold = 5;
                            }
                            }

                            backend omsteste1BACKEND {

                            used in catch_all

                            .host = "192.168.2.6";
                            .port = "80";
                            .first_byte_timeout = 300s;
                            .connect_timeout = 25s;
                            .probe = {
                            .url = "http://omsteste1.dyndns-remote.com/index.htm";
                            .interval = 1s;
                            .timeout = 1s;
                            .window = 5;
                            .threshold = 5;
                            }
                            }

                            sub vcl_recv {

                            #BASIC VCL RULES SETTING
                            #set X-forward
                            set req.http.X-Forwarded-For = client.ip;

                            if (req.http.host == "omsteste.dyndns-remote.com") {
                            set req.backend = omstesteBACKEND;
                            }
                            else if (req.http.host == "omsteste1.dyndns-remote.com") {
                            set req.backend = omsteste1BACKEND;
                            }

                            #respect client wish to refresh the page
                            if (req.http.Pragma ~ "no-cache")
                            {
                            return(pass);
                            }

                            #BASIC VCL RULES ACTIONS
                            #Disable session cache
                            if (req.http.Cookie && req.http.Cookie ~ "(PHPSESSID|phpsessid)") {
                            return(pass);
                            }
                            if (req.http.Cookie && req.http.Cookie ~ "(JSESSION|jsession)") {
                            return(pass);
                            }
                            if (req.http.X-Requested-With == "XMLHttpRequest" || req.url ~ "nocache") {
                            return(pass);
                            }
                            #Enable static cache
                            if (req.request=="GET" && req.url ~ ".(css|js|txt|zip|pdf|rtf|flv|swf|html|htm)$") {
                            unset req.http.cookie;
                            return(lookup);
                            }
                            if (req.request=="GET" && req.url ~ ".(gif|jpg|jpeg|bmp|png|ico|img|tga|wmf|mp3|ogg)$") {
                            unset req.http.cookie;
                            return(lookup);
                            }
                            if (req.request != "GET" && req.request != "HEAD") {return(pipe);}

                            return(lookup);
                            }

                            sub vcl_pipe {

                            If we don't set the Connection: close header, any following

                            requests from the client will also be piped through and

                            left untouched by varnish. We don't want that.

                            set req.http.connection = "close";

                            Note: no "pipe" action here - we'll fall back to the default

                            pipe method so that when any changes are made there, we

                            still inherit them.

                            }

                            sub vcl_fetch {

                            #Disable cache when backend is starting a session
                            if (beresp.http.Set-Cookie && beresp.http.Set-Cookie ~ "(PHPSESSID|phpsessid)") {
                            return(pass);
                            }
                            if (beresp.http.Set-Cookie && beresp.http.Set-Cookie ~ "(JSESSION|jsession)") {
                            return(pass);
                            }
                            if (beresp.http.X-Requested-With == "XMLHttpRequest" || req.url ~ "nocache") {
                            return(pass);
                            }

                            Varnish respects the wishes of the backend application.

                            if (beresp.http.Pragma ~ "no-cache" || beresp.http.Cache-Control ~ "(no-cache|no-store|private)") {
                            return(pass);
                            }
                                ## If the request to the backend returns a code other than 200, restart the loop
                                ## If the number of restarts reaches the value of the parameter max_restarts,
                                ## the request will be error'ed.  max_restarts defaults to 4.  This prevents
                                ## an eternal loop in the event that, e.g., the object does not exist at all.
                                if (beresp.status != 200 && beresp.status != 403 && beresp.status != 404 &&
                                beresp.status != 303 && beresp.status != 302 && beresp.status != 301) {
                            restart;
                                    }

                            return(deliver);
                            }

                            sub vcl_deliver {
                            ##set resp.http.X-Served-By = server.hostname;
                              if (obj.hits > 0) {
                                set resp.http.X-Cache = "HIT";
                                set resp.http.X-Cache-Hits = obj.hits;
                              } else {
                                set resp.http.X-Cache = "MISS";
                              }
                            return(deliver);
                            }

                            1 Reply Last reply Reply Quote 0
                            • V Offline
                              vromero.rj
                              last edited by

                              Marcelo,

                              Voce tem skype ou msn?

                              O meu msn é vromero_rj@hotmail.com e victor-romero1

                              1 Reply Last reply Reply Quote 0
                              • marcellocM Offline
                                marcelloc
                                last edited by

                                Percebi um bug na probe url quando o site tem caracteres especiais '-', tenta mudar somente para
                                /index.htm  e vê se funciona.

                                o probe deve ficar assim:
                                  .probe = {
                                     .url = "/index.htm";
                                     .interval = 1s;

                                Se o probe der errado, voce vai receber a tela de erro 503 do varnish.

                                Treinamentos de Elite: http://sys-squad.com

                                Help a community developer! ;D

                                1 Reply Last reply Reply Quote 0
                                • V Offline
                                  vromero.rj
                                  last edited by

                                  Fala Marcelo,

                                  Não foi nao. Só consigo abrir a url externamente, quando habilito o NAT forward. Fora isso a pagina nao abre? Voce chegou a verificar a regra que criei de WAN?Voce havia me dito que não posso deixar nenhuma regra de NAT forward habilitada. Mas como vou conseguir fazer a acesso externo na porta 80? Pela regra normal em firewall- rules- wan eu consigo?

                                  abcs

                                  1 Reply Last reply Reply Quote 0
                                  • marcellocM Offline
                                    marcelloc
                                    last edited by

                                    vai na console e vê se o varnish tá rodando

                                    ps ax | grep -i varnish

                                    Treinamentos de Elite: http://sys-squad.com

                                    Help a community developer! ;D

                                    1 Reply Last reply Reply Quote 0
                                    • marcellocM Offline
                                      marcelloc
                                      last edited by

                                      você habilitou o varnish na porta 80 na aba 'settings'

                                      Treinamentos de Elite: http://sys-squad.com

                                      Help a community developer! ;D

                                      1 Reply Last reply Reply Quote 0
                                      • V Offline
                                        vromero.rj
                                        last edited by

                                        Fala Marcelo,

                                        Cara consegui. O serviço do Varnish, nao tava subindo. Olhei o log e fiz o seguinte:

                                        Em settings, alterei Storage Type de memory para disk.

                                        Depois coloquei Cache storage size in megabytes para 9046. O Serviço do Vanish subiu. Olha que beleza!!!

                                        Muito obrigado cara pelas informações. Forte abraço

                                        1 Reply Last reply Reply Quote 0
                                        • marcellocM Offline
                                          marcelloc
                                          last edited by

                                          Excelente! 8)

                                          Depois volta ele para cache em memória e testa a diferença de performance.

                                          Parabéns pela configuração.

                                          Treinamentos de Elite: http://sys-squad.com

                                          Help a community developer! ;D

                                          1 Reply Last reply Reply Quote 0
                                          • V Offline
                                            vromero.rj
                                            last edited by

                                            Fala Marcelo.

                                            Ta show de bola cara. Fiz o Varnish funcionar direito. Meus servidores estao em cluster tambem. Agora to querendo publicar um endereço na porta https. Ex: https://omsteste.dyndns-remote.com . No meu IIS configurei  a porta TCP 80 e a porta SSL 443. Internamente funciona. Externamente não. Gostaria de saber se o Varnish faz isso tambem. Um aoutra dúvida é a seguinte. Eu consigo digitar por exemplo, http://omsteste.dyndns-remote.com no meu browser e fazer um redirecionamento automatico para https://omsteste.dyndns-remote.com ? Se não meu engano você me disse que o HAPROXY faz isso certo?

                                            abraços

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