Roteamento avançado. e controle de banda em Linux



Documentos relacionados
Implementação de QoS em um roteador Linux

Linux Controle de Redes

Mecanismos de QoS em Linux Hierarchical Token Bucket (HTB)

Mecanismos de QoS em Linux tc Traffic Control

cio QoS Linux Edgard Jamhour 2008, Edgard Jamhour

VoIP com QoS (Linux e Cisco)

4 1 0 ilh F. 2 o 6, 1 rto e rib, G rib e d Eo aãd JorinT Eriberto ago. 14

Curso de extensão em Administração de sistemas GNU/Linux: redes e serviços

Mecanismos de QoS em Linux DiffServ (Marcação e Policiamento)

Mecanismos de QoS em Linux tc Traffic Control. Edgard Jamhour

Firewalls em Linux. Tutorial Básico. André Luiz Rodrigues Ferreira

PROJETO DE IMPLEMENTAÇÃO DE UM SERVIDOR FIREWALL LIVRE UTILIZANDO IPTABLES

$ %$ & ' ( ! ) * +!, 3! 4 5!, 6, ! ! " #!

Mecanismos de QoS em Linux tc Traffic Control

ROTEAMENTO AVANÇADO COM IPROUTE2

Curso Firewall. Sobre o Curso de Firewall. Conteúdo do Curso

Criptografia e Segurança das Comunicações. Firewalls

Instalação e Configuração Iptables ( Firewall)

Obs: Endereços de Rede. Firewall em Linux Kernel 2.4 em diante. Obs: Padrões em Intranet. Instalando Interface de Rede.

Otimização do consumo de banda utilizando Iptables Layer 7 e HTB

Sistemas Operacionais de Rede. Configuração de Rede

O Protocolo IP (2) Prof. José Gonçalves Pereira Filho Departamento de Informática

ADMINISTRAÇÃO DE REDES I LINUX. Firewall. Frederico Madeira LPIC 1, CCNA fred@madeira.eng.br

Segurança de Redes. Firewall. Filipe Raulino

PROJETO INTERDISCIPLINAR I

Uso do iptables como ferramenta de firewall.

OS endereços IP v.4 consistem em 4 octetos separados por pontos. Estes endereços foram separados

Load Balance / Route Policy (para series Vigor 2860 / Vigor 2925)

IPTABLES. Helder Nunes

cio Roteamento Linux

Balanceamento de links

Sistemas Operacionais de Redes. Aula: Gerenciamento de rede Professor: Jefferson Igor D. Silva

GTER - 22ª Reunião. fwbuilder Firewall Builder. Uniformizando a configuração de firewalls. Ethy H. Brito dez/2006

** Distance Vector - Trabalha com a métrica de Salto(HOP),. O protocolo que implementa o Distance Vector é o RIP.!

Configuração de redes no Gnu/Linux

01 - Entendendo um Firewall. Prof. Armando Martins de Souza armandomartins.souza@gmail.com

Firewall - IPTABLES. Conceitos e Prática. Tópicos em Sistemas de Computação Prof. Dr. Adriano Mauro Cansian adriano@acmesecurity.

Configuração endereço IP da interface de rede

Capítulo 4 TCP/IP FIREWALLS.

Autor: Armando Martins de Souza <armandomartins.souza at gmail.com> Data: 12/04/2010


Compartilhamento da internet, firewall

GTS-8. Implementação de uma solução baseada em Software Livre para o controle de tráfego P2P. Helder Jean Brito da Silva (helder@info.ufrn.

IPv6. A Necessidade de um Novo IP. IPv4. IETF desenvolve nova versão do IP: IPv6. O IPv6 pode vir a ser relevante para as Comunicações FEUP MPR

Linux Network Servers

Firewall Iptables. Professor: João Paulo de Brito Gonçalves. Campus - Cachoeiro Curso Técnico de Informática

Iptables. Adailton Saraiva Sérgio Nery Simões

phptcadmin: Uma Solução Para o Planejamento e Implementação de Qualidade de Serviço em Redes de Computadores

Trabalhando com NAT no PFSense

I Workshop do POP MG. Firewall IPTABLES. Fernando Resende Coelho mg.rnp.br

Na Figura a seguir apresento um exemplo de uma "mini-tabela" de roteamento:

Laboratório 1. Configurando as Interfaces de redes

TCP é um protocolo de TRANSMISSÃO, responsável pela confiabilidade da entrega da informação.

Administração de Redes Redes e Sub-redes

Comandos Linux Comando tcpdump, guia de referência e introdução. Sobre este documento

OpenVpn. Mauro Fernando Zirbes. Redes Virtuais Privadas. ( Palestrante )

The next generation. João Eriberto Mota Filho. Vitória da Conquista, BA, 05 set. 2013

Segurança de redes com Linux. Everson Scherrer Borges Willen Borges de Deus

Elaboração de Script de Firewall de Fácil administração

Prof. Samuel Henrique Bucke Brito

Sistema para diminuir a probabilidade de falhas nas conexões Internet e possibilitar controle de fluxo com base em hosts e aplicações

Software de Telecomunicações. Firewalls

Curso de extensão em Administração de sistemas GNU/Linux: redes e serviços

Laboratório Familiarizando-se com o IPv6

Laboratório. Assunto: endereçamento IP e roteamento.

Uso de Bridges Linux no Controle de Tráfego entre Sub Redes em Uma Mesma Rede Lógica

Protocolos básicos de LANs IP (primeiro trabalho laboratorial)

Troubleshooting em rede básica

PPTPCONFIG. Altamir Dias. 29 de junho de Instalando o Programa pptpconfig

Duplo acesso de "pobre" (poor man s double homing)

Prof. Roberto Franciscatto 4º Semestre - TSI - CAFW. Free Powerpoint Templates Page 1

Alfamídia Linux: Administração de Redes em ambiente Linux I

Instalação e Configuração de Servidores Linux Server Configuração de Rede. Prof. Alex Furtunato

Configuração de Rede

Interconexão de Redes Parte 2. Prof. Dr. S. Motoyama

Controle de congestionamento em TCP

O que é uma firewall? É um router entre uma rede privada e uma rede pública que filtra o tráfego com base num conjunto de regras.

Lab 4 Análise de Pacotes utilizando o TCPDUMP

LABORATÓRIO DE REDES DE COMPUTADORES Prof: José Gonçalves - LPRM/DI/UFES (baseado no original de Rostan Piccoli)

Introdução Modelo OSI Sistemas de firewall Bridge x roteamento Atuação de um IPS Funcionamento do Hogwash Instalação do Hogwash Configuração do

Aula prática. Objetivo IPCONFIG. Prof. Leandro Pykosz Informa a configuração atual de rede da máquina;

Segurança em Sistemas de Informação

Projeto e Instalação de Servidores IPv6. Prof.: Roberto Franciscatto

Serviços Diferenciados em Sistemas Operacionais Linux

Introdução a Firewalls no Linux (Netfilter/Iptables)

Aula-16 Interconexão de Redes IP (Internet Protocol) Prof. Dr. S. Motoyama

UFBA Universidade Federal da Bahia CPD Central de Processamento de Dados. Rede VPN UFBA. Procedimento para configuração

Conhecendo as Ameaças para Criar um Ambiente Seguro. Humberto Caetano Diretor Técnico

Gestão de Sistemas e Redes

PROAPPS Security Data Sheet Professional Appliance / Apresentação

Configuração de Rede

Tecnologia de Redes. Protocolo IP

Redes de Computadores II INF-3A

comando parâmetro alternativo parâmetro REGRA função iptables -t tabela -N --new chain cria uma nova chain. iptables -t tabela -E --rename-chain

Tutorial configurando o dhcp no ubuntu ou debian.

Protocolo TCP/IP. Protocolo TCP/IP. Protocolo TCP/IP. Protocolo TCP/IP. Conexão de Redes. Protocolo TCP/IP. Arquitetura Internet.

Curso Técnico em Informática. Informática Aplicada Instrutor Rafael Barros Sales

Transcrição:

e controle de banda em Linux Hélio Loureiro <helio@loureiro.eng.br>

Sumário Sintaxe Exemplo Sintaxe Exemplo NOTA: os exemplos são baseados na distribuição Debian mas funcionam similarmente em todas as demais.

Cenário típico Internet Router ADSL Firewall Usuários (NAT) Servidores

Busca de informações 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 "policy routing" <O.S.> O termo policy routing é utilizando em roteadores, enquanto que source routing em Linux/BSD.

Source routing Linux/BSD 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

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...

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 [*] IP: GRE tunnels over IP Já disponível no kernel 2.4.20 ou superior

iproute2 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

ip link 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

ip addr 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

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 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

/etc/iproute2/rt_tables 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

ip rule 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

Situação inicial (uma saída) Internet Router Usuários (NAT) Servidores

Situação desejada Internet Router 200.100.10.1 200.1.2.1 Usuários (NAT) 192.168.0.0/24 10.0.0.0/24 Servidores

/etc/init.d/iproute #! /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

Alterando rotas #! /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}"

Balanceamento de carga Internet 200.1.2.1 200.100.10.1 Usuários (NAT) 192.168.0.0/24

Atribuindo peso às rotas 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

Túnel GRE Internet 200.1.2.1 200.1.2.20 200.100.10.20 192.168.0.0/24 192.168.100.0/24

Túnel GRE 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

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.

Classless 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

Classfull 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

Preparando o kernel 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> GRED queue <M> Diffserv field marker <M> Ingress Qdisc [*] QoS support [*] Rate estimator [*] Packet classifier API <M> TC index classifier <M> Routing table based classifier <M> Firewall based classifier <M> U32 classifier <M> Special RSVP classifier [*] Traffic policing (needed for in/egress)

HTB3 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: ceil 1:10 1:20 burst rate burst 1:30

Exemplo 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

Bibliografia 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

Agradecimentos e perguntas???? F I M