Virtual-Machine

使用帶有 Nix 的 Tap 網路在 VM 之間設置網路?

  • February 18, 2020

我正在嘗試在多個虛擬機之間共享網路。

我試過添加:

   qemu.networkingOptions = [
                              "-nic user,model=virtio-net-pci"
                              "-netdev tap,id=mynet0"
                            ];

但是,這會導致以下錯誤:

qemu-system-x86_64: network script /etc/qemu-ifup failed with status 256

即使以 root 身份執行。我也看不到這個文件的實際位置?這會在客人身上嗎?

你必須保持選項的純度。我的意思是你不能混合網路聲明

-net nic,model=virtio-net-pci,macaddr=... -net user,restrict=[on|off]

-device virtio-net-pci,netdev=net0,mac=...  -netdev tap,ifname=tap0,id=net0,script=...,downscript=...

其中第一個選項創建私有範圍 10.0.0.x/8 的虛擬 LAN,為來賓 VM 提供 DHCP 地址 10.0.0.15 並(dis)允許來賓 VM 通過嵌入式 NAT 防火牆進入主機系統網路;而顯示的字母選項創建與主機的tap0介面綁定的虛擬介面,您應該在其中定義tap0連接到哪個真實介面。

因此,如果您想連接兩個 VM,比如說 VMA/tapA 和 VMB/tapB ,您可以通過橋接器將這些 VM 連接在一起,例如可以定義為:

# ip link add name brAB type bridge
# ip link set dev  brAB up
# ip link set dev  tapA master brAB
# ip link set dev  tapB master brAB
# ip link set dev  tapA up
# ip link set dev  tapB up

此配置僅創建連接 VMA 和 VMB 的隔離網路**!**. 要使該網路與一些免費的主機 NIC 綁定或配置其他網路模式,您必須閱讀有關真實主機的網路配置的更多資訊,例如有關虛擬交換機(openvswitch)或其他可能性的資訊。

當然,在嘗試使用虛擬介面 tapA 或 tapB 之前,需要先創建它們。例如,您可以這樣做:

# ip tuntap add name tapA mode tap

命令。

引用自:https://unix.stackexchange.com/questions/568178