SlideShare uma empresa Scribd logo
1 de 30
17º REUNIÃO – GTER
                                Roteamento avançado
                                 Controle de banda




Roteamento avançado
 e controle de banda
      em Linux

    Hélio Loureiro
     <helio@loureiro.eng.br>
17º REUNIÃO – GTER
Sumário                               Roteamento avançado
                                       Controle de banda

 ➢   Roteamento avançado
         ➢   Sintaxe
         ➢   Exemplo
 ➢       Controle de banda
     ➢   Sintaxe
     ➢   Exemplo



NOTA: os exemplos são baseados na distribuição Debian
mas funcionam similarmente em todas as demais.
17º REUNIÃO – GTER
Cenário típico                           Roteamento avançado
                                          Controle de banda


                        Internet




                                      ADSL
          Router



                           Firewall




             Usuários
              (NAT)                          Servidores
17º REUNIÃO – GTER
    Busca de informações                 Roteamento avançado
                                          Controle de banda

                  "policy routing" <O.S.>
                   "policy routing" <O.S.>

Linux - iptables/ipchains/iproute2 - 8.030 links
➢



FreeBSD - ipfw/ipfw2/ipfilter - 2.290 links
➢



OpenBSD - ipfilter/pf - 1.430 links
➢



Solaris - ipfilter - 2.048 links
➢



NetBSD - ipfilter - 1.320 links
➢



SCO (Unixware) - ? - 1.440 links
➢



Windows - ? - 5.200 links
➢



O termo “policy routing” é utilizando em roteadores,
enquanto que “source routing” em Linux/BSD”.
17º REUNIÃO – GTER
 Source routing                             Roteamento avançado
 Linux/BSD                                   Controle de banda
Linux
➢   iptables - sintaxe muito flexível (complexa)
➢   iptables - difícil padronização para criação script
➢   iproute2 - fácil configuração para roteamento
➢   iproute2 - estável!

OpenBSD
pf - sintaxe simples (BSD)
➢



pf - roteamento através dele
➢



pf - recém lançado na versão 3.0
➢
17º REUNIÃO – GTER
                                            Roteamento avançado
                                             Controle de banda

block in log all
scrub in all
pass out all keep state
pass out inet proto tcp from any to any keep state
pass in quick on $EXT proto tcp from $HELIO to $FW 
      port 22 flags S/SA keep state
pass in quick proto udp from any to any port 53 keep state
pass in on $EXT inet proto tcp from any to $SERVER 
      port {25,80,110,143,443} flags S/SA modulate state
pass in on $EXT proto udp from any port 53 to $FW keep state
pass in on xl0 fastroute from 192.168.0.0/24 to $DMZ keep
state
pass in on xl0 fastroute from 192.168.0.0/24 to $EXTERNAL keep
state
pass in on xl0 route-to xl3:200.100.10.1 from 
     192.168.0.0/24 to any keep state


                 Sistema travava...
17º REUNIÃO – GTER
  Preparando o kernel                         Roteamento avançado
                                               Controle de banda
[*] Prompt for development and/or incomplete
      code/drivers
---
[*] TCP/IP Networking
[*] Networking packet filtering (replaces ipchains)
[*] Networking packet filtering debugging
[*] Socket Filtering
---
[*] IP: advanced router
[*] IP: policy routing
[*] IP: use netfilter MARK value as routing key
[*] IP: fast network address translation
[*] IP: equal cost multipath
[*] IP: use TOS value as routing key
[*] IP: verbose route monitoring
[*] IP: large routing tables             Já disponível no kernel
                                          Já disponível no kernel
[*] IP: GRE tunnels over IP              2.4.20 ou superior
                                           2.4.20 ou superior
17º REUNIÃO – GTER
iproute2                         Roteamento avançado
                                  Controle de banda



Solução desenvolvida para o kernel 2.4.
Substitui os comandos arp, ifconfig e route.
Sintaxe semelhante à cli de roteadores.
Permite criar regras de roteamento.
Não interage com os comandos legados.
Inclui o programa de controle de banda (tc).
Usa o sistema de filtros e filas.

      apt-get install iproute
17º REUNIÃO – GTER
 ip link                                         Roteamento avançado
                                                  Controle de banda


Usado para verificar e/ou configurar o endereço físico (MAC) das
interfaces de rede. Aceita as opções show e set.

 router:~# ip link show
 1: lo: <LOOPBACK,UP> mtu 16436 qdisc noqueue
     link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
 2: eth0: <BROADCAST,MULTICAST,UP> mtu 1500 qdisc pfifo_fast   qlen 100
     link/ether 00:04:75:7a:73:63 brd ff:ff:ff:ff:ff:ff
 3: eth1: <BROADCAST,MULTICAST,UP> mtu 1500 qdisc pfifo_fast   qlen 100
     link/ether 00:04:75:7a:73:8e brd ff:ff:ff:ff:ff:ff
 4: eth2: <BROADCAST,MULTICAST,UP> mtu 1500 qdisc pfifo_fast   qlen 100
     link/ether 00:04:75:7a:73:31 brd ff:ff:ff:ff:ff:ff
 5: eth3: <BROADCAST,MULTICAST,UP> mtu 1500 qdisc pfifo_fast   qlen 100
     link/ether 00:04:75:7a:73:a4 brd ff:ff:ff:ff:ff:ff
17º REUNIÃO – GTER
   ip addr                                            Roteamento avançado
                                                       Controle de banda

Usado para interagir com as interfaces de rede. Aceita as opções list,
add e del entre outras.

