[GTER] Borda Juniper com Cache Taghos

Rodrigo Meireles mikrotikfull at gmail.com
Tue Aug 18 23:09:21 -03 2015


​Adoro essa lista!
Conteudo de alto nivel!
​

Em 18 de agosto de 2015 18:16, Thiago Pereira Carvalho Silva <
tpc.silva at gmail.com> escreveu:

> Luciano,
>
> Achei perdido aqui um email do Giuliano com um exemplo desses, utilizando
> PBR.
>
> Veja se é útil para seu cenário.
>
> Segue um breve descritivo de como proceder pra fazer o trafego da
> porta 80 passar por um proxy transparente utilizando roteadores
> JUNIPER.
>
> Este descritivo podera conter erros. Caso encontrem por favor facam a
> observacao pertinente pra que fique postado de maneira correta.
>
>
> Algumas observacoes importantes:
>
> Tabelas de roteamento padrao no JUNOS:
>
> - inet.0   Default Internet Protocol version 4 (IPv4) unicast routing table
> - inet6.0  Default Internet Protocol version 6 (IPv6) unicast routing table
> - instance-name.inet.0  Unicast ipv4 routing table for a particular
> routing instance
>
>
> Router > (modo operacional)
>
> Router # (modo de configuracao)
>
> Router # run (atalho para visualizacao do modo operacional dentro do
> modo de configuracao)
>
>
> Como visualizar rotas no JUNOS:
>
>
> Router > show route table inet.0
>
> Router > show route table inet.6
>
> Router > show route table PROXY.inet.0
>
>
> Para ver as rotas ipv4 diretamente conectadas (IPs configurados nas
> proprias interfaces logicas do roteador):
>
>
> Router > show route table inet.0 protocol direct
>
>
>
> Supondo que voce tenha um roteador com 20 interfaces fisicas (SFP) como o
> MX5.
>
> As interfaces do MX5 tem uma nomenclatura similar a descrita abaixo:
>
>
> ge-1/0/0 - ge-1/0/9
>
> ge-1/1/0 - ge-1/1/9
>
>
> Todas as interfaces fisicas do JUNOS tem pelo menos uma interface
> logica chamada de "unit 0"
>
> Em geral voce configura um endereco IPv4 ou IPv6 dentro de uma
> interface logica ... por padrao a "unit 0".
>
>
> Supondo a topologia a seguir:
>
>
> Interface ge-1/0/0 (OPERADORA A)   201.201.201.1/24
>
> Interface ge-1/1/9 (LAN DO ISP)    202.202.202.1/24
>
> Interface ge-1/0/5 (LIGACAO COM PROXY)  203.203.203.1/24
>
>
> O nosso proxy do exemplo tera o IP:
> 203.203.203.100/24
>
>
> O gateway padrao do proxy sera o IP da interface do roteador -
> 203.203.203.1
>
>
>
>
> A tabela de rotas diretamente conectadas iria mostrar pra voce (apos a
> configuracao acima) algo como:
>
>
>
> Router # run show route table inet.0 protocol direct
>
>
> inet.0: 1000 destinations, 2500 routes (1000 active, 0 holddown, 0 hidden)
> + = Active Route, - = Last Active, * = Both
> 201.201.201.0/24   *[Direct/0] 7w0d 07:07:53
>                    > via ge-1/0/0.0202.202.202.0/24  *[Direct/0] 4d
> 07:43:52
>                    > via ge-1/1/9.213203.203.203.0/24   *[Direct/0]
> 10w5d 05:50:19
>                    > via ge-1/0/9.10
>
> ....
>
>
> Veja por exemplo que  ge-1/0/0.0 significa a unidade logica 0 da
> interface ge-1/0/0
>
>
>
> Em geral um pacote IP (V4) qualquer vindo da LAN "consultaria" a
> tabela inet.0 pra "tomar uma decisao de roteamento" baseado no
> endereco de destino do pacote.
>
>
> Se voce quiser fazer com que um pacote IP saia por um outro caminho
> alternativo (qualquer) que nao o caminho ditado pela tabela inet.0 de
> rotas unicast padrao ... vc podera
> utilizar um mecanismo chamado de Filter Based Forwarding
>
>
>
> Como exemplo ... as configuracoes abaixo pra fazer esse mecanismo
> funcionar (estarei ja mostrando um exemplo tipico da configuracao para
> um proxy transparente):
>
>
> A tabela inet.0 nesse caso sera uma tabela full routing.
>
>
> 1 - Criar 2 Novas Instancias de Roteamento que irao gerar 2 novas
> tabelas de roteamento
>
>
>
> Router # set routing-instance PROXY-INTERNET instance-type forwarding
>
> Router # set routing-instance PROXY-LAN instance-type forwarding
>
> Router # commit check
>
> Router # commit
>
>
>
> 2 - Importar as rotas diretamente conectadas (chamadas de Interface
> Routes) para as 2 novas tabelas geradas.
>
> http://www.juniper.net/techpubs/software/junos/junos94/swconfig-routing/configuring-how-interface-routes-are-imported-into-routing-tables.html
>
>
> - Cria-se um rib-group primeiro.
>
> - Depois aplica esse rib-group as chamadas interface-routes ou ...
> rotas diretamente conectadas.
>
> - Por definicao:
>
>
>  A RIB group is a way to have a routing protocol, in most cases, place
> information in multiple route tables.
>  Within the Junos software configuration language, RIB groups must
> first be defined, before being applied.
>
>
>  Ex. CRIAR UM RIB-GROUP
>
>  ... import-rib [ source-routing-table destination-routing-table1
> destination-routing-table2 ......... ]
>
>
>
> Router # set routing-options rib-group PROXY import-rib [ inet.0
> PROXY-LAN.inet.0 PROXY-INTERNET.inet.0 ]
>
>
> - Quais rotas de inet.0 serao instaladas nas novas tabelas ?
>
> - Pode-se aplicar (por exemplo) o RIB-GROUP criado apenas as rotas
> diretamente conectadas (interface-routes):
>
>
> Router # set routing-options interface-routes rib-group inet PROXY
>
>
> Dessa maneira ... as novas tabelas de roteamento tambem terao as rotas
> diretamente conectadas ... presentes na tabela inet.0
>
>
> Router >  show route table PROXY-LAN.inet.0
>
> PROXY-LAN.inet.0: 3 destinations, 3 routes (3 active, 0 holddown, 0 hidden)
> + = Active Route, - = Last Active, * = Both
> 201.201.201.0/24   *[Direct/0] 7w0d 07:07:53
>                    > via ge-1/0/0.0202.202.202.0/24  *[Direct/0] 4d
> 07:43:52
>                    > via ge-1/1/9.213203.203.203.0/24   *[Direct/0]
> 10w5d 05:50:19
>                    > via ge-1/0/9.10
>
> ....
>
>
> Router >  show route table PROXY-INTERNET.inet.0
>
> PROXY-INTERNET.inet.0: 3 destinations, 3 routes (3 active, 0 holddown, 0
> hidden)
> + = Active Route, - = Last Active, * = Both
> 201.201.201.0/24   *[Direct/0] 7w0d 07:07:53
>                    > via ge-1/0/0.0202.202.202.0/24  *[Direct/0] 4d
> 07:43:52
>                    > via ge-1/1/9.213203.203.203.0/24   *[Direct/0]
> 10w5d 05:50:19
>                    > via ge-1/0/9.10
>
> ....
>
>
>
> OK .... novas tabelas de roteamento criadas ... precisariamos fazer
> com que o pacote IP passe agora a "OLHAR E PROCURAR DESTINOS" nessas
> novas tabelas.
>
>
> Como fazer isso ?  Utilizando Firewall Filters (poderosa ferramenta do
> JUNOS).
>
>
> Agora basicamente podemos fazer com que um pacote IP ... ao olhar para
> uma dessas novas tabelas possa escolher um caminho nao especifico ...
> por exemplo uma rota default.
>
>
> Vamos criar rotas default nas novas tabelas de roteamento, apontando
> basicamente para o IP do proxy que ja definimos anteriormente.
>
>
>
>
>
> Na primeira tabela PROXY-LAN.inet.0
>
>
>
> Router # set routing-instance PROXY-LAN routing-options rib
> PROXY-LAN.inet.0 static route 0.0.0.0/0 qualified-next-hop
> 203.203.203.100
>
> ou somente ...
>
> Router # set routing-instance PROXY-LAN routing-options static route
> 0.0.0.0/0 qualified-next-hop 203.203.203.100
>
>
>
>
> Depois na proxima tabela ... PROXY-INTERNET.inet.0
>
>
>
> Router # set routing-instance PROXY-INTERNET routing-options rib
> PROXY-INTERNET.inet.0 static route 0.0.0.0/0 qualified-next-hop
> 203.203.203.100
>
> ou somente ...
>
> Router # set routing-instance PROXY-INTERNET routing-options static
> route 0.0.0.0/0 qualified-next-hop 203.203.203.100
>
>
>
> Agora as novas tabelas possuem 3 rotas diretamente (abstracao -
> protocol direct) conectadas e 1 rota estatica (abstracao - protocol
> static).
>
>
>
> Uma dica interessante no caso da configuracao para proxy transparente
> e a de filtrar as rotas diretamente conectadas vindas da inet.0 pra
> deixar somente o prefixo da rede de ligacao do PROXY em questao.
>
>
>
>
> Router # set policy-options policy-statement PROXY-DIRECT-IMPORT term
> 10 from route-filter 203.203.203.0/24 exact
>
> Router # set policy-options policy-statement PROXY-DIRECT-IMPORT term
> 10 then accept
>
> Router # set policy-options policy-statement PROXY-DIRECT-IMPORT term
> 20 then reject
>
>
> Router # set routing-options interface-routes family inet import
> PROXY-DIRECT-IMPORT
>
>
>
> Com esse filtro ... as 2 novas tabelas criadas apenas vao ficar apenas
> com as rotas diretamente conectadas que forem especificadas no
> route-filter da policy PROXY-DIRECT-IMPORT
>
>
>
> Router >  show route table PROXY-LAN.inet.0 protocol direct
>
> PROXY-LAN.inet.0: 3 destinations, 3 routes (3 active, 0 holddown, 0 hidden)
> + = Active Route, - = Last Active, * = Both
> 203.203.203.0/24   *[Direct/0] 10w5d 05:50:19
>                    > via ge-1/0/9.10
>
> ....
>
>
> Router >  show route table PROXY-INTERNET.inet.0 protocol direct
>
> PROXY-INTERNET.inet.0: 3 destinations, 3 routes (3 active, 0 holddown, 0
> hidden)
> + = Active Route, - = Last Active, * = Both
> 203.203.203.0/24   *[Direct/0] 10w5d 05:50:19
>                    > via ge-1/0/9.10
>
> ....
>
>
>
> Agora e so aplicar filtros de pacotes (firewall filters) com uma
> condicional (THEN) especial ... pra que o pacote passe a olhar pra uma
> nova tabela de roteamento ... que nao a inet.0
>
>
>
> No caso da interface LAN (cliente TCP - origem da conexao TCP para a
> porta 80 de um servidor da internet)
>
>
>
>
> Observacao Importante:
>
> Ler o FROM como IF no FIREWALL FILTER do JUNOS.
>
>
>
> [edit firewall family inet filter PROXY-LAN]
> Router # show
> term 10 {
>    from {
>        source-address {
>            202.202.202.0/24;  <----------- aqui vc podera deixar sem
> esta opcao de source-address pra pegar qualquer pacote destinado a
> porta 80 TCP
>        }
>        protocol tcp;
>        destination-port 80;
>    }
>    then {
>        routing-instance PROXY-LAN;
>        count PROXY-LAN  < ------------------------ um contador pra
> verificar o MATCH da regra
>    }
> }
> term 20 {
>    then accept;  <---------------------------- aceita todo o trafego
> restante pra continuar roteando normalmente os pacotes destinados a
> outras portas
> }
>
>
> Lembrando que o TERM DEFAULT IMPLITICO de um FIREWALL FILTER no JUNOS
> e um DISCARD por isso o term 20 ser obrigatorio.
>
>
>
> Para aplicar esse filtro na interface LAN ... no sentido INPUT do
> ponto de vista do roteador (SEMPRE)
>
>
> Router # set interface ge-1/1/9 unit 0 family inet filter input PROXY-LAN
>
> Com isso ... qualquer pacote que entre na interface e que esteja
> buscando um servidor TCP na porta 80 (em geral um servidor WEB) sera
> "convidado" a olhar pra uma nova tabela de roteamento ...
>
> Essa tabela sera a  PROXY-LAN.inet.0  (que tera apenas 2 roteas ...
> uma diretamente conectada e outra estatica default apontando para o
> proxt).
>
> Dessa forma o pacote que faz a requisicao na porta 80 passara pelo PROXY.
>
> O proxy tem rota default para o roteador e como nao existe filtro na
> interface diretamente conectada ao proxy ... o pacote vindo do proxy
> ira procurar o seu destino na tabela FULL ROUTING inet.0
>
> Com isso ... conseguimos o que planejamos ... as requisicoes para a
> porta 80 estao sendo direcionadas para o proxy.
>
>
>
> O outro filtro (do pacote de retorno da internet ... vindo como
> resposta de um servidor WEB ... TCP na porta 80)
>
> [edit firewall family inet filter PROXY-INTERNET]
> Router # show
> term 10 {
>    from {
>        destination-address {
>            202.202.202.0/24;  <----------- aqui vc podera deixar sem
> esta opcao de destinatio-address
>        }
>        protocol tcp;
>        source-port 80;
>    }
>    then {
>        routing-instance PROXY-INTERNET;
>        count PROXY-INTERNET
>    }
> }
> term 20 {
>    then accept;
> }
>
>
>
> Router # set interface ge-1/0/0 unit 0 family inet filter input
> PROXY-INTERNET
>
> Com isso ... qualquer pacote que entre na interface e que esteja
> RETORNANDO DE um servidor TCP na porta 80 (em geral um servidor WEB)
> sera "convidado" a olhar pra uma nova tabela de roteamento ...
>
> Essa tabela sera a  PROXY-INTERNET.inet.0  (que tera apenas 2 roteas
> ... uma diretamente conectada e outra estatica default apontando para
> o proxy).
>
> Novamente conseguimos alcancar o nosso objetivo ... o pacote de
> retorno de um servidor web da internet ao olhar pra nova tabela de
> roteamento ... acha o proxy como unico caminho default disponivel.
>
> Dessa forma essa pacote e redirecionado para o proxy populando o
> conteudo dinamico WEB para garantir a funcao do dispositivo.
>
> Ao sair do proxy o pacote ... por nao encontrar nenhum filtro na
> interface diretamente conectada do roteador ... procura o seu destino
> (nesse caso um IP da LAN do ISP) na tabela inet.0 padrao.
>
> O pacote entao retorna ao destino.
>
> Outras requisicoes para as mesmas paginas provavelmente serao
> respondidas pelo proxy garantindo agilidade ao processo e melhorando o
> desempenho geral do acesso do cliente.
>
>
>
>
> Abraços.
>
>
> At.te,
>
>
> Em 18 de agosto de 2015 17:07, Luciano Inácio <luciano at jupiter.com.br>
> escreveu:
>
> > Senhores,
> >
> > Tenho um router MX-5 Juniper rodando e conectei nele um Cache da Taghos.
> >
> > tenho tentado redirecinar o trafego da porta 80, porem sem sucesso ate o
> > presente momento
> >
> > Alguém teria essa solução rodando para me dar umas dicas???
> >
> > Att.,
> >
> > ______________________________
> > Luciano Inácio Gonçalves Lima
> > Júpiter Telecom
> > 99 3529 3131 (Fixo)
> > 99 98848 0102 (OI)
> > 99 98855 6700 (TIM)
> > --
> > gter list    https://eng.registro.br/mailman/listinfo/gter
> --
> gter list    https://eng.registro.br/mailman/listinfo/gter
>



-- 
*Rodrigo Melo Meireles*

*CTO - Solustic Solucoes em Tecnologia-TI*
Analista/Consultor de Redes
Analista de Segurança
Mikrotik Certified
URBSS Certified
85.40629515 85.96459346



More information about the gter mailing list