| |
|
开发:
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 NATNAT: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。
1.1.2 DHCPDHCP(Dynamic Host Configuration Protocol),动态主机配置协议,局域网协议,由服务器控制一段IP地址范围,客户机登录服务器时可以自动获得服务器分配的IP地址和子网掩码。 为什么说这个,因为家庭网络基本上使用的DHCP,遥想笔者上大学(2009年)的时候,还是在学校申请IP才能上网,后来就改为自动获取了。这中间有什么区别呢? 我们知道根据TCP/IP协议,没有IP地址是无法通信的,因为IP是唯一标识,无论广域网还是局域网都是一样。DHCP就是局域网来自动分配IP地址用的 IPV4地址专门保留了三个区间作为私有地址:
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-NOLYhost-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
实际上还有容器网络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、软路由等设备也可以自定义实现。 |
|
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
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- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |