要在 Linux 上创建假以太网虚拟接口,我们首先使用以下命令初始化虚拟接口驱动程序:
/sbin/modprobe 虚拟。
然后我们将以太网接口别名分配给上面刚刚初始化的虚拟驱动程序。
但它给出了以下致命错误: 致命:未找到模块虚拟。
另外,在路径上 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 命令无法加载内核模块。
我们如何使用加载内核模块模组探针或 insmod 初始化虚拟接口驱动程序?
我们可以在单个加载的模块上创建多个虚拟接口吗?
答案1
添加几个虚拟接口的常用方法是使用ip路由2:
# 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
但错误信息致命:未找到模块虚拟表示您可能有一个未启用虚拟接口模块的内核,因此请务必检查您的内核配置,并在必要时重新编译内核。
答案2
要在启动时创建虚拟接口,我建议添加/etc/modules
dummy
请注意,在内核 4.4.x 之前,该模块dummy
默认只允许两个虚拟接口(正确版本有待验证)。
如果您需要更多,您还必须创建一个/etc/modprobe.d/local
或使用您想要的虚拟接口数量/etc/modprobe.d/dummy.conf
定义参数:numdummies
options dummy numdummies=4
根据@Fuermurmel 评论,在较新的内核中,除了默认创建的两个虚拟接口之外,您还可以使用以下命令添加更多虚拟接口:
sudo ip link add dummyX type dummy