网络NAT、桥接与主机模式

前言

笔者很早以前写了本机windows连接虚拟机Ubuntu的时候使用的NAT模式连接:SecureCRT无法连接VMWare Ubuntu虚拟机问题解决办法_fenglllle的博客-CSDN博客_securecrt连接不到vmware

然后在MySQL安装时虚拟机使用的却是桥接模式 :ubuntu MySQL安装使用教程_fenglllle的博客-CSDN博客_ubuntu安装mysql

那么这些网络模式的区别是什么❓,笔者一直没有研究过,知道最近检查家庭网络时,折腾光猫桥接,路由器拨号才想起,这些的关联关系与网络协议的关系。实际上以前也看过关于这些的区别,但是没有实际体验过,也没用折腾过,很快就忘记了,这次以笔者的实际折腾经验讲讲区别。而且这些网络在交换机、虚拟机、docker、路由器方面广泛的应用。

1. 网络模式 

网络模式实际上主要有3种常见模式NAT、桥接、主机,最常用的是NAT、桥接。以笔者的路由器为例:

笔者配置的就是NAT模式,还有Singtel、桥接可选。其中Singtel就是主机单机模式 (HOST-ONLY)

1.1 NAT

NAT:Network Address Translation,网络地址转换,将一个公网IP(Internet Protocol)地址与私网IP地址进行绑定通信,NAT屏蔽了内部网络,此时外网是不能穿透内网的,这就是为什么很多博客在讲内网穿透,这种技术解决了IPV4地址枯竭的问题,同时也延长了IPV6的普及。NAT类型:静态NAT(Static NAT)动态地址NAT(Pooled NAT)网络地址端口转换NAPT(Port-Level NAT),常用的是NAPT,就是家用环境的网络,服务器对外用的都是公网ip,是可以直接访问的。NAT这种模式也是路由的一种。

静态NAT是一个外网固定IP,对应绑定一个私网IP;

动态NAT是一个外网临时IP对应绑定一个私网IP;

NAPT是一个外网IP+一个端口绑定一个私网IP,外网IP可以是固定的,也可以是临时分配的,大部分是临时分配,固定公网IP需要向运营商申请。

NAPT示意图:

 实际上服务器内部也是使用NAT模式,因为服务器对外的IP是固定的,可以通过端口绑定的方式,实现对内访问,家庭内网穿透也是同理。

1.1.1 路由模式

实际上NAT也是路由的一种,NAT是公网到私网的定义,实际上私网之间也是需要数据交换的,即路由。所以很多光猫或者路由器直接使用路由模式与桥接模式区分,从这个来区分,路由器也是一台弱交换机。

根据TCP/IP协议,私网之间不是同一个网段是不能相互通信的,关键是子网掩码,如果子网掩码不一样,网关就不一样,是不能直接访问的,这个时候就需要交换数据。一般就会接交换机路由器或者用台电脑来交换数据(软路由😅),就会出现多层NAT。

以太网交换机工作在第二层(数据链路层),用于在同一网络内部转发以太网帧。如果源和目标IP地址位于不同网络时,以太网帧必须发送给路由器,路由器负责在不同网络间传输报文,通过路由表来决定最佳转发路径。

实际上这个是理论上的划分,实际硬件的划分比较模糊,通常一个硬件赋予了多种用途,比如光猫,可以赋予拨号,DHCP,WIFI等能力。

1.1.2 DHCP

DHCP(Dynamic Host Configuration Protocol),动态主机配置协议,局域网协议,由服务器控制一段IP地址范围,客户机登录服务器时可以自动获得服务器分配的IP地址和子网掩码。

为什么说这个,因为家庭网络基本上使用的DHCP,遥想笔者上大学(2009年)的时候,还是在学校申请IP才能上网,后来就改为自动获取了。这中间有什么区别呢?

我们知道根据TCP/IP协议,没有IP地址是无法通信的,因为IP是唯一标识,无论广域网还是局域网都是一样。DHCP就是局域网来自动分配IP地址用的

IPV4地址专门保留了三个区间作为私有地址:

10.0.0.0/810.0.0.0~10.255.255.255
172.16.0.0/12172.16.0.0172.31.255.255
192.168.0.0/16192.168.0.0192.168.255.255