router~# ip addr list
1: lo: <LOOPBACK,UP> mtu 16436 qdisc noqueue
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
2: eth0: <BROADCAST,MULTICAST,UP> mtu 1500 qdisc pfifo_fast qlen 100
    link/ether 00:10:5a:9b:1e:fd brd ff:ff:ff:ff:ff:ff
    inet 192.168.254.200/24 brd 192.168.254.255 scope global eth0
router~# ip addr add 192.168.253.200/24 dev eth0
router~# ip addr list dev eth0
2: eth0: <BROADCAST,MULTICAST,UP> mtu 1500 qdisc pfifo_fast qlen 1000
    link/ether 00:10:5a:9b:1e:fd brd ff:ff:ff:ff:ff:ff
    inet 192.168.254.200/24 brd 192.168.254.255 scope global eth0
    inet 192.168.253.200/24 scope global eth0
router~# ifconfig eth0
eth0      Link encap:Ethernet HWaddr 00:10:5A:9B:1E:FD
          inet addr:192.168.254.200 Bcast:192.168.254.255 Mask:255.255.255.0
          UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
17º REUNIÃO – GTER
  ip route                                         Roteamento avançado
                                                    Controle de banda


 Usado para verificar e/ou configurar as rotas estáticas da rede.
 Aceita as opções  list,  flush, add, e del entre outros.

router:~# ip route list
200.1.2.0/26 dev eth2 proto kernel scope link src 200.1.2.20
200.100.10.0/26 dev eth3 proto kernel scope link src 200.100.10.56
10.0.0.0/24 dev eth1 proto kernel scope link src 10.0.0.254
192.168.0.0/24 dev eth0 proto kernel scope link src 192.168.0.254
default via 200.1.2.1 dev eth2
router:~# ip route add nat 192.168.0.100 via 200.1.2.20
17º REUNIÃO – GTER
/etc/iproute2/rt_tables                         Roteamento avançado
                                                 Controle de banda
Arquivo onde as tabelas (de regras) de roteamento são definidas.
Cada tabela é definida por seu número identificador e nome.
A ordenação vai de 0 à 255 (256 valores = 8 bits) e a faixa de 253
à 255 é reservada às tabelas do sistema (local, main e default).
Uma entrada na arquivo mas sem regra definida não é
apresentada no comando "ip rule list".  Para forçar o
kernel a ler a nova entrada, o comando "ip route flush
cache" é necessário.
 router ~# echo "200 dmznet" >> /etc/iproute2/rt_tables
 router ~# cat /etc/iproute2/rt_tables
 # reserved
 255   local
 254   main
 253   default
 0 unspec
 # local
 1 inr.ruhep
 200   dmznet
 router ~# ip route flush cache
17º REUNIÃO – GTER
 ip rule                                       Roteamento avançado
                                                Controle de banda

Usado para criar regras específicas de roteamento.
Existem algumas tabelas iniciais que não podem ser removidas:
local (loopback), main e default. Cria-se uma ou mais tabelas para o
 roteamento desejado. No caso apresentado, somente a tabela
dmznet foi adicionada, deixando todos os demais dentro da
tabela main. Aceita as opções list, add e del.

 router:~# ip   rule list
 0:      from   all lookup local
 32762: from    10.0.0.11 lookup dmznet
 32763: from    192.168.0.0/24 to 200.1.2.0/26 lookup dmznet
 32764: from    200.100.10.0/26 lookup dmznet
 32765: from    192.168.0.0/24 lookup dmznet
 32766: from    all lookup main
 32767: from    all lookup default
17º REUNIÃO – GTER
Situação inicial (uma saída)           Roteamento avançado
                                        Controle de banda


                         Internet




                Router




     Usuários
      (NAT)
                                    Servidores
17º REUNIÃO – GTER
Situação desejada                         Roteamento avançado
                                           Controle de banda


                             Internet




                                              200.100.10.1
            Router

        200.1.2.1



                                        10.0.0.0/24   Servidores
 Usuários
  (NAT)
                     192.168.0.0/24
17º REUNIÃO – GTER
/etc/init.d/iproute                            Roteamento avançado
                                                Controle de banda
#!   /bin/sh
ip   route add   default via 200.100.10.1         table dmznet
ip   rule add    from 192.168.0.0/24              table dmznet
ip   route add   192.168.0.0/24 via 192.168.0.254 table dmznet
ip   rule add    from 200.100.10.0/26             table dmznet
ip   addr add    200.1.2.3/26 dev eth2
ip   addr add    200.1.2.4/26 dev eth2
ip   addr add    200.1.2.5/26 dev eth2
ip   addr add    200.1.2.7/26 dev eth2
ip   addr add    200.1.2.14/26 dev eth2
ip   addr add    200.1.2.15/26 dev eth2
ip   addr add    200.1.2.27/26 dev eth2
ip   addr add    200.1.2.62/26 dev eth2
ip   rule add    from 192.168.0.0/24 to 200.1.2.0/26 table dmznet
ip   route add   200.1.2.0/26 via 200.1.2.20          table dmznet
ip   route add   10.0.0.0/24 via 10.0.0.254          table dmznet
ip   rule add    from 10.0.0.11/32                    table dmznet
17º REUNIÃO – GTER
  Alterando rotas                                 Roteamento avançado
                                                   Controle de banda
