在qemu中用tun/tap设备与宿主机通讯
宿主机软件的安装配置。
准备: 安装必要的工具
$sudo apt-get install bridge-utils uml-utilities
这样就可以使用brctl, tunctl 命令了。
1. 创建一个网桥br0,网桥中包括eth0, tap0
由于没有dhcp 服务器,这里采用了静态分配ip
br0 网桥接口 ip: 192.168.1.1
eth0 是物理网络接口 ip: 192.168.1.100
tap0 是创建出的虚拟网络接口 ip: 192.168.1.101
script 文件如下:
$cat br_tap.sh
#!/bin/sh
#首先关闭eth0
ifdown eth0
#添加一个虚拟网桥br0
brctl addbr br0
#在br0 中添加一个接口eth0
brctl addif br0 eth0
#只有一个网桥,所以关闭生成树协议
brctl stp br0 off
#由于没有dhcp, 为br0,eth0分配一个静态IP, 设置混杂模式,并打开
ifconfig br0 192.168.1.2 promisc up
ifconfig eth0 192.168.1.100 promisc up
#添加默认网关
#route add default gw 192.168.0.1
#创建一个tap0接口,只允许root用户访问
tunctl -t tap0 -u root
#让tap也处于混杂模式,便于客户机分配IP
ifconfig tap0 192.168.1.101 promisc up
#把tap0 也添加到 网桥中
brctl addif br0 tap0
执行脚本和查看结果:
$ sudo ./br_tap.sh
[sudo] password for hjj:
ifdown: interface eth0 not configured
Set 'tap0' persistent and owned by uid 0
$ brctl show br0
bridge name bridge id STP enabled interfaces
br0 8000.74e6e242b01d no eth0
tap0
还可以用ifconfig 来查看 br0, eth0, tap0 的ip地址
模拟机
启动模拟机, 为模拟机分配一个同网段ip, 模拟机和宿主机就可以通讯了,实测通过 支持ping 等所有网络通讯。
例如:
sudo qemu-system-x86_64 -enable-kvm -hda disk.img -cdrom TinyCore-4.3.1.iso -net nic -net tap,ifname=tap0,script=no
宿主机软件的安装配置。
准备: 安装必要的工具
$sudo apt-get install bridge-utils uml-utilities
这样就可以使用brctl, tunctl 命令了。
1. 创建一个网桥br0,网桥中包括eth0, tap0
由于没有dhcp 服务器,这里采用了静态分配ip
br0 网桥接口 ip: 192.168.1.1
eth0 是物理网络接口 ip: 192.168.1.100
tap0 是创建出的虚拟网络接口 ip: 192.168.1.101
script 文件如下:
$cat br_tap.sh
#!/bin/sh
#首先关闭eth0
ifdown eth0
#添加一个虚拟网桥br0
brctl addbr br0
#在br0 中添加一个接口eth0
brctl addif br0 eth0
#只有一个网桥,所以关闭生成树协议
brctl stp br0 off
#由于没有dhcp, 为br0,eth0分配一个静态IP, 设置混杂模式,并打开
ifconfig br0 192.168.1.2 promisc up
ifconfig eth0 192.168.1.100 promisc up
#添加默认网关
#route add default gw 192.168.0.1
#创建一个tap0接口,只允许root用户访问
tunctl -t tap0 -u root
#让tap也处于混杂模式,便于客户机分配IP
ifconfig tap0 192.168.1.101 promisc up
#把tap0 也添加到 网桥中
brctl addif br0 tap0
执行脚本和查看结果:
$ sudo ./br_tap.sh
[sudo] password for hjj:
ifdown: interface eth0 not configured
Set 'tap0' persistent and owned by uid 0
$ brctl show br0
bridge name bridge id STP enabled interfaces
br0 8000.74e6e242b01d no eth0
tap0
还可以用ifconfig 来查看 br0, eth0, tap0 的ip地址
模拟机
启动模拟机, 为模拟机分配一个同网段ip, 模拟机和宿主机就可以通讯了,实测通过 支持ping 等所有网络通讯。
例如:
sudo qemu-system-x86_64 -enable-kvm -hda disk.img -cdrom TinyCore-4.3.1.iso -net nic -net tap,ifname=tap0,script=no