Your SlideShare is downloading. ×
Roteamento avançado utilizando Debian
Upcoming SlideShare
Loading in...5
×

Thanks for flagging this SlideShare!

Oops! An error has occurred.

×

Introducing the official SlideShare app

Stunning, full-screen experience for iPhone and Android

Text the download link to your phone

Standard text messaging rates apply

Roteamento avançado utilizando Debian

1,910
views

Published on

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

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
1,910
On Slideshare
0
From Embeds
0
Number of Embeds
0
Actions
Shares
0
Downloads
32
Comments
0
Likes
1
Embeds 0
No embeds

Report content
Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
No notes for slide

Transcript

  • 1. Roteamento avançado utilizando Debian Hélio Loureiro <helio@loureiro.eng.br>
  • 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. 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. Situação inicial 200.100.10.0/26200.1.2.0/26
  • 5. Consultoria ­ solução ???200.1.2.64/26 ??? Uso de roteamento pela origem
  • 6. Primeiro problema Desvalorização do serviço
  • 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. 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. 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. Solução de rede NAT eth2 NAT eth3 10/24 eth1 eth0 PATMigração da DMZ por partes (máquina a máquina)
  • 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. As primeiras revelações Faltaram alguns detalhes...
  • 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. 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. 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. 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. 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. 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. 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. 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. /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. /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. 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. 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. 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. 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. 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. O problema da rede...
  • 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. Agradecimentos IBTA Linux Mall Tempo Real Debian­SP FIM