#! /bin/sh
case $1 in
  start|adsl)
     echo "Roteando Intranet pelo link ADSL"
     ip route del default via 200.1.2.1 table dmznet
     ip route add default via 200.100.10.1 table dmznet
     echo "Iniciando regras de firewall"
     /etc/init.d/firewall start
     ;;
  stop|frame-relay)
     echo "Roteando Intranet pelo link FR"
     ip route del default via 200.100.10.1 table dmznet
     ip route add default via 200.1.2.1 table dmznet
     echo "Desligando regras de firewall"
     /etc/init.d/firewall stop
     ;;
  restart)
     $0 stop
     $0 start
     ;;
  *)
     echo "Use: $0 {start|adsl|stop|frame-relay|restart}"
esac
17º REUNIÃO – GTER
Balanceamento de carga                 Roteamento avançado
                                        Controle de banda


                           Internet




       200.1.2.1                          200.100.10.1




 Usuários
  (NAT)
                   192.168.0.0/24
17º REUNIÃO – GTER
Atribuindo peso às rotas           Roteamento avançado
                                    Controle de banda




ip route add default scope global nexthop 
  via 200.100.10.1 dev eth0 weight 1 
  nexthop via 200.1.2.1 dev eth1 weight 1
17º REUNIÃO – GTER
   Túnel GRE                            Roteamento avançado
                                         Controle de banda


                          Internet




             200.1.2.1



             200.1.2.20

                                               200.100.10.20


192.168.0.0/24
                                     192.168.100.0/24
17º REUNIÃO – GTER
 Túnel GRE                          Roteamento avançado
                                     Controle de banda



ip tunnel add netgre mode gre remote
200.100.10.20 
  local 200.1.2.20 ttl 255
ip link set netgre up
ip addr add 10.0.1.1 dev netgre
ip route add 192.168.100.0/24 dev netgre
17º REUNIÃO – GTER
               Roteamento avançado
                Controle de banda




Controle de banda
17º REUNIÃO – GTER
 Controle de banda                  Roteamento avançado
                                     Controle de banda

Dois tipos básicos: classless e classfull.
Ambos fazem re-priorização de pacotes.
Permitem configuração de parâmetros como:
 latency, burst, rate, peakrate, etc.
Em geral funcionam somente na interface egress
Do sistema (existe uma classe específica para a
Ingress).
Pode ser utilizado para dar maior prioridade por
host ou por serviço ou ambos.
17º REUNIÃO – GTER
Classless                           Roteamento avançado
                                     Controle de banda




Faz controle sobre interface inteira.
Não permite sub-divisões de classe.
Configura o comportamento da fila da interface.
Ex: pfifo_fast, TBF (Token Bucket Filter) e
SQF (Stochastic Fairness Queueing).

tc qdisc add dev ppp0 root tbf rate 220kbit
latency 50ms burst 1540
17º REUNIÃO – GTER
Classfull                              Roteamento avançado
                                        Controle de banda

Utiliza estrutura de árvore.
Permite criação de tipos de tráfego com limitação
por classe (classless) ou por filho.
Permite garantia de banda mínima.
Permite compartilhamento de banda.
                          1:

                      1:1

                   1:10        1:20

               10:              20:

            10:1     10:2
17º REUNIÃO – GTER
 Preparando o kernel                        Roteamento avançado
                                             Controle de banda

Networking options --->
   QoS and/or fair queueing --->
[*] QoS and/or fair queueing
<M> HTB packet scheduler
<M> CBQ packet scheduler
<M> CSZ packet scheduler
<M> The simplest PRIO pseudoscheduler
<M> RED queue
<M> TEQL queue
<M> TBF queue                 <M> TC index classifier
<M> GRED queue                <M> Routing table based classifier
<M> Diffserv field marker     <M> Firewall based classifier
<M> Ingress Qdisc             <M> U32 classifier
[*] QoS support               <M> Special RSVP classifier
[*] Rate estimator            [*] Traffic policing (needed for
[*] Packet classifier API     in/egress)
17º REUNIÃO – GTER
     HTB3                                Roteamento avançado
                                          Controle de banda

  Hierarchical Token Bucket.
  Controle preciso (diferente do CBQ).
  Comportamento semelhante ao ALTQ (BSDs).
  Geralmente utiliza outra disciplina de filas dentro
 de suas classes filhos.

                                      1:10
                                                     burst
     ceil                                            rate
1:                                     1:20
                                                     burst
                                         1:30
17º REUNIÃO – GTER
 Exemplo                                    Roteamento avançado
                                             Controle de banda

tc qdisc add dev eth0 root handle 1: htb default 1000
tc class add dev eth0 parent 1: classid 1:1 htb 
   rate 256 kbit ceil 256 kbit
tc class add dev eth0 parent 1:1 classid 1:10 htb 
   rate 56 kbit ceil 128 kbit burst 6k
tc class add dev eth0 parent 1:1 classid 1:1000 htb 
   rate 32 kbit ceil 56 kbit burst 6k
tc qdisc add dev eth0 parent 1:10 handle 10: sfq pertub 10
tc qdisc add dev eth0 parent 1:1000 handle 1000: sfq 
   pertub 10
tc filter add dev eth0 parent 1: protocol ip prio 1 
   u32 match ip src $IP flowid 1:1
tc filter add dev eth0 parent ffff: protocol ip prio 50 
   u32 match ip src $IP police rate 32 kbit burst 6k 
   drop flowid :1
17º REUNIÃO – GTER
 Bibliografia                                    Roteamento avançado
                                                  Controle de banda



Roteamento avançado com o Linux;                 Allan Edgard Silva
Freitas <allan@cefetba.br>; News Generation; Boletim bimestral
sobre tecnologia de redes; 4 de fevereiro de 2002 | volume 6,
número 1;http://www.rnp.br/newsgen/0201/roteamento_linux.html

