Вы находитесь на странице: 1из 57

Linux Networking

Routing Policy Data Base

RPDB
Teora y Ejemplos

jsancheznav@gmail.com

Juan Snchez Diciembre 2009

ndice
Arquitectura Conceptos bsicos ip link ip address ip route ip rule Implementaciones

jsancheznav@gmail.com

Arquitectura

jsancheznav@gmail.com

Conceptos bsicos

TCP/IP
Qu representa una direccin IP?
Un host Una NIC Un router

=> NO =>

Bounding Balanceo Multi IP

Un conjunto de servicios

=> S

jsancheznav@gmail.com

Conceptos bsicos

CIDR Classless Inter-Domain Routing


Permite agrupar direcciones para routing Mejora performance routing Minimizan tamao tablas de routing Supernetting

Wikipedia

192.168.96.0/20
jsancheznav@gmail.com

Conceptos bsicos

Partes de RPDB +
Usado

Address
Identificacin de un Conjunto de servicios

Antiguo

Route
Identificacin de Conjunto de Direcciones Nuevo

Rule

jsancheznav@gmail.com

Conjunto de ACL aplicadas a las rutas

Conceptos bsicos

Tablas
Conjunto de reglas Mximo 255 tablas El sistema crea por defecto y las usa Los antiguos comandos las utizan de forma transparente /etc/iproute2/rt_tables # reserved values
255 local 254 main 253 default 0 unspec # local #1 inr.ruhep
jsancheznav@gmail.com

Conceptos bsicos

Tablas
Tabla Descripcin DEFAULT (253) Tabla vacia y reservada para post-proceso si no existen reglas que procesen el paquete. Esta ruta puede ser borrada. MAIN (254) Tabla de enrutado normal de rutas non-policy. Esta ruta puede ser borrada y sobreescrita LOCAL (255) Tabla de alta prioridad de control de rutas de direcciones locales o broadcast Esta ruta no se puede borrar ni sobreescribir
Una regla (rule) pertenece a una tabla Una tabla puede contener 1 o mas reglas Una tabla desaparece si no contiene reglas

jsancheznav@gmail.com

Conceptos bsicos

iproute2 commands
Capa Enlace de datos / NAL Red / Internet Transport Aplicacin Address Route Rule Parte RPDB Comando ip link ip neighbour ip address ip route ip rule ip tunnel ip monitor

jsancheznav@gmail.com

Conceptos bsicos

iproute2 Ficheros configuracin


