IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 系统运维 -> 网络NAT、桥接与主机模式 -> 正文阅读

[系统运维]网络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或者桥接的网络设备,实际上可能会有其他功能,类似路由器,路由器也是一台小型交换机,只是硬件能力较差。

路由器实际上也是一个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、软路由等设备也可以自定义实现。

  系统运维 最新文章
配置小型公司网络WLAN基本业务(AC通过三层
如何在交付运维过程中建立风险底线意识,提
快速传输大文件,怎么通过网络传大文件给对
从游戏服务端角度分析移动同步(状态同步)
MySQL使用MyCat实现分库分表
如何用DWDM射频光纤技术实现200公里外的站点
国内顺畅下载k8s.gcr.io的镜像
自动化测试appium
ctfshow ssrf
Linux操作系统学习之实用指令(Centos7/8均
上一篇文章      下一篇文章      查看所有文章
加:2022-03-15 23:07:58  更:2022-03-15 23:12:40 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/16 2:28:24-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码