veo en estopregunta, la tabla de enrutamiento tiene:
192.168.1.1/32 link#4 UCS 2 0 en0
openwrt.lan 46:94:fc:63:fc:7 UHLWIir 11 3610 en0 1200
192.168.1.125/32 link#4 UCS 2 0 en0
¿Qué significa tener una máscara de subred /32
y en ese caso cuál será su ID de red? ¿Puede existir un host sin una ID de red en caso de que consideremos lo anterior como un host único?
Hasta donde yo sé, el ID de red y la dirección IP asignada a un host en esa red son dos cosas diferentes. 192.168.0.0 es un ID de red y si su subred es 255.255.255.0, entonces los hosts de esta red pueden ser 192.168.0.1 - 192.168.0.254. En este caso, ¿cómo puede existir un host sin una ID de red?
Respuesta1
Hay un poco de confusión aquí; que /32 no se refiere al tamaño de ninguna (sub)red, sino al rango de direcciones al que se aplica esa entrada particular de la tabla de enrutamiento. Por lo general, los dos son iguales (porque enrutas una red o subred como una unidad, ¿verdad?), pero macOS hace las cosas un poco diferentes para otros hosts en la misma red local. Permíteme agregar algunas líneas antes de las que citaste:
Destination Gateway Flags Refs Use Netif Expire
default openwrt.lan UGSc 10 0 en0
...
192.168.1 link#4 UCS 2 0 en0
192.168.1.1/32 link#4 UCS 2 0 en0
openwrt.lan 46:94:fc:63:fc:7 UHLWIir 11 3610 en0 1200
192.168.1.125/32 link#4 UCS 2 0 en0
Tenga en cuenta que 192.168.1 (abreviatura de 192.168.1.0/24) se enruta a través de en0 (también conocido como enlace n.° 4); no a través de ninguna puerta de enlace, sino a través de la propia interfaz. Esta es la red en la que se encuentra la Mac. 192.168.1.1 y 192.168.1.125 son direcciones específicasdentro de ese rango de red. Si compara esas entradas /32 con la entrada 192.168.1, son básicamente duplicados redundantes; Dicen lo mismo, sólo sobre direcciones específicas en lugar de todo el rango de red.
No sé por qué macOS crea estas entradas redundantes específicas de direcciones, pero probablemente esté relacionado con otra cosa que puede ver en la lista anterior: macOS enumera sus entradas de la tabla ARP en la tabla de enrutamiento. La entrada "openwrt.lan" anterior (que estoy bastante seguro es en realidad 192.168.1.1, listada solo por nombre en lugar de número) dice que está enrutada a través de en0 a la dirección MAC 46:94:fc:63:fc:7 .
Entonces, lo que está viendo en la lista de rutas es una combinación de rutas de red reales (como las entradas "predeterminadas" y 192.168.1) y entradas por host (las entradas /32 y dirigidas a MAC).
Respuesta2
/32
direccionamiento
En términos generales, /32
significa que la red tiene una sola dirección IPv4 y todo el tráfico irá directamente entre el dispositivo con esa dirección IPv4 y la puerta de enlace predeterminada. El dispositivo no podrá comunicarse con otros dispositivos en la subred local.
Hay un par de posibles razones para esto que he visto. Podría ser:
- Un servidor web que sirve a varios sitios y cada sitio está vinculado a una dirección IPv4 específica.
- Adirección de bucle invertidoutilizado para pruebas.
- Un truco de seguridad de red: aislar la máquina con la máscara de red /32 del resto de los sistemas de la subred. Esto solo permite el tráfico a destinos definidos explícitamente por rutas estáticas en el sistema. Esto se puede utilizar, por ejemplo, para desmantelar un sistema.
Identificación de red
ElIdentificación de redparte de una dirección IP está determinada por la máscara de subred. Por ejemplo:
- Una
/24
red IPv4 tiene una máscara de subred de1111.1111.1111.0000
, lo que significa que los primeros 3 octetos son el ID de la red y el último octeto se utiliza para asignar los ID del host (256 ID disponibles, aunque normalmente algunos están reservados). - Una
/16
red IPv4 tiene una máscara de subred de1111.1111.0000.0000
, lo que significa que los primeros 2 octetos son el ID de la red y el último octeto se utiliza para asignar los ID del host (65536 ID disponibles, aunque normalmente algunos están reservados).
En el caso de /32
, esto no se aplica ya que la dirección es tanto un ID de red como un ID de host. /31
Las direcciones también son ID de host sin ninguna dirección 0 reservada.
Respuesta3
Es solo valor CIDR. Puedes aprender más enaquípara CIDR.
TL;DR
Una dirección de red CIDR tiene este aspecto en IPv4:
192.30.250.00/18
"192.30.250.0" es la dirección de red en sí y "18" dice que los primeros 18 bits son la parte de red de la dirección, dejando los últimos 14 bits para direcciones de host específicas. máscara de subred
Respuesta4
Lo que estás viendo no son máscaras de subred.. Son indicaciones de la longitud de los prefijos de la tabla de enrutamiento¹.
Una implementación ingenua de una tabla de enrutamiento enumeraría todas las direcciones IP posibles para que, dada cualquier dirección IP, buscara exactamente esa y recuperara la información de enrutamiento² asociada a ella.
Es evidente que se necesita algún tipo de compresión. La naturaleza de la información de enrutamiento es que es probable que las direcciones adyacentes usen la misma información, por lo que podemos usar una forma deárbol de raízpara comprimirlos juntos. Así es, brevemente, cómo funciona.
Dados los números del 0 al 7, podemos representarlos en binario de la siguiente manera:
0 000
1 001
2 010
3 011
4 100
5 101
6 110
7 111
Ahora, si tenemos dos entradas en la tabla de enrutamiento, una para las direcciones 0 y 1, y otra para las direcciones 2 y 3, podemos almacenarlas bajo los prefijos binarios que comparten. Si usamos a .
para indicar el bit "no utilizado" después del final del prefijo, tenemos 00.
para el rango 0-1 y
01.
para el rango 2-3.
Una forma estándar de representar esto es con el número más bajo del rango seguido de la longitud del prefijo; en este caso estos serían 0/2
para el rango 0-1 y 2/2
para el rango 2-3.
Pero, ¿qué sucede si queremos buscar la información de ruta para la dirección 6? Normalmente agregaríamos un conjunto "predeterminado" de información de enrutamiento con prefijo 0/0
, es decir, que coincida con cualquier bit y luego, cuando buscamos, buscamos la información más específica, es decir, el prefijo coincidente más largo que podamos encontrar. Entonces, la tabla de enrutamiento completa que acabamos de describir es:
0/2 00. Matches addresses 1 and 2.
2/2 01. Matches addresses 3 and 4.
0/0 ... Matches any address.
Las máscaras de subred se pueden describir con prefijos de la misma manera, por lo que este esquema se utiliza a menudo para ello. Pero tenga en cuenta que sólo porque este esquemapoderusarse para describir subredes no significa que se usesolopara describir subredes.
Como ejemplo de que los prefijos de la tabla de enrutamiento no son subredes, podría tener dos interfaces de red conectadas a la misma red, digamos, 192.168.2.0/24. (Esto podría implementarse conectando dos tarjetas de red separadas al mismo conmutador, cada una con su propio cable). Luego podría configurar la tabla de enrutamiento para "equilibrar" el tráfico saliente a través de las dos interfaces usando dos entradas de la tabla de enrutamiento:
192.168.2.0/25 eth0 # range ...2.0 to ...2.127
192.168.2.128/25 eth1 # range ...2.128 to ...2.255
Esto enviaría los paquetes destinados a las direcciones 0-127 de esa red eth0
, pero los paquetes destinados a las direcciones 128-255 de esa red eth1
. Esta es una mala forma de hacerlo (por razones que no explicaré aquí), pero demuestra cómo los prefijos de enrutamiento y las direcciones de red pueden no coincidir.
¹ El artículo de Wikipedia sobretablas de enrutamientodesafortunadamente dice que el campo de prefijo contiene el "ID de red". Si bien esto puede ser cierto en ciertas implementaciones específicas de tablas de enrutamiento, no siempre es una ID de red en el caso general, como se ve tanto en el ejemplo que proporciona como en mi ejemplo más adelante en esta respuesta.
² Esta información de enrutamiento generalmente incluye cosas como qué interfaz usar, qué enrutador contactar en esa interfaz, si corresponde, la dirección MAC de un host para los hosts directamente accesibles a través de esa interfaz, qué dirección de origen debemos poner en el paquete si el host tiene múltiples direcciones de origen, información de seguridad, etc. Existe una gran variedad de datos que podrían estar allí, pero ninguno de ellos es importante para los propósitos de esta discusión, ya que estamos hablando solo de cómo buscar el conjunto de datos correcto para una dirección determinada, no de lo que hay en el conjunto de datos en sí. .