GNU/Linux >> Tutoriales Linux >  >> Linux

Linux:encuentre resultados de la ruta predeterminada

El caché de enrutamiento de Linux para IPv4 se eliminó en Linux 3.6 (dejando solo el uso de un LPC-trie optimizado). Por lo tanto, no hay forma de que un sistema Linux con un sistema operativo posterior a 2012 obtenga caché de enrutamiento. estadísticas.

Una manera fácil de etiquetar el uso de la ruta predeterminada es colocar un reino valor en esta ruta. Un paquete que coincida con esta ruta (en lugar de una ruta más específica que utilice la misma puerta de enlace) se identificará como perteneciente al valor de dominio dado. Entonces, si la ruta predeterminada fuera 192.0.2.1 a través de eth0 , la ruta se establecería, por ejemplo, así:

ip route add default via 192.0.2.1 proto static realm 10

O podría cambiar una ruta predeterminada anterior (sin reino) reemplazando add con change , sin interrupciones.

Esta etiqueta de dominio se puede reutilizar al menos en otros dos subsistemas de red:tc filter ... route o nft ... meta rtclassid de nftables .

Control de tráfico

tc es bastante tosco y normalmente funciona a nivel de interfaz. La forma más fácil de adjuntar un filtro es usar el prio qdisc, el qdisc con clase más simple. Sus propiedades de prioridad específicas no se utilizarán realmente. Siguiendo el ejemplo anterior:

tc qdisc add dev eth0 root handle 1: prio

Ahora agregue el filtro con una acción vacía (y con un pref ordenar y continuar control para permitir filtros similares adicionales si es necesario), solo para tener estadísticas:

tc filter add dev eth0 parent 1: protocol ip pref 1 route to 10 action continue

Ahora, cada paquete IP que coincida con la ruta del reino 10 se mostrará en las estadísticas usando tc -s filter show dev eth0 . Ejemplo:

# tc -s filter show dev eth0
filter parent 1: protocol all pref 1 route chain 0 
filter parent 1: protocol all pref 1 route chain 0 fh 0xffff000a to 10 
    action order 1: gact action continue
     random type none pass val 0
     index 1 ref 1 bind 1 installed 48 sec used 4 sec
    Action statistics:
    Sent 12230 bytes 79 pkt (dropped 0, overlimits 0 requeues 0) 
    backlog 0b 0p requeues 0

Nota:ambos reenviados y los paquetes originados localmente coinciden, lo que podría ser un problema para las mediciones.

nftables

nftables aquí no se usará para hacer ningún tipo de firewall, sino solo para incrementar algunos contadores.

nftables instala solo los ganchos de netfilter solicitados, en lugar de todos los disponibles, por lo que generalmente ocupa menos espacio que iptables . Aquí solo necesitamos una regla que coincida con el reino:ese es el rol del rtclassid expresión - con un contador en él. Si es para paquetes originados localmente, simplemente use la salida gancho. El gancho de reenvío coincidirá solo con los paquetes reenviados.

nft add table ip mystats
nft add chain ip mystats forward '{ type filter hook forward priority 0; policy accept; }'
nft add rule ip mystats forward meta rtclassid 10 counter

Lo que daría por ejemplo más adelante:

# nft list ruleset
table ip stats {
    chain forward {
        type filter hook forward priority filter; policy accept;
        meta rtclassid 10 counter packets 1453 bytes 118264
    }
}

La puesta a cero del valor solo es posible si se almacena en un objeto con nombre, el conjunto de reglas sería en su lugar (para cargar con nft -f file ):

table ip mystats {
    counter defaultroutecount { }

    chain forward {
        type filter hook forward priority filter; policy accept;
        meta rtclassid 10 counter name "defaultroutecount"
    }
}

Entonces nft list counters o nft reset counters mostrará (o mostrará y restablecerá) su contenido.


Linux
  1. Cómo encontrar un archivo en Linux

  2. Linux:¿la forma portátil de obtener la dirección de origen de la ruta predeterminada?

  3. Cómo encontrar la IP de la puerta de enlace predeterminada en Linux

  4. Comandos de búsqueda de Linux

  5. Descubra los procesos huérfanos de Linux

Cómo encontrar el nombre de host en Linux

Comando de ruta en Linux

Cómo agregar una ruta en Linux

Cómo encontrar el último inicio de sesión en Linux

Buscar comando en Linux/UNIX

Ejemplos de comandos de ruta en Linux