Linux Advanced Routing & Traffic Control HOWTO;
Bert Hubert e outros; Netherlabs BV <bert.hubert@netherlabs.nl>;
http://lartc.org/howto/index.html

IP Command Reference; Alexey N. Kuznetsov;
/usr/share/doc/iproute-2.4.7/ip-cref.ps
17º REUNIÃO – GTER
Agradecimentos e     Roteamento avançado
perguntas????         Controle de banda




              FIM

Mais conteúdo relacionado

Mais procurados

Compreendendo a redundância de camada 3
Compreendendo a redundância de camada 3Compreendendo a redundância de camada 3
Compreendendo a redundância de camada 3
Vitor Albuquerque
 
Bloco1 parte4 experiencia_da_ufal
Bloco1 parte4 experiencia_da_ufalBloco1 parte4 experiencia_da_ufal
Bloco1 parte4 experiencia_da_ufal
Dafmet Ufpel
 

Mais procurados (19)

Linux network administration | Curso de Redes | 3Way Networks
Linux network administration | Curso de Redes | 3Way NetworksLinux network administration | Curso de Redes | 3Way Networks
Linux network administration | Curso de Redes | 3Way Networks
 
Compreendendo a redundância de camada 3
Compreendendo a redundância de camada 3Compreendendo a redundância de camada 3
Compreendendo a redundância de camada 3
 
Bloco1 parte4 experiencia_da_ufal
Bloco1 parte4 experiencia_da_ufalBloco1 parte4 experiencia_da_ufal
Bloco1 parte4 experiencia_da_ufal
 
R&C 0501 07 1
R&C 0501 07 1R&C 0501 07 1
R&C 0501 07 1
 
Linux System Administrator | Curso de Redes | 3Way Networks
Linux System Administrator | Curso de Redes | 3Way NetworksLinux System Administrator | Curso de Redes | 3Way Networks
Linux System Administrator | Curso de Redes | 3Way Networks
 
R&C 0502 07 2
R&C 0502 07 2R&C 0502 07 2
R&C 0502 07 2
 
Linux - Network
Linux - NetworkLinux - Network
Linux - Network
 
Resumo comandos cisco
Resumo comandos ciscoResumo comandos cisco
Resumo comandos cisco
 
Tutorial BGP Redes de Internet
Tutorial BGP Redes de InternetTutorial BGP Redes de Internet
Tutorial BGP Redes de Internet
 
Lab 2.1 revisao_ccna
Lab 2.1 revisao_ccnaLab 2.1 revisao_ccna
Lab 2.1 revisao_ccna
 
Cisco ios
Cisco iosCisco ios
Cisco ios
 
Rotas estáticas IPv6
Rotas estáticas IPv6Rotas estáticas IPv6
Rotas estáticas IPv6
 
Unidade3 roteiro
Unidade3 roteiroUnidade3 roteiro
Unidade3 roteiro
 
Camada de rede parte3
Camada de rede   parte3Camada de rede   parte3
Camada de rede parte3
 
Manual modem net
Manual modem netManual modem net
Manual modem net
 
Roteamento
RoteamentoRoteamento
Roteamento
 
Roteamento Bgp
Roteamento BgpRoteamento Bgp
Roteamento Bgp
 
Roteamento
RoteamentoRoteamento
Roteamento
 
OSPF - Open Shortest Path First
OSPF - Open Shortest Path FirstOSPF - Open Shortest Path First
OSPF - Open Shortest Path First
 

Destaque (9)

Administração de sistemas usando Python
Administração de sistemas usando PythonAdministração de sistemas usando Python
Administração de sistemas usando Python
 
Espectro 2006
Espectro 2006Espectro 2006
Espectro 2006
 
Relatorio hbsc 2014e
Relatorio hbsc 2014eRelatorio hbsc 2014e
Relatorio hbsc 2014e
 
PABX IP utilizando Asterisk
PABX IP utilizando AsteriskPABX IP utilizando Asterisk
PABX IP utilizando Asterisk
 
Bonjorno questc3b5es
Bonjorno questc3b5esBonjorno questc3b5es
Bonjorno questc3b5es
 
Métodos anticoncepcionais
Métodos anticoncepcionaisMétodos anticoncepcionais
Métodos anticoncepcionais
 
A ImportâNcia Do Orçamento Familiar
A ImportâNcia Do Orçamento FamiliarA ImportâNcia Do Orçamento Familiar
A ImportâNcia Do Orçamento Familiar
 
919 Questões de Física (resolvidas)
919 Questões de Física (resolvidas)919 Questões de Física (resolvidas)
919 Questões de Física (resolvidas)
 
Tipos De Software
Tipos De SoftwareTipos De Software
Tipos De Software
 

Semelhante a Roteamento avançado em Linux - GTER

1os passoscisco
1os passoscisco1os passoscisco
1os passoscisco
nogueira
 
Aula 03 configuração da topologia ppp
Aula 03   configuração da topologia pppAula 03   configuração da topologia ppp
Aula 03 configuração da topologia ppp
Carlos Veiga
 
Rotas de Rede - RedeCASD 2012
Rotas de Rede - RedeCASD 2012Rotas de Rede - RedeCASD 2012
Rotas de Rede - RedeCASD 2012
Victor Montalvão
 

Semelhante a Roteamento avançado em Linux - GTER (20)

R&c 05 14_2 - Protocolo IP (Parte 2)
R&c 05 14_2 - Protocolo IP (Parte 2)R&c 05 14_2 - Protocolo IP (Parte 2)
R&c 05 14_2 - Protocolo IP (Parte 2)
 
