Академический Документы
Профессиональный Документы
Культура Документы
RPDB
Teora y Ejemplos
jsancheznav@gmail.com
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 =>
Un conjunto de servicios
=> S
jsancheznav@gmail.com
Conceptos bsicos
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
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
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
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
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
Subnivel 4
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