Posso criar uma interface Ethernet virtual chamada eth0?

24

Estou executando o Arch com base no kernel do Linux 3.10.5-1. O sistema usa as novas convenções de nomenclatura de fato das interfaces Ethernet enp * s * e wlp * etc. Isso é um problema, no entanto, porque minha instituição educacional está usando um programa chamado Maple 17 . O sistema de licenciamento da Maple depende da existência de uma interface chamada eth0, pois ela deve recuperar o endereço MAC para verificar a licença. É uma solução ruim, mas tenho que contornar isso.

Isso significa que precisarei de uma interface eth0 com qualquer endereço MAC (como posso recuperar um novo arquivo de licença para o novo endereço MAC) que não precisa necessariamente funcionar. De fato, deve estar sempre em baixo. Acho que existem várias maneiras de tentar resolver esse problema, mas não consegui encontrar nada sobre nenhuma das idéias.

  • Criando um adaptador sem conectividade
  • Criando um alias para enp3s0 chamado eth0
  • Renomeando enp3s0 ou a interface de loopback.

As coisas que consegui encontrar abordaram apenas a mudança para as convenções mais recentes e nas versões mais antigas do udev. Eles só trabalharam no RHEL e no SuSe de qualquer maneira. Eu tentei sem sorte embora. (persistent-net-names.rules e net-name-slot.rules, ambos fizeram minha interface atual parar de funcionar e minha interface wlan desapareceu)

Steen Schütt
fonte

Respostas:

28

Certo. Você pode criar um tapdispositivo facilmente, com tunctl(de uml-utilities, pelo menos no 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)

Ou com 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

Provavelmente você deve preferir o segundo método, como ipé a ferramenta de rede preferida no Linux, e provavelmente já o tem instalado.

Além disso, ambos estão criando o dispositivo de toque com um MAC local aleatório - eu acho - aleatório; você pode definir o MAC para um valor fixo de qualquer uma das maneiras normais.

derobert
fonte
11
Certo! Exatamente a solução que eu esperava, muito obrigado :) Funciona como um sonho.
Steen Schütt
11
Eu tenho um problema. Ao tentar alterar o MAC com ip link set dev eth0 address 01:23:45:67:89:ab(Enquanto o adaptador estiver inoperante, é claro), ele diz RTNETLINK answers: Cannot assign requested address. Também tentei instalar o macchanger, mas ele retorna um erro semelhante. Tudo tentou como raiz.
Steen Schütt
3
@TimeSheep Esse não é um endereço MAC válido. Em particular, esse é um endereço multicast. Tente 00: 23: 45: 67: 89: ab. Isso vai funcionar. Mas 02: 23: 45: 67: 89: ab seria melhor. Veja, por exemplo, en.wikipedia.org/wiki/MAC_address#Address_details
derobert
Ah obrigada. Esqueci completamente que existem requisitos para que essas coisas funcionem. Vou pegar o próximo que ele gera aleatoriamente e usá-lo. Existe uma maneira de manter o dispositivo persistente durante as reinicializações, em vez de recriá-lo e definir seu endereço novamente na inicialização com um script?
Steen Schütt
@TimeSheep Na verdade não. É uma interface virtual, não existe em nenhum outro lugar, exceto na mente do kernel ... então, quando você reinicia, acaba.
Derobert 11/09/13
4

Você também pode definir regras do udev para dar às suas placas de rede os nomes que deseja:

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

Obviamente, você NÃO deve pedir ao udev que os chame de eth0, eth1 etc. O que o Maple faz se você tiver apenas uma placa wifi?

rainbowgoblin
fonte
Não conheço o Maple, mas já vi outro software "protegido contra cópia" que verifica seu MAC e apenas analisa as interfaces de rede chamadas eth0e eth1. Se o seu for chamado wlan0, muito ruim (a menos que você saiba como renomeá-lo ou criar uma interface virtual).
Gilles 'SO- stop be evil'
Se você tiver apenas uma placa wifi, acho que você não terá sorte. Conversei com um representante sobre isso, mas eles não parecem ser os responsáveis ​​pelo sistema de licenciamento. Eu disse a eles que as convenções de nomenclatura provavelmente estão mudando e que elas devem procurar corrigir a coisa toda para obter um melhor suporte. 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
Steen Schütt
Alguma chance de você poder usar as regras do udev para renomear temporariamente sua NIC para eth0, remover essa regra e reinicializar após a ativação? Na verdade, não sei se é sempre muito, muito ruim renomear seu cartão ethX ou apenas algumas vezes.
Rainbowgoblin
@rainbowgoblin Não, ele verifica com o servidor toda vez que é inicializado, para começar a me dar o erro "Não foi possível obter o ID do host" novamente mais tarde. De qualquer maneira, a solução da derobert foi perfeita e nem parece uma solução alternativa.
Steen Schütt
2

Estou procurando um problema muito semelhante com um computador sem placa de rede com fio. Esta solução parece ser boa: http://jms.id.au/wiki/FakeEth0

Basicamente, a ideia é criar / modificar alguns arquivos para criar uma interface fictícia:

Em /etc/modules-load.d/dummy.confadição:

# load dummy interface module
dummy

Em /etc/udev/rules.d/70-persistent-net.rulesadição:

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

Em seguida, /etc/network/interfacesadicione:

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

Você deve conseguir fazer modprobe dummyisso neste momento e verificar se a interface foi configurada corretamente. Pode não definir o endereço mac se você usar o modprobe em vez de reiniciar; nesse caso, o conjunto de links ip dev eth0 endereço de: ad: be: ef: ca: fe.

alex.forencich
fonte
-1

Solução mais simples - embora isso funcione apenas em sistemas com uma placa Ethernet:

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

O Arch Linux usa "nomes previsíveis". Isso desliga isso.

Nick ODell
fonte
Eu já tentei isso, apenas estraguei tudo e meus adaptadores desapareceram.
Steen Schütt