R&C 0502 07 2
R&C 0502 07 2R&C 0502 07 2
R&C 0502 07 2
 
1os passoscisco
1os passoscisco1os passoscisco
1os passoscisco
 
Apostila firewall-consulta
Apostila firewall-consultaApostila firewall-consulta
Apostila firewall-consulta
 
Rota Estática / Link State / Vetor de Distância
Rota Estática / Link State / Vetor de DistânciaRota Estática / Link State / Vetor de Distância
Rota Estática / Link State / Vetor de Distância
 
Multiplos links, multiplas rotas
Multiplos links, multiplas rotasMultiplos links, multiplas rotas
Multiplos links, multiplas rotas
 
Roteamento
RoteamentoRoteamento
Roteamento
 
Tutorial sobre iptables
Tutorial sobre iptablesTutorial sobre iptables
Tutorial sobre iptables
 
Iptables Completo Oliver
Iptables   Completo   OliverIptables   Completo   Oliver
Iptables Completo Oliver
 
Aula 06 - Gerenciamento de Rede.pdf
Aula 06 - Gerenciamento de Rede.pdfAula 06 - Gerenciamento de Rede.pdf
Aula 06 - Gerenciamento de Rede.pdf
 
Aula 03 configuração da topologia ppp
Aula 03   configuração da topologia pppAula 03   configuração da topologia ppp
Aula 03 configuração da topologia ppp
 
Laboratório configuração de um túnel ponto a ponto vpn gre
Laboratório configuração de um túnel ponto a ponto vpn greLaboratório configuração de um túnel ponto a ponto vpn gre
Laboratório configuração de um túnel ponto a ponto vpn gre
 
Unidade3 seg perimetral
Unidade3 seg perimetralUnidade3 seg perimetral
Unidade3 seg perimetral
 
Project HA
Project HAProject HA
Project HA
 
Redes Mesh wifi para disponibilização de acesso à internet
Redes Mesh wifi para disponibilização de acesso à internetRedes Mesh wifi para disponibilização de acesso à internet
Redes Mesh wifi para disponibilização de acesso à internet
 
Atividade acl extendida
Atividade acl extendidaAtividade acl extendida
Atividade acl extendida
 
Gerenciamento de Firewall com shorewall - Rafael Padilha da silva(DELETE)
Gerenciamento de Firewall com shorewall - Rafael Padilha da silva(DELETE)Gerenciamento de Firewall com shorewall - Rafael Padilha da silva(DELETE)
Gerenciamento de Firewall com shorewall - Rafael Padilha da silva(DELETE)
 
Aula 8.3 - Iptables Tabela NAT
Aula 8.3 - Iptables Tabela NATAula 8.3 - Iptables Tabela NAT
Aula 8.3 - Iptables Tabela NAT
 
Rotas de Rede - RedeCASD 2012
Rotas de Rede - RedeCASD 2012Rotas de Rede - RedeCASD 2012
Rotas de Rede - RedeCASD 2012
 
Apresentação de Protocolos de Roteamento IP
Apresentação de Protocolos de Roteamento IPApresentação de Protocolos de Roteamento IP
Apresentação de Protocolos de Roteamento IP
 

Último

Último (9)

ATIVIDADE 1 - GCOM - GESTÃO DA INFORMAÇÃO - 54_2024.docx
ATIVIDADE 1 - GCOM - GESTÃO DA INFORMAÇÃO - 54_2024.docxATIVIDADE 1 - GCOM - GESTÃO DA INFORMAÇÃO - 54_2024.docx
ATIVIDADE 1 - GCOM - GESTÃO DA INFORMAÇÃO - 54_2024.docx
 
Boas práticas de programação com Object Calisthenics
Boas práticas de programação com Object CalisthenicsBoas práticas de programação com Object Calisthenics
Boas práticas de programação com Object Calisthenics
 
Padrões de Projeto: Proxy e Command com exemplo
Padrões de Projeto: Proxy e Command com exemploPadrões de Projeto: Proxy e Command com exemplo
Padrões de Projeto: Proxy e Command com exemplo
 
Programação Orientada a Objetos - 4 Pilares.pdf
Programação Orientada a Objetos - 4 Pilares.pdfProgramação Orientada a Objetos - 4 Pilares.pdf
Programação Orientada a Objetos - 4 Pilares.pdf
 
Luís Kitota AWS Discovery Day Ka Solution.pdf
Luís Kitota AWS Discovery Day Ka Solution.pdfLuís Kitota AWS Discovery Day Ka Solution.pdf
Luís Kitota AWS Discovery Day Ka Solution.pdf
 
ATIVIDADE 1 - CUSTOS DE PRODUÇÃO - 52_2024.docx
ATIVIDADE 1 - CUSTOS DE PRODUÇÃO - 52_2024.docxATIVIDADE 1 - CUSTOS DE PRODUÇÃO - 52_2024.docx
ATIVIDADE 1 - CUSTOS DE PRODUÇÃO - 52_2024.docx
 
ATIVIDADE 1 - SISTEMAS DISTRIBUÍDOS E REDES - 52_2024.docx
ATIVIDADE 1 - SISTEMAS DISTRIBUÍDOS E REDES - 52_2024.docxATIVIDADE 1 - SISTEMAS DISTRIBUÍDOS E REDES - 52_2024.docx
ATIVIDADE 1 - SISTEMAS DISTRIBUÍDOS E REDES - 52_2024.docx
 
