Instalação do FRRouting (FRR) – Roteamento dinâmico no seu linux +Bônus iBGP

FRRouting (FRR) é um conjunto de protocolos de roteamento IP para plataformas Linux e Unix que inclui daemons de protocolo para BGP, IS-IS, LDP, OSPF, PIM e RIP.

A integração perfeita do FRR com as pilhas de rede IP Linux/Unix nativas o torna aplicável a uma ampla variedade de casos de uso.

FRR tem suas raízes no projeto Quagga (Fork do Quagga). Na verdade, ele foi iniciado por muitos desenvolvedores de Quagga de longa data que combinaram seus esforços para melhorar a base bem estabelecida do Quagga para criar a melhor pilha de protocolo de roteamento disponível.

Uma ótima apresentação foi feita pelo Junior Corazza. no GTER 46.
BSDRP – Uma opção de softrouter com FRR

Apresentação: ftp://ftp.registro.br/pub/gter/gter46/11-BSDRP.pdf

Requesitos:
Debian 10 Stretch – Instalação Limpa
Debian 11 Bullseye – Instalação Limpa

Antes de começar não esqueça de virar root da forma correta e atualizar os pacotes, e instalar alguns pacotes que serão necessários.

# su -
# apt update
# apt upgrade
# apt install curl apt-transport-https gnupg2 lsb-release tree net-tools

Instalação do Free Range Routing

Pacotes presente do FRR no repositório do Debian 10 estão na versão 6.x.x, e Debian 11 na 7.5.x vou ir além e usar o repositório mais atualizado do FRR disponíveis em https://deb.frrouting.org, mas fica a seu critério se desejar usar o repositório “default”.

Para usar pacotes do repositório FFR faça:

# curl -s https://deb.frrouting.org/frr/keys.asc | apt-key add -

Iremos usar a versão estável oficial mais recente “frr-stable” na variável “FRRVER”, mas é possíveis para também: frr-6 frr-7 frr-8 frr-stable.

# FRRVER="frr-stable"
# echo deb https://deb.frrouting.org/frr $(lsb_release -s -c) $FRRVER | tee -a /etc/apt/sources.list.d/frr.list
# apt update

Podemos entrar agora em nosso respositório varios pacores FRR:

# apt search frr

frr – FRRouting suite
frr-doc – Manual
frr-rpki-rtrlib – Suporte BGP RPKI
frr-rpki-rtrlib-dbgsym – Debug do pacote frr-rpki-rtrlib
frr-snmp – Suporte SNMP
frr-snmp-dbgsym – Debug do pacote frr-snmp
frr-pythontools – Python tools

Instalarei alguns mas fique a seu critério/necessidade.

# apt install frr frr-doc frr-pythontools frr-rpki-rtrlib frr-snmp

Após instalação o diretorio /etc/ffr/ será criado juntamente com seus arquivos de configuração. Arquitetura do diretório:

# tree /etc/frr/
/etc/frr/
├── daemons
├── frr.conf
├── support_bundle_commands.conf
└── vtysh.conf

Como de costume vamos fazer um backup dos arquivos originais caso cometermos alguma “cagada” 😀

# mkdir /etc/frr/backups
# cp /etc/frr/daemons /etc/frr/backups/
# cp /etc/frr/frr.conf /etc/frr/backups/
# cp /etc/frr/vtysh.conf /etc/frr/backups/
# cp /etc/frr/support_bundle_commands.conf /etc/frr/backups/

Antes de mais nada vamos entender um pouco como a aplicação funciona.

No FRR o roteamento é diferente de um roteamento tradicional, ele tem um conjunto de daemons que trabalham juntos para construir a tabela de roteamento.

Cada protocolo principal é implementado em seu próprio daemon, e esses daemons se comunicam com um daemon intermediário (zebra), que é responsável por coordenar as decisões de roteamento.

Esta arquitetura permite alta resiliência, uma vez que um erro, travamento ou exploração em um daemon de protocolo geralmente não afetará os outros. Também é flexível e extensível, uma vez que a modularidade torna mais fácil implementar novos protocolos e vinculá-los ao conjunto. Além disso, cada daemon implementa um sistema de plug-in permitindo que novas funcionalidades sejam carregadas em tempo de execução.

Ilustração da arquitetura em grande escala:

+----+  +----+  +-----+  +----+  +----+  +----+  +-----+
|bgpd|  |ripd|  |ospfd|  |ldpd|  |pbrd|  |pimd|  |.....|
+----+  +----+  +-----+  +----+  +----+  +----+  +-----+
     |       |        |       |       |       |        |
