Имя сетевого интерфейса имеет знак at - что это?

Имя сетевого интерфейса имеет знак at - что это?

Я пытаюсь найти информацию о том, почему имя сетевого интерфейса содержит символ at, но в результатах, которые я получаю, слишком много шума (мне не хватает правильной терминологии для поиска).

У меня есть контейнер LXC на хосте Ubuntu. Внутри контейнера я запускаю и получаю:

# 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

Обратите внимание, чтоeth0@if10

Как называется эта @часть/к чему она относится?

На хосте такого нет if10, но у другого контейнера, который у меня есть, есть eth0@if8... Я должен предположить, что это часть обработки сетевых трансляций LXC/контейнерами, но я раньше не замечал этого и интересно, является ли это дополнением к мостовому соединению, которое может существовать в других сценариях?

решение1

eth0@if10означает:

  • Ваш сетевой интерфейс по-прежнему имеет простое имя, eth0и сетевые инструменты и приложения могут ссылаться только на это имя, без добавления @. (Кстати, это, скорее всего, одноранговый узел veth, но имя не обязательно должно это отражать.)
  • @if10означает: eth0подключен к некоторому (другому) сетевому интерфейсу с индексом 10 (десятичный). Поскольку также показан link-netnsid 0, этот другой сетевой интерфейс находится в другом сетевом пространстве имен (вид виртуального стека IP), предположительно, корневом (также известном как хост) сетевом пространстве имен.

Если вы используете ip link showв своем хосте, а не в своем контейнере, то один из сетевых интерфейсов, перечисленных там, должен иметь приложение @9; имя интерфейса, вероятно, будет начинаться с veth.... Этот интерфейс является одноранговым для eth0@10интерфейса, о котором вы спрашивали. Интерфейсы Veth поставляются парами, соединенными друг с другом, как виртуальный кабель.

Итак, @...это приложение, созданное инструментом ip, и оно не является частью имен сетевых интерфейсов Linux. Число после @ относится к другому сетевому интерфейсу с индексным номером, который отображается после @. Индексные номера печатаются перед именами сетевых интерфейсов, например, в 9: eth0@if10. Интерфейс одноранговой сети может находиться в другом сетевом пространстве имен.

К сожалению, поиск правильного сетевого пространства имен для link-netnsid ..довольно сложен, см.как найти сетевое пространство имен veth peer ifindex.

ОБНОВЛЕНИЕ 2023:Siemens теперь выпустилаEdgesharkкак OSS, которая предоставляет удобный графический веб-интерфейс, отображающий взаимосвязи сетевых интерфейсов в контейнерах, хосте и т. д.

решение2

Проверьте наличие файла типа 70-persistent-net.rules в /etc/udev/rules.d или в /lib/udev/rules.d. Там должна быть строка с именем сетевого интерфейса и MAC-адресом. Изменение этого и перезагрузка должны переименовать NIC.

Связанный контент