2010-12-16 8 views
3

QemuとゲストOS(Ubuntu)のネットワークがどのように機能するのかを理解する上で問題があります。私はthis manualと他を読んだ。そして、わかっていれば、ゲストOSでインターネットを手に入れたいのであれば、ホストOSでのインタフェースをにする必要があります。 eth0のTAP0インターフェイスリンクするこの後:(リンクTAP0eth0をホスト)ブリッジを使用することにより QEMUのゲストOSでネットワーキングはどのように機能しますか?

  • をNATルーティング使用することにより

    今これらのインタフェースをホストに持つ(ppp0 - 3Gモデム - インターネット):

    突風のOSでは

    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):突風OSの仕事で

    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 
         ... 
    

    インターネット!実際のppp0とゲストインターフェイスの間にリンクがない場合、どのように、なぜゲストOSのネットワークが動作していますか?私はゲストOS用のホストでも誰もインターフェイスしていません。

    私が理解しているのは、ゲストがデフォルトのホストインターフェイスを介してデータを転送するからです。しかし、なぜ?

    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 
    
  • 答えて

    5

    それはあなたがTAPデバイスを使用するように見えますが、との問題を抱えてそれ。お使いのマシン上の使用可能なNICデバイスとRTL8139を置き換え、それらの引数で

    -net nic,model=rtl8139 -net tap 
    

    : はあなたのqemuのコマンドラインに次のようなものを持っている必要がありTAPを使用します。使用可能なNICデバイスがわからない場合は、次のコマンドを使用してリストします。

    qemu -net nic,model=? 
    

    また、TAPデバイスが作成されていることを確認する必要があります。ネットワーク対応と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 
    

    は、このスクリプトを実行した後、VMを-netで開始:次のスクリプトは、必要なブリッジやポートを作成します。

    +0

    これを実行すると、次のエラーが発生しています。 qemu-system-i386:-net tap:デバイス 'tap'を初期化できませんでした –

    関連する問題