+----v-------v--------v-------v-------v-------v--------v
|                                                      |
|                         Zebra                        |
|                                                      |
+------------------------------------------------------+
       |                    |                   |
       |                    |                   |
+------v------+   +---------v--------+   +------v------+
|             |   |                  |   |             |
| *NIX Kernel |   | Remote dataplane |   | ........... |
|             |   |                  |   |             |
+-------------+   +------------------+   +-------------+

Todos os daemons FRR podem ser gerenciados por meio de um único shell de interface de usuário integrado chamado vtysh. O vtysh se conecta a cada daemon através de um soquete de domínio UNIX e então funciona como um proxy para a entrada do usuário. Além de um front-end unificado, o vtysh também oferece a capacidade de configurar todos os daemons usando um único arquivo de configuração por meio do modo de configuração integrado. Isso evita a sobrecarga de manter um arquivo de configuração separado para cada daemon.

Você encontra mais informações em: http://docs.frrouting.org/en/latest/overview.html

Módulos do kernel

Na documentação oficial de instalação é recomendado fazer alguns ajustes nas configurações de sysctl do Linux, caso para sua realidade não seja necessário pule esta parte.

Os itens a seguir são definidos para habilitar o encaminhamento de IP no kernel:

Encaminhamento IPv4 e IPv6

# vim /etc/sysctl.conf

Descomente:

net.ipv4.ip_forward=1
net.ipv6.conf.all.forwarding=1

Encaminhamento MPLS (Ative se achar necessário)
O suporte MPLS básico foi introduzido no kernel na versão 4.1 e recursos adicionais foram introduzidos na 4.3 e 4.5.

# vim /etc/modules-load.d/modules.conf

Adicione

# Load MPLS Kernel Modules
mpls_router
mpls_iptunnel

Veja quais o(s) nome(s) de sua(s) interface(s) e adicione:

# ip -br link |grep -v lo |awk '{print $1}'
# vim /etc/sysctl.conf

Adicione ao final do arquivo (Anteção para o nome das interfaces: net.mpls.conf.[INTERFACE].input)

# Habilite o processamento de rótulo MPLS em todas as interfaces
net.mpls.conf.enp0s3.input=1
net.mpls.platform_labels=100000

Encaminhamento VRF (Ative se achar necessário)
O seguinte impacta como os soquetes BGP TCP são gerenciados em VRFs:

net.ipv4.tcp_l3mdev_accept=0

Com essa configuração, um soquete BGP TCP é aberto por VRF. Essa configuração garante que outros serviços TCP, como SSH, fornecidos para fins não VRF, sejam bloqueados nas interfaces Linux associadas a VRF.

net.ipv4.tcp_l3mdev_accept=1

Reinicie seu servidor para carregar as novas configurações de kernel.

# reboot

Acesse novamente seu servidor, não esqueça de virar root com o comando “su -”

Após instalado o FRR não fará nada. Isso ocorre porque os daemons devem ser ativados e até o momento não temos nenhum, para ativar edite o arquivo /etc/frr/daemons e determine quais daemons serão ativados colocando um yes no daemon desejado. No meu exemplo vou ativar o bgpd qual deixarei uma “brincadeira” de exemplo ao final.

# vim /etc/frr/daemons
# Para habilitar um daemon específico, simplesmente altere o 'no' correspondente para 'yes', e será necessário reiniciar o serviço.
bgpd=yes 	# BGP
ospfd=no 	# OSPFD (OSPFv2 - IPv4)
ospf6d=no 	# OSPF6D (OSPFv3 - IPv6)
ripd=no 	# RIPD (RIPv2 - IPv4)
ripngd=no 	# RIPNGD (RIPv3 - IPv6)
isisd=no 	# ISISD (IS-IS - Protocolo igp Cisco)
pimd=no 	# PIMD (PIM - Roteamento Multicast)
ldpd=no 	# LDPD (LDP - Labels MPLS para rotas igp)
nhrpd=no 	# NHRPD (NHRP - roteamento entre tuneis)
eigrpd=no 	# EIGRPD (EIGRP - protocolo igp Cisco)
babeld=no 	# BABELD (BABEL - protocolo igp dual-stack)
sharpd=no 	# SHARPD (SHARP - protocolo exemplo zclient)
pbrd=no 	# PBRD (PBR - gestao de regras para Police Based Routing)
bfdd=no 	# BFDD (BFD - protocolo de adjacencia instantanea)
fabricd=no 	# FABRICD (OpenFabric)
vrrpd=no 	# VRRPD (Virtual Router Redundancy Protocol Deamon)

