kvm网络模式介绍。

网络模式

用户模式客户机可以直接连接宿主机和外部网络,而且完全由qemu自身完全实现,不依赖于(bridge,dnsmasq,iptables等),不需要root权限。Qemu使用slirp实现了一套Tcp/ip协议栈,而且用这个协议栈实现了一套虚拟的NAT网络。

qemu-kvm默认使用:-net nic -net user

优点:

  • 简单、独立性好、不需要root权限、客户机网络隔离性好。

缺点:

  • 性能差

  • 不支持部分网络功能(如ICMP),所以不能再客户机中使用ping命令测试,

  • 不能从宿主机或外部网络直接访问客户机

-net user 介绍

-net user[,option][,option][,…]

常用参数:

vlan=n 将用户模式网络连接到n的vlan中

name=name 分配一个qemu monitor中会用到的名称

net=addr[/mask] 设置客户机可以看到的IP地址

host=addr 指定客户机可见宿主机地址,默认值为客户机所在网络的第2个地址

restrict=y yes n no 如果将此项打开,则客户机将会被隔离,客户机不能与宿主机通信,IP数据包不能与外部通信,这个选项不会影响到hostfwd指定的转发规则

hostname=name 设置在宿主机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服务器软件)

其他网络选项

  1. 使用TCP socket连接客户机的VLAN

-net socket[,Vlan=n][,name=name][,fd=h][,listen=[host]:port][,connect=host:port]

  1. 使用UDP的多播socket建立客户机间的连接

-net socket[,Vlan=n][,name=name][,fd=h][,mcast=maddr:port]

  1. 使用VDE switch的网络连接

-net vde[,vlan=n][,name=name][,sock=socketpath][,port=n][,group=groupname][,mode=octalmode]

  1. 转存(dump)出Vlan中的网络数据

-net dump[,vlan=n][,file=file][,len=len]

  1. 不分配任何网络设别

-net none

  1. 一个新的网络配置参数“-netdev”

-netdev TYPE,sid=NAME,…

-nographic qemu-kvm下添加“-nographic”参数可以关闭qemu的图形界面输出,让该模式下完全命令行工具,而qemu中模拟产生的串口被重定向到当前的控制台中,所以客户机中对内核进行修改,是内核控制台输出重定向到串口上,依然可以在非图形模式下管理客户机系统和调试内核。需要修改grub配置文件时console输出重定向到串口ttS0 kernel /vmlinuz-2.6.32-431.el6.x86_64 这行最后添加“console=ttyS0”

-curses参数 让qemu将VGA显示输出到使用的curses/ncurses接口支持的文本模式界面,与”-nographic”相比,它的好处是它接受客户机的VGA正常输出而不是串口的输出信息,因此不需要修改客户机将控制台重定向到串口。前提是宿主机必须有”curses”或”ncurses”这样的软件包提供显示接口的支持。

-vga type 选择为客户机模拟VGA卡的类型,可以选类型有如下4类:

(1)cirrus 为客户及模拟出Cirrus Logic GD5466显卡,客户机lspci grep VGA可以查看VGA卡的类型。

(2)std 模拟标准的VGA卡,带有Bochs VBE扩展

(3)vmware 提供VMware SVGA-II支持

(4)none 关闭VGA卡

-no-frame 使用SDL显示时没有边框.

-full-screen 启动客户机时,就自动使用全屏显示

-alt-grab 使用ctrl+alt+shift组合键抢占和释放鼠标

-ctrl-grab 使用”右ctrl键”去抢占和释放鼠标

完毕。