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


68

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

Як я можу створити віртуальний інтерфейс на цій машині без фізичного інтерфейсу?


Спочатку переконайтеся, що ваш драйвер, який використовується wlan0, підтримує псевдонім. Це інша назва, під якою йде віртуальний інтерфейс. Подивіться , як через мій А до цього Q: unix.stackexchange.com/questions/108396 / ... . До речі, ви не можете створити псевдонім проти eth0, якщо у вас немає цього фізичного пристрою.
slm

Ви також можете додати додаткові IP-адреси, використовуючи ipкоманду: xmodulo.com/2013/02/…
slm

Відповіді:


103

Налаштування фіктивного інтерфейсу

Якщо ви хочете створити мережеві інтерфейси, але не має фізичного NIC для його підтримки, ви можете використовувати тип фіктивного посилання. Більше про них можна прочитати тут: сторінка Вікіпедії 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

Класні речі, але не зовсім те, що мені було потрібно в цьому випадку (мені справді просто потрібен віртуальний інтерфейс, щоб VM міг змонтувати спільну частку NFS, а не використовувати спільні файли VBox)
STW,

Як встановити IP-адресу veth0 в прикладі?
MURATSPLAT
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.