Você está na página 1de 36

Grupo de Trabalho de Engenharia e Operao de Redes

(GTER39)
Conexo com PTT's utilizando Vyatta/Vyos/EdgeMAX
Elizandro Pacheco <elizandro@pachecotecnologia.net>
www.pachecotecnologia.net

Elizandro Pacheco
Consultor desde 2003
Usurio Linux desde 1998

www.pachecotecnologia.net

Motivao

Aumento na quantidade de ativaes utilizando


hardwares e SO's alternativos.

Novos roteadores baseados em Linux homologados

Falta de documentao em pt-br

Dificuldades de ativao com configuraes default

Desvendar mitos criados em redes sociais e fruns

Resumo

Demonstrao de configurao bsica para conexes com


PTT's utilizando solues baseadas em linux ( EdgeRouter )
apresentando as principais dificuldades encontradas
durante o processo de ativao e testes de quarentena.
Foco nos requisitos e ajustes necessrios nas plataformas
para ativaes com agilidade e sem maiores complicaes.
Apesar de conter uma configurao base completa,
o foco da apresentao no o protocolo em si.

Dados no oficiais PTT-SP Maio de 2015

Dados no oficiais PTT-SP Maio de 2015

Fonte de Dados

Tabela Arp + Script

http://pastebin.com/SxBGvkuP

Configurao Bsica
Dados Ativao
ASN: 65530
Bloco v4: 10.1.0.0/22
Bloco v6: 2001:db8:8000::/33
Vlan v4: 1004
Vlan v6: 1006
Lan:192.168.0.30/212001:db8::30/64

rs1(192.168.0.2012001:db8::201ASN:65531)
rs2(192.168.0.2022001:db8::202ASN:65531)
lg:(192.168.0.2102001:db8::210ASN:65532)

Configurao Bsica
Configurao Endereamento
Vlanv4:1004192.168.0.30/21
Vlanv6:10062001:db8::30/64

configure
setinterfacesetherneteth0vif1004address'192.168.0.30/21'
setinterfacesetherneteth0vif1006address'2001:db8::30/64'
commit
save

Configurao Bsica - Filtros


Criao prefix-list ( IPv4 )
configure
setpolicyprefixlistMEUBLOCOrule10action'permit'
setpolicyprefixlistMEUBLOCOrule10prefix'10.1.0.0/22'
setpolicyprefixlistMEUBLOCOINrule10action'permit'
setpolicyprefixlistMEUBLOCOINrule10le'24'
setpolicyprefixlistMEUBLOCOINrule10prefix'10.1.0.0/22'
setpolicyprefixlistMEUBLOCO022rule10action'permit'
setpolicyprefixlistMEUBLOCO022rule10prefix'10.1.0.0/22'
setpolicyprefixlistMEUBLOCO023rule10action'permit'
setpolicyprefixlistMEUBLOCO023rule10prefix'10.1.0.0/23'
setpolicyprefixlistMEUBLOCO223rule10action'permit'
setpolicyprefixlistMEUBLOCO223rule10prefix'10.1.2.0/23'
commit&&save

Configurao Bsica - Filtros


Criao prefix-list ( IPv6 )

configure
editpolicyprefixlist6MEUBLOCOV6
setrule10action'permit'
setrule10prefix'2001:db8:8000::/33'
commit&&save
editpolicyprefixlist6MEUBLOCOV6IN
setrule10action'permit'
setrule10le'48'
setrule10prefix'2001:db8:8000::/33'
commit&&save
editpolicyprefixlist6MEUBLOCOV6134
setrule10action'permit'
setrule10prefix'2001:db8:8000::/34'
commit&&save
editpolicyprefixlist6MEUBLOCOV6234
setrule10action'permit'
setrule10prefix'2001:db8:c000::/34'
commit&&save

Configurao Bsica
Criao route-map ( IPv4 )
configure
editpolicyroutemapPTTIN
setrule10action'deny'
setrule10matchipaddressprefixlist'MEUBLOCOIN'
setrule20action'permit'
setrule20setlocalpreference'500'
commit&&save
editpolicyroutemapPTTOUT
setrule10action'permit'
setrule10matchipaddressprefixlist'MEUBLOCO'
setrule20action'permit'
setrule20matchipaddressprefixlist'MEUBLOCO023'
setrule30action'permit'
setrule30matchipaddressprefixlist'MEUBLOCO223'
commit&&save

Configurao Bsica
Criao route-map ( IPv6 )
configure
editpolicyroutemapPTTINV6
setrule10action'deny'
setrule10matchipv6addressprefixlist'MEUBLOCOV6IN'
setrule20action'permit'
setrule20setlocalpreference'500'
commit&&save
editpolicyroutemapPTTOUTV6
setrule10action'permit'
setrule10matchipv6addressprefixlist'MEUBLOCOV6'
setrule20action'permit'
setrule20matchipv6addressprefixlist'MEUBLOCOV6134'
setrule30action'permit'
setrule30matchipv6addressprefixlist'MEUBLOCOV6234'
commit&&save

