• VBox虚拟机与主机(宿主)通讯原理以及socat(套接字猫)简单介绍


    前言

    尝试虚拟机使用socat建立服务器端接口转发时,发现对虚拟机接入网络原理不是非常了解,于是乎上网查找资料想搞明白是怎么回事,于是乎有了这篇总结博文。socat可以在服务器端口间建立全双工通信通道,可以用于端口数据转发,据说是Linux/Unix系统三大神器之一。

    虚拟机虚拟网卡连接模式

    1.桥接模式

    直接将虚拟网卡桥接在物理网卡上,虚拟机与主机地位对等,相当于局域网新增加了一台机器,虚拟机分配的IP是局域网真实的IP地址,主机与虚拟机以及局域网其它主机与虚拟机可以互相访问

    虚拟机桥接模式

    2.仅主机(host-only)适配模式

     主机能访问虚拟机,虚拟不能访问主机(宿主)以及局域网其它主机,局域网其它主机不能访问虚拟机,虚拟机跟局域网隔离

    虚拟机主机模式

    3.NAT(网络地址转换)模式

    通过虚拟NAT设备实现虚拟机访问内外部网络,局域网主机不能访问虚拟机,宿主也不例外,如果需要访问虚拟机服务,虚拟网卡需要设置端口转发,虚拟机之间不能互相访问

     虚拟机NAT模式

     OSI开放网路七层模型

    物理层(传输介质)->数据链路层(数据通道)->网路层(路由选择)->传输层(数据发送)->会话层->表示层->应用层

     TCP/IP四层模型

    网络接入层->网际互联层->传输层->应用层

    TCP/IP四层模型和OSI七层模型

    互联网使用的是TCP/IP四层模型连接各个网络

    对应关系如下图:

     虚拟网卡

    用软件模拟真实网卡的功能,又称虚拟网络适配器,可以实现虚拟集线器,VPN功能等

    虚拟网卡实现原理

    TUN/TAP驱动程序是虚拟网卡驱动的一个实现,是开源的,以它作为例子讲解实现原理。

     虚拟网卡发送数据不通过真实的物理网卡,而是通过发送给用户态的应用程序,由它再通过真实的网卡发送数据。用户态和核心态程序通过字符设备文件交换数据。

     Tun/Tap虚拟网卡驱动实现原理

     

     socat简单介绍

    socat是一种中继器,可以为2个终端间建立全双工通道数据转发功能,功能非常强大,是Linux/Unix系统三大神器之一。

    socat用法

    1.输入流与服务器建立通信通道,建立好之后,可以发送数据

    socat - TCP4:www.domain.org:80

    2.服务器A端口5000请求统一转发给B服务器端口6000处理

    socat -d -d -lf /var/log/socat.log TCP4-LISTEN:5000,reuseaddr,fork TCP4:b server ip/domain:6000

    。。。。。。还有很多其它的用法 可以参考下面列出的官方文档链接

    网路设备

    1.什么是交换机

    英文称为"switch",一种用于电(光)信号转发的网络设备,可以为接入交换机的任意2个网络节点提供专有的电信号通路,它工作在OSI网络模型的数据链路层。

    2.什么是集线器

    英文称为"hub",意为“中心”的意思。集线器是指将多条以太网双绞线或者光纤集合连接在同一段物理介质下的设备。集线器工作在OSI网络模型的物理层。只能通过广播的形式发包。

    3.什么是路由器

    路由器(Router),又称网关(Gateway)设备,是连接因特网中各局域网、广域网的设备,它会根据信道的情况自动选择和设定路由,以最佳路径,按前后顺序发送信号。工作在OSI网络模型的网络层。

    问题

    1.桥接模式虚拟机不能ping通主机

    查阅资料,发现是因为WIN7防火墙限制的原因,找到防火墙高级设置-》入站规则-》文件和打印机共享(回显请求-ICMPv4-in 专用公用网络)-》开启规则

    2.NAT模式,同一主机下虚拟机之间不能互相访问

    查了资料,都使用NAT模式的虚拟机不能互相访问

    3.socat转发到其它服务器会失败

    原因可能是接收的服务器有安全限制

    4.socat编译安装提示错误

    tar: socat-1.7.3.0/configure.ac: Cannot create symlink to `configure.in': Read-only file system
    tar: Error exit delayed from previous errors

    查了资料,原因是VBOX默认不支持共享目录symlink,下面是搜索到了的链接

    https://github.com/mitchellh/vagrant/issues/713

    http://superuser.com/questions/446362/why-cant-i-create-soft-link-on-vboxsf-file-system

    后记

    利用业余时间,工作空隙,边查资料边实践边总结,断续完成了本篇文章,基本上达到了自己的目的。写这篇文章时,我想起了很久之前博友写的一句话:你可以知道你不知道的,但是你不可以对你知道的模棱两可一支半解。这话说的很在理,人还是需要折腾一些好。

    参考资料

    [1]桥接模式WIN7下虚拟机不能ping通主机

    http://blog.csdn.net/mmyzlinyingjie/article/details/21468365

    [2]VBox NAT网络解释

    http://huzhangsheng.blog.163.com/blog/static/34787784200802801435931/

    [3]VBox虚拟网卡连接方式介绍

    http://blog.sina.com.cn/s/blog_7de9d5d80100t2uw.html

    [4]虚拟机三种网络连接模式(bridged、NAT、host-only)

    http://www.360doc.com/content/11/0507/15/3508740_115023160.shtml

    [5]VMware Workstation下VMnet1等虚拟网卡与主机网卡之间的关系 文中连接模式图片来源于此

    http://www.cnblogs.com/lzhdim/archive/2011/08/03/2125717.html

    [6]VirtualBox的四种网络连接方式

    http://www.cnblogs.com/adforce/p/3363373.html

    [7]开放系统互连参考模型

    http://baike.baidu.com/view/486949.htm?fromtitle=OSI%E4%B8%83%E5%B1%82%E6%A8%A1%E5%9E%8B&fromid=9763441&type=syn

    [8]TCP/IP参考模型

    http://baike.baidu.com/view/1792633.htm

    [9]TCP/IP四层模型和OSI七层模型 文中2种模型比较图片来源于此

     http://book.51cto.com/art/200906/127291.htm

    [10]虚拟网卡

    http://baike.baidu.com/view/545.htm

    [11]虚拟网卡和OpenVPN

    http://www.cnblogs.com/kernelfans/archive/2009/06/06/1497805.html

    [12]TUN/TAP区别

    http://www.cnblogs.com/adodo1/p/4327553.html

    [13]虚拟网卡 TUN/TAP 驱动程序设计原理 虚拟网卡实现原理图1来自这里

    http://www.cnblogs.com/happyhotty/articles/1933051.html

    [14]网络虚拟化技术(二): TUN/TAP MACVLAN MACVTAP 虚拟网卡实现原理图2来自这里

    http://www.cnblogs.com/yudar/p/4630958.html

    [15]百度百科-交换机

    http://baike.baidu.com/view/1077.htm

    [16]互动百科-交换机

    http://www.baike.com/wiki/%E4%BA%A4%E6%8D%A2%E6%9C%BA

    [17]百度百科-集线器

    http://baike.baidu.com/view/7770.htm

    [18]百度百科-路由器

    http://baike.baidu.com/view/1360.htm

    [19]使用socat进行端口转发

    http://www.cnblogs.com/lexus/archive/2012/12/02/2798796.html

    [20]socat官方文档-readme

    http://www.dest-unreach.org/socat/doc/README

    [21]socat官方文档-详细说明

    http://www.dest-unreach.org/socat/doc/socat.html

    [21]socat主页

    http://www.dest-unreach.org/socat/

    [22]socat : Some useful commands

    http://www.cnblogs.com/shangdawei/p/3843039.html

    作者:WadeYu
    出处:http://www.cnblogs.com/wadeyu/
    本文版权归本人和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。
  • 相关阅读:
    MongoDB创建用户(windows)
    注解学习(一)
    吴恩达机器学习(7) 正则方程(区别于迭代方法的直接解法)
    吴恩达机器学习系列课程(3)无监督学习
    python PCL 与OPEN3D
    吴恩达机器学习(1)什么是机器学习
    吴恩达机器学习(4)代价函数
    吴恩达机器学习(5) 梯度下降
    吴恩达机器学习系列教程记录
    吴恩达机器学习(2)监督学习
  • 原文地址:https://www.cnblogs.com/wadeyu/p/4657906.html
Copyright © 2020-2023  润新知