参考:
http://www.doc88.com/p-915707596190.html --- 安装samba
http://my.oschina.net/u/2260265/blog/405598?fromerr=eAmxiwAB
日常工作中,常常会用虚拟机,在里面安装Server,搭建服务端环境供开发调试,这种使用场景一般都需要虚拟机能够正常访问外部网络,同时宿主机必须可以访问虚拟机。在Virtualbox中,虚拟机访问外部网络一般是使用配置起来最简单的NAT模式,但纯NAT模式下,宿主机不能访问虚拟机,必须使用Bridged或者Host-only模式才可以。在这两个模式下,虚拟机都可以获得一个可用的IP地址,宿主机通过该IP地址即可访问虚拟机。
关于Virtualbox的网络接入模式,不了解的同学可以自行Google一下,这部分资料其实都挺齐全的,这篇文章主要是简单的介绍(记录)一下在Virtualbox虚拟机中使用NAT模式访问外部公共网络(互联网),再结合Host-only模式,令宿主机同时可以用虚拟机的静态IP地址访问虚拟机的配置实现。该配置相对于单纯使用Bridged模式的好处在于:即使没有外部公用网络,宿主机也可以无障碍的访问虚拟机,不会影响使用。
在Bridged模式下,虚拟机和宿主机处于同等地位,就像是一台真实主机一样存在于局域网中,可以分配到一个网络中独立的IP,所有网络功能都和在网络中的真实机器一样,网络中的其它机器(包括宿主机)也可以访问到这台虚拟机。同时,如果网络断开,即便虚拟机和宿主机其实是在一台物理机器上,宿主机也不能够访问虚拟机。而Host-only模式,可以理解为Virtualbox在宿主机中模拟出一张专供虚拟机使用的网卡,所有虚拟机都是连接到该网卡上的,虚拟机可以通过该网卡IP访问宿主机,同时Virtualbox提供一个DHCP服务,虚拟机可以获得一个内部网IP,宿主机可以通过该IP访问虚拟机。如果单纯使用Host-only模式,则虚拟机不能连接外部公共网络。
在有外部网络的情况下,假如需要将虚拟机开放给网络中的其它机器访问,比如让同事连上虚拟机做开发测试等工作,那么就可以直接使用Bridged模式,该模式也仅需要占用公共网络中的一个IP地址,但日常使用环境中,有时候不一定有公共网络可以用,假如使用Bridged模式,则虚拟机连不上,开发工作也做不了,此时Host-only模式就是一个不错的选择,若是再配合NAT模式,则外部公共网络可用时,虚拟机也可以访问外部公共网络。
下面简单介绍下使用这几个模式时需要做的相关配置。
在我的机器(Windows 10)上安装了VirtualBox,在VirtualBox安装了ubuntu,我要访问网络ubuntu,VirtualBox安装后会在Windows 7分配一个网卡——虚拟网卡而已,在控制面板\网络和 Internet\网络连接中可以看到 VirtualBox Host-Only Network,这个网卡的IP一般是:
通常情况下,这个网卡没有启用。
本地网络:
配置使虚拟机可以上网:
右击 VirtualBox Host-Only Network ——>属性,在属性对话框中将 VirtualBox_Bridged_Networking_Driver选择上。或者
这是确认 VirtualBox Host-Only Network 网卡能工作。这样就可以左虚拟机中访问网络来,跟宿主机一样。 下面是需要从宿主机访问虚拟机的一些配置。
使用源安装,在终端中输入如下命令:
#sudo apt-get install samba
#sudo apt-get install smbclient
启动Samba服务器只需执行如下命令:
#sudo /etc/init.d/samba start
Samba服务器主要配置文件为/etc/samba/smb.conf
首先在Virtualbox中的全局配置(呼出快捷键ctrl+g)界面的网络配置中,点击右侧添加按钮,增加一个Host-only网络。查看该网络的详情,可以看到:
可以看出,该网络是192.168.56.0,可供分配使用的IP地址是192.168.56.101 - 192.168.56.254。
打开虚拟机的网络配置,将网卡1的连接方式选为“网络地址转换(NAT)”,网卡2的连接方式选为“仅主机(Host-only)适配器”,如下图所示:
(其中混杂模式选择 拒绝 或者选择 全部允许,在宿主机输入虚拟机的IP地址访问都可以虚拟机, 晕了)
假如使用Bridged模式,则需要将连接方式选为“桥接网卡”。
保存后,启动虚拟机,虚拟机以Ubuntu server 12.04为例,打开配置文件 /etc/network/interfaces 加入如下配置:
# The loopback network interface auto lo iface lo inet loopback # The primary network interface auto eth0 iface eth0 inet dhcp # Virtualbox Host-only modeauto eth1 iface eth1 inet static address 192.168.56.190 netmask 255.255.255.0 network 192.168.56.0 # Virtualbox Bridged mode#auto eth1#iface eth1 inet static #address 192.168.0.190 #netmask 255.255.255.0 #gateway 192.168.0.1 查看我的IP:
我的IP 配置如下:
16.04 版本设置结果如下:
IP 显示如下:
网卡2 一定要把接入网线那个选项勾上,否则在 win+r 之后输入 \\192.168.56.190 是没法打开的。可以通过ping 看看是否可以访问:
(在 16.04 中可以 ping 通,但是就是不能从宿主机访问虚拟机 , 好奇怪)
该配置将虚拟机在内部网络中的IP地址设置为静态分配(192.168.56.190),方便宿主机在hosts中绑定该IP访问虚拟机。保存配置后,执行如下命令重启网络服务:
$ sudo /etc/init.d/networking restart
即可实现虚拟机使用NAT通过宿主机来正常访问外部网络,同时因为使用了Host-only模式,宿主机可以通过虚拟机在内部网络的IP地址访问虚拟机,即使外部网络不可
用也不影响宿主机对虚拟机的访问。
现在可以访问虚拟机来,但是还不能访问文件夹。在 根目录下创建一个 share 文件夹。 mkdir share 改变文件夹权限 chmod -R 777 share / chmod 777 ./share
这个就可以在windows 读写这个文件夹。或者可以在 ubuntu 里选择右键 -> 属性
这样就可以在宿主机访问虚拟机了,如果还不行,可以重新执行下面命令:
#sudo apt install samba
#sudo apt install smbclient
#sudo /etc/init.d/samba start
启动Samba服务器.
通过putty 访问 虚拟机(相当于服务器): (参考 :http://www.myhack58.com/Article/60/63/2012/35323.htm)
首先可以ping 通服务器,如果还不能登陆重新安装并启动下面server(Ubuntu缺省安装了openssh-client)
sudo apt-get install openssh-server (我在 16.04 中没有安装这个也可以 ping 得通)
如果现在打开 putty 连接虚拟机过一会出现 no active ,这个时候需要检查一下你连接的这个 IP 在虚拟机中是否允许,可以在虚拟机通过 ifconfig 查看:
比如下面这样是不行的:
下面这样就可以了: 只要在虚拟机的网络图标上右键选择启动网络2就可以了 (这个是静态网络,跟宿主机通信的)
开启ssh-server服务 : /etc/init.d/ssh start (如果没有安装这个,打开 putty 连接到虚拟机的时候立马出现错误)
ssh-server配置文件位于/ etc/ssh/sshd_config,在这里可以定义SSH的服务端口,默认端口是22,你可以自己定义成其他端口号,如222。然后重启SSH服务:
sudo /etc/init.d/ssh resart
putty 配置参考 : http://www.cnblogs.com/lfire/archive/2012/08/24/2653882.html
putty 中 : Window-->Translation中 Remote Character Set编码方式修改为 UTF-8 来避免Putty命令窗口中除英语之外的语言出现乱码的现象;
host name or IP address 中输入: 192.168.56.190 port 设置默认值 22
session 窗口的右侧有个 connection type -> 勾选 SSH
window -> line of scrollback 设置 越大,可以回滚的记录越多
connection -> data -> auto-login username 输入 ubuntu 登陆的用户名
点击save -> load -> open