Roteamento avançado  utilizando Debian    Hélio Loureiro    <helio@loureiro.eng.br>
Palestrante                  Hélio Loureiro                http://helio.loureiro.eng.br                 <helio@loureiro.en...
Conteúdo ➢     Descrição do problema ➢     Possíveis soluções ➢     Seleção ➢     Explicação técnica ➢     Finalização ➢  ...
Situação inicial                   200.100.10.0/26200.1.2.0/26
Consultoria ­ solução                    ???200.1.2.64/26 ???      Uso de roteamento pela origem
Primeiro problema    Desvalorização do serviço
Opções                "policy routing" linux                 "policy routing" linuxLinux ­ iptables/ipchains/iproute2 ­ 8....
ComparaçãoLinux➢    iptables ­ sintaxe muito flexível (complexa)➢    iptables ­ difícil padronização para criação script➢ ...
Informações da redeSaída Embratel:                 Saída ADSL:   GW=200.2.1.1                    GW=200.100.10.1   MASK=25...
Solução de rede           NAT   eth2                   NAT                                 eth3   10/24                   ...
TCPPORTS="{20, 21}"UDPPORTS="{20, 1024, 4000}"INT="{xl0, xl1}"EXT="{xl2, xl3}"FW="{200.100.10.56, 200.1.2.20, 192.168.0.25...
As primeiras revelações      Faltaram alguns detalhes...
Selecionando Linux  Fácil gerenciamento/administração.  Fácil atualização (não necessária).  Flexibilidade e estabilidade....
Referências sobre roteamento            Ethernet, Frame Relay e ATM              RIP, OSPF, BGP e              ISISLinux N...
Preparando o kernel[*] Prompt for development and/or incomplete     code/drivers---[*] TCP/IP Networking[*] Networking pac...
iproute2Solução desenvolvida para o kernel 2.4.Substitui os comandos arp, ifconfig e route.Sintaxe semelhante à do IOS (Ci...
ip linkUsado para verificar e/ou configurar o endereço físico (MAC) dasinterfaces de rede.  Aceita as opções show e set. r...
ip addrUsado para interagir com as interfaces de rede.  Aceita as opções list, add e del entre outras.router~# ip addr lis...
ip route Usado para verificar e/ou configurar as rotas estáticas da rede.   Aceita as opções  list,  flush, add, e del ent...
ip ruleUsado para criar regras específicas de roteamento.  Tem algumas tabelas iniciais que não podem ser removidas: local...
/etc/iproute2/rt_tablesArquivo onde as tabelas (de regras) de roteamento são definidas.  Cadatabela é definida por seu núm...
/etc/init.d/iproute#!   /bin/ship   route add   default via 200.100.10.1         table dmznetip   rule add    from 192.168...
table dmznet                   rota default                                            gw: 200.100.10.1                   ...
Alterando rotas#! /bin/shcase $1 in  start|speedy)     echo "Roteando Intranet pelo link Speedy"     ip route del default ...
Features não implementadasRoteamento dinâmico.  MOTIVO: regras do firewall (complexidade).  SUGESTÃO: zebra com BGP+OSPF+R...
Finalização Sistema com backup em cd bootável baseado noKurumin ("o gênio cria, o medíocre copia e o sábioaperfeiçoa" :­)....
Conclusão   Fechar requisitos já na proposta com o cliente.    Deixar claros os "testes de aceitação".   Não utilizar part...
O problema da rede...
BibliografiaRoteamento avançado com o Linux; Allan Edgard Silva Freitas <allan@cefetba.br>; News Generation; Boletim bimes...
Agradecimentos   IBTA   Linux Mall   Tempo Real   Debian­SP                FIM
Upcoming SlideShare
Loading in …5
×

Roteamento avançado utilizando Debian

2,493 views

Published on

Uma apresentação sobre roteamento avançado com Linux que fiz pra uma II oficina Debian-SP.

Published in: Technology
0 Comments
1 Like
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total views
2,493
On SlideShare
0
From Embeds
0
Number of Embeds
1
Actions
Shares
0
Downloads
37
Comments
0
Likes
1
Embeds 0
No embeds

No notes for slide

Roteamento avançado utilizando Debian

  1. 1. Roteamento avançado utilizando Debian Hélio Loureiro <helio@loureiro.eng.br>
  2. 2. Palestrante Hélio Loureiro http://helio.loureiro.eng.br <helio@loureiro.eng.br>http://listas.cipsga.org.br/cgi-bin/mailman/listinfo/linux-br       Debian desde 2.0 (Hamm)Moderador da lista linux­brInstrutor ConectivaSoluções baseadas em *NIX                  Atualmente em telecomunicaçõesDesenvolvimento de sistemas em C/Python/JavaInstalação e integração de redes GSM/GPRS, FEA e xDSL
  3. 3. Conteúdo ➢ Descrição do problema ➢ Possíveis soluções ➢ Seleção ➢ Explicação técnica ➢ Finalização ➢ Conclusão NOTA: todos os endereços IP usados aqui são fictícios.
  4. 4. Situação inicial 200.100.10.0/26200.1.2.0/26
  5. 5. Consultoria ­ solução ???200.1.2.64/26 ??? Uso de roteamento pela origem
  6. 6. Primeiro problema Desvalorização do serviço
  7. 7. Opções "policy routing" linux "policy routing" linuxLinux ­ 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➢ Linux ou OpenBSD?
  8. 8. ComparaçãoLinux➢ 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!OpenBSDpf ­ sintaxe simples (BSD)➢pf ­ roteamento através dele➢pf ­ recém lançado na versão 3.0➢ Qual?
  9. 9. Informações da redeSaída Embratel: Saída ADSL: GW=200.2.1.1 GW=200.100.10.1 MASK=255.255.255.192 MASK=255.255.255.192Interface eth0: Interface eth1: IP=192.168.0.254 IP=10.0.0.254 MASK=255.255.255.0 MASK=255.255.255.0Interface eth2: Interface eth3: IP=200.1.2.10 IP=200.100.10.56 MASK=255.255.255.192 MASK=255.255.255.192route add default gw 200.2.11 Servidor de mail/pop3/imap/webmail  acessível pelos dois links
  10. 10. Solução de rede NAT eth2 NAT eth3 10/24 eth1 eth0 PATMigração da DMZ por partes (máquina a máquina)
  11. 11. TCPPORTS="{20, 21}"UDPPORTS="{20, 1024, 4000}"INT="{xl0, xl1}"EXT="{xl2, xl3}"FW="{200.100.10.56, 200.1.2.20, 192.168.0.254, 10.0.0.254}"HELIO="{200.207.129.199, 200.10.20.30}"block in log allscrub in allpass out all keep statepass out inet proto tcp from any to any keep statepass in quick on $EXT proto tcp from $HELIO to $FW port 22 flags S/SA keep statepass in quick on $EXT proto tcp from $HELIO to $FW port 22 flags A/SA keep statepass in quick proto udp from any to any port 53 keep statepass in on $EXT inet proto tcp from any to $MAILSERVER port 25 flags S/SA modulate statepass in on $EXT inet proto tcp from any to $MAILSERVER port 80 flags S/SA modulate statepass in on $EXT proto udp from any port 53 to $FW keep statepass in on xl0 fastroute from 192.168.0.0/24 to $DMZ keep statepass in on xl0 fastroute from 192.168.0.0/24 to $EXTERNAL keep statepass in on xl0 route-to xl3:200.100.10.1 from 192.168.0.0/24 to any keep state Sistema travava!!!
  12. 12. As primeiras revelações Faltaram alguns detalhes...
  13. 13. Selecionando Linux Fácil gerenciamento/administração. Fácil atualização (não necessária). Flexibilidade e estabilidade. Rápida instalação. Compatibilidade entre versões. Possibilidade de costumização. Debian
  14. 14. Referências sobre roteamento Ethernet, Frame Relay e ATM RIP, OSPF, BGP e ISISLinux Networking HOWTO.Redes de Computadores; Andrew Tanenbaum.Redes de computadores: das Lans, Mans e Wans às redes ATM;  Soares, Lemos e Colcher.http://www.cisco.comhttp://www.zebra.com
  15. 15. Preparando o kernel[*] 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 Use kernel-package
  16. 16. iproute2Solução desenvolvida para o kernel 2.4.Substitui os comandos arp, ifconfig e route.Sintaxe semelhante à do IOS (Cisco).Permite criar regras de roteamento.Não interage com os comandos legados.Permite o controle de banda.Usa o sistema de filtros e filas. apt-get install iproute
  17. 17. ip linkUsado para verificar e/ou configurar o endereço físico (MAC) dasinterfaces 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
  18. 18. ip addrUsado para interagir com as interfaces de rede.  Aceita as opções list, add e del entre outras.router~# ip addr list1: 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 lo2: 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 eth0144: ppp0: <POINTOPOINT,MULTICAST,NOARP,UP> mtu 1492 qdisc pfifo_fast qlen 3 link/ppp inet 200.158.236.157 peer 200.207.246.240/32 scope global ppp0
  19. 19. ip route 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 list200.1.2.0/26 dev eth2 proto kernel scope link src 200.1.2.20200.100.10.0/26 dev eth3 proto kernel scope link src 200.100.10.5610.0.0.0/24 dev eth1 proto kernel scope link src 10.0.0.254192.168.0.0/24 dev eth0 proto kernel scope link src 192.168.0.254default via 200.1.2.1 dev eth2
  20. 20. ip ruleUsado para criar regras específicas de roteamento.  Tem 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 todosos outro pacotes dentro da tabela main.  Aceita as opções list, add edel.router:~# ip rule list0: from all lookup local32762: from 10.0.0.11 lookup dmznet32763: from 192.168.0.0/24 to 200.1.2.0/26 lookup dmznet32764: from 200.100.10.0/26 lookup dmznet32765: from 192.168.0.0/24 lookup dmznet32766: from all lookup main32767: from all lookup default
  21. 21. /etc/iproute2/rt_tablesArquivo onde as tabelas (de regras) de roteamento são definidas.  Cadatabela é definida por seu número identificador e nome.  A ordenaçãovai 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 arquivomas 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 flushcache" é 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
  22. 22. /etc/init.d/iproute#! /bin/ship route add default via 200.100.10.1 table dmznetip rule add from 192.168.0.0/24 table dmznetip route add 192.168.0.0/24 via 192.168.0.254 table dmznetip rule add from 200.100.10.0/26 table dmznetip addr add 200.1.2.3/26 dev eth2ip addr add 200.1.2.4/26 dev eth2ip addr add 200.1.2.5/26 dev eth2ip addr add 200.1.2.7/26 dev eth2ip addr add 200.1.2.14/26 dev eth2ip addr add 200.1.2.15/26 dev eth2ip addr add 200.1.2.27/26 dev eth2ip addr add 200.1.2.62/26 dev eth2ip rule add from 192.168.0.0/24 to 200.1.2.0/26 table dmznetip route add 200.1.2.0/26 via 200.1.2.20 table dmznetip route add 10.0.0.0/24 via 10.0.0.254 table dmznetip rule add from 10.0.0.11/32 table dmznet
  23. 23. table dmznet rota default gw: 200.100.10.1 from 200.100.10/26 from 192.168/24 eth2 eth3 from 192.168/24 to 200.1.2.0/26 eth1 eth0 from 10.0.0.11/32
  24. 24. Alterando rotas#! /bin/shcase $1 in start|speedy) echo "Roteando Intranet pelo link Speedy" 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|embratel) echo "Roteando Intranet pelo link Embratel" 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|speedy|stop|embratel|restart}"esac
  25. 25. Features não implementadasRoteamento dinâmico. MOTIVO: regras do firewall (complexidade). SUGESTÃO: zebra com BGP+OSPF+RIP.Documentação. MOTIVO: interface auto­explicativa. SUGESTÃO: documentar durante desenvolvimento.Controle de banda. MOTIVO: indecisão do cliente. SUGESTÃO: não implementar.
  26. 26. Finalização Sistema com backup em cd bootável baseado noKurumin ("o gênio cria, o medíocre copia e o sábioaperfeiçoa" :­). Desenvolvimento de uma interface de configuração (sh e dialog). Desenvolvimento de um sistema de firewall com regras claras e definidas. Desenvolvimento de um "parser" em python para gerar o script de firewall.● Regras de firewall aumentaram de 136 para 460 (openbsd­>linux) inicialmente.
  27. 27. Conclusão Fechar requisitos já na proposta com o cliente. Deixar claros os "testes de aceitação". Não utilizar partes "móveis" no firewall. Evitar apache, bind e mail. Linux tem implementação mais facilitada para roteamento e substitui com vantagens um roteador (Cisco, Cyclades, IBM, etc). Fazer ACL no firewall/router. Opções avançadas de roteamento melhor  suportadas no Linux. Projeto iniciado em novembro de 2002. Finalizado em julho de 2003.Tempo inicialmente previsto para implementação: 2 meses.
  28. 28. O problema da rede...
  29. 29. BibliografiaRoteamento 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.shtmlLinux Advanced Routing & Traffic Control HOWTO; Bert Hubert e outros; Netherlabs BV <bert.hubert@netherlabs.nl>; http://lartc.org/howto/index.htmlIP Command Reference; Alexey N. Kuznetsov; /usr/share/doc/iproute­2.4.7/ip­cref.ps
  30. 30. Agradecimentos IBTA Linux Mall Tempo Real Debian­SP FIM

×