# Como o nome diz, isso faz com que o VTYSH aplique a configuração ao iniciar aos daemons. 
vtysh_enable=yes 

# O próximo conjunto de linhas controla quais opções são passadas aos daemons quando iniciados. 
zebra_options="  -A 127.0.0.1 -s 90000000"
bgpd_options="   -A 127.0.0.1"
ospfd_options="  -A 127.0.0.1"
ospf6d_options=" -A ::1"
ripd_options="   -A 127.0.0.1"
ripngd_options=" -A ::1"
isisd_options="  -A 127.0.0.1"
pimd_options="   -A 127.0.0.1"
ldpd_options="   -A 127.0.0.1"
nhrpd_options="  -A 127.0.0.1"
eigrpd_options=" -A 127.0.0.1"
babeld_options=" -A 127.0.0.1"
sharpd_options=" -A 127.0.0.1"
pbrd_options="   -A 127.0.0.1"
staticd_options="-A 127.0.0.1"
bfdd_options="   -A 127.0.0.1"
fabricd_options="-A 127.0.0.1"
vrrpd_options="  -A 127.0.0.1"

Como este tutorial é um laboratório irei ativar os daemons OSPFv2, OSPFv3, BABEL e BGP, (em produção ative somente o necessário) pois em seguida teremos alguns exemplos contribuídos pelo Patrick Brandão.

Alterações feitas no /etc/frr/daemons vamos reiniciar o FRR

# systemctl restart frr

Verifique se o mesmo está ok

# systemctl status frr
● frr.service - FRRouting
   Loaded: loaded (/lib/systemd/system/frr.service; enabled; vendor preset: enabled)
   Active: active (running) since Tue 2020-08-11 14:00:29 -03; 41s ago
     Docs: https://frrouting.readthedocs.io/en/latest/setup.html
  Process: 665 ExecStart=/usr/lib/frr/frrinit.sh start (code=exited, status=0/SUCCESS)
   Status: "FRR Operational"
    Tasks: 18 (limit: 1150)
   Memory: 24.2M
   CGroup: /system.slice/frr.service
           ├─674 /usr/lib/frr/watchfrr -d -F traditional zebra bgpd ospfd ospf6d babeld staticd
           ├─699 /usr/lib/frr/zebra -d -F traditional -A 127.0.0.1 -s 90000000
           ├─704 /usr/lib/frr/bgpd -d -F traditional -A 127.0.0.1
           ├─712 /usr/lib/frr/ospfd -d -F traditional -A 127.0.0.1
           ├─716 /usr/lib/frr/ospf6d -d -F traditional -A ::1
           ├─720 /usr/lib/frr/babeld -d -F traditional -A 127.0.0.1
           └─724 /usr/lib/frr/staticd -d -F traditional -A 127.0.0.1

ago 11 14:00:29 frr zebra[699]: client 47 says hello and bids fair to announce only static routes vrf=0
set 23 15:44:11 accel watchfrr[1220]: zebra state -> up : connect succeeded
set 23 15:44:11 accel watchfrr[1220]: bgpd state -> up : connect succeeded
set 23 15:44:11 accel watchfrr[1220]: ospfd state -> up : connect succeeded
set 23 15:44:11 accel watchfrr[1220]: ospf6d state -> up : connect succeeded
set 23 15:44:11 accel watchfrr[1220]: staticd state -> up : connect succeeded
set 23 15:44:11 accel watchfrr[1220]: all daemons up, doing startup-complete notify
ago 11 14:00:29 frr frrinit.sh[665]: Started watchfrr.
ago 11 14:00:29 frr systemd[1]: Started FRRouting.

Pode também conferir se o serviço de cada daemons ativos foi iniciado:

# netstat -putan
Proto Recv-Q Send-Q Endereço Local          Endereço Remoto         Estado      PID/Program name    
tcp        0      0 127.0.0.1:2601          0.0.0.0:*               OUÇA       699/zebra           
tcp        0      0 127.0.0.1:2604          0.0.0.0:*               OUÇA       712/ospfd           
tcp        0      0 127.0.0.1:2605          0.0.0.0:*               OUÇA       704/bgpd            
tcp        0      0 127.0.0.1:2616          0.0.0.0:*               OUÇA       724/staticd         
tcp6       0      0 ::1:2606                :::*                    OUÇA       716/ospf6d

