Tengo una máquina Linux con kernel 3.2.0-23-generic y tiene una regla con prioridad 220 en RPDB que apunta a la tabla de enrutamiento denominada "220":
T42:~# ip rule show
0: from all lookup local
220: from all lookup 220
220: from all lookup 220
32766: from all lookup main
32767: from all lookup default
T42:~# ip route show table 220
T42:~#
¿Es posible ver de dónde vino esta regla? ¿Cuál es el punto de la tabla de enrutamiento vacía? Por último, pero no menos importante, ¿cómo puede haber varias reglas con la misma prioridad?
Respuesta aceptada:
¿Es posible ver de dónde viene esta regla?
No en el sentido de "¿dónde puedo buscar el origen de esta regla?".
Hay varias formas de investigar el problema:la más evidente es grep
todos los scripts de inicio en su sistema para ver cuál usa ip rule
en absoluto, y luego empezar a leerlos. O puede iniciar su sistema en modo de usuario único e iniciar los servicios uno por uno, desde la línea de comandos, usando strace
. O puede iniciar su sistema con bash
como init (línea de comando del núcleo:init=/bin/bash
), y luego puede ejecutar el verdadero /sbin/init
con strace
. Estas son formas bastante avanzadas de rastrear las actividades de inicio, puede que no sea trivial saber qué scripts ejecutar...
No hay forma de saber de dónde provino la regla específica si fue un administrador o un pirata informático que la ingresó manualmente, y no un script presente en el sistema.
¿Cuál es el punto de la tabla de enrutamiento vacía?
Nada, hasta que alguien comience a llenar esa tabla. Esto podría ser un demonio, ingresando inicialmente la regla para su propia tabla y luego cambiando dinámicamente el contenido de su propia tabla de enrutamiento.
¿Cómo puede haber varias reglas con la misma prioridad?
Instrucciones de la suite de utilidades IPROUTE2
Prioridad PREFERENCIA:prioridad de esta regla. Cada regla debe tener un valor de prioridad único establecido explícitamente. La prioridad es un número de 32 bits sin firmar, por lo que tenemos 4294967296 reglas posibles.
¡ADVERTENCIA!
Por razones históricas, ip rule add no requiere ningún valor de prioridad y permite que el valor de prioridad no sea único. Si el usuario no había proporcionado un valor de prioridad, el kernel le asignaba uno. Si el usuario solicitaba la creación de una regla con un valor de prioridad que ya existía, entonces el kernel no rechazaba la solicitud y agregaba la nueva regla antes que todas las reglas anteriores del sistema. misma prioridad. Esto es un error en el diseño actual, nada más. Debería estar solucionado para cuando lea esto, así que no confíe en esta función. Siempre debe usar prioridades explícitas al crear reglas.