Могу ли я создать виртуальный интерфейс Ethernet с именем eth0?

24

Я использую Arch на основе ядра Linux 3.10.5-1. Система использует новые фактические соглашения об именах интерфейсов Ethernet enp * s *, wlp * и т. Д. Однако это проблема, поскольку мое учебное заведение использует программу под названием Maple 17 . Система лицензирования Maple зависит от существования интерфейса с именем eth0, потому что он должен извлечь его MAC-адрес для проверки лицензии. Это плохое решение, но я должен обойти это.

Это означает, что мне понадобится интерфейс eth0 с любым MAC-адресом (поскольку я могу получить новый файл лицензии для нового MAC-адреса), который не обязательно должен работать. На самом деле, он всегда должен быть выключен. Я считаю, что есть несколько способов решить эту проблему, но я не смог ничего найти ни в одной из идей.

  • Создание адаптера без подключения
  • Создание псевдонима для enp3s0 с именем eth0
  • Переименование enp3s0 или петлевого интерфейса.

Вещи, которые я смог найти, касались только перехода на более новые соглашения и на более старые версии udev. В любом случае, они работали только на RHEL и SuSe. Я попробовал это без удачи, хотя. (persistent-net-names.rules и net-name-slot.rules, оба из них только заставили мой действительный интерфейс перестать работать, и мой интерфейс wlan исчез)

Стин Шютт
источник

Ответы:

28

Конечно. Вы можете создать tapустройство довольно легко, либо с помощью tunctl(из uml-утилит, по крайней мере, в Debian):

# tunctl -t eth0
Set 'eth0' persistent and owned by uid 0
# ifconfig eth0
eth0      Link encap:Ethernet  HWaddr a6:9b:fe:d8:d9:5e  
          BROADCAST MULTICAST  MTU:1500  Metric:1
          RX packets:0 errors:0 dropped:0 overruns:0 frame:0
          TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:500 
          RX bytes:0 (0.0 B)  TX bytes:0 (0.0 B)

Или с ip:

# ip tuntap add dev eth0 mode tap
# ip link ls dev eth0
7: eth0: <BROADCAST,MULTICAST> mtu 1500 qdisc noop state DOWN mode DEFAULT qlen 500
    link/ether 0e:55:9b:6f:57:6c brd ff:ff:ff:ff:ff:ff

Вероятно, вам следует предпочесть второй метод, так как ipэто предпочтительный сетевой инструмент в Linux, и вы, вероятно, уже установили его.

Кроме того, оба они создают устройство с отводом - я бы предположил - случайный локальный MAC, вы можете установить MAC на фиксированное значение любым из обычных способов.

derobert
источник
1
Право на! Именно решение, на которое я надеялся, большое спасибо :) Это работает как мечта.
Стин Шютт
1
У меня проблема. При попытке сменить MAC с ip link set dev eth0 address 01:23:45:67:89:ab(Пока адаптер выключен) он говорит RTNETLINK answers: Cannot assign requested address. Я также попытался установить Macchanger, но он возвращает похожую ошибку. Все пробовал как root.
Стин Шютт
3
@TimeSheep Это недействительный MAC-адрес. В частности, это адрес многоадресной рассылки. Попробуйте 00: 23: 45: 67: 89: ab. Это сработает. Но 02: 23: 45: 67: 89: ab будет лучше. См., Например, en.wikipedia.org/wiki/MAC_address#Address_details
derobert
Ах, спасибо. Я полностью забыл, что существуют требования для этих вещей, чтобы работать. Я просто возьму следующий, который он генерирует случайным образом, и использую его. Есть ли способ сохранить устройство постоянным при перезагрузке, а не воссоздать его и вернуть его адрес при загрузке с помощью скрипта?
Стин Шютт
@TimeSheep Не совсем. Это виртуальный интерфейс, он не существует нигде, кроме ядра ядра ... поэтому, когда вы перезагружаетесь, его уже нет.
Дероберт
4

Вы также можете установить правила udev, чтобы дать вашим сетевым картам нужные имена:

https://wiki.archlinux.org/index.php/Network_Configuration#Change_device_name

Конечно, вы НЕ должны указывать udev называть их eth0, eth1 и т. Д. Что делает Maple, если у вас есть только карта Wi-Fi?

rainbowgoblin
источник
Я не знаю о Maple, но я видел другое «защищенное от копирования» программное обеспечение, которое проверяет ваш MAC и смотрит только на сетевые интерфейсы, вызываемые eth0и eth1. Если ваш называется wlan0слишком плохо (если вы не знаете, как его переименовать или создать виртуальный интерфейс).
Жиль "ТАК - перестань быть злым"
Если у вас есть только карта Wi-Fi, я просто думаю, что вам не повезло. Я говорил с представителем об этом, но, похоже, они не пишут систему лицензирования. Я сказал им, что соглашения об именах, скорее всего, меняются, и что они должны изучить все исправления для лучшей поддержки. you are correct in your suspicions of the cause of the problem with the activation, particularly the issue with the Ethernet adapter name. Unfortunately, it is a limitation of the licensing software that it has to look for an "eth0" in order to find the Host ID of the system
Стин Шютт
Есть ли шанс, что вы можете использовать правила udev для временного переименования сетевого адаптера в eth0, затем удалить это правило и перезагрузиться после активации? Я на самом деле не знаю, всегда ли очень, очень плохо переименовывать вашу карточку ethX, или просто иногда.
Rainbowgoblin
@rainbowgoblin Нет, он проверяет сервер при каждом запуске, так что он просто снова выдаст мне ошибку «Не удалось получить идентификатор хоста» позже. В любом случае решение Дероберта было идеальным и даже не чувствовало себя таким уж обходным решением.
Стин Шютт
2

Я смотрю на очень похожую проблему с компьютером без проводной сетевой карты вообще. Это решение выглядит как хорошее: http://jms.id.au/wiki/FakeEth0

По сути, идея состоит в том, чтобы создать / изменить несколько файлов для создания фиктивного интерфейса:

В /etc/modules-load.d/dummy.confдобавлении:

# load dummy interface module
dummy

В /etc/udev/rules.d/70-persistent-net.rulesдобавлении:

SUBSYSTEM=="net", KERNEL=="dummy0", NAME="eth0"

Затем /etc/network/interfacesдобавьте:

iface eth0 inet static
    hwaddress DE:AD:BE:EF:CA:FE

Вы должны быть в состоянии сделать modprobe dummyна этом этапе и проверить, чтобы убедиться, что интерфейс был настроен правильно. Он может не установить MAC-адрес, если вы используете modprobe вместо перезагрузки; в этом случае сделайте ip link set dev eth0 адрес de: ad: be: ef: ca: fe.

alex.forencich
источник
-1

Самое простое решение - хотя это работает только в системах с одной сетевой картой:

ln -s /dev/null /etc/udev/rules.d/80-net-name-slot.rules

Arch Linux использует «предсказуемое наименование». Это выключает это.

Ник Оделл
источник
Я уже попробовал это, просто все испортилось, и мои адаптеры исчезли.
Стин Шютт