2010-12-16 6 views
3

Qemu와 게스트 OS (Ubuntu)의 네트워크가 어떻게 작동하는지 이해하는 데 문제가 있습니다. 나는 this manual과 다른 것을 읽었습니다. 그리고 내가 이해한다면 게스트 OS에서 인터넷을 가져 오려면 인터페이스를 호스트 OS에 사용해야합니다. 다음 후 eth0를일단 tap0에게 인터페이스를 연결하는 : QEMU의 게스트 OS에서 네트워킹은 어떻게 작동합니까?

이제 다리 ( 링크를 일단 tap0eth0를 호스트)를 사용하여

  • NAT 라우팅을 사용하여

    1. 를 I 호스트에 이러한 인터페이스가 있습니다 (ppp0 - 3G 모뎀 - 인터넷, lo) :

      돌풍의 OS에서 17,451,515,

      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 
      

      고객 라우팅 테이블 : 당신은 TAP 디바이스 만에 가진 문제를 사용하려면 같은

      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

    것 같습니다 그것. 그 인수에

    -net nic,model=rtl8139 -net tap 
    

    를 컴퓨터에 사용 가능한 NIC 장치 RTL8139 교체 : 당신이 당신의 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 
    

    이 스크립트를 실행 한 후, 가상 머신은 -net 시작 : 다음 스크립트는 필요한 다리와 포트를 만들 수 있습니다.

    +0

    실행하면 다음과 같은 오류가 발생합니다. qemu-system-i386 : -net tap : 'tap'장치를 초기화 할 수 없습니다. –

    관련 문제