VirtualBox 中的 QEMU 和桥接连接一直向下

Nic*_*ick 7 networking linux qemu bridge

我正在尝试在我的局域网上安装一个 ARM QEMU 系统。我尝试直接从 Windows (Windows 7 x64) 运行 QEMU,除了我无法获得 TAP 适配器来桥接到我的无线连接之外,还成功了。具体来说,Windows 拒绝桥接我的任何网络适配器。

因此,我尝试在 Ubuntu 虚拟机中使用 QEMU(令人惊讶的是,它的速度要快得多,这就是我想坚持使用它的原因)。Ubuntu VM 桥接到我的无线连接,并且工作正常。我已经使用 TAP 设备在 Ubuntu 中设置了一个网桥,我相信它设置正确,但除了从我的 LAN 获取 DHCP 地址之外,它无法正常工作。

  • Windows 7 x64 主机
    • Ubuntu 12.04 32 位虚拟机
      • 运行 Debian Squeeze 的 QEMU ARM

我相信存在路由问题,但我无法确定它。

  • 我的 LAN 为 DHCP 设置为 1.1.1.0/24,网关为 1.1.1.1(是的,这很愚蠢,但这不是问题)
  • Ubuntu有以下配置:

[这里需要一个不那么空的行来让 pre 标签在下面工作......]

br0 Link encap:Ethernet  HWaddr 08:00:27:74:6b:ec  
inet addr:1.1.1.16  Bcast:1.1.1.255  Mask:255.255.255.0
inet6 addr: fe80::a00:27ff:fe74:6bec/64 Scope:Link
UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
RX packets:3135 errors:0 dropped:0 overruns:0 frame:0
TX packets:967 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:0 
RX bytes:681918 (681.9 KB)  TX bytes:79747 (79.7 KB)

eth1 Link encap:Ethernet  HWaddr 08:00:27:74:6b:ec  
inet6 addr: fe80::a00:27ff:fe74:6bec/64 Scope:Link
UP BROADCAST RUNNING PROMISC MULTICAST  MTU:1500  Metric:1
RX packets:14249 errors:0 dropped:0 overruns:0 frame:0
TX packets:5850 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000 
RX bytes:15166414 (15.1 MB)  TX bytes:431255 (431.2 KB)

tap1 Link encap:Ethernet  HWaddr 96:f3:2d:ae:c8:08  
inet6 addr: fe80::94f3:2dff:feae:c808/64 Scope:Link
UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
RX packets:161 errors:0 dropped:0 overruns:0 frame:0
TX packets:2262 errors:0 dropped:3 overruns:0 carrier:0
collisions:0 txqueuelen:500 
RX bytes:12144 (12.1 KB)  TX bytes:262799 (262.7 KB)
Run Code Online (Sandbox Code Playgroud)

QEMU 如下:

在此处输入图片说明

我的服务器证实了这一点:

tail /var/log/dnsmasq.leases
1341855255 52:54:00:12:34:56 1.1.1.144 * *
Run Code Online (Sandbox Code Playgroud)

所以 QEMU 正在获取一个 IP 地址,但其他方面似乎没有连接:

root@arm-emu:~# ping google.com
ping: unknown host google.com

root@arm-emu:~# ping 1.1.1.1
From 1.1.1.144 Destination Host Unreachable
Run Code Online (Sandbox Code Playgroud)

这是我用来在 Ubuntu 中设置桥接器的方法:

tunctl -t tap1 -u root
brctl addbr br0
ifconfig eth1 0.0.0.0 promisc
brctl addif br0 eth1
dhclient br0
brctl addif br0 tap1
ifconfig tap1 up
Run Code Online (Sandbox Code Playgroud)

在 QEMU 中,我只是将 DHCP 用于 eth0,没有特殊配置。

我做错了吗,我的桥接桥连接怎么办?

小智 4

我知道我迟到了,但我最近遇到了同样的问题。

主要在这里找到解决方案:

http://ajibhpandey.info/2007/07/interconnecting-qemu-and-virtualbox-virtual-machines/

关键步骤是在桥接口上启用 IP 转发和设置 MASQUERADING:

$ echo "1" > /proc/sys/net/ipv4/ip_forward
$ sudo iptables -t nat -A POSTROUTING -o br0 -j MASQUERADE
Run Code Online (Sandbox Code Playgroud)

现在QEMU可以访问互联网,并且VirtualBox和主机都可以访问。

但无法访问同一局域网内的其他计算机。

由于英语是我的第二语言,任何愿意改进这个答案的人将不胜感激。