gpt4 book ai didi

networking - QEMU 的 guest 操作系统中的网络是如何工作的?

转载 作者:行者123 更新时间:2023-12-03 16:28:21 25 4
gpt4 key购买 nike

我在理解 guest 操作系统(Ubuntu)中的 Qemu 和网络如何工作方面遇到了问题。我已阅读 this manual和别的。如果我理解,如果你想在 guest 操作系统中上网,你需要制作 水龙头 主机操作系统中的接口(interface)。之后链接 eth0 水龙头0 接口(interface):

  • 通过使用 NAT 路由
  • 通过使用网桥(链接 tap0 eth0-host )

  • 现在我在主机中有这些接口(interface)( 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
    ...

    Internet in gust OS work! How and why is working network in guest OS if I don't have link between real ppp0 and guest interface? I haven't even anyone interface in host for guest OS.



    如果我理解那是因为 guest 通过默认主机接口(interface)转发数据。但为什么?

    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

    最佳答案

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

    -net nic,model=rtl8139 -net tap

    在这些参数中,将 rtl8139 替换为您机器上任何可用的 nic 设备。如果您不知道可用的 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 参数启动的 VM 应该已准备好网络并使用 TAP。

    关于networking - QEMU 的 guest 操作系统中的网络是如何工作的?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4462799/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com