Lista completa das portas:

zebrasrv      2600/tcp    # zebra service
zebra         2601/tcp    # zebra vty
ripd          2602/tcp    # RIPd vty
ripngd        2603/tcp    # RIPngd vty
ospfd         2604/tcp    # OSPFd vty
bgpd          2605/tcp    # BGPd vty
ospf6d        2606/tcp    # OSPF6d vty
ospfapi       2607/tcp    # ospfapi
isisd         2608/tcp    # ISISd vty
babeld        2609/tcp    # BABELd vty
nhrpd         2610/tcp    # nhrpd vty
pimd          2611/tcp    # PIMd vty
ldpd          2612/tcp    # LDPd vty
eigprd        2613/tcp    # EIGRPd vty
bfdd          2617/tcp    # bfdd vty
fabricd       2618/tcp    # fabricd vty
vrrpd         2619/tcp    # vrrpd vty

Entrado no Shell VTY

Vtysh fornece um frontend combinado para todos os daemons FRR em uma única sessão combinada.

# vtysh
Hello, this is FRRouting (version 7.3.1).
Copyright 1996-2005 Kunihiro Ishiguro, et al.

frr# show running-config
Building configuration...

Current configuration:
!
frr version 7.3.1
frr defaults traditional
hostname frr
log syslog informational
service integrated-vtysh-config
!
line vty
!
end
frr# exit

vtysh tem um arquivo de configuração /etc/frr/vtysh.conf que contém opções que controlam o comportamento da autenticação. Este arquivo também não será escrito por comandos de salvamento de configuração, ele deve ser atualizado manualmente.

Isso também significa que os comandos hostname e (que têm efeito para vtysh) precisam ser atualizados manualmente no vtysh.conf

Todas as configurações salvas (write) no terminal do vtysh são escritas no arquivo frr.conf.

A documentação também ressalta que é possível salvar os arquivos separados por daemons, para alterar esse comportamento é precisamos editar o /etc/frr/vtysh.conf (Fica a seu critério também, eu particularmente não altero)

# vim /etc/frr/vtysh.conf

Estão o que isso faz?
service integrated-vtysh-config
– O vtysh sempre salvará no frr.conf.

no service integrated-vtysh-config
– vtysh nunca vai salvar no frr.conf, em vez disso, ele pedirá aos daemons que escrevam/crie seus arquivos de configuração individuais.

Se fizer a altração reinicie a aplicação

# systemctl restart frr

Mais sobre vtysh: http://docs.frrouting.org/en/latest/vtysh.html

Acessamos o terminal do vtysh e usamos o comando write (salvar).

# vtysh
Hello, this is FRRouting (version 7.3.1).
Copyright 1996-2005 Kunihiro Ishiguro, et al.

frr# write 
Note: this version of vtysh never writes vtysh.conf
Building Configuration...
Warning: /etc/frr/frr.conf.sav unlink failed
Building Configuration...
Integrated configuration saved to /etc/frr/frr.conf
[OK]
frr# exit

Na próxima vez que salvar (write) um “____.conf.sav” será criado também preservando a configuração posterior.

Você também pode acessar o terminal vtysh (zebra) por telnet, lembra que vimos as porta que cada serviço estava rodando, logo o zebra roda na porta 2601(tcp), porém responde apenas localmente (localhost/127.0.0.1) caso você deseje abrir esse acesso externamente (restringi-lo por firewall o acesso a determinados IPs é uma boa prática) faça e alteração no arquivo daemons.

# vim /etc/frr/daemons

Encontre:

zebra_options="  -A 127.0.0.1 -s 90000000"

E altere por:

zebra_options="  -A 0.0.0.0 -s 90000000"

Se você desejar alterar esta porta basta incluir “-P porta”

zebra_options="  -A 0.0.0.0 -s 90000000 -P 40023"

Salve e reinicie o FRR

# systemctl restart frr

Porém se você tentar acessar mesmo que localmente não será possível, pois uma senha não foi definida.

# telnet localhost 40023
Trying ::1...
Trying 127.0.0.1...
Connected to localhost.
Escape character is '^]'.
Vty password is not set.
Connection closed by foreign host.

Para configura as senha de login e de enable:

# vtysh
# configure terminal 
# password senha_de_login
# enable password senha_para_enable
# service password-encryption
# line vty 
# login 
# end 
# write
# exit

Ex.:

