El nombre de la interfaz de red tiene un signo: ¿qué es?

10

Estoy tratando de buscar información sobre por qué el nombre de una interfaz de red tendría un signo at, pero hay demasiado ruido en los resultados que estoy obteniendo hasta ahora (no tengo la terminología correcta para buscar)

Tengo un contenedor LXC en un host Ubuntu. Dentro del contenedor corro y obtengo:

# ip a
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
       valid_lft forever preferred_lft forever
    inet6 ::1/128 scope host 
       valid_lft forever preferred_lft forever
9: eth0@if10: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP group default qlen 1000
    link/ether 00:16:3e:37:a0:7a brd ff:ff:ff:ff:ff:ff link-netnsid 0
    inet 10.0.3.195/24 brd 10.0.3.255 scope global eth0
       valid_lft forever preferred_lft forever
    inet6 fe80::216:3eff:fe37:a07a/64 scope link 
       valid_lft forever preferred_lft forever

Tenga en cuenta que eth0@if10

¿Cómo se @llama / se refiere esta porción?

En el host no existe tal if10otro contenedor que tengo eth0@if8, debo suponer que esto es parte del manejo de LXC / contenedores de las traducciones de red de alguna manera, pero no había notado que esto existía anteriormente, y me pregunto si es un complemento al puente, que podría existir en otros escenarios?

taifwa
fuente

Respuestas:

6

eth0@if10 medio:

  • su interfaz de red se llama aún simple eth0y las herramientas y aplicaciones de red solo pueden referirse a este nombre, sin el apéndice @. (Como nota al margen, es muy probable que sea un veth peer, pero el nombre no necesita reflejar esto).
  • @if10significa: eth0está conectado a alguna (otra) interfaz de red con índice 10 (decimal). Como también se link-netnsid 0muestra, esta otra interfaz de red está en otro espacio de nombres de red (tipo de pila de IP virtual), presumiblemente el espacio de nombres de red raíz (también conocido como host).

Si lo usa ip link showen su host y no en su contenedor, entonces una de las interfaces de red enumeradas allí debe tener un @9apéndice; el nombre de la interfaz probablemente comenzará con veth.... Esta interfaz es igual a la eth0@10interfaz que solicitó. Las interfaces Veth vienen en pares conectados entre sí, como un cable virtual.

Entonces, @...es un apéndice creado por la ipherramienta, y no forma parte de los nombres de interfaz de red de Linux. El número después de la @ se refiere a otra interfaz de red con el número de índice que se muestra después de la @. Los números de índice se imprimen antes de los nombres de la interfaz de red, como en 9: eth0@if10. La interfaz de red par puede estar en un espacio de nombres de red diferente.

Desafortunadamente, encontrar el espacio de nombres de red correcto para el link-netnsid ..es bastante complicado, vea cómo encontrar el espacio de nombres de red de un índice de pares similar .

TheDiveO
fuente
Gracias. Después de esa explicación, parece que lo que estoy viendo es lo que se llama correctamente "espacios de nombres de red". Ejército de reserva.
taifwa
1
La notación @ también se usa en otras situaciones no relacionadas con los espacios de nombres de red, como las interfaces MACVLAN conectadas a otra interfaz de red física. Es lo link-netnsid 0que indica que está involucrado otro espacio de nombres de red. El @ solo dice que hay otra interfaz involucrada, pero no dónde está esa otra interfaz.
TheDiveO
0

Busque un archivo como 70-persistent-net.rules en /etc/udev/rules.d o en /lib/udev/rules.d. Debe haber una línea con el nombre de la interfaz de red y la dirección MAC. Alterar eso y reiniciar debería cambiar el nombre de la NIC.

bestia de arranque
fuente
No estoy tratando de cambiar el nombre del NIC - Estoy tratando de entender lo que está presente ....
taifwa
Entendido. Pero, ¿hay un archivo de reglas de red persistente con el signo "at" en el nombre de la NIC?
bootbeast
El signo @ en este caso no forma parte del nombre de la interfaz, sino que es un artefacto de la ipherramienta. Simplemente compare con ifconfig... o haga algunos nombres rápidos de interfaz de volcado de secuencia de comandos de Python usando pyroute2. Todos mostrarán nombres de interfaz de red reales no adornados.
TheDiveO