Как я могу создать виртуальный интерфейс Ethernet на машине без физического адаптера?


68

У меня есть ультрабук Dell XPS 13, у которого есть Wi-Fi, но нет физического сетевого Ethernet (wlan0, но нет eth0). Мне нужно создать виртуальный адаптер для использования Vagrant с NFS, но я обнаружил, что типичный ifup eth0:1...сбой с ignoring unknown interface eth0:1=eth0:1. Я также пытался создать виртуальный интерфейс против wlan0, но получил тот же результат.

Как я могу создать виртуальный интерфейс на этой машине без физического интерфейса?


Прежде всего, убедитесь, что ваш драйвер, используемый wlan0, поддерживает псевдонимы. Это другое название виртуального интерфейса. Посмотрите, как через мой A к этому Q: unix.stackexchange.com/questions/108396/… . Кстати, вы не можете сделать псевдоним против eth0, если у вас нет этого физического устройства.
SLM

Вы также можете добавить дополнительный IP - адрес с помощью ipкоманды тоже: xmodulo.com/2013/02/...
ОДС

Ответы:


103

Настройка фиктивного интерфейса

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

Создание eth10

Чтобы создать этот интерфейс, вам сначала нужно убедиться, что у вас загружен фиктивный модуль ядра. Вы можете сделать это так:

$ sudo lsmod | grep dummy
$ sudo modprobe dummy
$ sudo lsmod | grep dummy
dummy                  12960  0 

Теперь, когда драйвер загружен, вы можете создавать любые фиктивные сетевые интерфейсы, которые вам нравятся:

$ sudo ip link set name eth10 dev dummy0

И подтвердите это:

$ ip link show eth10
6: eth10: <BROADCAST,NOARP> mtu 1500 qdisc noop state DOWN mode DEFAULT group default 
    link/ether c6:ad:af:42:80:45 brd ff:ff:ff:ff:ff:ff

Смена MAC

Затем вы можете изменить MAC-адрес, если хотите:

$ sudo ifconfig eth10 hw ether 00:22:22:ff:ff:ff
$ ip link show eth10
6: eth10: <BROADCAST,NOARP> mtu 1500 qdisc noop state DOWN mode DEFAULT group default 
    link/ether 00:22:22:ff:ff:ff brd ff:ff:ff:ff:ff:ff

Создание псевдонима

Затем вы можете создавать псевдонимы поверх eth10.

$ sudo ip addr add 192.168.100.199/24 brd + dev eth10 label eth10:0

И подтвердить их так:

$ ifconfig -a eth10
eth10: flags=130<BROADCAST,NOARP>  mtu 1500
        ether 00:22:22:ff:ff:ff  txqueuelen 0  (Ethernet)
        RX packets 0  bytes 0 (0.0 B)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 0  bytes 0 (0.0 B)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

$ ifconfig -a eth10:0
eth10:0: flags=130<BROADCAST,NOARP>  mtu 1500
        inet 192.168.100.199  netmask 255.255.255.0  broadcast 192.168.100.255
        ether 00:22:22:ff:ff:ff  txqueuelen 0  (Ethernet)

Или используя ip:

$ ip a | grep -w inet
    inet 127.0.0.1/8 scope host lo
    inet 192.168.1.20/24 brd 192.168.1.255 scope global wlp3s0
    inet 192.168.122.1/24 brd 192.168.122.255 scope global virbr0
    inet 192.168.100.199/24 brd 192.168.100.255 scope global eth10:0

Удаление всего этого?

Если вы хотите отмотать все это, вы можете выполнить следующие команды:

$ sudo ip addr del 192.168.100.199/24 brd + dev eth10 label eth10:0
$ sudo ip link delete eth10 type dummy
$ sudo rmmod dummy

Рекомендации


4
Эта команда не работает для меня sudo ip link set name eth10 dev dummy0. Я использовал ip link add dummy0 type dummyи использовал интерфейс dummy0 в следующих командах. Другие команды работали хорошо. Спасибо!
Икром

1
офигенно, это именно то, что мне было нужно для старого lmgrd, который не смог прочитать MAC-адрес с имен новых устройств RHEL 7 (emX вместо ethX)
Thesane

26

Вы можете создавать виртуальные интерфейсы, используя набор инструментов iproute2 .

ip link add veth0 type veth peer name veth1

Это создаст 2 интерфейса, veth0и veth1. Думайте о них как о 2 концах трубы. Любой отправленный трафик veth0выйдет veth1и наоборот.

Если вы хотите, чтобы трафик был направлен, вы можете сделать:

sysctl -w net.ipv4.conf.veth0.forwarding=1

Это скажет ядру переадресовывать трафик, приходящий из veth0(поэтому используйте veth1для используемой конечной точки).

Другой вариант - настроить мост с veth0другим интерфейсом. Тогда любой трафик, поступающий через виртуальный интерфейс, будет направляться в сеть, как если бы ваша машина просто действовала как коммутатор.

Есть много других вещей, которые вы можете делать с этим трафиком (маскировать его, перенаправлять, DNAT и т. Д.), Но это зависит от того, чего вы пытаетесь достичь.

Чтобы снести это:

ip link del veth0

Классная штука, но не совсем то, что мне было нужно в этом случае (мне просто нужен был виртуальный интерфейс, чтобы виртуальная машина могла монтировать общий ресурс NFS вместо использования общих файловых ресурсов VBox)
STW

Как установить IP-адрес veth0 в примере?
MURATSPLAT
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.