frr# configure terminal 
frr(config)# password remontti
frr(config)# enable password remontti
frr(config)# service password-encryption
frr(config)# line vty 
frr(config-line)# login 
frr(config-line)# end 
frr# write 
Note: this version of vtysh never writes vtysh.conf
Note: this version of vtysh never writes vtysh.conf
Building Configuration...
Integrated configuration saved to /etc/frr/frr.conf
[OK]
frr# exit

Faça um teste localmente ou externamente caso tenha liberado o acesso:

# telnet localhost 40023
Trying 127.0.0.1...
Connected to localhost.
Escape character is '^]'.

Hello, this is FRRouting (version 7.3.1).
Copyright 1996-2005 Kunihiro Ishiguro, et al.

User Access Verification

Password: 
frr> enable 
Password: 
frr# exit

Por mais inseguro que seja o uso do telnet, em alguns casos é comum o acesso de servidores Looking Glass publicamente. Para tornar o acesso telnet público (não vai exigir senha) apenas leitura, basta remove a senha. (Ainda assim é possível ter poderes com em enable+senha)

Removendo senha:

# configure terminal
# no password
# line vty
# no login
# end
# write
# exit
Hello, this is FRRouting (version 7.3.1).
Copyright 1996-2005 Kunihiro Ishiguro, et al.

frr# configure terminal
frr(config)# no password
Please be aware that removing the password is a security risk and you should think twice about this command.
frr(config)# line vty
frr(config-line)# no login
frr(config-line)# end
frr# write 
Note: this version of vtysh never writes vtysh.conf
Building Configuration...
Building Configuration...
Integrated configuration saved to /etc/frr/frr.conf
[OK]
frr# exit

Zerando as configurações

Caso você queira começar tudo do zero, basta remover todos os .conf e copiar os arquivos originais que estão na pasta backup, e dar suas devidas permissões!
Ex.:

# rm /etc/frr/*.conf
# rm /etc/frr/*.sav
# rm /etc/frr/daemons
# cp /etc/frr/backups/* /etc/frr/
# chown frr. /etc/frr/ -R

Modelos de configurações:

Alguns exemplos de configurações para os daemons podem ser encontrados em:

# tree /usr/share/doc/frr/examples/
├── babeld.conf.sample
├── bfdd.conf.sample
├── bgpd.conf.sample
├── bgpd.conf.sample2
├── bgpd.conf.vnc.sample
├── eigrpd.conf.sample
├── isisd.conf.sample
├── ldpd.conf.sample
├── ospf6d.conf.sample
├── ospfd.conf.sample
├── pbrd.conf.sample
├── pimd.conf.sample
├── ripd.conf.sample
├── ripngd.conf.sample
├── staticd.conf.sample
├── vtysh.conf.sample
└── zebra.conf.sample

Em http://docs.frrouting.org/en/latest/ você encontra uma ampla documentação com muitos exemplos.

Bônus iBGP

Vou deixar aqui um modelo simples iBGP entre um servidor Linux vs Mikrotik.

Exemplo para iBGP para um DNS Anycast distribuído, usando os IPs do DNS Google, mas não estou incentivando a fazer isso é apenas um exemplo!

Configuração Linux DNS

# vtysh

Nesta configuração vamos adicionar os IPs de loopbacks em seguida fechar os peers IPv4 e IPv6, e finalizando configurando os filtros para receber rota default (Logo no RouterOS será necessário envia) e ensinar apenas as IPs de lo. Este é apenas um exemplo para você começar a brincar e estudar mais sobre o assunto.

configure terminal
!
interface lo
 ip address 8.8.8.8/32
 ipv6 address 2001:4860:4860::8888/128
!
router bgp 65530
 bgp router-id 10.1.0.2
 neighbor 10.1.0.1 remote-as 65530
 neighbor 10.1.0.1 description "iBGP_DNS_IPv4"
 neighbor 2001:db8:1::1 remote-as 65530
 neighbor 2001:db8:1::1 description "iBGP_DNS_IPv6"
 !
 address-family ipv4 unicast
  redistribute kernel
  redistribute connected
  redistribute static
  neighbor 10.1.0.1 prefix-list RR-IPV4-IN in
  neighbor 10.1.0.1 prefix-list RR-IPV4-OUT out
 exit-address-family
 !
 address-family ipv6 unicast
  redistribute kernel
  redistribute connected
  redistribute static
  neighbor 2001:db8:1::1 activate
  neighbor 2001:db8:1::1 prefix-list RR-IPV6-IN in
  neighbor 2001:db8:1::1 prefix-list RR-IPV6-OUT out
 exit-address-family
