【问题标题】:How does networking work in QEMU's guest OS?QEMU 的来宾操作系统中的网络是如何工作的?
【发布时间】:2010-12-16 16:09:14
【问题描述】:

我在理解客户操作系统 (Ubuntu) 中的 Qemu 和网络如何工作时遇到了问题。我读过this manual 和其他人。如果我理解,如果您想在来宾操作系统中连接 Internet,您需要在主机操作系统中创建 tap 界面。然后链接 eth0tap0 接口:

  1. 通过使用 NAT 路由
  2. 通过使用网桥(链接 tap0eth0-host

现在我在主机中有这些接口(ppp0 - 3G-modem - Internet,lo):

ppp0      Link encap:Point-to-Point Protocol  
      inet addr:10.245.146.78  P-t-P:10.64.64.64  Mask:255.255.255.255
      UP POINTOPOINT RUNNING NOARP MULTICAST  MTU:1500  Metric:1
      RX packets:49635 errors:0 dropped:0 overruns:0 frame:0
      TX packets:42745 errors:0 dropped:0 overruns:0 carrier:0
      collisions:0 txqueuelen:3 
      RX bytes:52405401 (52.4 MB)  TX bytes:5988643 (5.9 MB)

在阵风操作系统中(eth0,lo):

eth0        Link encap:Ethernet HWaddr:52:54:00:12:34:56
      inet addr:10.0.2.15  Bcast:10.0.2.255 Mask:255.255.255.0
      ...

在 Gust 操作系统中的 Internet 工作!如果我在真正的 ppp0 和来宾界面之间没有链接,那么来宾操作系统中的工作网络如何以及为什么?我什至没有任何人在主机中为来宾操作系统提供接口。

如果我理解这是因为访客通过默认主机接口转发数据。但为什么呢?

Qemu 选项:

qemu -hda ~/virt.disk -cdrom /dev/cdrom -boot once=dc -m 1024M -usb -smp 2 -enable-kvm 

主机路由表:

Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
10.64.64.64     *               255.255.255.255 UH    0      0        0 ppp0
default         10.64.64.64     0.0.0.0         UG    0      0        0 ppp0

访客路由表:

Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
10.0.2.0        *               255.255.255.0 U    1      0        0 eth0
link-local      *               255.255.0.0   U    1000   0        0 eth0
default         10.0.2.2        0.0.0.0       UG   0      0        0 eth0

【问题讨论】:

    标签: networking operating-system host qemu


    【解决方案1】:

    您似乎想使用 TAP 设备,但遇到了问题。 要使用 TAP,你的 qemu 命令行应该有这样的东西:

    -net nic,model=rtl8139 -net tap
    

    在这些参数中,将 rtl8139 替换为您机器上任何可用的 nic 设备。如果您不知道可用的网卡设备,请使用以下命令列出它们:

    qemu -net nic,model=?
    

    您还必须确保已创建 TAP 设备。以下脚本创建必要的网桥和端口:

    # For Network Bridging/TAP
    # Set permissions of tun device
    chown root.users /dev/net/tun 
    chmod g+rw /dev/net/tun
    
    #Add a bridge, add eth0
    brctl addbr br0
    ifconfig eth0 0.0.0.0 promisc
    brctl addif br0 eth0
    dhclient br0
    
    # Create tap0
    tunctl -t tap0 -u username #replace username by your username
    
    # Enable tap0
    brctl addif br0 tap0
    ifconfig tap0 up
    

    运行此脚本后,使用 -net tap 参数启动的虚拟机应该已准备好网络并使用 TAP。

    【讨论】:

    • 当我运行它时,出现以下错误。 qemu-system-i386:-net tap:无法初始化设备“tap”
    猜你喜欢
    • 2016-02-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-09-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多