Como adicionar NICs virtuais ao meu PC linux, para que elas exponham seus MACs ao domínio do ISP?

1

Eu aprendi como adicionar NICs virtuais a um sistema convidado no VirtualBox, usando apenas Shared Adapter , então todas as NICs virtuais e a NIC do meu host aparecerão como NICs reais para o ISP.

Então eu acho que deve haver uma maneira de adicionar esses NICs virtuais ao meu PC sem resolver VBox. Eu tentei com ip link add link enp0s3 type macvlan .

ip netns add ns
ip link add link enp0s3 type macvlan
ip link set netns ns macvlan0
ip netns exec ns ip link set up macvlan0
ip netns exec ns ip addr add 192.168.222.101/24 dev macvlan0
ip addr add 192.168.222.1/24 dev enp0s3
ping 192.168.222.101
PING 192.168.222.101 (192.168.222.101) 56(84) bytes of data.
^C
--- 192.168.222.101 ping statistics ---
3 packets transmitted, 0 received, 100% packet loss, time 1999ms

Eu também tentei ip link add link enp0s3 type macvlan mode bridge e ip link add link enp0s3 type macvtap [mode bridge] , mas isso não ajuda.

    
por TorosFanny 11.01.2016 / 15:17

1 resposta

1

A solução mais fácil é provavelmente usar macvlans . Soluções semelhantes são macvtap e ipvlan , que diferem apenas minimamente do acima; é difícil escolher um em vez do outro, sem muitos mais detalhes. Mas o seguinte certamente funcionará.

Para todo namespace de rede, atribua uma interface macvlan da seguinte forma:

 NNS=TheNameOfYourNetworkNamespace
 ip netns add $NNS
 ip link add link eth0 mac$NNS address 56:61:4f:7c:77:db type macvlan mode bridge
 ip link set dev mac$NNS netns $NNS

Eu usei um endereço MAC específico, você pode simplesmente descartar a parte address 56:61:4f:7c:77:db se você não estiver interessado em especificá-la, deixando assim ao acaso.

Agora, insira o namespace de rede e configure a rede:

 ip netns exec $NNS xterm

e de dentro do xterm aberto, faça:

 ip link set dev $NAME_OF_MAC_INTERFACE up
 ip link set dev lo up
 ip addr add 127.0.0.1 dev lo
 dhclient -v mac$NNS

e você está feito.

Um último comentário: a opção mode bridge usada acima permite que todos os namespaces de rede conversem entre si diretamente, isto é, sem passar por um switch. No entanto, quer você use essa opção ou não, seu host não conseguirá falar com os namespaces da rede, a menos que você construa um macvlan para o host em si, caso em que ele poderá se comunicar com os outros NNSs como se fosse um deles.

EDITAR:

não funciona porque eu deveria ter lembrado que, uma vez dentro do NNS, variáveis de ambiente como $ NNS não são mais definidas, então eu deveria corrigir a linha acima. Na verdade, no meu sistema,

 # ip addr show dev eth0
   2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
    link/ether e8:e0:b7:be:72:6a brd ff:ff:ff:ff:ff:ff
   inet 192.168.73.55/24 brd 192.168.73.255 scope global eth0
   valid_lft forever preferred_lft forever
   inet6 fe80::eae0:b7ff:febe:726a/64 scope link 
   valid_lft forever preferred_lft forever
  # NNS=ns1
  # ip netns add $NNS
  # ip link add link eth0 mac$NNS address 56:61:4f:7c:77:db type macvlan 
  # ip link set dev mac$NNS netns $NNS
  # ip netns exec $NNS /bin/bash
  # ip link set dev macns1 up
  #  ip link set dev lo up
  #  ip addr add 127.0.0.1 dev lo
  # dhclient -v macns1
    Internet Systems Consortium DHCP Client 4.2.4
    Copyright 2004-2012 Internet Systems Consortium.
    All rights reserved.
    For info, please visit https://www.isc.org/software/dhcp/

    Listening on LPF/macns1/56:61:4f:7c:77:db
    Sending on   LPF/macns1/56:61:4f:7c:77:db
    Sending on   Socket/fallback
    DHCPDISCOVER on macns1 to 255.255.255.255 port 67 interval 3 (xid=0x473d2846)
    DHCPREQUEST of 192.168.73.48 on macns1 to 255.255.255.255 port 67 (xid=0x46283d47)
    DHCPOFFER of 192.168.73.48 from 192.168.73.1
    DHCPACK of 192.168.73.48 from 192.168.73.1
    bound to 192.168.73.48 -- renewal in 21288 seconds.
  # ping -c1 superuser.com
    PING superuser.com (104.16.127.192) 56(84) bytes of data.
    64 bytes from 104.16.127.192: icmp_seq=1 ttl=53 time=12.9 ms

    --- superuser.com ping statistics ---
    1 packets transmitted, 1 received, 0% packet loss, time 0ms
    rtt min/avg/max/mdev = 12.927/12.927/12.927/0.000 ms

Como você pode ver, funciona perfeitamente no meu sistema. Você pode verificar se o endereço IP que eu obtenho dentro do NNS (192.168.73.48) difere daquele no host, 192.168.73.55.

Se não funcionar no seu sistema, eu vou precisar de algo mais do que apenas um ele não funciona , porque eu não consigo reproduzir o seu erro.

    
por 11.01.2016 / 16:40