!
ip prefix-list RR-IPV4-IN seq 5 permit 0.0.0.0/0
ip prefix-list RR-IPV4-OUT seq 5 permit 8.8.8.8/32
!
ipv6 prefix-list RR-IPV6-IN seq 5 permit ::/0
ipv6 prefix-list RR-IPV6-OUT seq 5 permit 2001:4860:4860::8888/128
!
line vty
!
end
write

Configuração no Mikrotik/RouterOS (Gateway DNS)

/routing bgp instance
add client-to-client-reflection=no name=iBGP-DNS router-id=10.1.0.1

/routing bgp peer
add default-originate=always instance=iBGP-DNS name=DNS-FRR-IPv4 remote-address=10.1.0.2 remote-as=65530
add default-originate=always instance=iBGP-DNS name=DNS-FRR-IPv6 remote-address=2001:db8:1::2 remote-as=65530 address-families=ipv6

Configuração Linux Accel-PPP

# vtysh

Nesta configuração vamos fechar os peers IPv4 e IPv6, e configurar os filtros para receber rota default (Logo no RouterOS será necessário envia) e ensinar apenas as IPs possíveis ips dinâmicos desta rede (45.0.0.0/22, 100.64.0.0/10). Lembrando que este é apenas um exemplo simples para você começar a brincar e estudar mais sobre o assunto.

configure terminal
!
router bgp 65530
 bgp router-id 10.1.0.2
 neighbor 10.2.0.1 remote-as 65530
 neighbor 10.2.0.1 description "iBGP_ACCEL_IPv4"
 neighbor 2001:db8:2::1 remote-as 65530
 neighbor 2001:db8:2::1 description "iBGP_ACCEL_IPv6"
 !
 address-family ipv4 unicast
  redistribute kernel
  redistribute connected
  redistribute static
  neighbor 10.2.0.1 prefix-list FILTRO-RR-IPV4-IN in
  neighbor 10.2.0.1 prefix-list FILTRO-RR-IPV4-OUT out
 exit-address-family
 !
 address-family ipv6 unicast
  redistribute kernel
  redistribute connected
  redistribute static
  neighbor 2001:db8:2::1 activate
  neighbor 2001:db8:2::1 prefix-list FILTRO-RR-IPV6-IN in
  neighbor 2001:db8:2::1 prefix-list FILTRO-RR-IPV6-OUT out
 exit-address-family
!
ip prefix-list FILTRO-RR-IPV4-IN seq 5 permit 0.0.0.0/0
ip prefix-list FILTRO-RR-IPV4-OUT seq 5 permit 100.64.0.0/10 le 32
ip prefix-list FILTRO-RR-IPV4-OUT seq 10 permit 45.0.0.0/22 le 32
ip prefix-list FILTRO-RR-IPV4-OUT seq 15 permit 10.0.0.0/8 le 32
!
ipv6 prefix-list FILTRO-RR-IPV6-IN seq 5 permit ::/0
ipv6 prefix-list FILTRO-RR-IPV6-OUT seq 10 permit 2001:db8::/32 le 128
!
line vty
!
end
write

Configuração no Mikrotik/RouterOS (Gateway Accel-PPP)

/routing bgp instance
add client-to-client-reflection=no name=iBGP-Accel router-id=10.2.0.2

/routing bgp peer
add default-originate=always instance=iBGP-Accel name=DNS-FRR-IPv4 remote-address=10.2.0.2 remote-as=65530
add default-originate=always instance=iBGP-Accel name=DNS-FRR-IPv6 remote-address=2001:db8:2::2 remote-as=65530 address-families=ipv6

Espero que tenha lhe instigado a buscar mais sobre o FRR.

Se quiser fazer uma doação para o café ficarei muito feliz pelo seu reconhecimento!

Participe do canal no telegram para ficar atualizado sempre que publicar um novo tutorial.

Se não puder doar pode deixar seu agradecimento nos comentário também ficarei feliz em saber que ajudei. Se tiver qualquer pergunta deixe-a também. Se preferir entrar em Contato clique aqui.

Deixo aqui agradecimento ao Patrick Brandão que está elaborando um belo tutorial com muitos exemplos.

Fontes:
https://frrouting.org/
http://docs.frrouting.org/

Rudimar Remontti

Trabalho atualmente como Gerente de Redes em um Provedor de Internet no Rio Grande do Sul.

Você pode gostar...

Deixe um comentário

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *