VBoxManage 命令操作,详细的网络设置命令

9 篇文章 0 订阅

VBoxManage [-v|-version] 显示virtualbox的版本号
VBoxManage -nologo 隐藏logo
VBoxManage -convertSettings 允许自动转换设置文件
VBoxManage -convertSettingsBackup 允许自动转换设置文件,并在转换前作备份
VBoxManage -convertSettingsIgnore 允许自动转换设置文件,但是不保存结果

VBoxManage list vms|runningvms 显示列表虚拟机|正在运行的虚拟机
|ostypes|hostdvds virtualbox支持的系统类型|宿主机的光盘驱动器
|hostfloppies 宿主机的软盘驱动器
|hostifs|hostinfo 宿主机的网络接口|宿主机的信息
|hdds|dvds 已注册的虚拟硬盘|已注册的虚拟光盘
|floppies|usbhost 已注册的虚拟软盘|宿主机的USB设备
|usbfilters USB筛选器
|systemproperties 虚拟机的基本信息

VBoxManage showvminfo | 显示指定虚拟机的信息
[-details] 显示详细信息
[-statistics] 显示统计信息
[-machinereadable] 以清晰的格式显示虚拟机信息

VBoxManage registervm 将指定文件所在的虚拟机添加到列表

VBoxManage unregistervm | 从虚拟机列表清除指定的虚拟机
[-delete] 从虚拟机列表删除指定的虚拟机

VBoxManage createvm -name 创建指定名称的虚拟机
[-register] 将创建的虚拟机添加到列表
[-basefolder 指定虚拟机的基础目 录
[-settingsfile ] 指定虚拟机配置文件的基础目录
[-uuid ] 创建指定uuid的虚拟机

VBoxManage modifyvm <uuid|name> 编辑指定的虚拟机的配置
[-name ] 修改虚拟机的名称
[-ostype ]修改虚拟机的操作系统类型
[-memory ] 修改虚拟机的内存大小
[-vram ] 修改虚拟机的显存大小
[-acpi on|off] 启动或禁止acpi电源管理接口
[-ioapic on|off] 启动或禁止I/O APIC电源管理接口
[-pae on|off] 启动或禁止CPU的PAE支持,PAE是 Physical Address Extension : 物理地址扩展
[-hwvirtex on|off|default]启动或禁止CPU的硬件虚拟化支持
[-nestedpaging on|off] 开启或关闭CPU的嵌套页面列表支持
[-monitorcount ] 设置显示器数目,VRDP多用户模式时
[-bioslogofadein on|off] 开启或关闭bioslogo渐显效果
[-bioslogofadeout on|off] 开启或关闭bioslogo渐隐效果
[-bioslogodisplaytime ]设置bioslogo显示时间(以毫秒为单位)
[-bioslogoimagepath ]设置bioslogo图像路径,用于自定义bioslogo
[-biosbootmenu disabled| 设置是否显示bios启动菜单 关闭
menuonly| 只菜单
messageandmenu] 信息和菜单
[-biossystemtimeoffset ] 设置bios系统时间补偿(以毫秒为单位)
[-biospxedebug on|off] 打开或关闭biospxe调试
[-boot<1-4> none|floppy|dvd|disk|net>] 设置启动顺序
[-hd<a|b|d> none||] 为虚拟机添加三个IDE设备之一(第2个主盘被vm保留作为光驱,不能占用)在三个IDE中,你可以指定(硬盘)的vdi文件名或者它的UUID
[-idecontroller PIIX3|PIIX4] 设置IDE控制器的类型
[-sata on|off] 开启或关闭SATA硬盘控制器
[-sataportcount <1-30>] 设置虚拟机最多支持的SATA控制器数目
[-sataport<1-30> none| 没有硬盘连接到SATA控制器
| 指定uuid的硬盘连接到SATA控制器
] 指定文件名的硬盘连接到SATA控制器
[-sataideemulation<1-4> <1-30>] 指定一个SATA设备工作在IDE兼容模式,IDE设备编号是1-4,SATA设备编号是1-30
[-dvd none| 不连接DVD光驱
| 指定UUID的DVD光驱连接
| 将指定的光盘映像文件挂接到DVD光驱
host:] 将宿主机的DVD光驱挂接到虚拟机的DVD光驱
[-dvdpassthrough on|off]打开|关闭虚拟机里光盘的刻录功能
[-floppy disabled| 不连接软驱
empty| 连接软驱但不插入软盘
| 指定UUID的软驱连接
| 将指定的软盘映像文件挂接到软驱驱
host:] 将宿主机的软驱驱挂接到虚拟机的软驱
[-nic<1-N> none| 虚拟机不添加网卡
null| 虚拟机有网卡但不连接
nat| 网络连接使用NAT模式
hostif| 网络连接使用桥接模式
intnet] 网络连接使用内部网络模式
[-nictype<1-N> Am79C970A| 虚拟机连接AMD PCNet PCI II网卡
Am79C973| 虚拟机连接AMD PCNet FAST III网卡(默认)
82540EM| 虚拟机连接Intel PRO/1000 MT Desktop网卡
82543GC] 虚拟机连接Intel PRO/1000 T Server网卡
[-cableconnected<1-N> on|off]插入或拔出网线
[-nictrace<1-N> on|off] 开启或关闭网络追踪
[-nictracefile<1-N> ] 将网络流量追踪数据保存到文件
[-nicspeed<1-N> ] 设置网络连接的速度
[-hostifdev<1-N> none| 不连接到主机网络接口
] 桥接模式下连接到指定的主机接口
[-intnet<1-N> ] 内网模式下为虚拟机指定内部网络名称
[-natnet<1-N> | 配置NAT网络接口的地址
default] 默认NAT网络接口的地址是10.0.x.0/24
[-macaddress<1-N> auto| 自动生成虚拟网卡的MAC地址
] 指定虚拟网卡的MAC地址
[-uart<1-N> off| 不启用虚拟串口
<I/O base> ]启用虚拟串口,并设置虚拟串口的I/O参数和IRQ参数
[-uartmode<1-N> disconnected| 启用虚拟串口,但不连接到宿主机的串口
server | 在宿主机创建PIPE通道,并将虚拟机串口连接到这个通道
client | 不创建PIPE通道,而是将虚拟机串口连接到已存在的通道
] 将虚拟机串口连接到宿主机的串口
[-gueststatisticsinterval ] 配置虚拟机静态时间间隔
[-audio none| 虚拟机不连接声卡
null| 将虚拟机的声卡连接到空的声音设备
dsound] 将虚拟机的声卡连接到宿主机的声卡
[-audiocontroller ac97| 将虚拟机声卡虚拟为ICH AC97声卡
sb16] 将虚拟机声卡虚拟为soundblaster 16声卡
[-clipboard disabled| 不共享剪贴板
hosttoguest| 将宿主机的剪贴板共享给虚拟机
guesttohost| 将虚拟机的剪贴板共享给宿主机
bidirectional] 宿主机和虚拟机共使用一个剪贴板
[-vrdp on|off] 开启|关闭virtualbox内置的VRDP服务器
[-vrdpport default| 使用默认的vrdp端口3389
] 指定vrdp端口
[-vrdpaddress ] 指定VRDP主机地址
[-vrdpauthtype null| 不用授权,任何客户机都可以连接到VRDP服务器
external| 只有宿主机的用户才可以连接到VRDP服务器
guest] 只有虚拟机的用户才可以连接到VRDP服务器
[-vrdpmulticon on|off] 打开|关闭VRDP多用户连接模式
[-vrdpreusecon on|off] 打开|关闭VRDP断线重连
[-usb on|off] 打开|关闭虚拟USB控制器
[-usbehci on|off] 打开|关闭虚拟USB2.0控制器
[-snapshotfolder default| 将系统快照保存到默认文件夹
] 将系统快照保存到指定文件夹

VBoxManage startvm | 开启指定UUID|名称的虚拟机
[-type gui|vrdp] 设置虚拟机标准显示设备GUI界面|VRDP

VBoxManage controlvm | 改变正在运行的虚拟机的状态
pause| 暂停,这时虚拟机窗口显示灰色
resume| 恢复暂停的虚拟机
reset| 复位
poweroff| 强行关闭
acpipowerbutton| 关机
acpisleepbutton| 使虚拟机处于睡眠状态
savestate| 保存状态然后关闭,相当于休眠
keyboardputscancode [ …] 键盘扫描码设置
setlinkstate<1-4> on|off 连接|断开网络连接
usbattach |

连接到指定UUDI|地址的USB设备
usbdetach |
断开指定UUDI|地址的USB设备
dvdattach none| 不连接虚拟DVD光驱
| 连接到指定UUID的DVD光驱
| 连接到指定名称的DVD映像文件
host: 连接到宿主机的DVD光驱
floppyattach none| 不连接虚拟软驱
| 连接到指定UUID的虚拟软驱
| 连接到指定名称的软盘映像文件
host: 连接到宿主机的软驱
setvideomodehint 设置虚拟机的屏幕分辨率 水平像素
垂直像素
颜色深度
[display] 刷新频率
setcredentials 指定VRDP自动连接参数 用户名
密码

[-allowlocallogon <yes|no>] 允许|禁止本地登陆

VBoxManage discardstate | 丢弃指定UUID|名称的虚拟机的保存状态

VBoxManage adoptstate | <state_file> 将虚拟机从指定的保存状态中恢复

VBoxManage snapshot | 为指定的虚拟机拍快照
take 为快照取名
[-desc ]| 给快照添加描述
discard | | 丢弃指定的快照
discardcurrent -state| 恢复到最近的快照
-all | 恢复到倒数第二个快照
edit || 编辑指定的快照
-current 编辑当前快照
[-newname ] 修改快照名称
[-newdesc ] 修改快照描述
showvminfo | 显示快照的虚拟机信息

VBoxManage registerimage disk|dvd|floppy 注册硬盘、光盘、软盘映像文件
[-type normal| 注册为普通类型(可创建快照,可读写)
immutable| 注册为只读类型(相当于加了硬盘卡)
writethrough] 注册为可写类型(这种类型不能创建快照)
(disk only) (注册类型选项只适用于硬盘)

VBoxManage unregisterimage disk| 从虚拟介质管理器删除指定的硬盘
dvd| 从虚拟介质管理器删除指定的DVD光盘
floppy 从虚拟介质管理器删除指定的软盘
| 删除时指定UUID
删除时指定映像文件

VBoxManage showvdiinfo | 显示指定UUID|名称虚拟硬盘的信息

VBoxManage createvdi -filename 创建指定名称的虚拟硬盘
-size 指定虚拟硬盘的大小(以兆为单位)
[-static] 创建固定大小的虚拟硬盘
[-comment ] 添加一段解释性文字
[-register] 注册新创建的虚拟硬盘
[-type normal| 注册类型 普通(可以创建快照)
writethrough] 注册类型 可写(不能创建快照)
(default: normal) 默认是普通类型
VBoxManage modifyvdi | compact 压缩指定的虚拟硬盘

VBoxManage clonevdi | 克隆指定的VDI虚拟硬盘

VBoxManage convertdd [-static] 将raw硬盘转换成vdi虚拟硬盘
VBoxManage convertdd [-static] stdin 将标准输入参数指定的设备转换成vdi虚拟硬盘,比如:dd if=/dev/sda1 | VBoxManage convertdd stdin /media/disk/C.vdi 62277025792

VBoxManage命令详解(二)
VBoxManage addiscsidisk -server | 通过指定服务器名称|ip地址添加ISCSI硬盘
-target 指定对象名称字符串
[-port ] 指定ISCSI对象的服务端口号
[-lun ] 指定对象资源的逻辑单元编号
[-encodedlun ] 指定另一种格式的对象资源的逻辑单元编号
[-username ] 指定连接ISCSI对象的用户名
[-password ] 指定连接ISCSI对象所需的密码
[-comment ] 为这个连接添加一段描述性文字
比如:VBoxManage addiscsidisk -server 10.200.2.30 -target iqn.2000-12.com.acme:storage.lun0 -lun 0

VBoxManage createhostif 在宿主机添加一个指定名称的虚拟网络接口
VBoxManage removehostif | 从宿主机删除指定UUID|名称的虚拟网络接口

VBoxManage getextradata global| 获取全局设置信息
| 获取指定UUID的虚拟机的信息
获取指定名称的虚拟机的信息
| 获取与指定键值相关联的数据信息
enumerate 列举信息
比如:VBoxManage getextradata xp installdate 用于获取虚拟机XP的安装时间

VBoxManage setextradata global| 设置全局信息
| 设置指定UUID的虚拟机的信息
设置指定名称的虚拟机的信息
指定要添加信息的键
[] 给上面的键添加键值(必须指定键值)
比如:VBoxManage setextradata xp installdate 2006.01.01 设置虚拟机xp的安装时间为2006年1月1日

VBoxManage setproperty vdifolder default| 在全局设定里设置vdi目录为默认
| 在全局设定里设置指定vdi目录
machinefolder default| 在全局设定里设置虚拟机目录为默认
| 在全局设定里指定虚拟机目录
vrdpauthlibrary default| 在全局设定里设置VRDP证书为默认的证书
| 在全局设定里指定其他的VRDP证书
websrvauthlibrary default| 在全局设定里设置Web服务证书为默认的证书
null| 在全局设定里设置web服务证书为空
| 在全局设定里指定其他的Web服务证书
hwvirtexenabled yes|no 在全局设定里设置是|否支持硬件虚拟化
loghistorycount 在全局设定里设置日志数目,编号从0开始

VBoxManage usbfilter add <index,0-N> 添加usb筛选器并设置它在筛选器列表中的位置
-target | 添加usb筛选器到指定UUID的虚拟机
| 添加usb筛选器到指定名称的虚拟机
global 添加全局usb筛选器
-name 给usb筛选器指定名称
-action ignore| 不允许虚拟机连接到筛选器
hold 允许虚拟机连接到筛选器(全局筛选器时)
[-active yes|no] 筛选器是|否生效(默认是生效)
[-vendorid ] 给usb筛选器指定vendorid(厂商标志)
[-productid ] 给usb筛选器指定productid(产品标志号)
[-revision ] 给usb筛选器指定revision(修订版本号)
[-manufacturer ] 给usb筛选器指定manufacturer(制造商)
[-product ] 给usb筛选器指定product(产品标志)
[-remote yes|no] 指定usb筛选器是|否在远程登陆时有效
[-serialnumber ] 给usb筛选器指定serialnumber(序列号)
[-maskedinterfaces ]
VBoxManage usbfilter modify <index,0-N> 修改usb筛选器在列表中的顺序
-target | 修改指定UUID的虚拟机的usb筛选器
| 修改指定名称的虚拟机的usb筛选器
global 修改全局设置的usb筛选器
[-name ] 修改筛选器名称
[-action ignore| 不允许虚拟机连接到筛选器
hold] 允许虚拟机连接到筛选器(全局筛选器时)
[-active yes|no] 筛选器是|否生效(默认是生效)
[-vendorid |""] 给usb筛选器指定vendorid(厂商标志)
[-productid |""] 给usb筛选器指定productid(产品标志号)
[-revision |""] 给usb筛选器指定revision(修订版本号)
[-manufacturer |""] 给usb筛选器指定manufacturer(制造商)
[-product |""] 给usb筛选器指定product(产品标志)
[-remote yes|no] 指定usb筛选器是|否在远程登陆时有效
[-serialnumber |""] 给usb筛选器指定serialnumber(序列号)
[-maskedinterfaces |""]

VBoxManage usbfilter remove <index,0-N> 删除指定序号的usb筛选器
-target | 删除指定UUID的虚拟机的usb筛选器
| 删除指定名称的虚拟机的usb筛选器
global 删除全局usb筛选器

VBoxManage sharedfolder add | 添加共享文件夹到指定名称的虚拟机
添加共享文件夹到指定uuid的虚拟机
-name 指定共享文件夹名称
-hostpath 指定共享文件夹所在的主机路径
[-transient] 设置临时共享
[-readonly] 设置共享为只读

VBoxManage sharedfolder remove | 从指定名称的虚拟机删除共享文件夹
从指定UUID的虚拟机删除共享文件夹
-name 删除指定名称的共享文件夹
[-transient] 临时删除

VBoxManage vmstatistics | 统计指定名称的虚拟机的运行状态信息
统计指定UUID的虚拟机的运行状态信息
[-reset] 复位统计信息
[-pattern ] 设置信息的显示格式
[-descriptions] 在统计信息中显示描述信息

VBoxManage guestproperty get | 获取指定名称的虚拟机的预先设定的属性值
获取指定UUID的虚拟机的预先设定的属性值
获取指定属性的预先设定的值
[-verbose] 以冗长的格式显示

VBoxManage guestproperty set | 给指定名称的虚拟机设置属性值
给指定UUID的虚拟机设置属性值
要设定值的属性
[ 给属性设定的值
[-flags ]] 设置一个标志

VBoxManage guestproperty enumerate | 列举指定名称的虚拟机的属性值
列举指定UUID的虚拟机的属性值
[-patterns ] 列举属性值时采用的格式
VBoxManage metrics list [*| 显示性能计数器
收集的所有系统资源的监测数据
host| 显示性能计数器
收集的宿主机的系统资源的监测数据
显示性能计数器
收集的虚拟机的系统资源的监测数据
[<metric_list>]] 要显示的性能计数器列表

VBoxManage metrics setup 设置性能计数器
[-period ] 设置性能计数器的显示周期
[-samples ] 设置性能计数器抽样统计数
[*| 对所有资源设置设置性能计数器
host| 对宿主机资源设置设置性能计数器
对虚拟机资源设置设置性能计数器
[<metric_list>]] 性能计数器列表
例如:VBoxManage metrics setup -period 1 -samples 5 host CPU/Load,RAM/Usage

VBoxManage metrics query [*| 查找并显示所有资源当前的性能计数器
host| 查找并显示宿主机当前的资源的性能计数器
查找并显示虚拟机当前的资源的性能计数器
[<metric_list>]] 性能计数器列表
例如:VBoxManage query host CPU/Load/User,CPU/Load/Kernel

VBoxManage metrics collect 收集性能计数器信息
[-period ] 设置性能计数器信息显示的刷新周期
[-samples ] 设置性能计数器抽样统计数
[-list] 显示当前可以收集信息的性能计数器
[-detach]
[*| 收集所有系统资源的性能计数器信息
host| 收集宿主机资源的性能计数器信息
收集虚拟机资源的性能计数器信息
[<metric_list>]] 性能计数器列表

网络设置:
目录:

1.1 虚拟化网络硬件

1.2 网络模式介绍

1.3 Network Address Translation(NAT)

1.3.1 配置NAT端口转换

1.3.2 NAT模式的局限性

1.4 Network Address Translation Service

1.5 桥接网络(Bridged Networking)

1.6 内部网络(Internal networking)

1.7 仅主机模式(Host-only networking)

1.8 UDP通道网络(UDP Tunnel networking)

1.9 VDE networking

1.10 限制I/O网络的带宽

1.11 提高网络性能

VirtualBox为虚拟机提供8种虚拟PCI Ethernet 网卡。对于每一种网卡,都可以单独选择以下特性:
1)连同硬件一起虚拟化;
2)虚拟化模式的虚拟网卡将会运行在你的主机物理网络硬件上。(the virtualization mode that the virtual card will be operating in with respect to your physical networking hardware on the host.)

VirtualBox用户图形界面中可以配置四种模式的网卡,也可以在命令行通过VBoxManage modifyvm进行配置。VBoxManage modifyvm

1.1 虚拟网络硬件

对于每一种网卡,你都可以选择不同的硬件应用于虚拟机上。VirtualBox可以对以下六种网络硬件进行虚拟化。

  • AMD PCNet PCI II (Am79C970A);

  • AMD PCNet FAST III (Am79C973, the default);

  • Intel PRO/1000 MT Desktop (82540EM);

  • Intel PRO/1000 T Server (82543GC);

  • Intel PRO/1000 MT Server (82545EM);

  • Paravirtualized network adapter (virtio-net).

PCNet FAST III 是默认的,因为几乎所有的原始操作系统都支持这种网络硬件,GNU GRUB 启动管理器也是默认的。例外的是,被选作一些客户机操作系统的Intel PRO/1000系列适配器不再被PCNet网卡所支持,例如Windows Vista。

Intel PRO/1000 MT Desktop运行在Windows Vista及以后版本。没有安装附加驱动的Windows XP 客户机能够识别Intel PRO/1000 T Server网络硬件。而Intel PRO/1000 MT Server则引用自其他平台。

“Paravirtualized network adapter (virtio-net)” 网络硬件是特殊的,如果选择这一项,VirtualBox将不会虚拟一般网络硬件(即被一般客户机原始系统所支持)。然而VirtualBox提供了一个特殊的软件接口以实现客户机的虚拟化环境,从而避免了模仿网络硬件和提高网络性能的复杂性。从v3.1开始,VirtualBox提供了支持行业标准“为Virtio”的网络驱动,这个网络驱动是开源项目KVM的一部分。

“virtio”网络驱动可应用于以下客户机操作系统:

  • Linux内核版本2.6.25及其以后版本可以配置提供virtio支持,一些分布式也会将virtio移植到旧的内核版本中。
  • For Windows 2000,XP和Vista的virtio驱动可以在KVM项目的主页下载安装。
    http://www.linux-kvm.org/page/WindowsGuestDrivers

假如您使用Intel虚拟化网卡和桥接网络的话,VirtualBox会有限支持所谓的巨型帧,即网络数据包超过1500字节的数据。换言之,AMD网络设备不支持巨型帧,在这样的情况下,巨型数据包将会在传输和接受方向上被丢弃。客户机操作系统试图通过这个特性来观察一个数据包的丢失,这将会导致客户机上的应用程序产生意外的行为。在其默认的配置情况下不会导致客户机操作系统出问题,只是巨型帧需要被明确的使用。

1.2 网络模式简介

八种网络适配器都可以分别配置以下的模式:

Not attached
在这种模式下,VirtualBox会告诉客户机有一个网卡的存在,但没有连接——就好像没有以 太网线缆插入该网卡。这种方式就像把虚拟以太网线缆拔出并破坏连接,这可以有效地告知客户机操作系统没有网络连接可用并强制重新配置。

NetworkAddress Translation(NAT)
如果你只是想要通过虚拟机浏览网页、下载文件和查阅邮件的话,那这个默认的模式应该可以满足你。但在使用Windows文件共享时会有一些限制,下文提及。

NAT Network
这是在VirtualBox4.3时引入的一种新的NAT类型模式。下文1.4将会提及。

Bridged networking
这是一种为了满足更高级的网络需求的模式,比如在客户机上进行网络模拟和运行服务器。启用之后,VirtualBox将会链接到你安装的网卡之一,并直接交换网络数据包,绕过你的物理机网络堆栈。

Internal networking
可用于创建不同的虚拟机之间的访问机制,但是不能够访问物理主机和外部网路中的机器。

Host-only networking
这是一种用于创建物理主机与虚拟机之间的访问机制的模式,不需要物理主机的网络接口。相反,在物理主机上创建了一个虚拟网络接口(类似于回环接口),提供物理主机与虚拟机之间的链接。

Generic networking
很少使用的模式,共享相同的通用网络接口,通过允许用户选择能被VirtualBox包含或者分布在一个扩展包里的驱动。
这种模式下有两种可用的子模式:
UDP Tunnel
这可以用于直接相互连接在不同的物理主机上运行的虚拟机,容易而且透明,覆盖现有的网络基础设施。

VDE(虚拟分布式以太网)networking
此选项可用于在Linux或FreeBSD的主机上连接虚拟分布式以太网交换机。目前,这需要从源代码编译的VirtualBox,因为Oracle包不包含它。

下面对这些网络模式进行详细的描述。

1.3 Network Address Translation(NAT)

NAT模式是虚拟机访问外网的最简单的方式。通常不需要对物理主机和虚拟机做任何配置。正因如此,NAT在VirtualBox中是默认的联网方式。

一台应用NAT模式的虚拟机就像一台通过路由器连入互联网的真机,在这里,VirtualBox的网络引擎充当路由器,在VirtualBox中,这台路由器放置在每一台虚拟机和物理主机之间。出于实现最大安全分离的考虑,默认情况下虚拟机之间不能够相互访问。

NAT模式的一个劣势是,像经过路由分配之后的私有网路一样,虚拟机不能访问外网,也不能被外网所访问。如此一来你便无法在虚拟机上运行一台服务器,除非你给虚拟机设置端口转发(下文1.3.1提及)。

虚拟机操作系统所发出的网络数据包将会被VirtualBox的NAT引擎以TCP/IP协议所接收,并通过主机操作系统再次发送出去。对于主机上的应用程序或是与主机处于同一网段的其他电脑来说,这就好像是主机上的VirtualBox应用程序通过主机的IP地址把数据包发了出去。VirtualBox将会监听对所发数据包的回复,然后重新打包并发送给私有网络上的虚拟机。

VirtualBox集成了DHCP服务器,虚拟机会接收在该服务器上的网络地址和私有网络配置。因此,分配到虚拟机上的IP地址通常和物理主机的网络完全不同。应用NAT模式是,虚拟机会配置多张网卡,第一张网卡用于与10.0.2.0私有网络连接,第二张网卡用于与10.0.3.0网络连接,诸如此类。如果你需要改变虚拟机分配的IP的排序,可以到这里:Section 9.11, “Fine-tuning the VirtualBox NAT engine”.

1.3.1 配置NAT端口转换

NAT模式下,虚拟机连接的是内部的私有网络,无法被物理主机访问,所以虚拟机的网络服务无法与物理主机或其他通过网段的外界主机相连。但VirtualBox可以像路由器一样通过端口转换来实现与外网相连。也就是说,VirtualBox会监听物理主机的端口并转发所有发送到虚拟机上的数据包,不论虚拟机的端口号相同与否。

对于网络上的物理主机或其他主机、虚拟机的应用程序,看似是被代理了服务,实际上是运行在物理主机上的。这也意味着你不能在同一个端口号同一台物理主机上运行相同的服务。但你仍然可以在虚拟机上运行该服务——例如,在物理主机或者其他虚拟机上不能得到许可的服务,能够在与物理主机不同的操作系统上运行。

你可以在VirtualBox用户界面的网络设置中进行端口转换的相关配置,也可以用命令行VBoxManage,详见:Section 8.8, “VBoxManage modifyvm”.

你需要知道虚拟机用的服务用的是哪些端口,以确定物理主机用哪些端口(通常情况下建议设置为同样的端口号)。你可以用任意在物理主机上没有被占用的端口。

例如,用以下命令设置传入NAT连接到虚拟机上的SSH服务:

C代码 收藏代码
VBoxManage modifyvm “虚拟机名称” --natpf1 “guestssh,tcp,2222,22”

以上例子中,所有发送到物理主机2222端口的TCP流量将被转发到虚拟机的22端口上。tcp是定义的用于转发的协议(也可以用udp)。guestssh纯粹是用于描述的,如果省略的话会自动赋值。-natpf后的数字用于指定网卡。
要移除转发规则,用以下命令:

C代码 收藏代码
VBoxManage modifyvm “虚拟机名称” --natpf1 delete “guestssh”

如果虚拟机需要使用静态分配的IP地址而不使用内置的DHCP服务,那就需要在注册转发规则时指定虚拟机的IP:

C代码 收藏代码
VBoxManage modifyvm “虚拟机名称” --natpf1 “guestssh,tcp,2222,10.0.2.19,22”

这个例子中的字段跟上个例子基本相同,差别在于,告知NAT引擎可以访问10.0.2.19的虚拟机。

需要把所有的传入流量从一个特定的主机接口转发到虚拟机,用以下命令指定主机接口IP:

C代码 收藏代码
VBoxManage modifyvm “虚拟机名称” --natpf1 “guestssh,tcp,2222,10.0.2.19,22”

通过端口2222将所有到达本地接口(127.0.0.1)的TCP流量转发到虚拟机的22端口

VBoxManage还可以在虚拟机运行时配置传入NAT连接:Section 8.13, “VBoxManage controlvm”

1.3.2 NAT模式的局限性

NAT模式下有四点局限性

  • ICMP协议局限:
    一些常用的网络调试工具(例如 ping 或tracerouting)应用的是ICMP协议收发消息,从VirtualBox2.1之后提供了ICMP协议的支持(可以ping),其他调试工具还不能支持。
  • 不能完全支持UDP广播的接收
    虚拟机无法完全支持UDP广播的接收,出于节省资源的考虑,它只会监听从特定端口发出UDP数据包之后的一小段时间。因此,基于广播的NetBIOS名称解析并不总是起作用(但WINS始终起作用),一种解决方法是,你可以在\server\share标记中使用所需服务器的数字IP。
  • 不支持类似于GRE的协议
    NAT模式下不支持TCP和UDP以外的协议,意味着不能使用一些VPN工具(例如微软的PPTP)。只能使用应用TCP UDP协议的VPN。
  • 不能应用<1024物理主机转发端口
    在基于Unix的物理主机上(例如Linux,Solaris,Mac OS X)无法绑定<1024的端口号,应用程序无法被root.运行。如果你配置了这样的端口转发虚拟机将拒绝启动。

这些限制通常不会影响标准网络的使用,但是NAT模式下有可能会影响协议的正常使用。NFS就是其中的例子,服务器通常配置为拒绝非特权端口的连接(<1024)。

1.4 Network Address Translation Service

NAT service的工作原理和家用的路由器相似,系统群组在网络中应用这种模式来防止外部网络的直接访问,但能让系统内部通过TCP和UDP协议实现互访或访问系统外部网络。

NAT service模式附带了一个内部网络,虚拟机利用它可以连接到内部网络,创建NAT网络时即可设置内部网络的名字。创建NAT网络命令:

C代码 收藏代码
VBoxManage natnetwork add --netname natnet1 --network “192.168.15.0/24” --enable

其中的“natnet1”是被使用的内网名字,“192.168.15.0/24”是NAT service接口的网络地址和掩码。默认情况下这个静态网关将被分配地址192.168.15.1(跟随接口地址),但这可以被改变。添加DHCP服务到内部网络,我们可以作如下修改:

C代码 收藏代码
VBoxManage natnetwork add --netname natnet1 --network “192.168.15.0/24” --enable --dhcp on

或者是在创建之后加入DHCP服务

C代码 收藏代码
VBoxManage natnetwork modify --netname natnet1 --dhcp on

关闭该服务

C代码 收藏代码
VBoxManage natnetwork modify --netname natnet1 --dhcp off

DHCP服务器提供注册域名服务器列表,,但它不会从128/7网络进行服务器匹配(映射)。

启动NAT Service:

C代码 收藏代码
VBoxManage natnetwork start --netname natnet1

如果网络中附带了DCHP服务器,将会一并启动。

C代码 收藏代码
VBoxManage natnetwork stop --netname natnet1

关闭NAT service时也会一并关闭。

移除NAT service:

C代码 收藏代码
VBoxManage natnetwork remove --netname natnet1

如果DCHP服务器正在内部网络中使用的话,使用这个命令DCHP服务将不会被移除。

设置支持端口转换:(–port-forward-4 for IPv4 ;—port-forward-6 for IPv6)

C代码 收藏代码
VBoxManage natnetwork modify --netname natnet1 --port-forward-4 “ssh:tcp:[]:1022:[192.168.15.5]:22”

这条命令制定了端口转换规则,从物理主机的TCP1022端口到IP地址为192.168.15.5的虚拟机22端口。物理主机端口、虚拟机端口、虚拟机IP是必填参数。
删除该规则:

C代码 收藏代码
VBoxManage natnetwork modify --netname natnet1 --port-forward-4 delete ssh

可以绑定NAT Service到特定的接口:

C代码 收藏代码
VBoxManage setextradata global “NAT/win-nat-test-0/SourceIp4” 192.168.1.185

浏览注册的NAT 网络列表:

C代码 收藏代码
VBoxManage list natnetworks

目录:

1.1 虚拟化网络硬件

1.2 网络模式介绍

1.3 Network Address Translation(NAT)

  1.3.1   配置NAT端口转换

  1.3.2   NAT模式的局限性

1.4 Network Address Translation Service

1.5 桥接网络(Bridged Networking)

1.6 内部网络(Internal networking)

1.7 仅主机模式(Host-only networking)

1.8 UDP通道网络(UDP Tunnel networking)

1.9 VDE networking

1.10 限制I/O网络的带宽

1.11 提高网络性能

接上篇:VirtualBox 网络连接方式研究(一)

1.5  桥接网络(Bridged Networking)

在桥接网络模式下,VirtualBox在你的物理主机上启用了一个设备驱动,用以过滤从物理网络适配器中过来的数据。因此这个驱动被称为“网络过滤”设备。它允许VirtualBox拦截物理网络数据和注入数据有效地在软件中创建一个新的网络接口。当虚拟机在应用这个新的软件接口时,看起来就好像是虚拟机物理地连接到了网线上:物理主机可以通过这个接口与虚拟机进行数据的收发。这意味着你可以在虚拟机和网络之间设置路由和“桥梁”。

Note
桥接无线接口和桥接有线接口是完全不同的,因为大多数无线适配器不支持混合模式。所有通信必须使用主机的无线适配器的MAC地址,因此VirtualBox需要将传出包的以太网报头取代​​源MAC地址,以确保回复将发送到主机接口。当VirtualBox收到一个带有目标IP的传入包时,比对IP从属于虚拟机适配器,VirtualBox将会把以太网报头的目标MAC地址替换到虚拟机适配器的MAC地址中,并接收数据包。为了获取虚拟机的IP地址,VirtualBox会检查ARP和DHCP数据包。

桥接网络的局限性取决于你的物理主机操作系统:

  • Macintosh 主机。使用AirPort(Mac的无线网络)时功能受限。目前的VirtualBox只支持IPv4和IPv6的AirPort。如果要使用其他协议(比如IPX),你必须选择有线接口。

  • Linux主机。应用无线接口是功能受限,目前的VirtualBox只支持IPv4和IPv6的无线。如果要使用其他协议(比如IPX),你必须选择有线接口。
    此外,Marvell Yukon II EC Ultra Ethernet NIC上的sky2提供的有线接口中把MTU设置为小于1500字节,将会导致丢包现象。
    Linux 内核2.6.27版本不允许通过VLAN适配器实现虚拟机与外部网络之间的中继,Linux以外的操作系统亦然。

  • Solaris主机。不支持使用无线接口。因为Solaris子系统的技术限制,不能完全支持用IPFilter进行虚拟机通信过滤。这些问题将在未来的Solaris 11版本中得到解决。

从VirtualBox4.1开始,在Solaris11的物理主机上(build159及以上版本),无需任何配置就可以通过Solaris的Crossbow Virtual Network Interfaces (VNICs) 直接与VirtualBox相连,但VNIC需单独地与虚拟机网络接口对应。

从VirtualBox2.0.4开始到VirtualBox 4.0,VNIC可被使用,但具有以下注意事项:
1)将VNIC无法在多个虚拟机网络接口间共享,即每个虚拟机网络接口都必须有自己独有的VNIC
2) 使用VNIC虚拟网卡和虚拟机VNIC网络接口必须有相同的MAC地址。

使用VLAN接口与VirtualBox时,他们必须根据PPA-hack命名方案(如“e1000g513001”)来命名,否则虚拟机可能会以错误的格式接收数据包。

1.6 内部网络(Internal networking)

内部网络模式类似于桥接网络模式那样可以直接与“外部网络”通信。这里的“外部网络”是指连接在内网中的同一台物理主机上的其他虚拟机。

从技术层面上说,内部网络实现网络连接需求,桥接网络模式也可以实现。但是应用内部网络模式能够提高安全性。在桥接网络模式中,所有的数据通信都需要通过主机系统的物理接口。因此可以添加一个数据嗅探器(类似Wireshark)到主机接口和所有通过的数据的日志中。如果你想实现一台机器上的多台虚拟机之间的私下通信,并向物理主机和用户隐藏虚拟机的数据的话,桥接网络就不适合了。

在有需要的情况下,内部网络模式将会自动创建而不需要其他配置。每一个内部网路简单地一名称来区分。一旦多于一个有相同内网ID的网卡活动,VirtualBox的支持驱动会自动连接这些网卡并从当网络交换机的角色。VirtualBox支持驱动实现了一个完整的以太网交换机,并支持支持广播/多播帧和混杂模式。

为了把多台虚拟机的网卡连接成内网,将网络设置成内网模式,有以下两种方式:
1)通过图形界面进行设置,在网络设置对话框里选择一个存在的内网并输入新的名字。

2)命令行:

C代码 收藏代码
VBoxManage modifyvm “VM name” --nic intnet

可以指定网络名字:

C代码 收藏代码
VBoxManage modifyvm “虚拟机名称” --intnet "network name”

如果不指定网络名字,默认情况下网卡将会连接到intnet网络。

出于安全考虑,在默认情况下,Linux实现内部联网只允许在相同的用户ID运行的虚拟机建立一个内部网络。但是,可以建立一个共享的内部网络接口,通过用不同的UUID用户访问。

1.7   仅主机模式(Host-only networking)

仅主机模式是2.2版本之后加入的新的连网模式。可以将它视为桥接模式和内网模式的混合体:像桥接网络模式那样够通过物理以太网交换机与物理主机、其他主机相连。类似地,像内网模式一样,不需要存在物理网络接口,又因为它们没有连接到物理网络接口,所以虚拟机不能够与物理主机之外的外网连接。

在应用仅主机网络模式时,VirtualBox会在物理主机上创建一个新的软件接口。换言之,桥接模式下
一个现存的物理接口会被用于连接虚拟机,而仅主机网络模式下在主机上会创建一个新的“回环”接口,在内部网络模式下,虚拟机之间的通信数据是不可见的,但主机”回环“接口上的数据能够被截获。

在多台虚拟机装配到一起进行合作的情景下,对于预先配置的虚拟设备来说,仅主机网络模式十分的有用。例如,一台虚拟机可以包含一个web服务器和一个第二数据库,并且,由于他们主要用于相互访问,设备可以指示VirtualBox可以为这两台虚拟机创建一个仅主机网络模式,然后第二个虚拟机(桥接)网络将在Web服务器连接到外界提供数据,但外界无法连接到数据库。

将虚拟机的网络接口更改成仅主机网络模式:
* VirtualBox图形用户界面进行网络设置修改
* 命令行输入:

C代码 收藏代码
VBoxManage modifyvm “VM name” --nic hostonly
详见:Section 8.8, “VBoxManage modifyvm”

在能够添加仅主机网络模式到虚拟机之前,需要创建至少一个仅主机接口,用户界面:”File" → “Preferences” → “Network” → “Host-only network” → "(+)Add host-only network”。
命令行:

C代码 收藏代码
VBoxManage hostonlyif create
详见:Section 8.34, “VBoxManage hostonlyif”

仅主机网络模式像内部网络模式一样,你会发现VirtualBox内置的DCHP服务器非常的有用。它可以在仅主机网络模式下管理IP地址,否则你需要配置所有的静态IP。

  • 在用户图形界面可以在网络设置中的仅主机选项中设置DCHP服务;
  • 或者你也可以用命令行操作,详见:Section 8.35, “VBoxManage dhcpserver”

Note:在Linux和Mac OS X主机上,仅主机网络接口限制在128个。在Windows和Solaris主机上没有这样的限制。

1.8   UDP通道网络(UDP Tunnel networking)

这种组网方式允许在不同主机运行的虚拟机之间实现互联。

从技术实现上讲,这是把虚拟机网卡收发的以太网帧封装成UDP/IP的数据包,再通过可用网络将它发送给主机。

UDP 通道网络模式有以下三个字段属性:

  • Source UDP port
    主机监听的端口。主机从该端口收到源地址来的数据包后,将会转发给接收端的虚拟机网卡
  • Destination address
    传送数据的目标主机的IP地址
  • Destination UDP port
    传输数据所用的端口号

当不同主机上的两台虚拟机互联时,必须交换他们的IP地址。在单一主机上,源UDP端口必须与目标UDP端口交换。

下例:主机1用10.0.0.1端口,主机2用10.0.0.2端口,配置UDP通道网络模式命令如下:

C代码 收藏代码
VBoxManage modifyvm “VM 01 on host 1” --nic generic
VBoxManage modifyvm “VM 01 on host 1” --nicgenericdrv UDPTunnel
VBoxManage modifyvm “VM 01 on host 1” --nicproperty dest=10.0.0.2
VBoxManage modifyvm “VM 01 on host 1” --nicproperty sport=10001
VBoxManage modifyvm “VM 01 on host 1” --nicproperty dport=10002

and

C代码 收藏代码
VBoxManage modifyvm “VM 02 on host 2” --nic generic
VBoxManage modifyvm “VM 02 on host 2” --nicgenericdrv UDPTunnel
VBoxManage modifyvm “VM 02 on host 2” --nicproperty dest=10.0.0.1
VBoxManage modifyvm “VM 02 on host 2” --nicproperty sport=10002
VBoxManage modifyvm “VM 02 on host 2” --nicproperty dport=10001

当然,你也可以设置成一台主机上的虚拟机互联,只要把目标地址(Destination port)都设置成127.0.0.1就好了。设置成一台主机时,这就类似于”内部网络“了,区别在于对于主机来说,虚拟机之间的数据通信是可见的,而一般的内部网络模式是不可见的。

NOTE:基于Unix的主机(例如Linux,Solaris,Mac OS X),不能绑定端口号<1024的应用程序,因为它无法被root.所运行。如果配置了这样的源UDP端口,虚拟机将不会启动。

1.9   VDE networking

分布式虚拟以太网(VDE)是灵活的,虚拟网络的基础设施系统以一种安全的方式跨越多台主机。
它允许L2 / L3交换,包括生成树协议,VLANs和WAN仿真。这是VirtualBox的可选部分,只包含在源代码中。

VirtualBox VDE只有一个参数.

  • VDE network
    虚拟机将要连接的VDE交换机名称。
    以下简单的例子演示如何把虚拟机连接到VDE交换机:
    1、创建一个VDE交换机

C代码 收藏代码
de_switch -s /tmp/switch1

2、 用命令行做一下配置:

C代码 收藏代码
VBoxManage modifyvm “VM name” --nic generic
VBoxManage modifyvm “VM name” --nicgenericdrv VDE

连接到自动分配的交换机端口:

C代码 收藏代码
VBoxManage modifyvm “VM name” --nicproperty network=/tmp/switch1

连接到指定的switch端口:

C代码 收藏代码
VBoxManage modifyvm “VM name” --nicproperty network=/tmp/switch1[]

3、VDE交换机端口和VLAN之间的映射(可选):(从交换机CLI)

C代码 收藏代码
vde$ vlan/create
vde$ port/setvlan

VDE只能在Linux和FreeBSD主机上应用。只能在从VirtualSquare项目上安装了VDE软件和VDE插件类库的主机系统上运行。了解更多关于VDE网络模式,官方文档传送门:
http://wiki.virtualsquare.org/wiki/index.php/VDE_Basic_Networking

1.10  限制I/O网络的带宽

从4.2开始,VirtualBox允许对网络传输的最大带宽进行限制。一台虚拟机的多个网络适配器可以共享带宽群组限制,这样的限制可能会超过一个以上。

NOTE:VirtualBox只会对发送端的虚拟机数据进行延迟发送,不会对虚拟机接受的数据进行限制。

通过VBoxManage可以进行限制器的配置,以下示例创建了一个名为”Limit“的带宽群组,设置限制为20 Mbit/s 并将群组分配到虚拟机的第一第二个网络适配器中:

C代码 收藏代码
VBoxManage bandwidthctl “VM name” add Limit --type network --limit 20m
VBoxManage modifyvm “VM name” --nicbandwidthgroup1 Limit
VBoxManage modifyvm “VM name” --nicbandwidthgroup2 Limit

所有的群组中的适配器都会共享带宽限制,意味着以上例子中的两个适配器的带宽都不会超过 20 Mbit/s 。但是,如果其中一个适配器不需要带宽,那另一个将会占用它所在群组的剩余带宽。

在虚拟机运行时,都可以动态改变带宽群组的限制,即时生效。下例是将上例创建的带宽群组限制更改为 100 Kbit/s :

C代码 收藏代码
VBoxManage bandwidthctl “VM name” set Limit --limit 100k

要完全禁用虚拟机的第一个适配器,用以下命令:

C代码 收藏代码
VBoxManage modifyvm “VM name” --nicbandwidthgroup1 none

也可以在虚拟机运行时禁用所有分配到带宽群组中的适配器,通过将群组限制设为0,下例对名为”Limit“的带宽群组进行适配器禁用:

C代码 收藏代码
VBoxManage bandwidthctl “VM name” set Limit --limit 0

1.11   提高网络性能

VirtualBox中提供多种可以”附着“在主机网络上的虚拟网络适配器,可以通过多种方法进行配置。对于不同类型的适配器和所用的不同”附件“,网络性能也会不同。性能方面,Virtio网络适配器要优于Intel PRO / 1000仿真适配器,也优于PCNet系列适配器。Virtio和 Intel PRO/1000 适配器都得益于分段(segmentation)和卸载(offloading)校验。分段卸载是高性能的基础,因为它允许较少的内容交换,显著增加了虚拟机与主机之间传输的数据包大小限制。

NOTE:Virtio和Intel PRO/1000 for Windows XP驱动都不支持分段卸载,因此Windows XP系统上的虚拟永远无法达到与其他类型的虚拟同样的传输速率。请参考Microsoft知识库中其他信息,相应文章842264。

三种网络模式:内部网络、桥接网路和仅主机网络几乎具备相同的网络性能。因为内网模式下的数据包不经过主机网络堆栈,所以运行要更快更节省CPU的占用。NAT模式下,因为NAT提供网络地址解析,所以是最慢(也最安全)的模式。通用驱动附件是特殊的,不能替代其他类型的附件。

分配到虚拟机上的CPU数不能提高虚拟机的网络性能,在某些情况下还会有害于虚拟机,因为这增加了虚拟机的并发。

对于提高虚拟机的网络性能,有以下几点需要注意:
1、尽可能使用Virtio网络适配器,至少使用Intel/1000 适配器;
2、尽量使用桥接网络模式而不是NAT模式;
3、确定分段卸载在虚拟机操作系统上是否可用。一般默认情况下是可用的,你可以在Linux虚拟机上用ethtool命令行检查确认offloading设置;
4、要像第三方工具Wireshark那样在虚拟机网络适配器上对网络流量进行全面而细致的分析,需要在虚拟机的网络适配器上使用一个混合模式的规则(policy),并且只能在NAT网络、桥接网络适配器、内部网络和仅主机模式的适配器下使用。

设置混合模式规则( promiscuous mode policy)可以在用户界面的网络设置中配置,也可以用命令行工具VBoxManage配置,详见:Section 8.8, “VBoxManage modifyvm”

混杂模式规则是:

a)deny(默认设置),它可以隐藏不适合该虚拟机的网络适配器的流量。

b)allow-vms,它可以隐藏在这个虚拟机的网络适配器中的所有主机的流量,但允许它对来自其它虚拟机或发送到其他虚拟机的流量可见。

c)allow-all 删除所有限制——虚拟机的网络适配器能看到的所有通信流量。

创建host-only网络接口
VBoxManage hostonlyif create
会创建一个命为’vboxnet0’这样一个网口,前提为目前没有创建过,如果已经有一块这样的网口的话,将会以’vboxnet1’这样的方式来命名。它自动使用’192.168.56.1’这样的dhcp方式分配的ip地址,注意:创建了这样一个网口,但在宿主机上通过’ifconfig’不能看到,因为虚拟机没有使用到它,只有当它被使用时,才会在宿主机上看到。
你可以更改,之后就可以通过ifconfig看到了,而且宿主机有用到此网卡的地方也不会再报错:
VBoxManage hostonlyif ipconfig vboxnet0 --ip 192.168.18.3 --netmask 255.255.255.224

网络方面的命令操作参考一下链接文章:
http://www.freeoa.net/osuport/sysadmin/using-vbox-com-operate-refer_1953.html
https://815222418.iteye.com/blog/2313338
https://815222418.iteye.com/blog/2313457

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值