Як ми можемо створити декілька фіктивних інтерфейсів на Linux?


11

Для створення фальшивого інтерфейсу манекена Ethernet В Linux спочатку ініціалізуємо драйвер інтерфейсу манекена за допомогою команди нижче: / sbin / modprobe .
Тоді ми присвоюємо псевдонім інтерфейсу Ethernet драйверу Dummy, який ми просто ініціалізували вище.

Але це дає наступну фатальну помилку: FATAL: Манекен модуля не знайдено.

Також на шляху cd / sys / devices / virtual / net # ми бачимо, що існують віртуальні інтерфейси, представлені такими іменами:
dummy0 / lo / sit0 / tunl0 /

ifconfig -a

dummy0:   Link encap:Ethernet  HWaddr aa:3a:a6:cd:91:2b    
          BROADCAST NOARP  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:0   
          RX bytes:0 (0.0 B)  TX bytes:0 (0.0 B)

lo:     Link encap:Local Loopback  
          inet addr:127.0.0.1  Mask:255.0.0.0  
          inet6 addr: ::1/128 Scope:Host  
          UP LOOPBACK RUNNING  MTU:16436  Metric:1  
          RX packets:111 errors:0 dropped:0 overruns:0 frame:0  
          TX packets:111 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:0   
          RX bytes:8303 (8.1 KiB)  TX bytes:8303 (8.1 KiB)

sit0:      Link encap:UNSPEC  HWaddr 00-00-00-00-FF-00-00-00-00-00-00-00-00-00-00-00    
          NOARP  MTU:1480  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:0   
          RX bytes:0 (0.0 B)  TX bytes:0 (0.0 B)

tunl0:  Link encap:IPIP Tunnel  HWaddr   
          NOARP  MTU:1480  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:0   
          RX bytes:0 (0.0 B)  TX bytes:0 (0.0 B)  

Отже, команда modprobe не в змозі завантажити модуль ядра.
Як ми можемо завантажити модуль ядра за допомогою modprobe або insmod для ініціалізації фіктивного драйвера інтерфейсу?
Чи можемо ми створити декілька фіктивних інтерфейсів на одному завантаженому модулі?


Коли ви говорили про віртуальний інтерфейс Ethernet. Вам не потрібно було завантажувати жоден фіктивний модуль. Ви можете створити його, використовуючи команду ifconfig на зразок eth0: 1, eth0: 2 тощо.
Суперіад

Ви можете встановити різні IP-адреси, підмережу та шлюз у віртуальному інтерфейсі Ethernet за допомогою команди ifconfig. Просто додайте його на rc.local та завантажуйте у завантажувальний центр. Вам не потрібно було створювати будь-які файли конфігурації віртуального інтерфейсу Ethernet.
сюрприз

1
@supriady Я не запитую про віртуальні інтерфейси. Я знаю, що ми можемо призначити віртуальні IP-адреси інтерфейсу за допомогою ifconfig, як eth0: 1 і так далі, але тут h / w-адреса Mac буде однаковою для кожного створеного віртуального інтерфейсу. Моє запитання полягає в тому, як створити декілька манекено-інтерфейсів, таких як dummy0, показаний вище, який має інший H / w Mac-адресу, ніж реальний інтерфейс.
Кушаль

Щоб переконатися, ви розумієте, що ці інтерфейси не будуть видні поза машиною, правда?
Джулі Пелтьє

Будь ласка, додайте до питання ПОВНИЙ вихід modprobeпомилки та вихідuname -r
Rui F Ribeiro

Відповіді:


13

Звичайний спосіб додати кілька фіктивних інтерфейсів - це використовувати iproute2 :

# ip link add dummy0 type dummy
# ip link add dummy1 type dummy
# ip link list
...
5: dummy0: <BROADCAST,NOARP> mtu 1500 qdisc noop state DOWN mode DEFAULT group default qlen 1000
    link/ether 22:4e:84:26:c5:98 brd ff:ff:ff:ff:ff:ff
6: dummy1: <BROADCAST,NOARP> mtu 1500 qdisc noop state DOWN mode DEFAULT group default qlen 1000
    link/ether 9e:3e:48:b5:d5:1d brd ff:ff:ff:ff:ff:ff

Але повідомлення про помилку FATAL: манекен модуля не знайдено, вказує на те, що у вас може бути ядро, де модуль інтерфейсу манекена не включений, тому переконайтеся, що ви перевірте конфігурацію ядра, а при необхідності перекомпілюйте ядро.


"повідомлення про помилку FATAL: манекен модуля не знайдено, вказує на те, що у вас може бути ядро, де модуль інтерфейсного модуля не включений" => Ні, це може означати, що драйвер манекена не був побудований як модуль, а безпосередньо доданий до ядра . Мабуть dummy0, на машині ОП існує інтерфейс. Крім цього, ваша відповідь в порядку.
xhienne

1
@xhienne залежить від вашої версії modprobe, але останні версії kmod, принаймні, будуть знати про вбудовані. Спробуй це. Наприклад modprobe unixі modprobe -r unix.
sourcejedi

7

Для створення фіктивних інтерфейсів під час завантаження раджу додати /etc/modules

dummy

Остерігайтеся, що модуль dummyдозволяє використовувати лише два манекенні інтерфейси за замовчуванням перед ядром 4.4.x (перевірити правильну версію).

Якщо вам потрібно більше, вам також потрібно створити або a, /etc/modprobe.d/localабо /etc/modprobe.d/dummy.confвизначити параметр numdummiesіз кількістю бажаних інтерфейсів, які ви бажаєте:

options dummy numdummies=4 

Відповідно до коментарів @Feuermurmel, у новіших ядрах ви додаєте ще манекенні інтерфейси, окрім двох, створених за замовчуванням, за допомогою команди:

sudo ip link add dummyX type dummy

Принаймні, з ядром 4.4.0, можна додавати додаткові фіктивні інтерфейси ip link add dumdum type dummy.
Фейермурмель

@Feuermurmel У вас є ідея, якщо вона працює, щоб додати більше 2?
Rui F Ribeiro

Це безумовно так. Перевірте для себе:for i in {0..100}; do ip link add blubb-$i type dummy; done
Feuermurmel

@Feuermurmel Добрі новини, дякую за пораду. Ви можете додати його як додаткову відповідь. ІМО, і інше, доречні, оскільки є ще багато пристроїв iOT, які застрягли у нижчих версіях ядра.
Rui F Ribeiro

З цікавості: чи колись такі пристрої створені, є стійкими під час перезавантаження, чи вам потрібно відтворювати їх після кожного запуску системи?
Робіду
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.