Как я могу создать псевдоним для сетевого устройства?

13

Я пытаюсь заставить работать определенную часть программного обеспечения, которая использует менеджер лицензий, который не заметил, что более новые дистрибутивы Linux больше не называют свои сетевые устройства eth0. Он пытается проверить MAC-адрес, но, поскольку мой сетевой адаптер вызывается ens1на Centos 7, это не работает.

Производитель этого программного обеспечения уже исправил это на другом компьютере, и я хотел бы понять, как они это сделали. Они создали какой-то псевдоним, ens1чтобы менеджер лицензий мог найти его eth0снова.

Псевдоним вообще не отображается, если я его вижу ifconfig -a, но он виден при явном вызове ifconfig eth0. С помощью ip linkкоманды это видно как следующее:

eth0@ens1: <BROADCAST,MULTICAST> mtu 1500 qdisc noop state DOWN mode DEFAULT
link/ether [mac address] brd ff:ff:ff:ff:ff:ff

Что именно они здесь сделали, и как я могу воссоздать этот псевдоним на другом компьютере?

Злой ученый
источник
2
Возможно, они использовали ip link set ens1 name eth0@ens1? Я сомневаюсь, что переживет такую ​​перезагрузку, но, возможно, вы можете внести изменения в DEVICEстроку ifcfg-ens1или что-то? Вы можете видеть оба eth0@ens1и ens1в своем ip linkсписке, или просто новое имя?
Эрик Ренуф
1
Я только что проверил это на виртуальной машине - ip link set ens1 name eth0@ens1показывает новое имя ifconfig -aтоже. и ip link set ens1 alias eth0показывает alias eth0на отдельной строке при запуске ip link.
Cas

Ответы:

5

Это, вероятно, сделано с помощью macvlanфункции. Это позволяет добавлять виртуальные интерфейсы Ethernet поверх существующего аппаратного интерфейса. В вашем случае это можно было бы сделать так:

ip link add link ens1 name eth0 type macvlan

По умолчанию новый интерфейс получает случайно выбранный локально управляемый одноадресный MAC-адрес. В качестве альтернативы вы можете указать MAC-адрес с помощью address <MAC>.

starblue
источник
1

Вы можете использовать правило udev, чтобы переименовать NIC обратно в старый eth0стиль.

Например, отредактируйте /etc/udev/rules.d/70-persistent-net.rulesстроку так:

SUBSYSTEM=="net", ACTION=="add", DRIVERS=="?*", ATTR{address}=="xx:xx:xx:xx:xx:xx", ATTR{type}=="1", KERNEL=="eth*", NAME="eth0"

где xx:xx:xx:xx:xx:xxMAC-адрес вашей сетевой карты

Вам также придется обновить любую сетевую конфигурацию, чтобы она использовала eth0имя, а неens1

См. Предсказуемые имена сетевых интерфейсов для получения дополнительной информации о том, почему произошло это изменение.

саз
источник
2
Я хотел бы избежать полного переименования интерфейсов, и мне также любопытно, как работает псевдоним, который они реализовали.
Безумный Ученый
1
Я никогда не видел эту eth0@ens1форму раньше, и поиск в Google только показывает ваш вопрос. Ты пробовал grep -r eth0 /etc? если вы найдете это, пожалуйста, напишите, как мне тоже интересно.
cas