kvm 虚拟机可以直接连接宿主机和外部网络,而且完全由 qemu
自身完全实现,不依赖于(bridge,dnsmasq,iptables等),不需要root权限。Qemu使用 slirp 实现了一套 TCP/IP协议栈
,而且用这个协议栈实现了一套虚拟的 NAT
网络
说明
优点:
- 简单、独立性好、不需要root权限、客户机网络隔离性好
缺点:
- 性能差
- 不支持部分网络功能(如ICMP),所以不能再客户机中使用ping命令测试
- 不能从宿主机或外部网络直接访问客户机
使用
- -netdev user 介绍
-netdev user[,option][,option][,...]
常用参数:
- net=addr[/mask] 设置客户机可以看到的IP地址
- host=addr 指定客户机可见宿主机地址,默认值为客户机所在网络的第2个地址
- restrict=y|yes|n|no 如果将此项打开,则客户机将会被隔离,客户机不能与宿主机通信,IP数据包不能与外部通信,这个选项不会影响到hostfwd指定的转发规则
- hostname=hostname 设置在宿主机DHCP服务器中保存的客户机主机名
- dhcpstart=addr 设置分配给客户机的第一个IP,在qemu内嵌的DHCP服务器中有16个IP地址可以分配,默认是(如10.0.2.15~10.0.2.30)
- dns=addr 指定虚拟的DNS地址,该地址不能与宿主机一样,默认为网络中的第三个IP地址(如:10.0.2.3)
- tftp=dir 激活QEMU内嵌的TFTP服务器,dir为TFTP服务器的根目录;客户机连接服务器的时候需要使用binary模式来操作
- hostfwd=[tcp|udp]:[hostaddr]:hostport-[guestaddr]:guestport 将访问宿主机的hostport端口的TCP/UDP连接重定向到客户机(guestaddr)的guestport端口
- guestfwd=[tcp]:server:port-dev 将客户机中访问ip地址为server的端口的连接转发到宿主机的dev字符设备上,可以多次重复使用
- bootfile=file 让file文件成为客户机可以使用的BOOTP启动镜像文件,它与
tftp
选项联合使用,可以实现从网络启动客户机的功能
- smb=dir[,smbserver=addr]激活samba服务器,可以让客户机访问宿主机的dir目录,addr为samba服务器地址,addr为用户网络的第四个地址.(宿主机必须安装samba服务器软件)
- 使用TCP socket连接客户机
-netdev socket,id=str[,fd=h][,udp=host:port][,localaddr=host:port]
- 使用UDP的多播socket建立客户机间的连接
-netdev socket,id=str[,fd=h][,mcast=maddr:port[,localaddr=addr]]
- 不分配任何网络设别
-netdev none
- vga 设备
- -vga type 选择为客户机模拟VGA卡的类型,可以选类型有如下4类:
- cirrus 为客户及模拟出Cirrus Logic GD5466显卡,客户机lspci | grep VGA可以查看VGA卡的类型。
- std 模拟标准的VGA卡,带有Bochs VBE扩展
- vmware 提供VMware SVGA-II支持
- none 关闭VGA卡
- -no-frame 使用SDL显示时没有边框
- -full-screen 启动客户机时,就自动使用全屏显示
- -alt-grab 使用ctrl+alt+shift组合键抢占和释放鼠标
- -ctrl-grab 使用
右ctrl键
去抢占和释放鼠标
root@ubuntu:~# cat /etc/libvirt/qemu/networks/default.xml
<!--
WARNING: THIS IS AN AUTO-GENERATED FILE. CHANGES TO IT ARE LIKELY TO BE
OVERWRITTEN AND LOST. Changes to this xml configuration should be made using:
virsh net-edit default
or other application using the libvirt API.
-->
<network>
<name>default</name>
<uuid>fa3964d8-b294-4b23-a600-6e79954bc168</uuid>
<forward mode='nat'/>
<bridge name='virbr0' stp='on' delay='0'/>
<mac address='52:54:00:0f:d0:15'/>
<ip address='192.168.122.1' netmask='255.255.255.0'>
<dhcp>
<range start='192.168.122.2' end='192.168.122.254'/>
</dhcp>
</ip>
</network>