Configurao Bsica
Criao neighbors ( IPv4 )
configure
editprotocolsbgp65530
setneighbor192.168.0.201description'rs1.ptt.br'
setneighbor192.168.0.201'nexthopself'
setneighbor192.168.0.201remoteas'65531'
setneighbor192.168.0.201routemapexport'PTTOUT'
setneighbor192.168.0.201routemapimport'PTTIN'
setneighbor192.168.0.201updatesource'eth0.1004'
setneighbor192.168.0.202description'rs2.ptt.br'
setneighbor192.168.0.202'nexthopself'
setneighbor192.168.0.202remoteas'65531'
setneighbor192.168.0.202routemapexport'PTTOUT'
setneighbor192.168.0.202routemapimport'PTTIN'
setneighbor192.168.0.202updatesource'eth0.1004'

setneighbor192.168.0.202description'rs2.ptt.br'
setneighbor192.168.0.202'nexthopself'
setneighbor192.168.0.202remoteas'65531'
setneighbor192.168.0.202routemapexport'PTTOUT'
setneighbor192.168.0.202routemapimport'PTTIN'
setneighbor192.168.0.202updatesource'eth0.1004'

commit&&save

Configurao Bsica
Criao neighbors ( IPv6 )
configure
editprotocolsbgp65530
setneighbor2001:db8::201addressfamilyipv6unicast'nexthopself'
setneighbor2001:db8::201addressfamilyipv6unicastroutemapexport'PTTOUTV6'
setneighbor2001:db8::201addressfamilyipv6unicastroutemapimport'PTTINV6'
setneighbor2001:db8::201description'rs1.ptt.br'
setneighbor2001:db8::201remoteas'65531'
setneighbor2001:db8::201updatesource'eth0.1006'
setneighbor2001:db8::202addressfamilyipv6unicast'nexthopself'
setneighbor2001:db8::202addressfamilyipv6unicastroutemapexport'PTTOUTV6'
setneighbor2001:db8::202addressfamilyipv6unicastroutemapimport'PTTINV6'
setneighbor2001:db8::202description'rs2.ptt.br'
setneighbor2001:db8::202remoteas'65531'
setneighbor2001:db8::202updatesource'eth0.1006'
setneighbor2001:db8::210addressfamilyipv6unicast'nexthopself'
setneighbor2001:db8::210description'lg.ptt.br'
setneighbor2001:db8::210remoteas'65532'
setneighbor2001:db8::210updatesource'eth0.1006''

commit
save

Configurao Bsica
Networks ( IPv4 e IPv6 )
configure
editprotocolsbgp65530
setnetwork'10.1.0.0/22'
setnetwork'10.1.0.0/23'
setnetwork'10.1.2.0/23'
setaddressfamilyipv6unicastnetwork'2001:db8:8000::/33'
setaddressfamilyipv6unicastnetwork'2001:db8:8000::/34'
setaddressfamilyipv6unicastnetwork'2001:db8:c000::/34'
commit
save

Configurao Bsica
Anncios
Para que uma rede seja anunciada no bgp, ele deve (ou deveria)
estar na FIB. Para tal, existem trs maneiras bsicas de
fazermos isso.
1 Utilizando-a em uma interface
2 Colocando-a em blackhole
3 Criando uma rota esttica
configure
setprotocolsstaticroute10.1.0.0/22'blackhole'
setprotocolsstaticroute10.1.0.0/23'blackhole'
setprotocolsstaticroute10.1.2.0/23'blackhole'
setprotocolsstaticroute62001:db8:8000::/33'blackhole'
setprotocolsstaticroute62001:db8:8000::/34'blackhole'
setprotocolsstaticroute62001:db8:c000::/34'blackhole'
apply&&save

Problemas Comuns ( EdgeRouter )


NTP nosso de cada dia!

Durante o boot, at a verso 1.6, o processo do ntp sobe


antes do processo do bgp.
Como nesse momento o roteador ainda no tem
conectividade com a internet e, como por padro o
ntp vem configurado com os servidores da ubnt, ele
simplesmente no consegue sincronizar.
Alm disso, no h um timeout setado, o que faz com
que o processo pendure o boot.

Problemas Comuns ( EdgeRouter )


BGPD
Como o processo do ntp pendurou o boot, o processo
do bgp no sobe e quando qualquer comando relacionado
ao bgp for executado, ele simplesmente retornar uma
mensagem dizendo que no h nada referente a bgp
configurado.

No arquivo de configurao, as configuraes de bgp


ainda existem ( cat /config/boot.config ).
Confuso!

Problemas Comuns ( EdgeRouter )


BGPD

Nem tanto!

A configurao existe mas o processo no subiu.

Soluo:

Desativar o ntp na inicializao:


configure
deletesystemntp
commit
save

Problemas Comuns
Informaes Adicionais!

Problema reportado em Dez/14

Solucionado na verso 1.7alpha

Problemas Comuns - Quarentena


Limite da Tabela ARP

