VirtualBox的提供了四种网络接入模式,它们分别是:
1、NAT 网络地址转换模式(NAT,Network Address Translation)
2、Bridged Adapter 桥接模式
3、Internal 内部网络模式
4、Host-only Adapter 主机模式
其中NAT模式是最简单的实现虚拟机上网的方式,可以认为Virtual Host访问网络的所有数据都是由主机提供,但是却并不真实存在于网络中,主机与网络中的任何机器都不能查看和访问到Virtual Host的存在。
Virtual Host与主机关系:
只能单向访问,虚拟机可以通过网络访问到主机,主机无法通过网络访问到虚拟机。
Virtual Host与网络中其他Virtual Host的关系:
只能单向访问,虚拟机可以访问到网络中其他主机,其他主机不能通过网络访问到虚拟机。
Virtual Host与Virtual Host之间的关系:
相互不能访问,虚拟机与虚拟机各自完全独立,相互间无法通过网络访问彼此。
NAT方案优缺点:
笔记本已插网线时: 虚拟机可以访问主机,虚拟机可以访问互联网
笔记本没插网线时: 主机的“本地连接”有红叉的,虚拟机可以访问主机,虚拟机不可以访问互联网
**But, 做了端口映射后,两种方式主机均可以访问虚拟机上的服务(如SSH Web DB 等)
**
譬如我需要用Secure CRT通过NAT方式连接到Virtual Box 的ssh服务
1 查看NAT网卡的地址
连接到在我的电脑上,NAT模式的配置是
IP:10.0.2.15
GW:10.0.2.2
DNS:10.0.2.3
2 查看设备名称
打开VirtualBox -> Machine -> Show log 搜索NAT关键字可以看到
00:00:02.043 **[/Devices/e1000/0/LUN#0/**] (level 4)
00:00:02.043 Driver
3 配置端口映射
case 1 老版本的VirtualBox
新建bat文件,输入以下内容:
VBoxManage.exe setextradata "Ubuntu" "VBoxInternal/**Devices/e1000/0/LUN#0/**Config/http/Protocol" TCP
VBoxManage.exe setextradata "Ubuntu" "VBoxInternal/Devices/e1000/0/LUN#0/Config/http/GuestPort" 8080
VBoxManage.exe setextradata "Ubuntu" "VBoxInternal/Devices/e1000/0/LUN#0/Config/http/HostPort" 8888
VBoxManage.exe setextradata "Ubuntu" "VBoxInternal/Devices/e1000/0/LUN#0/Config/shell/Protocol" TCP
VBoxManage.exe setextradata "Ubuntu" "VBoxInternal/Devices/e1000/0/LUN#0/Config/shell/GuestPort" 22
VBoxManage.exe setextradata "Ubuntu" "VBoxInternal/Devices/e1000/0/LUN#0/Config/shell/HostPort" 2222
其中http和shell为服务映射的名称, 可以自定义, Virtual Host的8080和22 端口映射到Host的8888和2222端口
运行中键入cmd进入控制台,切换到程序目录
cd C:\Program Files\Oracle\VirtualBox
执行bat文件并重启VirtualBox
另外也可以通过修改虚拟机目录下.xml的方式添加服务,参见
http://wenku.baidu.com/view/9f91900f7cd184254b35358d.html
case 2
新版的Oracle VirtualBox中VBoxManager的命令已经发生改变
可以用modifyvm参数设置端口映射
VBoxManage modifyvm **<uuid|name>
** [--name
[--ostype
[--memory
[--pagefusion on|off]
[--vram
[--acpi on|off]
[--pciattach 03:04.0]
[--pciattach 03:04.0@02:01.0]
[--pcidetach 03:04.0]
[--ioapic on|off]
[--pae on|off]
[--hpet on|off]
[--hwvirtex on|off]
[--hwvirtexexcl on|off]
[--nestedpaging on|off]
[--largepages on|off]
[--vtxvpid on|off]
[--synthcpu on|off]
[--cpuidset
[--cpuidremove
[--cpuidremoveall]
[--hardwareuuid
[--cpus
[--cpuhotplug on|off]
[--plugcpu
[--unplugcpu
[--cpuexecutioncap <1-100>]
[--rtcuseutc on|off]
[--monitorcount
[--accelerate3d on|off]
[--accelerate2dvideo on|off]
[--firmware bios|efi|efi32|efi64]
[--chipset ich9|piix3]
[--bioslogofadein on|off]
[--bioslogofadeout on|off]
[--bioslogodisplaytime
[--bioslogoimagepath
[--biosbootmenu disabled|menuonly|messageandmenu]
[--biossystemtimeoffset
[--biospxedebug on|off]
[--boot<1-4> none|floppy|dvd|disk|net>]
[--nic<1-N> none|null|nat|bridged|intnet|hostonly|
generic]
[--nictype<1-N> Am79C970A|Am79C973|
82540EM|82543GC|82545EM|
virtio]
[--cableconnected<1-N> on|off]
[--nictrace<1-N> on|off]
[--nictracefile<1-N>
[--nicproperty<1-N> name=[value]]
[--nicspeed<1-N>
[--nicbootprio<1-N>
[--nicpromisc<1-N> deny|allow-vms|allow-all]
[--nicbandwidthgroup<1-N> none|
[--bridgeadapter<1-N> none|
[--hostonlyadapter<1-N> none|
[--intnet<1-N>
[--natnet<1-N>
[--nicgenericdrv<1-N>
[--natsettings<1-N> [
[
[
[--natpf<1-N> delete
[--nattftpfile<1-N>
[--nattftpserver<1-N>
[--natbindip<1-N>
[--natdnspassdomain<1-N> on|off]
[--natdnsproxy<1-N> on|off]
[--natdnshostresolver<1-N> on|off]
[--nataliasmode<1-N> default|[log],[proxyonly],
[sameports]]
[--mouse ps2|usb|usbtablet
[--keyboard ps2|usb
[--uart<1-N> off|<I/O base>
[--uartmode<1-N> disconnected|
server
client
file
[--guestmemoryballoon
[--gueststatisticsinterval
[--audio none|null|dsound]
[--audiocontroller ac97|hda|sb16]
[--clipboard disabled|hosttoguest|guesttohost|
bidirectional]
[--vrde on|off]
[--vrdeextpack default|
[--vrdeproperty <name=[value]>]
[--vrdeport
[--vrdeaddress
[--vrdeauthtype null|external|guest]
[--vrdeauthlibrary default|
[--vrdemulticon on|off]
[--vrdereusecon on|off]
[--vrdevideochannel on|off]
[--vrdevideochannelquality
[--usb on|off]
[--usbehci on|off]
[--snapshotfolder default|
[--teleporter on|off]
[--teleporterport
[--teleporteraddress <address|empty>
[--teleporterpassword
VBoxManage modifyvm <uuid|name> [--natpf<1-N> [
tcp|udp, [
所以设置命令为 VBoxManage modifyvm Ubuntu --natpf1 “sshpf, tcp, , 2222, 10.0.2.15, 22”
这里Ubuntu为Virtual Host名, 1为对应的网卡编号 sshpf为自定义映射服务名称,主机任意IP的2222端口映射到Virtual Host的10.0.2.15 IP的22端口
若要删除规则则 VBoxManage modifyvm "Ubuntu" --natpf1 delete sshpf
4 Virtual Host安装ssh服务
yueshen@yueshen-VirtualBox:~$ sudo ps -e | grep ssh
1806 ? 00:00:00 ssh-agent
yueshen@yueshen-VirtualBox:~$ sudo apt-get install openssh-server
yueshen@yueshen-VirtualBox:~$ sudo /etc/init.d/ssh restart
Rather than invoking init scripts through /etc/init.d, use the service(8)
utility, e.g. service ssh restart
Since the script you are attempting to invoke has been converted to an
Upstart job, you may also use the stop(8) and then start(8) utilities,
e.g. stop ssh ; start ssh. The restart(8) utility is also available.
ssh stop/waiting
ssh start/running, process 2860
[VBoxManage usbfilter remove <index,0-N>
--target
VBoxManage sharedfolder add
--name
[--transient] [--readonly] [--automount]
VBoxManage sharedfolder remove
--name
VBoxManage guestproperty get
VBoxManage guestproperty set
VBoxManage guestproperty enumerate
[--patterns
VBoxManage guestproperty wait
[--timeout
VBoxManage guestcontrol
exec[ute]
--image
--username
[--dos2unix]
[--environment "
[--timeout
[--wait-exit] [--wait-stdout] [--wait-stderr]
[-- [
copyfrom
copyto|cp
createdir[ectory]|mkdir|md
<director[y|ies] to create on guest>
--username
[--parents] [--mode
stat
<file element(s) to check on guest>
--username
[--verbose]
updateadditions
[--source <guest additions .ISO>] [--verbose]
VBoxManage debugvm
dumpguestcore --filename
info
injectnmi |
osdetect |
osinfo |
getregisters [--cpu
setregisters [--cpu
statistics [--reset] [--pattern
[--descriptions]
VBoxManage metrics list [*|host|
(comma-separated)
VBoxManage metrics setup
[--period
[--samples
[--list]
[*|host|
VBoxManage metrics query [*|host|
VBoxManage metrics enable
[--list]
[*|host|
VBoxManage metrics disable
[--list]
[*|host|
VBoxManage metrics collect
[--period
[--samples
[--list]
[--detach]
[*|host|
VBoxManage hostonlyif ipconfig
[--dhcp |
--ip
--ipv6
create |
remove
VBoxManage dhcpserver add|modify --netname <network_name> |
--ifname <hostonly_if_name>
[--ip <ip_address>
--netmask <network_mask>
--lowerip <lower_ip>
--upperip <upper_ip>]
[--enable | --disable]
VBoxManage dhcpserver remove --netname <network_name> |
--ifname <hostonly_if_name>