10.0.0.0/8的8表示8个1,表示地址范围是A类

IPV6以fd00::/8的为保留地址

如果没有DHCP,那么IP地址就只能手动分配,即上网需要配置IP地址,这个多不方便啊,DHCP也是可以固定IP分配的,实际上一般是交换机通过网口与mac地址绑定的,所以无论怎么重启,只要mac地址不变,ip就不会改变,只需要告诉DHCP服务器,我需要xxx的IP地址,只要DHCP服务器没有分配给别人就可以分配,根据DHCP策略,也可以把分配给别人的IP收回来给这台机器使用,但是IP不能重复,否则DHCP服务器就会无法处理。

1.1.3 PPPoE

 拨号上网,一般常见于家庭网络,专线不知道是否需要,没接触过。拨号的本质就是去运营商申请公网IP,一般由光猫或者路由器完成,只要路由器硬件不是太差,优先推荐路由器。

1.1.3 NAT优缺点

NAT的本质就是隔离内外网,建立可以跟外网通信的局域网,节约了IP地址,缺点也是很明显,是独立的局域网,外网访问需要固定公网IP,需要绑定端口通信。这里同时讲了DHCP和PPPoE,实际上NAT不需要DHCP和PPPoE,比如我手动设置IP上网,也没问题,至于PPPoE则是运营商的锅,根据笔者理解,完全可以绑定设备(比如光猫mac)的方式规划宽带大小和自动申请公网IP段,不知道为啥需要拨号。可能笔者理解有限。

1.2 桥接

桥接bridge,实际上名字就是其本义,就是搭桥,使网络延伸更广的地方。实际上就是用于,比如交换机网口不够了,需要WiFi等场景,延伸网络的传递。

那个从字面意思,桥接使用上一级路由的DHCP或者手动IP方式通信,相当于上一级NAT的桥接延伸,也可以通过WiFi延伸,连接的设备就是上一级路由的IP网络,可以相互通信。

1.3 HOST-NOLY

host-only就是单独主机,本身并不能与外界通信,只能主机之间通信,纯粹局域网。笔者的路由器支持这种模式,但是用处很有限,仅在特殊需要隔绝外网的情况有用,可能部分安全行业需要吧。

2. 虚拟机的应用

以VM和PD虚拟机为例,实际上标准是一样的,其他虚拟机大同小异。实际上虚拟机使用的也是NAT 桥接 主机模式

VM虚拟机默认NAT。NAT模式可以通过端口转发的方式访问内部的服务

其中VM建了2张虚拟网卡,VMnet8就是NAT使用的,VMnet1是主机模式用的,桥接使用的上一级路由来获取IP,相当于独立的挂在NAT上的机器设备,不会创建虚拟网卡。

 PD虚拟机默认共享网络,也是NAT,笔者这里改为桥接了。

实际上也创建了2张虚拟网卡来处理NAT与host-only

3. docker的应用

docker是一个特殊的NAT设计,因为docker本身是进程态,而不是虚拟机,也可以认为是进程虚拟模式

 docker网络有:bridge(默认)、 none 、host

bridge为每一个容器分配、设置IP等,并将容器连接到一个docker0虚拟网桥,通过docker0网桥以及Iptables nat表配置与宿主机通信。因为经过了NAT,所以必须端口转发才能在宿主机访问。并不是纯粹意义的桥接
host使用宿主机的IP和端口
none关闭了容器的网络

实际上还有容器网络Container:和一个指定的容器共享IP、端口范围

笔者macOS并没发现docker0的虚拟网卡,但是Ubuntu可以发现docker0虚拟网卡,查资料说,只有Linux是原生docker,mac win都是虚拟机上创建的。

在docker run时,用 --net 指定容器网络模式:

host:         使用 --net=host

none:        使用 --net=none

bridge:      使用 --net=bridge,默认就是

container: 使用 --net=container:NAME_or_ID 

docker也可以自定义网卡实现真正意义的桥接,每个docker容器实现独立的网络IP,实际上就是我们自己创建虚拟网卡,桥接模式,让docker使用我们自己创建的虚拟网卡通信,外网就能访问,也能通过DHCP分配IP,或者固定IP。比如overlay网络驱动、pipework、macvlan等,推荐macvlan:原理是在宿主机的物理网卡上虚拟出多个虚拟网卡,通过不同的MAC地址在数据链路层(Data Link Layer)进行网络数据转发。