Um dos testes da quarentena verificar a quantidade


de macs permitidos.
Por padro, tanto o vyatta, quanto o vyos ( incluindo
a edgerouter ) permitem 128 / 512 / 1024.
PTT-SP utiliza um /21 ( 2048 ips )
Comando para alterar ( segundo documentao ):
setsystemiparptablesize

Problemas Comuns - Quarentena


Limite da Tabela ARP ( Kernel Tuning )

Porm, a forma como o comando aplica as configuraes


no so eficientes...
Parmetros:
net.ipv4.neigh.default.gc_thresh1
net.ipv4.neigh.default.gc_thresh2
net.ipv4.neigh.default.gc_thresh3

Problemas Comuns - Quarentena


Limite da Tabela ARP ( Kernel Tuning )

net.ipv4.neigh.default.gc_thresh1
Esse valor refere-se a quantidade mnima de macs
na tabela antes que o coletor de lixo seja
executado.

net.ipv4.neigh.default.gc_thresh2
Quantidade intermediria, o coletor permitir que esse
valor seja ultrapassado por 5 segundos antes de agir.

Problemas Comuns - Quarentena


Limite da Tabela ARP ( Kernel Tuning )

net.ipv4.neigh.default.gc_thresh3
O valor mximo suportado. O coletor sempre ser
executado se houver mais do que o valor setado
nesse parmetro.

O problema do comando recomendado na documentao


oficial que ele seta os valores de cima para baixo.
Exemplo:
setsystemiparptablesize8192
(gc_thresh3 = 8192, 2 = 4096, 1 = 1024 )

Problemas Comuns - Quarentena


Limite da Tabela ARP ( Kernel Tuning )
Recomendaes
gc_thresh3=8192
gc_thresh2=4096
gc_thresh1=2048

Ainda h outros parmetros importantes que devem ser


configurados:
net.ipv4.neigh.default.gc_interval

Indica de quanto em quanto tempo o coletor deve tentar


rodar. Padro 30, recomendvel 60.

Problemas Comuns - Quarentena


Limite da Tabela ARP ( Kernel Tuning )
Recomendaes
net.ipv4.neigh.default.gc_stale_time

Determina a frequncia de checagem por vizinhos


travados, quando um vizinho considerado travado
ser feita uma nova resoluo antes de enviar dados
novamente a ele.

A forma mais rpida ( eficiente ) de se configurar todos


esses parmetros adicionando diretamente ao arquivo
sysctl.conf ( geralmente em /etc ) e executando o comando:
sysctlp

Problemas Comuns - Quarentena


Limite da Tabela ARP ( Kernel Tuning )
Recomendaes
cat/etc/sysctl.conf
net.ipv4.neigh.default.gc_thresh1=2048
net.ipv4.neigh.default.gc_thresh2=4096
net.ipv4.neigh.default.gc_thresh3=8192
net.ipv4.neigh.default.gc_interval=60
net.ipv4.neigh.default.gc_stale_time=120

Problemas Comuns
Neighbor IPv6
Tanto o VyOS ( e EdgeRouter ), quanto o Vyatta, aceitam que
se configure vizinhos diferenciando maisculas de minsculas.
Porm, o Quagga ( que roda por baixo ) no aceita.
Assim, se voc adicionar um vizinho com letras maisculas
e depois algum com minscula, voc conseguir remover
apenas o primeiro.
Ao tentar remover o segundo, voc receber uma mensagem
informando que o vizinho no existe ( apesar de aparecer na
configurao ).

Sugestes
Recomendaes Adicionais

- Evitar deixar servios nas portas default.


- Desabilitar a interface web quando se exige bastante
do equipamento.
- No utilizar nome de usurio padro.

Case Real
Dados com Edgerouter 8 PRO
( VILAVNET SP )

Case Real
Dados com Edgerouter 8 PRO
( VILAVNET SP )

Case Real
Dados com Edgerouter 8 PRO
( VILAVNET SP )

Fontes de Referncia
Leitura Recomendada
AnlisedeVulnerabilidadesdeRedes emConexescomPTT
EduardoAscenoReis

ftp://ftp.registro.br/pub/gter/gter27/06-vul-con-ptt.pdf
Estudo de Caso de Sistema Autnomo (AS) com Conexo a PTT Local,
Remoto e Provedores de Trnsito
Antonio Galvao de Rezende Filho
Eduardo Asceno Reis

ftp://ftp.registro.br/pub/gter/gter27/06-vul-con-ptt.pdf
Boas prticas para peering no PTTMetro
Lus Balbinot

ftp://ftp.registro.br/pub/gter/gter30/02-BoasPraticasPTTMetro.pdf
Configurao Completa desta Apresentao
http://pastebin.com/YL268YrJ

Agradecimentos
RubensKuhl

MarceloMachado|RenatoMezari|VagnerZanoni

Obrigado!

ElizandroPacheco
elizandro@pachecotecnologia.net.br
Fone(s):5198718111|4896877766
Skype:elizandropacheco