[GTER] Borda Juniper com Cache Taghos

Thiago Pereira Carvalho Silva tpc.silva at gmail.com
Tue Aug 18 18:16:03 -03 2015


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



More information about the gter mailing list