我在了解客户操作系统(Ubuntu)中Qemu和网络的工作方式时遇到了问题。我读过this manual和其他人。如果我理解,如果你想在客户操作系统中选择互联网,你需要在主机操作系统中进行点击界面。然后链接 eth0 和 tap0 接口:
现在我在主机中有这些接口( 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)
在阵风OS( 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
...
在阵风OS工作的互联网!如果我在真实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
答案 0 :(得分:5)
看起来您想要使用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。