/etc/iproute2/*
Fichero rc_tables rc_scopes rc_protos Contenido Tablas creadas y definidas mbitos de actuacin. Utilizado por scope Lista de protocolos utilizados por protocol

jsancheznav@gmail.com

Comandos iproute2

ip link
Comando
ip link set DEVICE { up | down | arp { on | off } | dynamic { on | off } | multicast { on | off } | txqueuelen PACKETS | name NEWNAME | address LLADDR | broadcast LLADDR | mtu MTU } ip link show [ DEVICE ]
jsancheznav@gmail.com

Comandos iproute2

ip link
Comando
dev NAME => Nombre del dispositivo arp on|off => Cambia flag NOARP multicast on|off => Cambia flag MULTICAST dynamic on|off => Cambia flag DYNAMIC txqueuelen <num> => Tamao cola TX mtu <num> => Conf tamao unidad transf address <dir> => Cambia MAC broadcast <dir> => Cambia broadcast MAC peer <dir> => Cambia MAC peer para POINTOPOINT

jsancheznav@gmail.com

Comandos iproute2

ip link
Ejemplos
ip link set dummy address 000000000001 ip link set dummy up ip link show ip s link show eth0

jsancheznav@gmail.com

Comandos iproute2

ip link
Ejemplos ip s link show eth0
Flags MTU T.Cola

2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UNKNOWN qlen 1000 link/ether 00:0c:29:69:b5:97 brd ff:ff:ff:ff:ff:ff RX: bytes packets 0 0 0 0

errors
0 0

dropped overrun mcast dropped carrier collsns 0

TX: bytes packets 1674 21 0

errors
0 0

Campos a vigilar
jsancheznav@gmail.com

Comandos iproute2

ip link show
Flags
Etiqueta UP / DOWN LOWER_UP LOOPBACK BROADCAST POINTOPOINT NOARP
jsancheznav@gmail.com

Descripcin Dispositivo activado o no para recibir Activado pero cable desconectado Dispositivo de loopback, que por lo tanto no se comunica con otros hosts. Dispositivo puede enviar a otros hosts Comunicacin punto a punto entre dispositivos No se necesita resolucin ARP ya que se conoce.

Comandos iproute2

ip link show
Flags
Etiqueta PROMISC DYNAMIC MULTICAST SLAVE Descripcin Se reciben todos los paquetes. Usado en broadcast links, monitorizacin y bridging. Dispositivo creado y borrado dinamicamente Envo a mas de un destinatario. Broadcast es un Dispositivo es parte de un dispositivo bounded (ver)

jsancheznav@gmail.com

Comandos iproute2

ip link
Equivalencias
Antiguo ifconfig eth0 up ifup eth0 ifconfig eth0 down ifdown eth0 ifconfig eth0 mtu 1450 ------ifconfig eth0 txqueuelen 1000 Nuevo ip link set eth0 up ip link set eth0 down ip link set eth0 mtu 1450 ip link set ppp0 dynamic on ip link set eth0 name ethADSL ip link set eth0 txqueuelen 1000

jsancheznav@gmail.com

Comandos iproute2

ip address
Comando
ip addr { add|del} IFADDR dev STRING ip addr { show|flush} [ dev STRING ] [ scope SCOPE-ID ][ to PREFIX ] [ FLAG-LIST ] [ label PATTERN ] IFADDR := PREFIX | ADDR peer PREFIX [ broadcast ADDR ] [ anycast ADDR ] [ label STRING ] [ scope SCOPE-ID ] SCOPE-ID := [ host | link | global | NUMBER ] FLAG-LIST := [ FLAG-LIST ] FLAG FLAG := [ permanent | dynamic | secondary | primary | tentative | deprecated ]
jsancheznav@gmail.com

Comandos iproute2

ip address
Broadcast address
+ => Broadcast add igual a poner 1 en parte host - => Broadcast add igual a poner 0 en parte host

jsancheznav@gmail.com

Comandos iproute2

ip address
Scope
Etiqueta global link host Descripcin La direccin es vlida globalmente La direccin es vlida en la LAN La direccin es vlida solo dentro del host, por ejemplo 127.0.0.1 ip addr add 127.0.0.1/8 dev lo brd + scope host

jsancheznav@gmail.com

Comandos iproute2

ip address
Ejemplos
ip addr add 127.0.0.1/8 dev lo brd + scope host ip addr add 10.0.0.1/24 brd + dev eth0 ip addr del 127.0.0.1/8 dev lo ip s addr show ip -4 addr flush label "eth*

jsancheznav@gmail.com

Comandos iproute2

ip address
Ejemplos de multidireccin
ip addr add 10.1.1.1/24 dev eth0 ip addr add 10.1.1.64/32 dev eth0 ip addr add 10.1.1.200/16 dev eth0 ip addr list dev eth0
CUIDADO: No es lo mismo que ifconfig eth0 10.1.1.1/24 ifconfig eth0:1 10.1.1.64/32 ifconfig eth0:2 10.1.1.200/16
jsancheznav@gmail.com

Comandos iproute2

ip address
Equivalencias
Antiguo ifconfig eth0 192.168.1.12/24 ----Nuevo ip address add 192.168.1.12/24 dev eth0 ip address add 192.168.1.12/24 dev eth0 ip address add 192.168.2.12/24 dev eth0

jsancheznav@gmail.com

Comandos iproute2

ip route
Comando
ip route { list | flush } SELECTOR ip route get ADDRESS [ from ADDRESS iif STRING ] [ oif STRING ] [ tos TOS ] ip route { add | del | change | append | replace | monitor } SELECTOR := [ root PREFIX ] [ match PREFIX ] [ exact PREFIX ] [ table TABLE_ID ] [ proto RTPROTO ] [ type TYPE ] [ scope SCOPE ] ROUTE := NODE_SPEC [ INFO_SPEC ] NODE_SPEC := [ TYPE ] PREFIX [ tos TOS ] [ table TABLE_ID ] [ proto RTPROTO ] [ scope SCOPE ] [ metric METRIC ] INFO_SPEC := NH OPTIONS FLAGS [ nexthop NH ]... NH := [ via ADDRESS ] [ dev STRING ] [ weight NUMBER ] NHFLAGS OPTIONS := FLAGS [ mtu NUMBER ] [ advmss NUMBER ] [ rtt NUMBER ] [ rttvar NUMBER ] [ window NUMBER] [ cwnd NUMBER ] [ ssthresh REALM ] [ realms REALM ] TYPE := [ unicast | local | broadcast | multicast | throw | unreachable | prohibit | blackhole | nat ] TABLE_ID := [ local | main | default | all | NUMBER ] SCOPE := [ host | link | global | NUMBER ] FLAGS := [ equalize ] NHFLAGS := [ onlink | pervasive ] RTPROTO := [ kernel | boot | static | NUMBER ] jsancheznav@gmail.com ROUTE

Comandos iproute2

ip route
Tipos de rutas
Etiqueta unicast Descripcin La ruta describe caminos buenos unreachab El destino es inalcanzable y se devuelve mensaje ICMP host unreachable EHOSTUNREACH (ICMP Tipo 3 Cdigo 1) le blackhole prohibit local broadcast throw nat El destino es inalcanzable y el paquete se descarta sin mensaje de error, salvo para envos locales que se devuelve EINVAL. El destino es inalcanzable y se devuelve mensaje ICMP communication admin prohibited - EACCESS(ICMP Tipo 3 Cdigo 13) El destino es el propio host y son reenviados localmente El destino son direcciones broadcast y enviados a la LAN como broadcast Se rompe la busqueda de rutas y se devuelve mensaje ICMP net unreachable ENETUNREACH (ICMP Tipo 3 Cdigo 0) El destino son direcciones externas que requieren NAT antes de ser enviadas

Comandos iproute2

ip route
Tipos de protocolo
Etiqueta kernel boot static redirect ra Descripcin Ruta creada por el kernel durante la autoconfiguracin Ruta creada en boot time. Si se arranca routed, estas rutas se borrarn Ruta aadida manualmente para reescribir rutas dinmicas Ruta aadida divido a una redireccin ICMP Ruta aadida por el protocolo Router Discovery

jsancheznav@gmail.com

Comandos iproute2

ip route
Multi camino
nexthop
Permite crear rutas alternativas nexthop via ROUTER dev DISP_SALIDA weigh PESO

equalize
Paquete a paquete se decide de forma aleatoria una ruta Necesario si bloqueo en una ruta

jsancheznav@gmail.com

Comandos iproute2

ip route
Ejemplos
ip route add 192.168.20.0/24 via 192.168.20.1 dev eth0 ip route delete default ip route show ip route flush ip route add default equalize scope global nexthop via 192.168.10.1 dev eth0 nexthop via 192.168.20.1 dev eth1 ip route add nat 192.168.20.1 via 192.168.30.1 ip -4 route flush scope global type unicast

jsancheznav@gmail.com

Comandos iproute2

ip route
Ejemplos
ip route get 192.168.20.8 ip route get 192.168.40.3 from 192.168.20.2 iif eth0 ip route get 192.168.40.3 from 192.168.20.2 iif eth0 oif eth1 cache

jsancheznav@gmail.com

local => Destino Local (loopback) src-direct => Destino conectado directamente reject => La ruta es incorrecta equalize => Redireccin de forma aleatoria src-nat, dst-nat => Nat de origen o destino

Comandos iproute2

ip rule
Comando
ip rule [ list | add | del ] SELECTOR ACTION SELECTOR := [ from PREFIX ] [ to PREFIX ] [ tos TOS ] [ fwmark FWMARK ] [ dev STRING ] [ pref NUMBER ] ACTION := [ table TABLE_ID ] [ nat ADDRESS ] [ prohibit | reject | unreachable ] [ realms [SRCREALM/]DSTREALM ] TABLE_ID := [ local | main | default | NUMBER ]

jsancheznav@gmail.com

Comandos iproute2

ip route
Ejemplos
ip rule add from 192.168.20.0/24 table trouter_shdsl priority 100 ip rule add from 192.168.20.3 nat 192.168.20.1 table 254 prio 120 ip rule delete priority 32767 ip rule show

jsancheznav@gmail.com

Implementaciones

Gestin de Direcciones
Consideraciones previas
Un dispositivo puede tener ms de una IP Un dispositivo puede estar fragmentado o no La primera IP de una red es la primaria del dispositivo, la siguientes son secundarias y dependientes

jsancheznav@gmail.com

Implementaciones

Flujo paquetes

jsancheznav@gmail.com

Implementaciones

Marcado de paquetes
Consideraciones previas
Marcado de nivel de preferencia
iptables t mangle A PREROUTING p <prot> -dport <dport> -j TOS --set-tos 0x00

Marcado de tipo de paquete


iptables t mangle A PREROUTING p <prot> -dport <dport> -j MARK --set-mark 2

jsancheznav@gmail.com

Implementaciones

Marcado de paquetes
Consideraciones previas
TOS vs MARK
TOS => Se propaga MARKET => Kernel

Valores TOS
0x10 => Retraso Mnimo => ssh, telnet 0x00 => Servicio Normal => resto 0x08 => Rendimiento Mximo => www, ftp 21 0x04 => Fiabilidad Mxima => dns 0x02 => Coste mnimo => smtp jsancheznav@gmail.com

Implementaciones

Marcado de paquetes
Consideraciones previas
Bits de TOS
1000 => Minimizar Retraso 0100 => Maximizar Transferencia 0010 => Maximizar Fiabilidad 0001 => Minimizar coste monetario 0000 => Servicio Normal

jsancheznav@gmail.com

Implementaciones

QoS
Cola pfifo_fast
Utiliza tcnica FIFO No realiza ningn cambio en los paquetes Tiene 3 repositorios o bandas (0, 1 y 2), siendo el 0 el de mayor prioridad y el 2 el de menor. No se trata ningn paquete si existe un paquete en la banda de mayor prioridad Basado en TOS
jsancheznav@gmail.com

Implementaciones

QoS
Cola pfifo_fast
Banda 0
Subnivel 0

Banda 1
Subnivel 0

Banda 2
Subnivel 1 0x02

0x10 0x12 0x14 0x16

0x00 0x04 0x06

Subnivel 4

0x18 0x1a 0x1c 0x1e

Subnivel 2 0x08 0x0a 0x0c 0x0e

jsancheznav@gmail.com

Implementaciones

QoS
Cola pfifo_fast
Para establecer el tamao de la cosa utilizar txqueuelen con ip link o ifconfig

jsancheznav@gmail.com

Implementaciones

Gestin
Caso 1
Asignar 3 IP de diferentes redes a eth0 con ip Extraer configuracin eth0 con ifconfig y ip Borrar IP 2 asignada a eth0 Extraer configuracin eth0 usando ifconfig y ip Borrar IP primaria asignada a eth0 Extraer configuracin eth0 usando ifconfig y ip

jsancheznav@gmail.com

Implementaciones

Gestin
Caso 2
ip address add 192.168.10.1/24 brd + dev eth0 ip address add 192.168.20.1/24 brd + dev eth0 ip address add 192.168.30.1/24 brd + dev eth0 ip address show dev eth0 ifconfig ip address delete 192.168.20.1 dev eth0 ip address show dev eth0 ifconfig jsancheznav@gmail.com

Implementaciones

Gestin
Caso 2
Asignar 3 IP de diferentes redes a eth0 usando ifconfig Extraer configuracin eth0 usando ip Borrar IP 2 asignada a eth0 Extraer configuracin eth0 usando ip Borrar IP primaria asignada a eth0 Extraer configuracin eth0 usando ip
jsancheznav@gmail.com

Implementaciones

Gestin
Caso 1
ifconfig eth0 192.168.10.1/24 ifconfig eth0:1 192.168.20.1/24 ifconfig eth0:2 192.168.30.1/24 ifconfig eth0:2 delete 192.168.30.1 ifconfig eth0 ifconfig eth0 delete 192.168.10.1/24 ifconfig

jsancheznav@gmail.com

Implementaciones

Gestin
Caso 3
Borrar todas las rutas de eth0 Crear todas las rutas directas para 192.168.10.2, 192.168.20.2 y 192.168.30.2. Crear la ruta por defecto en 192.168.10.1 o 192.168.20.1 o 192.168.30.1

jsancheznav@gmail.com

Implementaciones

Gestin
Caso 3
ip address flush dev eth0 ip route flush dev eth0 ip address add 192.168.10.2/24 brd + dev eth0 ip address add 192.168.20.2/24 brd + dev eth0 ip address add 192.168.30.2/24 brd + dev eth0 ip route show ip route add 192.168.10.0/24 proto kernel scope link dev eth0 src 192.168.10.1 ip route add 192.168.20.0/24 proto kernel scope link dev eth0 src 192.168.20.1 ip route add 192.168.30.0/24 proto kernel scope link dev eth0 src 192.168.30.1 ip route add default scope global nexthop via 192.168.10.1 nexthop via 192.168.20.1 nexthop via 192.168.30.1

jsancheznav@gmail.com

Implementaciones

Gestin
Caso 4
Crear un ruta que descarte todos los paquetes que se redirijan a 192.168.20.0/24

jsancheznav@gmail.com

Implementaciones

Gestin
Caso 4
ip route add blackhole 192.168.20.0/24

jsancheznav@gmail.com

Implementaciones

Gestin
Caso 5
Crear la ruta por defecto en 192.168.10.1 o 192.168.20.1 o 192.168.30.1 por paquetes Crear la ruta por defecto en 192.168.10.1 o 192.168.20.1 o 192.168.30.1 asignando prioridad al primera ruta

jsancheznav@gmail.com

Implementaciones

Gestin
Caso 5
ip route add default equalize scope global nexthop via 192.168.10.1 nexthop via 192.168.20.1 nexthop via 192.168.30.1 ip route add default scope global nexthop via 192.168.10.1 weight 100 nexthop via 192.168.20.1 weight 10 nexthop via 192.168.30.1 weight 2

jsancheznav@gmail.com

Implementaciones

Gestin
Caso 6
Crear una regla en tabla main para que permita que:
De 192.168.10.0/24 a 192.168.20.0/24 permitido De 192.168.10.0/24 a 0/0 descartado De 192.168.30.0/24 a 192.168.20.0/24 permitido De 192.168.30.0/24 a 192.168.40.0/24 permitido De 192.168.30.0/24 a 192.168.30.0/24 descartado

jsancheznav@gmail.com

Implementaciones

Gestin
Caso 6
ip rule add from 192.168.10.0/24 to 192.168.20.0/24 priority 1600 ip rule add from 192.168.10.0/24 to 0/0 priority 1601 blackhole ip rule add from 192.168.30.0/24 to 192.168.20.0/24 priority 1700 ip rule add from 192.168.30.0/24 to 192.168.40.0/24 priority 1700 ip rule add from 192.168.30.0/24 to 192.168.10.0/24 priority 1702 blackhole

jsancheznav@gmail.com

Implementaciones

Gestin
Caso 7
Crear 2 tablas una para cada router Asignar el trfico de 192.168.30.0/24 a la tabla del router_adsl (192.168.10.1) Asignar el trfico de 192.168.40.0/24 a la tabla del router_shdsl (192.168.20.1) Asignar el resto de trfico por router_adsl No permitir los paquetes de 192.168.10.5 a 192.168.30.0/24 No permitir los paquetes de 192.168.20.5 a 192.168.40.0/24

jsancheznav@gmail.com

Implementaciones

Gestin
Caso 7
echo 1 trouter_adsl >> /etc/iproute/rt_tables echo 2 trouter_shdsl >> /etc/iproute/rt_tables ip route add default via 192.168.10.1 proto static table trouter_adsl ip route add add 192.168.30.0/24 via 192.168.10.1 proto static table trouteradsl ip route add add 192.168.40.0/24 via 192.168.20.1 proto static table troutershdsl ip rule add from 192.168.10.5/32 to 192.168.30.0/24 prio 1000 table trouteradsl blackhole ip rule add from 192.168.20.5/32 to 192.168.40.0/24 prio 1001 table trouteradsl blackhole ip route flush cache

jsancheznav@gmail.com

Implementaciones

Gestin
Caso 8
Redirigir todo el trfico marcado como 1 al router_adsl y su tabla trouter_adsl

jsancheznav@gmail.com

Implementaciones

Gestin
Caso 8
iptables A PREROUTING i eth0 t mangle j MARK --set-mark 1 echo 1 trouter_adsl >> /etc/iproute/rt_tables ip route add default via 192.168.10.1 proto static table trouter_adsl ip rule add fwmark 1 table trouter_adsl ip route flush cache

jsancheznav@gmail.com

Implementaciones

Gestin de Direcciones
Caso 9
Marcar con TOS todo tcp/25 para que salga con baja prioridad Marcar con TOS todo tcp/22 para que salga con alta prioridad

jsancheznav@gmail.com

Implementaciones

Gestin
Caso 9
iptables A POSTROUTING p tcp --dport 25 t mangle j TOS --set-tos 0x0 iptables A POSTROUTING p tcp --dport 25 t mangle j TOS --set-tos 0x16

La cola pfifo-fast est activada por defecto y tiene 3 bandas siendo la 0 la de mayor prioridad.

jsancheznav@gmail.com

Вам также может понравиться