virbr0-nic是如何创建的?


11

如何创建类似的虚拟网络接口virbr0-nic?我试图找到一种创建NIC之类的方法,virbr0-nic但是我在Internet上可以找到的所有内容都是如何创建连接到物理接口(如)的接口eth0:0。当我写

# brctl show
bridge name bridge id       STP enabled interfaces
virbr0      8000.525400e0af01   yes virbr0-nic
virbr1      8000.525400e8a6b1   yes virbr1-nic
                            vnet1

所以,virbr0是到桥virbr0-nic连接。那么如何virbr0-nicvnet1创造?


通常这与特定于某些软件的桥梁相关。您到底要做什么?
Journeyman Geek 2013年

我已经安装了KVM,并注意到它创建了新的NIC virbr0-nic。我只是想知道如何创建自己的网卡(例如此网卡)。
cosimo 2013年

Answers:


10

这些是虚拟设备。你可以跑

modprobe dummy

创建一个名为的网络接口dummy0

如果您需要多个设备,则可以使用

modprobe dummy numdummies=5

然后,您可以像控制其他任何网络设备一样控制这些设备。

给它一个MAC地址

ip link set dummy0 address aa:aa:aa:bb:bb:bb

给它一个IP地址

ip addr add 10.0.0.1/24 dev dummy0

使用以下命令将其添加到您现有的网桥中

brctl addif virbr0 dummy0

对其进行设置,将其设置为关闭,对其进行NAT关闭等。


1
这个答案似乎比其他方法更正确但是缺少有关创建一个默认情况下与KVM设置等效的接口的详细信息(virbr0-nic)。
pepper_chico

这个问题的发布者似乎了解桥的作用以及虚拟设备的作用,他只是想知道如何创建类似的接口。如果您认为答案会更好,欢迎您改善答案。
suprjami

6

libvirt为此使用了TUN设备。您可以通过以下命令手动创建此设备:

# /usr/bin/tunctl -t virbr0-nic

3

virbr0-nic 代表虚拟网桥NIC。

它基本上是物理网卡和虚拟机的虚拟网卡之间的桥梁。

要管理桥接接口,可以使用以下brctl命令。您可以使用列出所有桥接接口

brctl show 

并根据需要添加或修改网桥。创建新的桥梁用途

brctl addbr <name>

<name>您的新网桥的名称在哪里(如virbr0-nic)。然后,您可以使用以下命令向网桥添加接口

brctl addif <brname> <ifname>

您可以参考手册页以获取更多信息。


1
实际上,这并不能说明要创建一个新的“ virbr1-nic”,而只是暗示一个先前要设置其接口(“ virbr1-nic”)的新“ virbr1”。
pepper_chico

我也不认为这是物理与虚拟之间的桥梁。我必须在virbr0和物理之间伪装数据包才能路由。
皮特·阿什当

2

这是不完全清楚哪些类型的设备virbr0-nic,并vnet1在你的设置。有几种类型的虚拟设备可用于包含在网桥中,其中一些可以使用ip命令创建。

一种虚拟设备是veth创建成对的连接虚拟以太网接口。

ip link add veth0 type veth peer name veth1

在此示例中veth0veth1是我为示例想到的任意接口名称。例如,如果要将两个接口之一移至其他网络名称空间,则此方法很有用。

另一种虚拟接口是vlan在其中创建一个附加到物理接口上特定802.1q标记的虚拟以太网接口:

ip link add link eth0 name eth0.10 type vlan id 10

有一个手册页,其中包含有关可以使用该ip命令创建的更多虚拟接口类型的信息。手册页的名称取决于您安装的版本,我见过它的名称为ip-link或just ip

此外,如果您使用任何虚拟化功能,则存在连接主机和VM的虚拟接口。具体细节取决于您使用的虚拟化解决方案。


1

但是我没有这个/ usr / bin / tunctl -t virbr0-nic我从座舱安装的东西,当我将使用虚拟机时找不到删除选项,当它存在但可以联网时很好与systemd-networked我有很多问题。驾驶舱将使用Network-Manager及其中的配置文件。安装后,我的网络中断了,所有设备和应用程序启动都失败了。

如果在全新安装RHEL / CentOS 6,7系统后检查'ifconfig -a',则会找到接口virbr0名称。这是新安装的CentOS 7系统的示例。

ifconfig -a

....

virbr0: flags=4099[UP,BROADCAST,MULTICAST]  mtu 1500
        inet 192.168.122.1  netmask 255.255.255.0  broadcast 192.168.122.255
        ether 52:54:00:d5:f2:0c  txqueuelen 1000  (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

virbr0-nic: flags=4098[BROADCAST,MULTICAST]  mtu 1500
        ether 52:54:00:d5:f2:0c  txqueuelen 1000  (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

什么是virbr0接口virbr0桥接口由libvirtd的默认网络配置创建。libvirtd是为主机充当管理程序提供基础的服务。因此,如果您不使用xen虚拟化,则可以阻止libvirtd的默认网络在引导时被激活,或者可以防止libvirtd本身在引导时被激活。前者将阻止连接到libvirtd默认网络的任何VM guest虚拟机具有网络连接性,而后者将阻止VM完全运行。如果您不使用它,那很好。禁用libvirtd默认网络

  1. 您可以使用virsh命令暂时禁用libvirtd的默认网络。这将不会在重新启动后持续存在。

    virsh net-destroy默认

  2. 要在启动时永久禁用libvirtd默认网络,请执行以下操作:

    virsh net-autostart默认-禁用

删除libvirtd默认网络要永久删除libvirtd默认网络:

virsh net-undefine default

要永久禁用libvirtd服务,使其无法在RHEL5和RHEL6上启动时启动:

chkconfig libvirtd off

要永久禁止libvirtd服务在RHEL7上启动时启动:

systemctl disable libvirtd.service
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.