ATIVIDADE 1 - LOGÍSTICA EMPRESARIAL - 52_2024.docx
ATIVIDADE 1 - LOGÍSTICA EMPRESARIAL - 52_2024.docxATIVIDADE 1 - LOGÍSTICA EMPRESARIAL - 52_2024.docx
ATIVIDADE 1 - LOGÍSTICA EMPRESARIAL - 52_2024.docx
 
ATIVIDADE 1 - ESTRUTURA DE DADOS II - 52_2024.docx
ATIVIDADE 1 - ESTRUTURA DE DADOS II - 52_2024.docxATIVIDADE 1 - ESTRUTURA DE DADOS II - 52_2024.docx
ATIVIDADE 1 - ESTRUTURA DE DADOS II - 52_2024.docx
 

Roteamento avançado em Linux - GTER

  • 1. 17º REUNIÃO – GTER Roteamento avançado Controle de banda Roteamento avançado e controle de banda em Linux Hélio Loureiro <helio@loureiro.eng.br>
  • 2. 17º REUNIÃO – GTER Sumário Roteamento avançado Controle de banda ➢ Roteamento avançado ➢ Sintaxe ➢ Exemplo ➢ Controle de banda ➢ Sintaxe ➢ Exemplo NOTA: os exemplos são baseados na distribuição Debian mas funcionam similarmente em todas as demais.
  • 3. 17º REUNIÃO – GTER Cenário típico Roteamento avançado Controle de banda Internet ADSL Router Firewall Usuários (NAT) Servidores
  • 4. 17º REUNIÃO – GTER Busca de informações Roteamento avançado Controle de banda "policy routing" <O.S.> "policy routing" <O.S.> Linux - iptables/ipchains/iproute2 - 8.030 links ➢ FreeBSD - ipfw/ipfw2/ipfilter - 2.290 links ➢ OpenBSD - ipfilter/pf - 1.430 links ➢ Solaris - ipfilter - 2.048 links ➢ NetBSD - ipfilter - 1.320 links ➢ SCO (Unixware) - ? - 1.440 links ➢ Windows - ? - 5.200 links ➢ O termo “policy routing” é utilizando em roteadores, enquanto que “source routing” em Linux/BSD”.
  • 5. 17º REUNIÃO – GTER Source routing Roteamento avançado Linux/BSD Controle de banda Linux ➢ iptables - sintaxe muito flexível (complexa) ➢ iptables - difícil padronização para criação script ➢ iproute2 - fácil configuração para roteamento ➢ iproute2 - estável! OpenBSD pf - sintaxe simples (BSD) ➢ pf - roteamento através dele ➢ pf - recém lançado na versão 3.0 ➢
  • 6. 17º REUNIÃO – GTER Roteamento avançado Controle de banda block in log all scrub in all pass out all keep state pass out inet proto tcp from any to any keep state pass in quick on $EXT proto tcp from $HELIO to $FW port 22 flags S/SA keep state pass in quick proto udp from any to any port 53 keep state pass in on $EXT inet proto tcp from any to $SERVER port {25,80,110,143,443} flags S/SA modulate state pass in on $EXT proto udp from any port 53 to $FW keep state pass in on xl0 fastroute from 192.168.0.0/24 to $DMZ keep state pass in on xl0 fastroute from 192.168.0.0/24 to $EXTERNAL keep state pass in on xl0 route-to xl3:200.100.10.1 from 192.168.0.0/24 to any keep state Sistema travava...
  • 7. 17º REUNIÃO – GTER Preparando o kernel Roteamento avançado Controle de banda [*] Prompt for development and/or incomplete code/drivers --- [*] TCP/IP Networking [*] Networking packet filtering (replaces ipchains) [*] Networking packet filtering debugging [*] Socket Filtering --- [*] IP: advanced router [*] IP: policy routing [*] IP: use netfilter MARK value as routing key [*] IP: fast network address translation [*] IP: equal cost multipath [*] IP: use TOS value as routing key [*] IP: verbose route monitoring [*] IP: large routing tables Já disponível no kernel Já disponível no kernel [*] IP: GRE tunnels over IP 2.4.20 ou superior 2.4.20 ou superior
  • 8. 17º REUNIÃO – GTER iproute2 Roteamento avançado Controle de banda Solução desenvolvida para o kernel 2.4. Substitui os comandos arp, ifconfig e route. Sintaxe semelhante à cli de roteadores. Permite criar regras de roteamento. Não interage com os comandos legados. Inclui o programa de controle de banda (tc). Usa o sistema de filtros e filas. apt-get install iproute
  • 9. 17º REUNIÃO – GTER ip link Roteamento avançado Controle de banda Usado para verificar e/ou configurar o endereço físico (MAC) das interfaces de rede. Aceita as opções show e set. router:~# ip link show 1: lo: <LOOPBACK,UP> mtu 16436 qdisc noqueue link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00 2: eth0: <BROADCAST,MULTICAST,UP> mtu 1500 qdisc pfifo_fast qlen 100 link/ether 00:04:75:7a:73:63 brd ff:ff:ff:ff:ff:ff 3: eth1: <BROADCAST,MULTICAST,UP> mtu 1500 qdisc pfifo_fast qlen 100 link/ether 00:04:75:7a:73:8e brd ff:ff:ff:ff:ff:ff 4: eth2: <BROADCAST,MULTICAST,UP> mtu 1500 qdisc pfifo_fast qlen 100 link/ether 00:04:75:7a:73:31 brd ff:ff:ff:ff:ff:ff 5: eth3: <BROADCAST,MULTICAST,UP> mtu 1500 qdisc pfifo_fast qlen 100 link/ether 00:04:75:7a:73:a4 brd ff:ff:ff:ff:ff:ff
  • 10. 17º REUNIÃO – GTER ip addr Roteamento avançado Controle de banda Usado para interagir com as interfaces de rede. Aceita as opções list, add e del entre outras. router~# ip addr list 1: lo: <LOOPBACK,UP> mtu 16436 qdisc noqueue link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00 inet 127.0.0.1/8 scope host lo 2: eth0: <BROADCAST,MULTICAST,UP> mtu 1500 qdisc pfifo_fast qlen 100 link/ether 00:10:5a:9b:1e:fd brd ff:ff:ff:ff:ff:ff inet 192.168.254.200/24 brd 192.168.254.255 scope global eth0 router~# ip addr add 192.168.253.200/24 dev eth0 router~# ip addr list dev eth0 2: eth0: <BROADCAST,MULTICAST,UP> mtu 1500 qdisc pfifo_fast qlen 1000 link/ether 00:10:5a:9b:1e:fd brd ff:ff:ff:ff:ff:ff inet 192.168.254.200/24 brd 192.168.254.255 scope global eth0 inet 192.168.253.200/24 scope global eth0 router~# ifconfig eth0 eth0 Link encap:Ethernet HWaddr 00:10:5A:9B:1E:FD inet addr:192.168.254.200 Bcast:192.168.254.255 Mask:255.255.255.0 UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
  • 11. 17º REUNIÃO – GTER ip route Roteamento avançado Controle de banda Usado para verificar e/ou configurar as rotas estáticas da rede. Aceita as opções  list,  flush, add, e del entre outros. router:~# ip route list 200.1.2.0/26 dev eth2 proto kernel scope link src 200.1.2.20 200.100.10.0/26 dev eth3 proto kernel scope link src 200.100.10.56 10.0.0.0/24 dev eth1 proto kernel scope link src 10.0.0.254 192.168.0.0/24 dev eth0 proto kernel scope link src 192.168.0.254 default via 200.1.2.1 dev eth2 router:~# ip route add nat 192.168.0.100 via 200.1.2.20
  • 12. 17º REUNIÃO – GTER /etc/iproute2/rt_tables Roteamento avançado Controle de banda Arquivo onde as tabelas (de regras) de roteamento são definidas. Cada tabela é definida por seu número identificador e nome. A ordenação vai de 0 à 255 (256 valores = 8 bits) e a faixa de 253 à 255 é reservada às tabelas do sistema (local, main e default). Uma entrada na arquivo mas sem regra definida não é apresentada no comando "ip rule list".  Para forçar o kernel a ler a nova entrada, o comando "ip route flush cache" é necessário. router ~# echo "200 dmznet" >> /etc/iproute2/rt_tables router ~# cat /etc/iproute2/rt_tables # reserved 255 local 254 main 253 default 0 unspec # local 1 inr.ruhep 200 dmznet router ~# ip route flush cache
  • 13. 17º REUNIÃO – GTER ip rule Roteamento avançado Controle de banda Usado para criar regras específicas de roteamento. Existem algumas tabelas iniciais que não podem ser removidas: local (loopback), main e default. Cria-se uma ou mais tabelas para o roteamento desejado. No caso apresentado, somente a tabela dmznet foi adicionada, deixando todos os demais dentro da tabela main. Aceita as opções list, add e del. router:~# ip rule list 0: from all lookup local 32762: from 10.0.0.11 lookup dmznet 32763: from 192.168.0.0/24 to 200.1.2.0/26 lookup dmznet 32764: from 200.100.10.0/26 lookup dmznet 32765: from 192.168.0.0/24 lookup dmznet 32766: from all lookup main 32767: from all lookup default
  • 14. 17º REUNIÃO – GTER Situação inicial (uma saída) Roteamento avançado Controle de banda Internet Router Usuários (NAT) Servidores
  • 15. 17º REUNIÃO – GTER Situação desejada Roteamento avançado Controle de banda Internet 200.100.10.1 Router 200.1.2.1 10.0.0.0/24 Servidores Usuários (NAT) 192.168.0.0/24
  • 16. 17º REUNIÃO – GTER /etc/init.d/iproute Roteamento avançado Controle de banda #! /bin/sh ip route add default via 200.100.10.1 table dmznet ip rule add from 192.168.0.0/24 table dmznet ip route add 192.168.0.0/24 via 192.168.0.254 table dmznet ip rule add from 200.100.10.0/26 table dmznet ip addr add 200.1.2.3/26 dev eth2 ip addr add 200.1.2.4/26 dev eth2 ip addr add 200.1.2.5/26 dev eth2 ip addr add 200.1.2.7/26 dev eth2 ip addr add 200.1.2.14/26 dev eth2 ip addr add 200.1.2.15/26 dev eth2 ip addr add 200.1.2.27/26 dev eth2 ip addr add 200.1.2.62/26 dev eth2 ip rule add from 192.168.0.0/24 to 200.1.2.0/26 table dmznet ip route add 200.1.2.0/26 via 200.1.2.20 table dmznet ip route add 10.0.0.0/24 via 10.0.0.254 table dmznet ip rule add from 10.0.0.11/32 table dmznet
  • 17. 17º REUNIÃO – GTER Alterando rotas Roteamento avançado Controle de banda #! /bin/sh case $1 in start|adsl) echo "Roteando Intranet pelo link ADSL" ip route del default via 200.1.2.1 table dmznet ip route add default via 200.100.10.1 table dmznet echo "Iniciando regras de firewall" /etc/init.d/firewall start ;; stop|frame-relay) echo "Roteando Intranet pelo link FR" ip route del default via 200.100.10.1 table dmznet ip route add default via 200.1.2.1 table dmznet echo "Desligando regras de firewall" /etc/init.d/firewall stop ;; restart) $0 stop $0 start ;; *) echo "Use: $0 {start|adsl|stop|frame-relay|restart}" esac
  • 18. 17º REUNIÃO – GTER Balanceamento de carga Roteamento avançado Controle de banda Internet 200.1.2.1 200.100.10.1 Usuários (NAT) 192.168.0.0/24
  • 19. 17º REUNIÃO – GTER Atribuindo peso às rotas Roteamento avançado Controle de banda ip route add default scope global nexthop via 200.100.10.1 dev eth0 weight 1 nexthop via 200.1.2.1 dev eth1 weight 1
  • 20. 17º REUNIÃO – GTER Túnel GRE Roteamento avançado Controle de banda Internet 200.1.2.1 200.1.2.20 200.100.10.20 192.168.0.0/24 192.168.100.0/24
  • 21. 17º REUNIÃO – GTER Túnel GRE Roteamento avançado Controle de banda ip tunnel add netgre mode gre remote 200.100.10.20 local 200.1.2.20 ttl 255 ip link set netgre up ip addr add 10.0.1.1 dev netgre ip route add 192.168.100.0/24 dev netgre
  • 22. 17º REUNIÃO – GTER Roteamento avançado Controle de banda Controle de banda
  • 23. 17º REUNIÃO – GTER Controle de banda Roteamento avançado Controle de banda Dois tipos básicos: classless e classfull. Ambos fazem re-priorização de pacotes. Permitem configuração de parâmetros como: latency, burst, rate, peakrate, etc. Em geral funcionam somente na interface egress Do sistema (existe uma classe específica para a Ingress). Pode ser utilizado para dar maior prioridade por host ou por serviço ou ambos.
  • 24. 17º REUNIÃO – GTER Classless Roteamento avançado Controle de banda Faz controle sobre interface inteira. Não permite sub-divisões de classe. Configura o comportamento da fila da interface. Ex: pfifo_fast, TBF (Token Bucket Filter) e SQF (Stochastic Fairness Queueing). tc qdisc add dev ppp0 root tbf rate 220kbit latency 50ms burst 1540
  • 25. 17º REUNIÃO – GTER Classfull Roteamento avançado Controle de banda Utiliza estrutura de árvore. Permite criação de tipos de tráfego com limitação por classe (classless) ou por filho. Permite garantia de banda mínima. Permite compartilhamento de banda. 1: 1:1 1:10 1:20 10: 20: 10:1 10:2
  • 26. 17º REUNIÃO – GTER Preparando o kernel Roteamento avançado Controle de banda Networking options ---> QoS and/or fair queueing ---> [*] QoS and/or fair queueing <M> HTB packet scheduler <M> CBQ packet scheduler <M> CSZ packet scheduler <M> The simplest PRIO pseudoscheduler <M> RED queue <M> TEQL queue <M> TBF queue <M> TC index classifier <M> GRED queue <M> Routing table based classifier <M> Diffserv field marker <M> Firewall based classifier <M> Ingress Qdisc <M> U32 classifier [*] QoS support <M> Special RSVP classifier [*] Rate estimator [*] Traffic policing (needed for [*] Packet classifier API in/egress)
  • 27. 17º REUNIÃO – GTER HTB3 Roteamento avançado Controle de banda Hierarchical Token Bucket. Controle preciso (diferente do CBQ). Comportamento semelhante ao ALTQ (BSDs). Geralmente utiliza outra disciplina de filas dentro de suas classes filhos. 1:10 burst ceil rate 1: 1:20 burst 1:30
  • 28. 17º REUNIÃO – GTER Exemplo Roteamento avançado Controle de banda tc qdisc add dev eth0 root handle 1: htb default 1000 tc class add dev eth0 parent 1: classid 1:1 htb rate 256 kbit ceil 256 kbit tc class add dev eth0 parent 1:1 classid 1:10 htb rate 56 kbit ceil 128 kbit burst 6k tc class add dev eth0 parent 1:1 classid 1:1000 htb rate 32 kbit ceil 56 kbit burst 6k tc qdisc add dev eth0 parent 1:10 handle 10: sfq pertub 10 tc qdisc add dev eth0 parent 1:1000 handle 1000: sfq pertub 10 tc filter add dev eth0 parent 1: protocol ip prio 1 u32 match ip src $IP flowid 1:1 tc filter add dev eth0 parent ffff: protocol ip prio 50 u32 match ip src $IP police rate 32 kbit burst 6k drop flowid :1
  • 29. 17º REUNIÃO – GTER Bibliografia Roteamento avançado Controle de banda Roteamento avançado com o Linux; Allan Edgard Silva Freitas <allan@cefetba.br>; News Generation; Boletim bimestral sobre tecnologia de redes; 4 de fevereiro de 2002 | volume 6, número 1;http://www.rnp.br/newsgen/0201/roteamento_linux.html Linux Advanced Routing & Traffic Control HOWTO; Bert Hubert e outros; Netherlabs BV <bert.hubert@netherlabs.nl>; http://lartc.org/howto/index.html IP Command Reference; Alexey N. Kuznetsov; /usr/share/doc/iproute-2.4.7/ip-cref.ps
  • 30. 17º REUNIÃO – GTER Agradecimentos e Roteamento avançado perguntas???? Controle de banda FIM