docker network create -d macvlan \  #使用macvlan方式
    --subnet=192.168.79.0/24 \  #子网掩码,C类是24个1
    --gateway=192.168.79.1  \   #网关,笔者的路由器是79.1
    -o parent=en1 macvlannet    #物理机网卡名称 网络模式命令

笔者的路由器

docker run的时候可以加--net=macvlannet来桥接网络了。😄 

4. 路由器与交换机

本质上交换机,路由器都是小型服务器设备,只是功能用于处理网络的NAT与桥接。

交换机实际上实现的是NAT或者桥接的网络设备,实际上可能会有其他功能,类似路由器,路由器也是一台小型交换机,只是硬件能力较差。

交换机可以绑定端口与mac地址,有很强的IP和mac,网口管理能力,实际上路由器的家长控制也是绑定mac地址,理论上只是硬件和固件的差别,如果给交换机DHCP,那么也可以自动分配IP,WAN与LAN的区别是软体(即固件)决定的,所谓的固件实际上是一个操作硬件的驱动,同时对外提供操作访问,也是一台小型服务器,笔者没有交换机,以路由器为例,笔者的路由器暴露的服务是192.168.79.1:80,80是可以默认省略的,这就是一些路由器支持docker的时候,可以用来搭建小型服务器的原因。

路由器实际上也是一个NAT或者桥接的设备,WiFi本质就是无线桥接,路由器的AP模式,无线中继,桥接,WiFi都是桥接模式,路由器支持NAT DHCP PPPoE等,可以支持端口转发,这实际上就是内网穿透的原理,类似docker的bridge模式,通过端口映射转发数据。以笔者路由器为例:

 很遗憾宽带没有IPV6,😅端口转发

5. 网络层TCP/IP协议

实际上,网络协议是基于TCP/IP 4层协议,或者5层协议(5层就是把网络接口层划为2部分),理想模型是OSI 7层模型,但是实际上运用中合并了部分层级,日常接触到的是应用层协议,比如HTTP,偶尔会接触到传输层协议TCP/UDP,根据现有的设计,HTTP3.0基于UDP协议传输,技术变化好快😄,一般而言,路由器是应用层以下协议的实现,NAT和桥接

总结

搞清楚了网络的NAT,桥接模式,那么很多应用场景就很清晰了,比如交换机、路由器、光猫等。而且在实际生产运用中,比如虚拟机,docker等,理解网络模式就可以根据自己的需要定制网络,建立一个符合需求的庞大生产网络,而且家庭环境也可以定制化家庭网络设计,NAS、软路由等设备也可以自定义实现。

  • 2
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
NAT(Network Address Translation,网络地址转换)是一种网络连接方式,它允许主机在私有网络中与公共网络通信。在VirtualBox中使用NAT桥接仅限于主机。具体来说,当在VirtualBox中创建一个虚拟机时,可以选择NAT模式作为主机网络连接方式。 使用NAT桥接模式主机和虚拟机之间会建立一个虚拟的NAT设备。在主机上,虚拟机会被分配一个私有IP地址,并通过主机的物理网络接口与外部网络通信。这样可以实现主机和虚拟机之间的通信,同时还可以通过主机与外部网络进行通信。 NAT桥接模式的一个明显优点是简单配置,适用于大多数情况。虚拟机可以通过主机共享的地址转换设备访问外部网络,不需要另外配置路由规则。此外,使用NAT桥接模式,虚拟机可以访问主机所在的局域网,方便与其他设备进行通信。 然而,NAT桥接仅限于主机,虚拟机之间无法通过NAT桥接直接通信。如果需要虚拟机之间的通信,需要使用其他连接方式,例如内部网络(Internal Network)或者桥接模式(Bridged Networking)。在这些模式下,虚拟机可以直接与局域网或外部网络进行通信,同时也可以与其他虚拟机进行通信。 总之,NAT桥接主机VirtualBox是一种主机与虚拟机之间的网络连接方式,通过主机的地址转换设备让虚拟机能够访问外部网络以及与主机所在的局域网通信。但虚拟机之间的通信需要使用其他连接方式。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值