Mudanças entre as edições de "Como Ter Seu Proprio Looking Glass"

De Wiki BPF
Ir para: navegação, pesquisa
(Alteração dos IPs para os prefixos designados para documentação.)
m
Linha 201: Linha 201:
  
 
'''Autor: André Dias'''
 
'''Autor: André Dias'''
 +
[[Categoria:Roteamento]]

Edição das 00h48min de 4 de novembro de 2019

Introdução

Assim como explicado em detalhes no artigo Looking Glass, ter um LG é fundamental para sua rede, principalmente se o ISP em questão for transito. Mesmo se tratando de casos onde não é transito, ter um LG facilita muito o troubleshoot para seu time técnico.

Na tentativa de incentivar todos os ISP's a terem seu próprio Looking Glass, vou explicar passo-a-passo como configurar um utilizando um LG OpenSource Web utilizando Debian 10, caso tenha preferencia por outra distribuição, apenas adapte conforme sua necessidade.


Tutorial

Após instalar seu Debian 10, atualize seus repositórios com o comando abaixo:

apt update -y

Instale as dependências:

apt install git apache2 libapache2-mod-php php php-common -y

Faça o clone do LG no GitHub:

git clone https://github.com/respawner/looking-glass.git /var/www/html/lg

Reinicie o serviço do Apache2:

service apache2 restart

Por padrão você só conseguirá acessar o LG a partir do momento que copiar o arquivo config.php.example para config.php, e é exatamente o que faremos agora.

(Prefira copiar a mover/renomear, para que possa ter backup da configuração padrão)

LookingGlassDefaultScreen.png

cd /var/www/html/lg

cp config.php.example config.php

Caso tenha deixado seu linux em DHCP, verifique qual o IP recebido utilizando seguinte comando:

ip addr

Supondo que o IP seja 192.0.2.2, acesse com a seguinte URL:

http://192.0.2.2/lg

O próximo passo é editar o arquivo de configuração que copiamos, para isso, utilize o editor de texto de sua preferencia.

nano /var/www/html/lg/config.php

No arquivo de configuração possuímos alguns campos básicos como:

  • Nome;
  • E-mail;
  • Titulo;
  • Logo;
  • Disclaimer.

Esses campos deverão ser preenchidos mediante suas informações, segue um exemplo:

LG-Interface-Configurado2.png

$config['contact']['name'] = 'NOC HexaNetworks';

$config['contact']['mail'] = 'andredias@hexanetworks.com.br';

// Frontpage configuration

// Title of the page

$config['frontpage']['title'] = 'Looking Glass - Hexa Networks';

// Logo to display (remove it to not display any logo)

$config['frontpage']['image'] = 'logo.png';

// Disclaimer to inform people using the looking glass

// Set it to null to not display a disclaimer

$config['frontpage']['disclaimer'] = '';

Esse arquivo vem pré-configurado para conversar com varios roteadores. Aqui explicarei um cenário simples, onde o FRRouting estará instalado no mesmo S.O. que o LG. Caso precise que funcione em um ambiente diferente, você terá que adaptar para o cenário de sua rede, utilizando a mesma lógica aqui explicada.

Da linha 38 em diante, teremos as configuraçoes relacionadas aos roteadores, vamos editar apenas as linhas relacionadas ao "router1".

Configure mediante o exemplo:

// Authentication based on SSH or Telnet with password

// The hostname or the IP address

$config['routers']['router1']['host'] = '127.0.0.1';

// The user to use to connect to the router

$config['routers']['router1']['user'] = 'lookingglass';

// The password of the given user

$config['routers']['router1']['pass'] = 'SENHA-DO-USUARIO-LOOKINGGLASS';

// The authentication mechanism to use (can be ssh-password or telnet)

$config['routers']['router1']['auth'] = 'ssh-password';

// The router type (can be cisco, ios, juniper or junos)

$config['routers']['router1']['type'] = 'quagga';

// The router source interface to be used

//$config['routers']['router1']['source-interface-id'] = 'lo0';

// The router description to be displayed in the router list

LG-Configurado-3.png

$config['routers']['router1']['desc'] = 'Roteador de Borda';

Acima determinamos que:

  • O LG fará consulta local;
  • Utilizará o usuário "lookingglass" para tal;
  • Com a senha "SENHA-DO-USUARIO-LOOKINGGLASS";
  • Utilizando SSH;
  • O arquivo de configuração não suporta FRRouting como parâmetro, iremos setar como Quagga. Como ambos possuem sintaxes semelhantes (Cisco-Like), será totalmente compatível.;
  • Comentamos a interface de origem;
  • A descrição do roteador é "Roteador de Borda".

Caso queira remover o restante dos roteadores que aparecem, basta apagar ou comentar (//) as linhas referente aos outros roteadores.

O proximo passo é instalar o FRRouting:

apt-get install frr

Adicione o usuario "lookingglass" no seu linux, e o adicione ao grupo "frr":

adduser lookingglass

Informe a senha

Repita a senha

usermod -aG frrvty lookingglass

Habilite o forwarding IPv4 e IPv6 no linux:

echo "net.ipv4.conf.all.forwarding=1" | tee -a /etc/sysctl.conf

echo "net.ipv4.conf.default.forwarding=1" | tee -a /etc/sysctl.conf

sed 's/#net.ipv6.conf.all.forwarding=1/net.ipv6.conf.all.forwarding=1/g' /etc/sysctl.conf | tee /etc/sysctl.conf

echo "net.ipv6.conf.default.forwarding=1" | tee -a /etc/sysctl.conf

sysctl -p

echo "net.ipv4.conf.all.mc_forwarding=1" | tee -a /etc/sysctl.conf

echo "net.ipv4.conf.default.mc_forwarding=1" | tee -a /etc/sysctl.conf

sysctl -p

Acesse a pasta o arquivo daemons do FRR:

nano /etc/frr/daemons

Altere a linha bgpd=no para bgpd=yes e reinicie o FRR:

service frr restart

Utilize o comando vtysh para acessar a VTY do frr.

O próximo passo é basicamente fechar uma sessão iBGP entre seu roteador de borda, e o FRR. Caso não esteja habituado com configuração Cisco-Like, segue um exemplo:

router bgp 65000

neighbor 192.0.2.1 remote-as 65000

neighbor 2001:db8::2 remote-as 65000

!

address-family ipv4 unicast

  neighbor 192.0.2.1 route-map IMPORT in

  neighbor 192.0.2.1 route-map EXPORT out

exit-address-family

!

address-family ipv6 unicast

  neighbor 2001:db8::2 route-map IMPORT in

  neighbor 2001:db8::2 route-map EXPORT out

exit-address-family

!

route-map IMPORT permit 10

!

route-map EXPORT deny 1

Após isso, já terá seu Looking Glass em funcionamento, sem ter que se preocupar com integração de vendor, e com total suporte a IPv6.

Autor: André Dias