当前位置: 首页 > news >正文

淘宝佣金推广网站建设中建八局第一建设有限公司电话

淘宝佣金推广网站建设,中建八局第一建设有限公司电话,珠海事件最新进展,电子商务网站与建设实践报告1 网络基础 1.1 网络概念 网络是一组计算机或者网络设备通过有形的线缆或者无形的媒介如无线#xff0c;连接起来#xff0c;按照一定的规则#xff0c;进行通讯的集合( 缺一不可 )。 5G的来临以及IPv6的不断普及#xff0c;能够进行联网的设备将会是越来越多#xff08…1 网络基础 1.1 网络概念 网络是一组计算机或者网络设备通过有形的线缆或者无形的媒介如无线连接起来按照一定的规则进行通讯的集合( 缺一不可 )。 5G的来临以及IPv6的不断普及能够进行联网的设备将会是越来越多物联网时代。 网络功能和优点 作用范围分类 OpenVPN 为了解决出差移动的用户连接。底层技术VPN 虚拟私有网络。 1.2 常见的网络物理组件 交换机 Switch 企业内部使用交换机最多企业内部的网络设备普遍使用交换机进行连接。 路由器 Router 互联网连接的时候需要使用路由器 1.3 网络应用程序 1.3.1 各种网络应用 各种网络应用对网络的延迟是不尽相同的。 1.3.2 应用程序对网络的要求 1.4 网络的特征 网络特性 可靠性很难保证的情况下很难保证硬件不出故障就需要高可用性又称冗余技术来确保某个硬件出现故障后还能使其功能可靠。 Raid 就是典型实现高可用的技术还有 KeepalivedHAProxy等。 1.4.1 速度带宽 1.4.2 网络拓扑 拓扑结构一般是指由点和线排列成的几何图形 计算机网络的拓扑结构是指一个网络的通信链路和计算机结点相互连接构成的几何图形 拓扑分类 拓扑结构分类 1.5 网络标准 1.5.1 网络标准和分层 旧模型专有产品由一个厂家控制应用程序和嵌入的软件即各个厂家拥有自己的一套网络标准造成厂家之间不兼容的情况。 基于标准的模型多个厂家软件分层方法 层次划分的必要性 计算机网络是由许多硬件软件和协议交织起来的复杂系统。由于网络设计十分复杂如何设计、组织和实现计算机网络是一个挑战必须要采用科学有效的方法。 网络中拆分成多个层级每一层都会有自己的标准和规范层与层之间只要遵循标准就可以实现互联互通。 层次划分的方法 层次划分的优点 1.5.2 开放系统互联OSI 在指定计算机网络标准方面起着重大作用的两大国际组织是国际电信联盟标准化部门与国际标准组织ISO虽然它们工作领域不同但是随着科学技术的发展通信与信息处理之间的界限可以变得比较模糊这也成了国际电信联盟标准化部门和ISO共同关心的领域。1984年ISO发布了著名的OSIOpen System Interconnection开放系统互联标准它定义了网络互连的7层框架物理层、数据链路层、网络层、传输层、会话层、表示层和应用层即OSI 开放系统互连参考模型。 OSI 模型的七层结构 物理层数据链路层网络层通常是使用硬件来完成但是并不绝对。 传输层会话层表示层应用层通常是使用软件来完成。 第 7 层 应用层 应用层Application Layer提供为应用软件而设的接口以设置与另一个应用软件之间的通信。例如HTTP、HTTPS、FTP、FTP、TELNET、SSH、SMTP、POP3、HTML、MySQL等等。应用层实现不同应用的通信 第 6 层 表示层 主条目表示层或者表达层Presentation Layer把数据转换为能与接收者的系统格式兼容并且适合传输的格式。编码格式的兼容转换。表示层负责进行编码格式的转换以及传输包括压缩加密解密 第 5 层 会话层 会话层Session Layer负责在数据传输中设置和维护电脑网络中两台电脑之间的通信连接例如Xshell浏览器等等。实现格式的互相兼容。会话层实现两个主机之间的会话通信用于维护通信连接的窗口功能建立会话删除会话管理会话等。 第 4 层 传输层 传输层Transport Layer把传输表头TH加至数据以形成数据包。传输表头包含了所使用的协议等发送信息。例如传输控制协议TCP等等。在局部局域网上传送单位数据段Data Segment端到端的数据传输。传输层实现了两个节点之间传输数据的确认分为可靠和不可靠。传输层要标识出机器中的每一个应用程序的地址以及传输数据是否有丢失的情况 第 3 层 网络层 网络层Network Layer在局部局域网上传送单位数据包Data Package决定数据的路径选择和转寄将网络表头NH加至数据包以形成报文。网络表头包含了网络数据。例如互联网协议IP等等。例如路由器。属于逻辑概念。网络层用来选择最佳路径网络层实现了多个网络实现跨物理跨链路的通信之间的远程通信链路层只解决了一个网络内部的通信 第 2 层 数据链路层 数据链路层Data Link Layer在局部局域网上传送单位数据帧Data Frame负责网络寻址、错误侦测和改错。当表头和表尾被加至数据包时会形成信息框Data Frame。数据链表头DLH是包含了物理地址和错误侦测及改错的方法。数据链表尾DLT是一串指示数据包末端的字符串。例如以太网无线局域网Wi-Fi和通用分组无线服务GPRS等等。分为两个子层逻辑链路控制Logical Link ControlLLC子层和介质访问控制Media Access ControlMAC子层。例如网卡、交换机等等。数据链路层用来实现一个链路内部的通信可以标识机器的源和目标即链路层中的源MAC和 目的MACMAC地址就是用来链路区分不同的网络设备每一个网络设备都要有一个与众不同的地址。 LLC的主要功能是处理两个站点之间的帧的交换实现端到端源到目的的无差别的帧传输和应答功能以及流量控制功能。由于 LAN的介质共享特点因而也可以实现广播式通信。 LLC可以为网络用户提供两种服务无确认无连接服务和面向连接的服务。 1无确认无连接服务它提供无需建立数据链路级连接而网络层实体能交换链路服务数据单元的手段。数据传送方式可以是点到点、点到多点式也可以是广播式。这是一种数据报服务。 2面向连接的服务在这种服务方式下必须先建立链路连接才能进行帧的传送。它提供了建立、维持、复位和终止数据链路层连接的手段。还提供了数据链路层的定序、流控和错误恢复这是一种虚电路服务。 第 1 层 物理层 物理层Physical Layer在局部局域网上传送单位比特Bit它负责管理电脑通信设备和网络媒体之间的互通。包括了针脚、电压、线缆规范、集线器、中继器、主机接口卡、网线、光纤等等。物理层就是定义物理电器的电气特性确保解决物理连通的功能 现实局域网中使用的TCP/IP四层标准。OSI 七层模型作为研究参考以及学习的对象。 1.5.3 网络的通信过程 1.5.3.1 数据封装和数据解封装 FCS属于数据链路层又称为CRC校验位防止网络传输过程中因为某些原因组成数据的破坏会将前面的数据利用算法计算出一个值放在FCS。对方也利用这个算法进行计算比较发送端的FCS。FCS相同则表示数据没有改变FCS不同则表示数据被破坏数据就会不可达。 1.5.3.2 协议数据单元 PDU PDUProtocol Data Unit协议数据单元是指对等层次之间传递的数据单元。 每一层会将不同的部分数据整合在一起形成一个单位。 1.5.3.3 三种通讯模式 unicast单播目标设备是一个 broadcast广播目标设备是所有 multicast多播组播目标设备是多个 1.5.3.4 冲突域和广播域 1.5.3.5 三种通讯机制 以上三种通信机制都是作用在物理层中。 范例查看双工和速度 ## mii-tool 和 ethtool 可以用来判断网线是否正常#显示网卡的工作模式 ~ mii-tool eth0 eth0: negotiated 1000baseT-FD flow-control, link ok ~ mii-tool -v eth0 eth0: negotiated 1000baseT-FD flow-control, link okproduct info: Yukon 88E1011 rev 3basic mode: autonegotiation enabledbasic status: autonegotiation complete, link ok#FD全双工 HD半双工capabilities: 1000baseT-FD 100baseTx-FD 100baseTx-HD 10baseT-FD 10baseT-HDadvertising: 1000baseT-FD 100baseTx-FD 100baseTx-HD 10baseT-FD 10baseT-HDlink partner: 1000baseT-HD 1000baseT-FD 100baseTx-FD 100baseTx-HD 10baseT-FD 10baseT-HD~ ethtool -i eth0 ~ ethtool eth0 ethtool eth0 Settings for eth0:Supported ports: [ TP ]Supported link modes: 10baseT/Half 10baseT/Full100baseT/Half 100baseT/Full1000baseT/FullSupported pause frame use: No#自动协商Supports auto-negotiation: YesSupported FEC modes: Not reportedAdvertised link modes: 10baseT/Half 10baseT/Full100baseT/Half 100baseT/Full1000baseT/FullAdvertised pause frame use: NoAdvertised auto-negotiation: YesAdvertised FEC modes: Not reportedSpeed: 1000Mb/sDuplex: FullPort: Twisted PairPHYAD: 0Transceiver: internalAuto-negotiation: onMDI-X: off (auto)Supports Wake-on: dWake-on: dCurrent message level: 0x00000007 (7)drv probe linkLink detected: yes# 网络断开的状态 ~ ip link show eth1 3: eth1: NO-CARRIER,BROADCAST,MULTICAST,UP mtu 1500 qdisc pfifo_fast state DOWN mode DEFAULT group default qlen 1000link/ether 00:0c:29:16:73:3f brd ff:ff:ff:ff:ff:ff ~ ethtool eth1 Settings for eth1:Supported ports: [ TP ]Supported link modes: 10baseT/Half 10baseT/Full100baseT/Half 100baseT/Full1000baseT/FullSupported pause frame use: NoSupports auto-negotiation: YesSupported FEC modes: Not reportedAdvertised link modes: 10baseT/Half 10baseT/Full100baseT/Half 100baseT/Full1000baseT/FullAdvertised pause frame use: NoAdvertised auto-negotiation: YesAdvertised FEC modes: Not reportedSpeed: Unknown!Duplex: Unknown! (255)Port: Twisted PairPHYAD: 0Transceiver: internalAuto-negotiation: onMDI-X: Unknown (auto)Supports Wake-on: dWake-on: dCurrent message level: 0x00000007 (7)drv probe linkLink detected: no~ mii-tool -v eth1 eth1: no linkproduct info: Yukon 88E1011 rev 3basic mode: autonegotiation enabledbasic status: no linkcapabilities: 1000baseT-FD 100baseTx-FD 100baseTx-HD 10baseT-FD 10baseT-HDadvertising: 1000baseT-FD 100baseTx-FD 100baseTx-HD 10baseT-FD 10baseT-HD面试题如何判断系统的网线是断开的 ~ ethtool ens160 ~ mii-tool ens160 mii-tool -v ens160 ~ ip addr ip link #查看对应的网卡状态信息2 局域网 Local Area Network(LAN) 2.1 概述 2.1.1 特点 2.1.2 主要功能 2.1.3 优点 2.1.4 标准 IEEE国际电子电气工程师协会 于 1980年 2 月成立于局域网标准委员会简称IEEE 802委员会专门从事局域网标准化工作并制定了IEEE 802标准。802标准所描述的局域网参考模型只对应 OSI 参考模型的数据链路层 与 物理层它将数据链路层划分为逻辑链路层 LLC 子层 和介质访问控制 MAC 子层。以太网只约定了数据链路层和物理层上层不关心。 LLC 子层负责向上提供访问LLC 逻辑链路层用于 数据链路层的与上层网络层进行交互主要任务是解决共享型网络中多用户对信道竞争的问题完成网络介质的访问控制 MAC子层的主要功能包括数据帧的封装 / 卸装帧的寻址和识别帧的接收与发送链路的管理帧的差错控制等等。MAC子层的存在屏蔽了不同物理链路种类的差异性。主要任务是建立和维护网络连接执行差错校验、流量控制和链路控制。 局域网标准 1IEEE 802.1 标准 局域网体系结构、网络互联、以及网络管理和性能测试 2IEEE 802.2 标准 逻辑链路控制 LLC 子层功能与服务 3IEEE 802.3 标准 带冲突检测的载波侦听多路访问CSMA/CD 总线介质访问控制子层 与 物理层规范 4IEEE 802.4 标准 令牌总线Token Bus介质访问控制子层 与 物理层规范 5IEEE 802.5 标准 令牌环Token Ring介质访问控制子层 与 物理层规范 6IEEE 802.6 标准 城域网 MAN 介质访问控制子层 与 物理层规范 7IEEE 802.7 标准 带宽网络技术 8IEEE 802.8 标准 光纤传输技术 9IEEE 802.9 标准 综合语音与数据局域网IVD LAN技术 10IEEE 802.10 标准 可互操作的局域网安全性规范SILS 11IEEE 802.11 标准 无线局域网技术Wi-Fi 12IEEE 802.12 标准 优先度要求的访问控制方法 13IEEE 802.13 标准 未使用 14IEEE 802.14 标准 交互式电视网 15IEEE 802.15 标准 无线个人局域网WPAN的MAC子层和物理层规范代表技术为 蓝牙Bluetooth 16IEEE 802.16 标准 带宽无线局域网网络 17IEEE 802.20 标准 移动带宽无线接入系统MBWAMobile Boradband Wireless Access 18IEEE 802.22 标准 无线地域网络Wireless Regional Area NetworksWRAN 无线网络标准 中国国家无线网络标准WAPI Mi4:无线保真(Wireless Fidelity)是WHFi联盟制造商的商标做为产品的品牌认证是一个创建于IEE 802.11标准的无线局域网技术M-E联盟成立于1999年当时的名称叫做Wireless Ethernet Compatibility Alliance (WECA)。在2002年10月正式改名为Wi-EiAlliance。 WiFi 6是当前最新的WiEi技术标准专业称呼为:802.11axWiFi6简单来讲就是第六代ME标准的意思就和第五代移动通信标准——5G、丐帮第六代长老的意思差不多。在WiFi6之前WiFi的名字并不是什么WiFi5、WiFi 4 这种简单的叫法而是用一串非常拗口的技术型号来区分比如WiFi 5 之前就叫802.11acWiFi 就叫802.11 a/b/g/n对于懂行的人来说辨别起来没问题但对于普通用户来说就是两眼—抓瞎看谁都一样(这就好比俄罗斯大兄弟的人名尼古拉·阿列克谢耶维奇·奥斯特洛夫斯基—样难记) 2018年 WiFi 联盟自己也感觉这样叫下去不行我们得学学别人移动通信协会3G\4G\5G那样整个简单容易记的代号让消费者们容易区分前代与新代刺激厂商升级更新换代。所以WiFi 6的名称就诞生了!并且一改还顺便把WIFI4、WIFI5一起名字简化了现在大家在最新的手机系统中的WiFi 角标就能看到WiFi 4、WiFi 5、WiFi6的标识来区分你连接的是第几代WiFI技术整的和手机信号是一样一样的。 802.11b - WIFI 1 (1999) 802.11a - WIFI 2 (1999) 802.11g - WIFI 3 (2003 802.11n - WIFI 4 (2009) 802.11ac - WIFI 5(2014) 802.11ax - WIFI 6(2018) 2.2 组网设备 Hub集线器Switch交换机Router路由器 2.2.1 网络线缆和接口 双绞线有8根线两两缠在一起那么就有4组4对。 原因主要为了抵消彼此的电磁干扰。 2.2.1.1 网线标准 上世纪 80 年代初诞生了最早的网线标准CAT这个标准一直沿用至今主要根据带宽和传输速率来区分从一类网线CAT1 —— 八类网线CAT8。 1、一类网线主要用于传输语音不同于数据传输主要用于八十年代初之前的电话线缆已淘汰。 2、二类网线传输带宽为 1MHz用于语音传输最高数据传输速率 4Mbps常见于使用4Mbps规范令牌传递协议的旧的令牌网Token Ring已被淘汰。 3、三类网线该电缆的传输带宽 16MHz用于语音传输及最高传输速率为10Mbps的数据传输主要用于10BASE-T被 ANSI/TIA-568.C.2 作为最低使用等级。 4、四类网线该类电缆的传输频率为 20MHz用于语音传输和最高传输速率16Mbps指的是16Mbit/s 令牌环的数据传输主要用于基于令牌的局域网和 10BASE-T/100BASE-T 。最大网段长为 100m采用 RI 形式的连接器未被广泛采用。 5、五类线可追溯到 1995年传输带宽为100MHz可支持10Mbps和100Mbps 传输速率虽然现实中与理论值有一定的差距主要用于双绞线以太网10BASE-T/100BASE-T目前仍可使用不过在新网络建设中以及很难看到了。 6、超五类线目前生产环境中使用最多标准于 2001 年提出传输带宽为100MHz近距离情况下传输速率可以到达1000Mbps它具有衰减小串扰少比五类线增加了近端串音功能和测试要求所以它也成为当前应用最为广泛的网线比如山泽基本入门级别的网线就是超五类线。 7、六类线继CATSe 之后CAT6标准被提出传输带宽为 250MHz最适用于传输速率为1Gbps的应用。改善了在串扰以及回波损耗方面的性能这一点对于新一代全双工的高速网络应用而言是极为重要的还有一个特点是在 4个双绞线中间加了十字形的骨架使得网线十分的结实不会容易断裂。。 8、超六类线超六类线是六类线的改进版发布于2008年同样是ANSI/TIA-S58C.2 和 ISO/IEC 11801超六类/EA 标准中规定的一种双绞线电缆主要应用于万兆位网络中传输频率为 500MHz最大传输速率可达到 10Gbps在外部串扰等方面有较大的改善。 9、七类线该线是ISO/IEC 11801 7类/F级标准中于2002年认可的一种双绞线它主要为了适应万兆以太网技术的应用和发展但是它不再是一种非屏蔽双绞线了而是一种屏蔽双绞线可以防止电磁干扰所以它的传输频率至少可达 600MHz传输速率可达 10Gbps。 10、超七类线相对于 CAT 7 最大的区别在于支持的频率带宽提升了1000MHz在国内而言七类网线已经有很少地方使用了超七类就更加没有广泛进入人们的生活目前使用范围最广的是超五类六类等网线。 11、八类线CAT8相关标准由美国通信工业协会TIATR-43委员会在2016年正式发布支持 2000MHz 带宽支持40Gbps以太网络主要应用在数据中心IDC。 2.2.1.2 网线线序和规范 非屏蔽式双绞线Unshielded Twisted-Pair Cable UTP T568B 和 T568A T568-A:白绿绿白橙蓝白蓝橙白棕棕。 T568-B:白橙橙白绿蓝白蓝绿白棕棕。橙蓝绿棕前面都加白白一三对调 RJ-45水晶头 Connector 和 Jack UTP直通线Straight-Through 1-2 TX 发生数据 3,6 RX 接收数据 不过目前网卡是智能的可以判断线序是直连线还是交叉线。以及自动协商速率。 UTP 交叉线Crossover 交叉线就是一边按照T568-A的标准一边按照T568-B的标准。 UTP 直通线和交叉线 双绞线针脚定义 注意BI双向数据RX接收数据 Receive Data TX传送数据 Transmit Data 2.2.1.3 光纤和接口Fiber-Optic 光纤一般是成对出现的一端是收数据一段是发数据。 2.2.2 网络适配器 作用 类型 1按总线接口类型进行分类 分为 ISA 网卡、PCI 网卡、PCI-X 网卡、PCMCIA 网卡和 USB 网卡等等几种类型 2按传输介质接口分类 细同轴电缆的BNC接口网卡、粗同轴电缆的AUI接口网卡、以太网双绞线RJ-45接口网卡、光纤F/O接口网卡、无线卡等等。 3按传输速率带宽分类 10Mbps网卡、100Mbps以太网卡、10Mbps/100Mbps自适应网卡、1000Mbps千兆以太网卡、10Mbps/100Mbps/1000Mbps自适应网卡40Gbps自适应网卡(可以自动适应远端网络设备以确定当前可以使用的速率)等等。多网卡绑定的技术就可以将传输的速度提升。 2.2.3 中继器和集线器 2.2.3.1 中继器 repeater 它实际上是一种信号再生放大器可将变弱的信号和有失真的信号进行整形与放大输出信号比原信号的强度将大大提高。 中继器不解释不改变收到的数字信息而只是将其整形放大后再转发出去。工作在物理层。 优点 缺点 2.2.3.2 集线器 hub 集线器Hub工作在物理层是中继器的一种形式是一种几种连接缆线的网络组件可以认为集线器是一个多端口的中继器集线器能够提供多端口服务主要功能是对接收到的信号进行再生整形放大以扩大网络的传输距离同时把所有节点集中在以它为中心的节点上。 Hub并不记忆报文是由哪个MAC地址发出哪个MAC地址在Hub的哪个端口。集线器是共享带宽的连接改集线器的计算机都是共享该带宽。Hub 工作模式基于广播机制默认是广播发生数据。Hub 存在数据传输安全性问题。并且集线器相连的设备即在一个冲突域也在一个广播域中。 Hub 的特点 2.2.4 网桥Bridge和交换机Switch 2.2.4.1 网桥Bridge 网桥Bridge也叫桥接器是连接两个局域网的一种存储/转发设备根据MAC地址表对数据帧进行转发可隔离碰撞域冲突域。 网桥将网络的多个网段在数据链路层连接起来并对网络数据帧进行管理。 网桥的内部结构 优点 缺点 2.2.4.2 交换机Switch 交换机Switch是工作在OSI参考模型数据链路层的设备外表和集线器相似 它通过判断数据帧的目的MAC地址从而将数据帧从合适端口发送出去 交换机是通过MAC地址的学习和维护更新机制来实现数据帧的转发 以太网交换机是根据接收到的数据帧的源MAC地址来学习mac地址表的 交换机可以隔离冲突域不能隔离广播域。 内部结构 工作原理 生产环境中可能会出现三层交换机即交换机具有了路由器的功能。 面试题的时候问交换机工作在哪一层答二层数据链路层 交换机学习的源MAC地址所以在MAC地址表中不会出现多播地址和广播地址也正是因为该原因所以交换机无法隔离广播域。 2.2.4.3 集线器和交换机的比较 2.2.5 路由器 Router 路由把一个数据包从一个设备发送到不同网络里的另一个设备上去。这些工作依靠路由器来完成路由器只关心网络的状态和决定网络中最佳路径。路由的实现依靠路由器中的路由表来完成。 为了实现路由路由器需要做下列事情 路由器可以起到连接广域网的功能。 家用路由器是集成产品集成了交换机路由器无线AP。 2.3 以太网技术 2.3.1 概述 以太网Ethernet是一种产生较早并且使用相当广泛的局域网由美国Xerox施乐公司的Palo Alto研究中心简称PARC于20世纪70年代初期开始研究并于1975年研制成功。1982 年DIX第一代以太网技术 由美国Dec公司Xerox施乐公司Intel英特尔公司研制。 无线局域网技术WLAN中国标准WAPI国际标准WIFI 2.3.2 以太网MAC帧格式 Ethernet II现如今以太网的标准 Preamble 前导码用作数据校验8个字节不参加数据处理。用来探测网络是否有故障。 Destination Address目的MAC地址6个字节 Source Address源MAC地址6个字节 Length长度2个字节 Type指定接收数据的高层协议网络层使用协议类型2个字节 Data数据46字节-1500字节 FCSCRC校验位4个字节。不参加数据处理。 2.3.3 MAC地址 在局域网中硬件地址又称为物理地址或者MAC地址因为这种地址用在MAC帧中 b00unicast单播。1multicast组播 b10OUI全局唯一标识由国际组织IEEE分配。1本地管理标识 IEEE 802标准为局域网规定了一种 48位的全球地址一般都简称为“地址”是局域网中每一台计算机固化在网卡ROM中的地址。 IEEE 的注册管理机构 RA 负责向厂家分配地址字段的前三个字节即高位 24位 地址字段中的后三个字节即低位 24 位由厂家自行指派称为扩展标识符必须保证生产出的适配器没有重复的地址。 物理网卡的MAC是全球唯一。 查看各大厂商MAC地址识别码的网址http://standards-oui.ieee.org/oui/oui.txt 2.3.4 冲突检测的载波侦听多路访问 CSMA/CD CSMA/CD 工作原理 2.4 虚拟数据网 VLAN 2.4.1 VLAN 原理 虚拟局域网 VLAN 是由一些局域网网段构成的与物理位置无关的逻辑组 这些网段具有某些共同的需求。每一个 VLAN 的帧都有一个明确的标识符指明发送这个帧的工作站是属于哪一个 VLAN 。虚拟局域网其实只是局域网给用户提供的一种服务而并不是一种新型局域网。所以一个 VLAN 就是一个广播域。 VLAN 技术可以让交换机切割成多个虚拟的广播域。借用的路由器的隔离广播域功能。 优点 1更有效的共享网络资源。如果用交换机构成较大的局域网大量的广播报文就会使网络性能下降。VLAN 能将广播报文限制在本VLAN 范围内从而提升了网络的效能。 2简化网络管理。当结点物理位置发送变化时如跨越多个局域网通过逻辑上配置VLAN即可形成网络设备的逻辑组无需重新布线和改变IP地址等等。这些逻辑组可以跨越一个或者多个二层交换机 3提高网络的数据安全性。一个VLAN中的结点接收不到另一个VLAN中其他结点的帧。 虚拟局域网的实现技术 1基于端口的VLAN 2基于MAC地址的VLAN 3基于协议的VLAN 4基于网络地址的VLAN 云计算时代的来临使得传统的VLAN技术已经不够实用了VLAN只能划分4096个虚拟网络VXLAN技术来解决云计算时代的网络隔离问题VXLAN可以划分1600万个虚拟网络。 参考文献[ https://baike.baidu.com/item/vxlan/20385445?fraladdin ] 2.4.2 IEEE 802.1Q帧结构 字段长度含义Destination address6字节目的MAC地址。Source address6字节源MAC地址。Type2字节长度为2字节表示帧类型。取值为0x8100时表示802.1Q Tag帧。如果不支持802.1Q的设备收到这样的帧会将其丢弃。PRI3比特Priority长度为3比特表示帧的优先级取值范围为07值越大优先级越高。用于当阻塞时优先发送优先级高的数据包。如果设置用户优先级但是没有VLANID则VLANID必须设置为0x000。CFI1比特CFI (Canonical Format Indicator)长度为1比特表示MAC地址是否是经典格式。CFI为0说明是标准格式CFI为1表示为非标准格式。用于区分以太网帧、FDDIFiber Distributed Digital Interface帧和令牌环网帧。在以太网中CFI的值为0。VID12比特LAN ID长度为12比特表示该帧所属的VLAN。在VRP中可配置的VLAN ID取值范围为14094。0和4095协议中规定为保留的VLAN ID。三种类型 Untagged帧VID 不计Priority-tagged帧VID为 0x000VLAN-tagged帧VID范围04095 三个特殊的VID 0x000设置优先级但无VID0x001缺省VID0xFFF预留VID | | Length/Type | 2字节 | 指后续数据的字节长度但不包括CRC检验码。 | | Data | 42~1500字节 | 负载可能包含填充位。 | | CRC | 4字节 | 用于帧内后续字节差错的循环冗余检验也称为FCS或帧检验序列。 | IEEE 802.1Q 帧结构 VLAN 标签各字段含义 TPIDTag Protocol Identifier标签协议标识符2Byte表示帧类型取值为 0x8100时表示 IEEE 802.1Q的 VLAN 数据帧。如果不支持802.1Q 的设备收到这样的帧会将其丢弃各设备厂商可以自定义该字段的值。当邻居设备将TPID值配置为非0x8100时为了能够识别这样的报文实现互通必须在本设备上修改TPID值确保和邻居设备的TPID值配置一致。 PRIPriority3bit表示数据帧的802.1P是IEEE 802.1Q的扩展协议优先级。取值范围为 0-7值越大优先级越高。当网络阻塞时交换机优先发送优先级高的数据帧。 CFICanonical Format Indicator标准格式指示位1bit 表示MAC地址在不同的传输介质中是否以标准格式进行封装用于兼容以太网和令牌环网。CFI 取值为 0 表示MAC地址以标准格式进行封装为1表示以非标准格式封装。在以太网中CFI 的值为0。 VIDVLAN ID12bit表示该数据帧所属的VLAN的编号。VLAN ID取值范围是 0-4095。由于0 和 4095为协议保留取值所以 VLAN ID 的有效取值范围是 1 - 4094。 2.5 分层的网络架构 网络划分的分层 架构一 架构二 DMZ非军事化区主要是存放能够被互联网访问的服务器。 架构三 3 TCP/IP 协议栈 3.1 TCP/IP标准 3.1.1 TCP/IP介绍 Transmission Control Protocol / Internet Protocol传输控制协议/因特网互联协议 TCP/IP 是一个 Protocol Stack 协议栈包括 TCP、UDP、IP、ICMP、RIP、TELNET、FTP、SMTP、ARP等等许多协议 最早发源于 1969 年美国国防部缩写 DoD的因特网的前身 ARPA 网项目1983年1月1日TCP/IP取代了旧的的网络控制协议 NCP成为今天互联网和局域网的基石和标准由互联网工程任务组负责维护。1969年Unix出生。 国防高级研究计划局DARPA与BBN技术公司、斯坦福大学和伦敦大学学皖签约在多个硬件平台上开发协议的操作版本。在协议开发过程中数据包路由层的版本号从版本1进展到版本4后者于1983年安装在 ARPANET 中。它被称为互联网协议版本4(IPv4)作为协议仍在互联网使用连同其目前的继承互联网协议版本6(IPv6)。 互联网最先普及TCP/IP协议局域网在 20世纪90年代初使用的普遍的技术是 IPX/SPX。是 Novell 公司的通信协议集。与NetBEUI形成鲜明区别的是IPX/SPX比较庞大在复杂环境下具有很强的适应性。当微软推出了NT4.0系统适合企业级的服务器产品采用TCP/IP协议很快就打败了IPX/SPX因为在IPX/SPX ←→ TCP/IP 之间需要进行协议的转换网关实施复杂。 RFC请求注解 文档https://www.ietf.org/rfc/rfc1180.html 小知识Novell 现在拥有全欧洲流行的操作系统SUSE。一直与 微软/红帽 竞争。 3.1.2 TCP/IP分层 共定义了四层和OSI参考模型的分层有着对应关系 RFC文档https://www.ietf.org/rfc/rfc1122#section-1.3.3 RFC 官方分为四层 TCP/IP 应用层 应用层协议HTTP/HTTPSFTP/TFTPTelnetRedisMySQL网络通信协议NFSDNS。 3.1.3 TCP/IP通讯过程 逻辑链路控制Logical Link ControlLLC子层和介质访问控制Media Access ControlMAC子层。 MAC子层就是目的MAC地址和源MAC地址LLC子层就是上层协议的类型只负责对上层的交互比如上层协议为IP协议会有一个Type类型。 数据链路层的MAC和LLC子层的区别为实现不同、依赖体不同、主要功能不同。 一、实现不同 1、MAC子层MAC子层是由网络接口卡NIC:网卡来实现。 2、LLC子层LLC子层是由传输驱动程序实现的。 二、依赖体不同 1、MAC子层MAC子层依赖于各自的物理层。 2、LLC子层LLC子层在IEEE802.2标准中定义为802标准系列共用。 三、主要功能不同 1、MAC子层MAC子层的的主要功能为数据帧的封装/卸装帧的寻址和识别帧的接收与发送链路的管理帧的差错控制。 2、LLC子层LLC子层的主要功能为传输可靠性保障和控制数据包的分段与重组数据包的顺序传输。 3.1.4 TCP/IP 和 OSI模型的比较 3.2 transport 层 传输层功能实现数据终端到终端的连接可靠或者非可靠的传输连接。 TCP 和 UDP TCP 提供可靠UDP 提供高性能。 3.2.1 TCP Transmission Control Protocol 传输控制协议 3.2.1.1 TCP特性 更多关于 TCP 的内核参数可以参考 man 7 tcp 3.2.1.2 TCP包头 32位 4 个字节1Byte 8bitTCP固定20个字节。 TCP 包头字段介绍 端口号就相当于是应用程序应用层协议在计算机中的唯一标识。服务器应用程序的端口号是固定的。端口一旦被分配就不能冲突不能再有其他应用服务使用该端口除非该端口被释放。例如HTTP的80端口HTTPS的443端口。 Windows 查看端口 #查看进程信息~ tasklist | finstr “software” #查看端口~ netstat -no | findstr “process” TCP 的6个状态标记位 TCP 包头常见选项 3.2.1.3 TCP协议PORT 传输层通过port号确定应用层协议范围0-65535 维基百科: [https://en.wikipedia.org/wiki/List of TCP and UDP port numbers](https://en.wikipedia.org/wiki/List of TCP and UDP port numbers) IANA互联网数字分配机构负责域名数字资源协议分配 注意DNS端口号分为TCP 53 和UDP 53TCP是用来做区域传送UDP是用来做DNS解析的。DNS协议主要运行在UDP协议之上。 范例调整客户端的动态端口范围 #调整客户端的动态端口范围 ~# cat /proc/sys/net/ipv4/ip_local_port_range 32768 60999 ~# echo 20000 62000 /proc/sys/net/ipv4/ip_local_port_range ~# cat /proc/sys/net/ipv4/ip_local_port_range 20000 62000# echo 20000 65535 /proc/sys/net/ipv4/ip_local_port_range范例 ➜ ~ yum install -y man-pages ➜ ~ man 2 socket #nc可以用来做网络实验 # nc是netcat的简写是一个功能强大的网络工具有着网络界的瑞士军刀美誉。nc命令在linux系统中实际命令是ncatnc是软连接到ncat。 ➜ ~ yum install -y nc#服务器端 ➜ ~ ss -ntl State Recv-Q Send-Q Local Address:Port Peer Address:Port LISTEN 0 128 *:22 *:* LISTEN 0 128 [::]:22 [::]:* ➜ ~ nc -l 22 Ncat: bind to :::22: Address already in use. QUITTING. ➜ ~ nc -l 9527 I am kubsphere-docker I am kubsphere-docker#客户端 ~# nc 139.198.105.99 9527 I am kubsphere-docker I am kubsphere-docker#再开一个连接失败 ~# nc 139.198.105.99 9527 Ncat: Connection refused.➜ ~ ss -nt State Recv-Q Send-Q Local Address:Port Peer Address:Port ESTAB 0 0 10.150.22.47:9527 120.229.46.204:21728 #服务器开启UDP的端口 ➜ ~ nc -l 7000 -u#客户端连接 ~# nc 139.198.105.99 7000 -u ➜ ~ ss -ntu Netid State Recv-Q Send-Q Local Address:Port Peer Address:Port tcp ESTAB 0 0 10.150.22.47:7000 120.229.46.204:22207 ➜ ~ nc -l 1023 Ncat: bind to :::1023: Permission denied. QUITTING.范例找到端口冲突的应用程序 ➜ ~ nc -l 22 Ncat: bind to :::22: Address already in use. QUITTING.➜ ~ ss -ntlp | grep 22 State Recv-Q Send-Q Local Address:Port Peer Address:Port LISTEN 0 128 *:22 *:* users:((sshd,pid727,fd3)) LISTEN 0 128 [::]:22 [::]:* users:((sshd,pid727,fd4))➜ ~ lsof -i :22 COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME sshd 727 root 3u IPv4 17393 0t0 TCP *:ssh (LISTEN) sshd 727 root 4u IPv6 17395 0t0 TCP *:ssh (LISTEN) sshd 4940 zhongzhiwei 3u IPv4 29803268 0t0 TCP kubesphere-docker.io:ssh-120.229.46.204:22405 (ESTABLISHED)范例判断端口是否正在打开 # 代表端口已经被占用 ~ /dev/tcp/127.0.0.1/80 ~ echo $? 0# 代表端口访问不到没有被占用 ~ /dev/tcp/127.0.0.1/8080 bash: connect: Connection refused bash: /dev/tcp/127.0.0.1/8080: Connection refused ~ echo $? 1范例利用重定向实现上网 ~ exec 8/dev/tcp/www.baidu.com/80 ~ ls -l /proc/$$/fd total 0 lrwx------ 1 root root 64 Jun 7 22:48 0 - /dev/pts/4 lrwx------ 1 root root 64 Jun 7 22:48 1 - /dev/pts/4 lrwx------ 1 root root 64 Jun 7 22:48 2 - /dev/pts/4 lrwx------ 1 root root 64 Jun 7 22:48 255 - /dev/pts/4 lrwx------ 1 root root 64 Jun 7 22:55 8 - socket:[29844110]~ echo -e GET / HTTP/1.1\n 8 ~ cat 8 HTTP/1.1 200 OK范例反弹shell实现远程控制 面试题怎么查看某个端口给哪个应用程序使用 ~ ss -ntlp~ netstat -antp #格式 lsof -i :[端口] ~ lsof -i :2222 COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME nc 119407 root 3u IPv6 350112 0t0 TCP *:EtherNet/IP-1 (LISTEN) nc 119407 root 4u IPv4 350113 0t0 TCP *:EtherNet/IP-1 (LISTEN)TCP端口号通信过程 TCP序列和确认号 TCP确认和固定窗口 TCP滑动窗口 3.2.1.4 三次握手和四次挥手 TCP 协议是个可靠的协议可靠不仅是体现在发送数据报文有序号和确认号还有建立连接的过程TCP在双方传输数据之前要先确保链路安全可靠通过标记位来实现。 TCP三次握手详解 TCP四次挥手详解 建立连接 TCP三次握手 TCP 三次握手是由TCP协议栈自动完成实现的不需要应用程序参与。 面试题为什么需要三次握手 计算机的通信是需要有去有回才是完整的通信。防火墙是会防外网访问内网。 第一次握手客户端给服务器发送一个同步报文段SYN并指定客户端的初始序列号ISN此时客户端处于SYN_SENT状态。 首部的同步位SYN 1(SYN只是一个比特位0表示不是SYN1表示是SYN)初始序列号 seq m。 SYN 1的报文段不能携带任何的数据但要指定序号。 第二次握手服务器接收到来自客户端的同步报文段SYN后会以自己的SYN报文作为应答并且也指定了自己的初始序列号ISN。同时会把客户端的 seq 1 确认序列号ack的值表示自己已经收到了客户端的同步报文段SYN此时服务器处于SYN_RCVD的状态。 确认报文段中SYN 1,ACK 1(ACK也只是一个比特位0表示不是ACK1表示是ACK)确认序列号ack m1初始序列号seq n。 第三次握手客户端收到来自服务器的同步报文段SYN之后会发送一个确认报文段ACK以服务器的 seq1作为ack的值 表明自己已经收到来自服务器的同步报文段SYN。客户端进入ESTABLISHED状态服务器确认报文段ACK之后也会进入ESTABLISHED状态。 确认报文段中ACK 1确认序列号 ack n1序列号 seq m1。 双方已经建立起连接可以正常的发送数据。 范例三次握手抓包 # 使用ssh连接即可 ssh root10.0.0.101#wireshark抓包分析 (ip.src 10.0.0.101 and ip.dst 10.0.0.102) || (ip.dst 10.0.0.101 and ip.src 10.0.0.102)tcpdump -i eth0 -nn -e# 查看TCP的状态机 netstat -auntlp ss -tunalpTCP四次挥手 MSLMaximum Segment Lifetime TCP挥手需要视情况而定有可能是三次或者四次甚至异常情况下可能就没有挥手的阶段例如断网服务器关闭等。 在断开连接之前客户端和服务器都处于ESTABLISHED状态双方都可以主动断开连接以客户端主动断开连接为优。 第一次挥手客户端打算断开连接向服务器发送FIN报文(FIN标记位被设置为11表示为FIN0表示不是)FIN报文中会指定一个序列号之后客户端进入FIN_WAIT_1状态。 也就是客户端发出连接释放报文段(FIN报文)指定序列号seq u主动关闭TCP连接等待服务器的确认。 第二次挥手服务器收到连接释放报文段(FIN报文)后就向客户端发送ACK应答报文以客户端的FIN报文的序列号 seq1 作为ACK应答报文段的确认序列号ack seq1 u 1。 接着服务器进入CLOSE_WAIT(等待关闭)状态此时的TCP处于半关闭状态(下面会说什么是半关闭状态)客户端到服务器的连接释放。客户端收到来自服务器的ACK应答报文段后进入FIN_WAIT_2状态。 第三次握手服务器也打算断开连接向客户端发送连接释放(FIN)报文段之后服务器进入LASK_ACK(最后确认)状态等待客户端的确认。 服务器的连接释放(FIN)报文段的FIN1ACK1序列号seqm确认序列号acku1。 第四次握手客户端收到来自服务器的连接释放(FIN)报文段后会向服务器发送一个ACK应答报文段以连接释放(FIN)报文段的确认序号 ack 作为ACK应答报文段的序列号 seq以连接释放(FIN)报文段的序列号 seq1作为确认序号ack。 之后客户端进入TIME_WAIT(时间等待)状态服务器收到ACK应答报文段后服务器就进入CLOSE(关闭)状态到此服务器的连接已经完成关闭。 客户端处于TIME_WAIT状态时此时的TCP还未释放掉需要等待2MSLMSL最大分段生存期 或 报文最大生存时间后客户端才进入CLOSE状态。 为什么挥手需要四次 这是由于TCP的半关闭(half-close)造成的。半关闭是指TCP提供了连接的一方在结束它的发送后还能接受来自另一端数据的能力。通俗来说就是不能发送数据但是还可以接受数据。 TCP不允许连接处于半打开状态时就单向传输数据因此完成三次握手后才可以传输数据(第三握手可以携带数据)。 当连接处于半关闭状态时TCP是允许单向传输数据的也就是说服务器此时仍然可以向客户端发送数据等服务器不再发送数据时才会发送FIN报文段同意现在关闭连接。 这一特性是由于TCP双向通道互相独立所导致的也使得关闭连接必须经过四次握手。 可能有些人会有疑惑为什么中间的ACK和FIN不可以像三次握手那样合为一个报文段呢 在socket网络编程中执行close()方法会触发内核发送FIN报文。什么时候调用close()方法这是由用户态决定的假如服务器仍有大量数据等待处理那么服务器会等数据处理完后才调用close()方法这个时间可能会很久而ACK报文则是由系统内核来完成的这个过程会很快。所以中间的ACK和FIN不能合为一个包。 为什么TIME_WAIT等待的时间是2MSL MSL(Maximum Segment LifeTime)是报文最大生成时间它是任何报文在网络上存在的最长时间超过这个时间的报文将被丢弃。 因为TCP协议是基于IP协议(位于IP协议的上一层)IP数据报中有限制其生存时间的TTL字段是IP数据报可以经过的最大路由器的个数每经过处理它的路由TTL就会减一。TTL为 0 时还没有到达目的地的数据报将会被丢弃同时发送 ICMP 报文通知源主机。 MSL的单位为时间TTL的单位为跳转数。所以MSL应该大于等于TTL变为0的时间以确保报文已被丢弃。 TIME_WAIT等待的2MSL时间可以理解为数据报一来一回所需要的最大时间。 2MSL时间是从客户端接收到FIN后发送ACK开始计时的。如果在这个时间段内服务器没有收到ACK应答报文段会重发FIN报文段如果客户端收到了FIN报文段那么2MSL的时间将会被重置。如果在2MSL时间段内没有收到任何数据报客户端则会进入CLOSE状态。 等待2MSL的意义 保证客户端最后发送的ACK能够到达服务器帮助其正常关闭。 由于这个ACK报文段可能会丢失使得处于LAST_ACK状态的服务器得不到对已发送FIN报文段的确认从而会触发超时重传。服务器会重发FIN报文段客户端能保证在2MSL时间内收到来自服务器的重传FIN报文段从而客户端重新发送ACK应答报文段并重置2MSL计数。 假如客户端不等待2MSL就之间进入CLOSE状态那么服务器会一直处于LAST_ACK状态。 当客户端发起建立SYN报文段请求建立新的连接时服务端会发送RST报文段给客户端连接建立的过程就会被终止。 防止已失效的连接请求报文段出现在本连接中。 TIME_WAIT等待的2MSL时间确保本连接内所产生的所有报文段都从网络中消失使下一个新的连接中不会出现这种旧的连接请求报文段。 由于网络复杂有可能在服务器数据传输过程中有一些数据包还在传输过程中并没有到客户端。这样就不至于丢失数据。 TIME_WAIT状态过多有什么危害 只有主动发起断开请求的一方才会进入TIME_WAIT状态 占用系统资源socket的TIME_WAIT状态结束之前该socket占用的端口号将一直无法释放。如果服务器TIME_WAIT状态过多占满了所有端口资源则会导致无法创建新的连接。 如何解决TIME_WAIT状态过多 最好的办法是尽量让客户端主动断开连接除非遇到一些异常情况如客户端协议错误、客户端超时等。 1打开系统的TIME_WAIT重用和快速回收。 在Linux系统可以修改以下参数: 1.打开TCP对时间戳的支持保持服务器与客户端时间同步 net.ipv4.tcp_timestamps1默认即为 1 2.修改net.ipv4.tcp_tw_reuse 1允许对处于TIME_WAIT的socket用于建立新的连接 net.ipv4.tcp_tw_reuse 1 默认为0 2修改TIME_WAIT连接状态的上限值超过上限值处于TIME_WAIT状态的socket将立刻被清除并打印警告信息。 net.ipv4.tcp_max_tw_buckets 18000表示系统同时保持处于TIME_WAIT状态的socket的最大数量默认为18000。 可修改为更小值。 net.ipv4.tcp_max_tw_buckets 6666 范例四次挥手抓包 #wireshark抓包分析 (ip.src 10.0.0.101 and ip.dst 10.0.0.102) || (ip.dst 10.0.0.101 and ip.src 10.0.0.102)tcpdump -i eth0 -nn -e范例三次挥手抓包 #wireshark抓包分析 (ip.src 10.0.0.101 and ip.dst 10.0.0.102) || (ip.dst 10.0.0.101 and ip.src 10.0.0.102)tcpdump -i eth0 -nn -e # 在TCP三次挥手的范例有只访问一次http服务 # 需要关闭机器的防火墙功能或者开启相应的端口 10.0.0.101$ yum install -y httpd echo Hello Apache Server /var/www/html/index.html systemctl enable --now httpd 10.0.0.102$ curl 10.0.0.101范例MSL最大分段生存期 ➜ ~ sysctl net.ipv4.tcp_fin_timeout net.ipv4.tcp_fin_timeout 603.2.1.5 有限状态机FSMFinite State Machine 范例查看状态机状态 ~ ss -ant ~ netstat -antlp#实验查看客户端SYN-SENT状态 10.0.0.210~ iptables -A OUTPUT -d 10.0.0.211 -j DROP #将10.0.0.211数据进行丢弃 10.0.0.210~ iptables -A INPUT -s 10.0.0.211 -j DROP10.0.0.211~ ssh 10.0.0.210 10.0.0.211~ ss -ant | grep SYN-SENT SYN-SENT 0 1 10.0.0.211:38966 10.0.0.210:22虚线服务器实线客户端 客户端先发送一个FIN给服务端自己进入FIN_WAIT_1状态这时等待接收服务端报文该报文会有三种可能 1、只收到服务器的ACK客户端会进入FIN_WAIT_2状态后续当收到服务端的FIN时回应发送一个ACK会进入到TIME_WAIT状态这个状态会持续2MSLTCP报文段在网络中的最大生存时间RFC 1122 标准的建议值时 2min。客户端等待2MSL是为了当最后一个ACK丢失时可以再发送一次。因为服务端再等待超时后会再发送一个FIN给客户端进而客户端知道ACK已丢失 2、只有服务端的FIN时回应一个ACK给服务端进入CLOSING状态然后接收到服务端的ACK时进入TIME_WAIT状态 3、同时收到服务端的ACK和FIN直接进入TIME_WAIT状态 客户端的典型状态转移 客户端通过connect相同调用主动与服务器建立连接connect系统调用首先给服务器发送一个同步报文段使连接转移到SYN_SENT状态 此后 connect 系统调用可能因为如下两个原因失败返回 1、如果connect连接的目标端口不存在未被任何进程监听或者该端口仍被处于TIME_WAIT状态的连接所占用则服务器将给客户端发送一个复位报文段connect 调用失败 2、如果目标端口存在但是connect在超时时间内未收到服务器的确认报文段则connect调用失败。 connect调用失败将便连接立刻返回到初始的CLSOED状态。如果客户端成功收到服务器的同步报文段的确认则connect调用成功返回连接转移至ESTAB LISHED状态。 当客户端执行主动关闭时它将向服务器发送一个结束报文段同时连接进入FIN_WAIT_1状态。若此时客户端收到服务器专门用于确认目的确认报文段则连接转移至FIN_WAIT_2状态。当客户端处于FIN_WAIT_2状态时服务器处于CLOSE_WAIT状态这一对状态是可能发送半关闭的状态。此时如果服务器也关闭连接发送结束报文段则客户端将给予确认并TIME_WAIT状态。 客户端从FIN_WAIT_1状态可能直接进入TIME_WAIT状态不经过FIN_WAIT_2状态前提是处于FIN_WAIT_1状态的服务器直接收到带确认信息的结束报文段而不是先收到确认报文段再收到结束报文段。 处于FIN_WAIT_2状态的客户端需要等待服务器发送结束报文段才能转移至TIME_WAIT状态否则它将一直停留在这个状态。如果不是为了在半关闭状态下继续接收数据连接长时间的停留在FIN_WAIT_2状态并无益处。连接停留在FIN_WAIT_2状态的情况可能发生在客户端执行半关闭后未等服务器关闭连接就强行退出了。此时客户端连接由内核来接管可称之为孤儿连接和孤儿进程类似。 Linux为了孤儿连接长时间存留在内核中定义了两个内核参数 ~ cat /proc/sys/net/ipv4/tcp_max_orphans 8192 ~cat /proc/sys/net/ipv4/tcp_fin_timeout 60客户机端的三次握手和四次挥手状态转换 服务器端的三次握手和四次挥手状态转换 3.2.1.6 sync半连接和accpet全连接 半连接队列三次握手的第一次握手发过来以后对方还没有回来第二次握手和第三次握手还没有完成整个TCP三次握手的状态Server 会有一个队列syns queue把目前还没有完全建立连接的连接请求放在队列中队列会有最大值也就是说同一时间建立半连接的数量是有限的默认是128。只要超过这个数值那么就无法进行连接默认这个数值是有些不够用的。 全连接队列将三次握手完成以后会调用 accept queue 队列用来存放已经建立连接之后的队列服务器会开启一个进程来处理该队列的请求这个队列的数值就会下降若程序比较忙没有来得及处理该队列的请求请求又在不断的进来那么队列就会越来越多默认是128。accept queue 队列最长累积128个超过这个数值那么就无法进行处理默认这个数值是有些不够用的。用于高并发 链接https://www.jianshu.com/p/6a0fcb1008d6 有两个队列sync queue半连接队列accept queue全连接队列 三次握手两个队列的工作如下 1.第一步server收到client的syn后把相关的信息放到半连接队列中 2.第二步回复synack给client 3.第三步server 收到 client 的ack如果这时全连接没满那么从半连接队列拿出相关信息放入到全连接队列中否则按 tcp_abort_on_overflow 指示的执行。全连接队列满了并且 tcp_abort_on_overflow0 的话server 会过一段时间发送 synack 给 client重新握手过程的第二步。 # 未完成连接队列大小(半连接队列)默认值为128建议调整大小为1024以上 # 需要根据机器的实际性能资源量力而行 ~ cat /proc/sys/net/ipv4/tcp_max_syn_backlog 128 echo 1024 /proc/sys/net/ipv4/tcp_max_syn_backlog# 完成连接队列大小(全连接队列)默认值为128建议调整大小为1024以上 # 需要根据机器的实际性能资源量力而行 ~ cat /proc/sys/net/core/somaxconn 128 echo 1024 /proc/sys/net/core/somaxconn3.2.1.7 TCP超时重传 异常网络状况下开始出现超时或者丢包TCP控制数据传输以保证其承认的可靠服务 TCP服务必须能够重传超时时间内未收到确认的TCP报文段。为此TCP模块为每个TCP报文段都维护一个重传定时器该定时器在TCP报文段第一次被发送时启动。如果超时时间内未收到接收方的应答TCP模块将重传TCP报文段并重置定时器。至于下次重传的超时时间如何选择以及最多执行多少次重传就是TCP的重传策略 与TCP超时重传相关的两个内核参数 # 指定在底层IP接管之前TCP最少执行的重传次数默认值是3 ~ cat /proc/sys/net/ipv4/tcp_retries1 3 # 指定连接放弃前TCP最多可以执行的重传次数默认值15(一般对应13min ~ 30min) ~ cat /proc/sys/net/ipv4/tcp_retries2 15范例重传次数显示 ssh root10.0.0.102 # 登录之后将10.0.0.102机器的网线拔掉wireshark抓包显示3.2.1.8 TCP拥塞控制 网络中的带宽、交换结点中的缓存和处理机等都是网络的资源。在某段时间若对网络中某一资源的需求超过了该资源所能提供的可承受的能力网络的性能就会变坏。此情况称为拥塞。 TCP为提高网络利用率降低丢包率并保证网络资源对每条数据流的公平性。即所谓的拥塞控制 TCP拥塞控制的标准文档RFC 5681其中详细介绍了拥塞控制的四个部分慢启动slow start拥塞避免congestion avoidance快速重传fast retransmit和快速恢复fast recovery。拥塞控制算法在Linux下有多种实现比如 reno 算法、vegas 算法和 cubic 算法等等。它们或者部分全部实现了上述四个部分。 当前所使用的拥塞控制算法 ~ cat /proc/sys/net/ipv4/tcp_congestion_control cubic3.2.1.9 内核TCP参数优化 参考帮助man tcp 编辑文件 /etc/sysctl.conf 加入以下内容然后执行 sysctl -p 让参数生效 tee /etc/sysctl.conf -EOF# Kernel TCP Optimize BEGIN net.ipv4.tcp_fin_timeout 2 net.ipv4.tcp_tw_reuse 1 net.ipv4.tcp_tw_recycle 1 net.ipv4.tcp_syncookies 1 net.ipv4.tcp_keepalive_time 1000 net.ipv4.ip_local_port_range 2000 65000 net.ipv4.tcp_max_syn_backlog 16384 net.ipv4.tcp_max_tw_buckets 36000 # net.ipv4.route_gc_timeout 100 net.ipv4.tcp_syn_retries 1 net.ipv4.tcp_synack_retries 1 # net.ipv4.tcp_max_reordering 16384 net.core.somaxconn 16384 net.core.netdev_max_backlog 16384 # Kernel TCP Optimize END EOF作用说明 3.2.2 UDP User Datagram Protocol 用户数据报协议 3.2.2.1 UDP特性 3.2.2.2 UDP包头 3.3 Internet 层 3.3.1 Internet Control Message Protocol 范例利用 ICMP 协议判断网络状态 # TTL代表最多允许经过多少个路由器 # 当TTL128代表最多可以经过128个路由器中间隔了一个路由器就会自动的减一 ~ ping -c 2 192.168.237.3 PING 192.168.237.3 (192.168.237.3) 56(84) bytes of data. 64 bytes from 192.168.237.3: icmp_seq1 ttl64 time0.272 ms 64 bytes from 192.168.237.3: icmp_seq2 ttl64 time0.954 ms#远程主机不可达可能原因有 # 1.局域网使用DHCP动态分配IP地址时DHCP出现故障或者失败 # 2.子网掩码设置错误 # 3.路由表返回错误信息 ~ ping -c 2 192.168.237.32 PING 192.168.237.32 (192.168.237.32) 56(84) bytes of data. From 192.168.237.5 icmp_seq1 Destination Host Unreachable From 192.168.237.5 icmp_seq2 Destination Host Unreachable#远程主机目标端口不可达可能原因有防火墙禁ping等 10.0.0.101~ iptables -t filter -A INPUT -s 10.0.0.102 -p icmp -j REJECT 10.0.0.101~ iptables -vnL Chain INPUT (policy ACCEPT 53 packets, 2936 bytes)pkts bytes target prot opt in out source destination0 0 REJECT icmp -- * * 10.0.0.102 0.0.0.0/0 reject-with icmp-port-unreachable10.0.0.102~ ping -c 2 10.0.0.101 PING 10.0.0.101 (10.0.0.101) 56(84) bytes of data. From 10.0.0.101 icmp_seq1 Destination Port Unreachable From 10.0.0.101 icmp_seq2 Destination Port Unreachable#域名解析有问题 ~ ping www.kubesphere.org ping: www.kubesphere.org: Name or service not known#指定数据包的大小数据帧中数据部分大小在46-1500字节 ~ ping -s 65508 192.168.237.5 Error: packet size 65508 is too large. Maximum is 65507#-f (flood)实现网络攻击尽CPU所能去发送请求。 #这种攻击方式被称为DOS攻击将服务端的流量打满使其无法对外提供服务。 ~ ping -s 65507 -f 192.168.237.5 PING 192.168.237.5 (192.168.237.5) 65507(65535) bytes of data. .^C --- 192.168.237.5 ping statistics --- 117 packets transmitted, 116 received, 0.854701% packet loss, time 809ms rtt min/avg/max/mdev 1.333/6.720/13.396/1.843 ms, ipg/ewma 6.970/6.696 ms# 查看网卡的带宽 ~ ifconfig -s eth0 ~ watch -n 1 ifconfig s eth0ping 中 TTL 的介绍 1TTL是指定数据报被路由器丢弃之前允许通过的网段数量如果同一服务器不同的IP你ping这些 IP得到的TTL越高(经过转发的路由器少)延时越小说明直连该 IP 会更快。 2TTL 是由发送主机设置的以防止数据包不断在 IP 互联网络上永不终止地循环。转发 IP 数据包时要求路由器至少将 TTL 减小 1。 3 使用PING时涉及到的 ICMP 报文类型一个为ICMP请求回显(ICMP Echo Request)一个为ICMP回显应答(ICMP Echo Reply)TTL 字段值可以帮助我们识别操作系统类型。 4TTL 会有个初始值管理员可以进行修改根据操作系统的不同会有所不同Linux 系统一般是 64Windows 系统则是 128。 3.3.2 Address Resolution Protocol 3.3.2.1 ARP ARP 地址解析协议由互联网工程任务IETF在1982年11月发布的RFC 826中描述指定的是根据IP地址获取物理地址的一个TCP/IP协议。通过IP地址解析成MAC地址。使用的机制就是广播实现。 主机发送信息时包含目标IP地址的ARP请求广播到局域网络上的所有主机并接收返回消息以此确定目标的物理地址收到返回消息后将该IP地址和物理地址存入本地ARP缓存中保留一定时间下次请求时直接查询ARP缓存以节约资源。地址解析协议是建立在网络中各个主机互相信任的基础之上局域网上的主机可以自主发送ARP应答消息其他主机收到应答消息时不会检测该报文的真实性就会将其记入主机ARP缓存中。 同网段的ARP 跨网段的ARP 在 ping 之后会有 arp 的过程。ARP 协议没有确认的机制会有恶意冒充其他的主机的可能性。 范例ARP表 ~ ip neigh 192.168.237.2 dev eth0 lladdr 00:50:56:ff:1c:e1 STALE 192.168.237.254 dev eth1 lladdr 00:50:56:fa:63:f0 STALE 192.168.237.1 dev eth0 lladdr 00:50:56:c0:00:08 REACHABLE 192.168.237.254 dev eth0 lladdr 00:50:56:fa:63:f0 STALE 192.168.237.3 dev eth0 lladdr 00:0c:29:39:b1:32 STALE 192.168.237.32 dev eth0 FAILED~ arp -n Address HWtype HWaddress Flags Mask Iface 192.168.237.5 ether 00:0c:29:fb:26:f9 C ens33 192.168.237.1 ether 00:50:56:c0:00:08 C ens33 192.168.237.2 ether 00:50:56:ff:1c:e1 C ens33~ ping -c1 -W1 192.168.237.10 PING 192.168.237.10 (192.168.237.10) 56(84) bytes of data. 64 bytes from 192.168.237.10: icmp_seq1 ttl64 time0.502 ms --- 192.168.237.10 ping statistics --- 1 packets transmitted, 1 received, 0% packet loss, time 0ms rtt min/avg/max/mdev 0.502/0.502/0.502/0.000 ms#可以使用tcpdump抓包ARP协议 ~ tcpdump -i ens33 arp -nn~ arp -n Address HWtype HWaddress Flags Mask Iface 192.168.237.5 ether 00:0c:29:fb:26:f9 C ens33 192.168.237.1 ether 00:50:56:c0:00:08 C ens33 192.168.237.10 ether 00:0c:29:49:e4:84 C ens33 192.168.237.2 ether 00:50:56:ff:1c:e1 C ens33 #默认网关范例ARP静态绑定可以防止ARP欺骗 ➜ ~ arp -s 10.0.0.160 00:50:56:2d:4b:ce ➜ ~ arp -n Address HWtype HWaddress Flags Mask Iface 10.0.0.160 ether 00:50:56:2d:4b:ce CM eth0 ......# 删除ARP条目 ➜ ~ arp -d 10.0.0.160范例kali 系统实现ARP欺骗上网流量劫持 Kali 系统就是带有大量的黑客工具的Linux系统。Debian 系列的系统。 阿里云 Kali 镜像下载https://developer.aliyun.com/mirror/kali Kali 安装源(Kali-images)https://developer.aliyun.com/mirror/kali-images #启动路由转发功能 echo 1 /proc/sys/net/ipv4/ip_forward#安装包 apt-get install dsniff#欺骗目标主机本机是网关 arpspoof -i eth0 -t 被劫持的目标主机IP 网关IP#欺骗网关本机是目标主机 arpspoof -i eth0 -t 网关IP 被劫持的目标主机IPARP 跨网段通信 A - (1)Router(2) - B 前提条件A 已经知道 B的IP地址 1首先A 会判断和 B 是否是同一个网段发现不再同一个网段 2A 会发送ARP广播获取 Router(1) 接口的MAC地址【Router 其实为A和B的网关】ARP广播会交由Router进行转发。 3Router(2) 将ARP请求发送到 B获取B的MAC地址。 有几个网段就做几次ARP广播从而实现ARP跨网段通信。 3.3.2.2 Gratuitous ARP Gratuitous ARP也称为免费 ARP无敌ARPGratuitous ARP不同于一般的ARP需求它并非期待得到 ip 对应的 mac 地址而是当主机启动的时候将发送一个Gratuitous ARP请求默认发送三次Gratuitous ARP即请求自己的ip地址的mac地址。 免费ARP可以由两个方面的作用 范例抓取CentOS 8重启过程的ARP信息 范例抓取CentOS 6重启过程的ARP信息 0.0.0.0 就是系统刚启动还没有获取到地址只有当10.0.0.6的地址没有机器使用系统才会继承该IP地址。 3.3.3 Reverse Address Resolution Protocol RARP 即将MAC地址转换为IP地址 反向地址转换协议RARPReverse Address Resolution Protocol 允许局域网的物理机器从网关服务器的 ARP 表或者缓存上请求其 IP 地址。网络管理员在局域网网关路由器里创建一个表以映射物理地址MAC和与其对应的 IP 地址。当设置一台新的机器时其 RARP 客户机程序需要向路由器上的 RARP 服务器请求相应的 IP 地址。 应用场景网吧的无盘工作站。网络中会有MAC地址与IP地址的对应表当主机的MAC地址发送请求IP地址就会根据该对应表获取IP地址 3.3.4 Internet 协议 3.3.4.1 Internet 协议特征 3.3.4.2 IP PDU包头 IP 头部固定是 20 个字节。IP地址其实就是一个二进制数。 IP PDU抱头格式 # linux 查看TTL值 ~ cat /proc/sys/net/ipv4/ip_default_ttl 64范例发现IP冲突的主机 #sudo arping IPAddr #sudo arping -c [count] IPAddr~ arping 10.0.0.100 ARPING 10.0.0.100 from 10.0.0.8 eth0 Unicast reply from 10.0.0.100[00:0C:29:63:8B:AC] 0.908ms Unicast reply from 10.0.0.100[00:0C:29:63:8B:AC] 0.833ms范例禁用IPv6 #默认启动ipv6 ➜ ~ ifconfig ens33 ens33: flags4163UP,BROADCAST,RUNNING,MULTICAST mtu 1500inet 10.0.0.160 netmask 255.255.255.0 broadcast 10.0.0.255inet6 fe80::ef92:bc30:7ce0:bef2 prefixlen 64 scopeid 0x20linkether 00:50:56:2d:4b:ce txqueuelen 1000 (Ethernet)RX packets 237844 bytes 155371234 (148.1 MiB)RX errors 0 dropped 0 overruns 0 frame 0TX packets 291679 bytes 143477220 (136.8 MiB)TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0#修改内核配置 ➜ ~ vim /etc/sysctl.conf #加下面两行 net.ipv6.conf.all.disable_ipv6 1 net.ipv6.conf.default.disable_ipv6 1 ➜ ~ sysctl -p#查看IP验证 ➜ ~ ifconfig ens33 ens33: flags4163UP,BROADCAST,RUNNING,MULTICAST mtu 1500inet 10.0.0.160 netmask 255.255.255.0 broadcast 10.0.0.255ether 00:50:56:2d:4b:ce txqueuelen 1000 (Ethernet)RX packets 238566 bytes 155429296 (148.2 MiB)RX errors 0 dropped 0 overruns 0 frame 0TX packets 292678 bytes 143590240 (136.9 MiB)TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0 #注意禁用ipv6可能会影响一些服务的启动如sshpostfixmysql等 ➜ ~ vim /etc/ssh/sshd_config #AddressFamily any #此行修改为以下的内容 AddressFamily inet➜ ~ vim /etc/postfix/main.cf #inet_interfaces localhost #此行修改为以下的内容 inet_interfaces 127.0.0.1 ➜ ~ ss -ntl State Recv-Q Send-Q Local Address:Port Peer Address:Port LISTEN 0 128 0.0.0.0:22 *:* LISTEN 0 100 127.0.0.1:25 *:*协议域 3.4 主机到主机的包传递完整过程 主机到主机的包传递完整大致过程 1路由选择 2ARP 地址解析协议 3TCP 三次握手 4正常数据通信 应用程序使用TCP还是UDP是由开发程序员决定的。 网络的故障排查路由ARPTCP建立连接数据传输等。 3.5 IP地址 MAC 地址是世界唯一的IP 地址在局域网每一个设备也是唯一的IP地址就是逻辑地址MAC则是真实地址。 IP 地址特点 IP地址具有唯一性表达性IP地址是可以修改的地址。IP地址具有可管理的特性。 3.5.1 IP地址组成 它们可以唯一标识 IP 网络中的每台设备每台主机计算机、网络设备、外围设备必须具有唯一的地址。IPv6 已经在互联网中开始大规模的采用但在企业局域网内部使用的依旧是以 IPv4 为主。IPv6 使用的十六进制进行表示而IPv4则是使用大众所认知的十进制进行表示。 拓展VLAN subnet子网 网段 广播域 不同网段来讲网络ID肯定不一样同一个网段来讲主机ID肯定不一样。 IP地址由两部分组成 IPv4地址格式点分十进制记法 3.5.2 IP地址分类 IPnetID hostID 可用主机数 2^hostID(主机ID位数) - 2 2 ^(32-网络ID位数) - 2 网络数 2^ 可变的网络ID位数 A类一个A类IP地址由1字节的网络地址和3字节主机地址组成网络地址的最高位必须是“0” 地址范围从1.0.0.0 到126.0.0.0。可用的A类网络有126个每个网络能容纳1亿多个主机。 B类一个B类IP地址由2个字节的网络地址和2个字节的主机地址组成网络地址的最高位必须是“10”地址范围从128.0.0.0到191.255.255.255。可用的B类网络有16382个每个网络能容纳6万多个主机。 C类一个C类IP地址由3字节的网络地址和1字节的主机地址组成网络地址的最高位必须是“110”。范围从192.0.0.0到223.255.255.255。C类网络可达209万余个每个网络能容纳254个主机。 D类D类IP地址第一个字节以1110开始它是一个专 门 保留的地址。它并不指向特定的网络目前这一类地址被用在多点广播(Multicast)中。多点广播地址用来一次寻址一组计算机它标识共享同一协议的一组计算机。 E类以1111 0开始为将来使用保留。 全“0”的IP地址0.0.0.0 对应于当前主机网络地址。全“1”的IP地址 255.255.255.255是当前所有子网的广播地址。 网络地址主机地址广播地址 名称定义网络地址主机位全为0代表一个网段头主机地址主机位不全为0也不全为1代表一个网段的一个节点身体广播地址主机位全为1代表一个网段内的所有节点尾 各类IP地址可分配的网络地址与IP地址 类别可分配网络数量可分配IP地址数量A类A类2^(8-1) - 2 126(减2的原因是除去最小网络号0与最大网络号127)2^24 - 2除去网络地址与广播地址B类2^(16-2) 163842^16 - 2 65534C类2^(24-3) 20971522^8 - 2 254 3.5.3 公共和私有IP地址 私有IP地址不直接用于互联网通常在局域网中使用 公共IP地址互联网上设备拥有的唯一地址 3.5.4 特殊地址 0.0.0.0不是一个真正意义上的IP地址。它表示所有不清楚的主机和目的网络 限制广播地址。对本机来说这个地址指本网段内(同一广播域)的所有主机 本机回环地址主要用于测试。在传输介质上永远不应该出现目的地址为127.0.0.1的数据包 组播地址224.0.0.1特指所有主机224.0.0.2特指所有路由器。224.0.0.5指OSPF路由器地址多用于一些特定的程序以及多媒体程序 如果Windows主机使用了DHCP自动分配IP地址而又无法从DHCP服务器获取地址系统会为主机分配这样地址 3.5.5 保留地址 范例 172.16.0.0网络中的两个地址172.16.0.0网络地址 - 172.16.255.255广播地址 小总结 | | A类 | B类 | C类 | D类 | E类 | | — | — | — | — | — | — | | 二进制表示 | 0 0000000 - 0 1111111.X.Y.Z | 10 000000 - 10 111111.X.Y.Z | 110 00000 - 110 11111.X.Y.Z | 1110 0000 - 1110 1111.X.Y.Z | 保留未使用 | | 十进制表示法 | 0-127.X.Y.Z | 128-191.X.Y.Z | 192-223.X.Y.Z | 224-239.X.Y.Z | 240-255 | | 网络ID | 网络ID位是最高8位 | 网络ID位是最高16位 | 网络ID位是最高24位 | 组多播 | | | 主机ID | 主机ID是24位低位 | 主机ID是16位低位 | 主机ID是8位低位 | | | | 网络数 | 1262^7(可变是的网络ID位数)-2 | 2^1416384 | 2^212097152 | | | | 每个网络中的主机数 | 2^24-216777214 | 2^16-265534 | 2^8-2254 | | | | 默认子网掩码 | 255.0.0.0 | 255.255.0.0 | 255.255.255.0 | | | | 私网地址 | 10.0.0.0 | 172.16.0.0-172.31.0.0 | 192.168.0.0-192.168.255.0 | | | | 范例 | 114.114.114.114 1.1.1.1 58.87.87.99 119.29.29.29 | 180.76.76.76 172.16.0.1 | 223.6.6.6 | | | 3.5.6 子网掩码 主机数2^主机ID位数 - 2 网络数2^可变的网络ID位数 网络IDIP 与 Netmask CIDR无类域间路由目前的网络已不再按ABC类划分网段可以任意指定网段的范围 CIDR无类域间路由表示法IP/网络ID位数如172.16.0.100/16 CIDR表示法IP/网络ID位数 NetMask子网掩码32bit二进制和IP地址成对使用对应于IP中的网络ID为1对应于IP中的主机ID为0。 netmask 子网掩码: 32位或128位(IPv6)的数字和IP成对使用用来确认IP地址中的网络ID和主机D对应网络D的位为1对应主机D的位为0范例:255.255.255.0表现为连续的高位为1连续的低位为0。 子网掩码的八位 相关公式 判断对方主机是否在同一个网段 用自已的子网掩码分别和自已的IP及对方的IP相与比较结果相同则同一网络不同则不同网段 范例 netmask: 255.255.224.0网络ID位19 主机ID位13 主机数2^13-28190 范例判断A和B是否在网一个网段? A: 192.168.1.100 netmask255.255.255.0 B: 192.168.2.100 netmask255.255.0.0 范例一个主机:172.16.1.100/28 1、此主机所在的网段最多有多少主机?主机数2N(32-28)-214 2、网络IDIP和子网掩码相与172.16.1.96 3、此网段的主机中最小的IP:172.16.1.97。最大的IP172.16.1.110 范例CIDR计算题 ### 问题1 203.101.123.163/28 #求子网掩码主机数IP范围(最小IP最大IP)网络ID 子网掩码255.255.255.240 主机数2^4 - 2 14 IP范围(最小IP最大IP)203.101.123.161 - 203.101.123.174 网络ID203.101.123.160/28 广播地址203.101.123.175### 问题2判断两个网段是否可以通信 A:10.0.0.100/24 B:10.0.0.200/25 1IPA与netmaskAnetmaskIDA 2IPB与netmaskAnetmaskIDB 3netmaskIDA ? netmaskIDB #通信结果 A--B A10.0.0.100 与 255.255.255.0 10.0.0.0 B10.0.0.200 与 255.255.255.0 10.0.0.0 ) A B是在同一个网段1IPA与netmaskBnetmaskIDA 2IPB与netmaskBnetmaskIDB 3netmaskIDA ? netmaskIDB #通信结果 B--A A10.0.0.100 与 255.255.255.128 10.0.0.0 B10.0.0.200 与 255.255.255.128 10.0.0.128 ) A ! B不在同一个网段### 问题3 210.123.222.100/22 210.123.198.200/22 #问是否在同一个网段 210.123.110111 | 10.0/22 210.123.110001 | 10.0/22 #不再同一个网段### 问题4 10.123.200.100/22 #求子网掩码Netmask主机数网络ID 子网掩码255.255.252.0 主机数2^10-21022 网络ID10.123.200.0/22子网掩码不一样在某些场合也是可以通信的。 3.5.7 划分子网 划分子网将一个大网主机数量多主机ID位多分割成多个小网主机数量少主机ID位少网络ID向主机ID借 N 位将划分成个 2^N 子网。 可变长度子网掩码 Subnet 地址 范例划分子网 ### 问题1 中国移动10.0.0.0/8为32个省分配各自的子网 #1 新的子网的子网掩码 2^N 32 -- N5 新的子网的子网掩码是255.248.0.0 10.0.0.0/13#2 每个子网的主机数 32-1319 每个子网的主机数是2^19-2524,286#3 第一个子网和最后一个子网的网络ID(CIDR表示法) 第一个子网10.0.0.0/13 最后一个子网10.248.0.0/13#4 河南省获得了第10个子网网络ID最小的IP和最大的IP是 10.00000 000.0.0 #第1个子网 10.00001 000.0.0 10.00010 000.0.0 ... 10.01001 000.0.0 #第10个子网 最小IP10.72.0.1/13 最大IP10.79.255.254/13#5 最后一个子网的CIDR表示法 最后一个子网10.248.0.0/13### 问题2 172.16.0.0/16 划分成多个子网每个子网最多存放60台主机如何实现 2^N-2 60 N6 网络ID32-626172.16.0.0/26### 问题3 中国移动10.0.0.0/8给32个各省公司划分对应的子网,河南省得到第10个子网,再给省内的16个地市划分子网 2^N32 -- N5 省公司的子网10.0.0.0/13 河南省得到第10个子网10.72.0.0/13 # 10.0.0.0/13 # 10.00000 000.0.0/13 是第一个子网(在 00000 进行划分) # 10.01001 000.0.0/13 是第十个子网1)每个市公司的子网的netmask? 10.72.0.0/13 2^N 16 -- N4 每个市公司的子网的netmask10.72.0.0/172)每个市公司的子网的主机数有多少? 32-1715 每个市公司的子网的主机数有2^15-2327663)各地市的最小netid和最大的netid? 最小的netid10.72.0.0/17 最大的netid10.75.128.0/174)洛阳市第2个子网,最小IP和最大IP? 10.73.0.0/17 最小的IP10.73.0.1/17 最大的IP10.73.127.254/175)最后一个子网的CIDR表示法? 10.79.128.0/173.5.8 优化IP地址分配 合并超网将多个小网络合并成一个大网主机ID位向网络ID位借位 超网(Supernetting)是与子网类似的概念IP地址根据子网掩码被分为独立的网络地址和主机地址。超网也称无类别域间路由选择CIDR它是集合多个同类互联网地址的一种方法。 与子网划分把大网络分成若干小网络相反它是把一些小网络组合成一个大网络就是超网。 范例 8个C类网段 220.78.168.0/24 220.78.169.0/24 220.78.170.0/24 220.78.171.0/24 220.78.172.0/24 220.78.173.0/24 220.78.174.0/24 220.78.175.0/24# 使用二进制转换 220.78.10101 000.0 220.78.168.0/24 220.78.10101 001.0 220.78.169.0/24 220.78.10101 010.0 220.78.170.0/24 ... 220.78.10101 110.0 220.78.174.0/24 220.78.10101 111.0 220.78.175.0/24# 合并后的网段 220.78.168.0/213.5.9 跨网络通信 跨网络通信路由选择路径 路由分类: 优先级精度越高优先级越高 # Windows 查看路由表 route print # Linux 查看路由表 route -n ip route3.5.10 动态主机配置协议DHCP 动态主机配置协议 DHCPDynamic Host Configuration Protocol动态主机配置协议 是 RFC 1541已被 RFC 2131 取代定义的标准协议该协议允许服务器向客户端动态分配 IP 地址和配置信息。VMware 的内置DHCP租约默认是30min最多2h。 DHCP协议支持C/S客户端/服务器结构主要分为两部分 1、DHCP客户端通常为网络中的PC、打印机等终端设备使用从DHCP服务器分配下来的IP信息包括IP地址、DNS等。 2、DHCP服务器所有的IP网络设定信息都由DHCP服务器集中管理并处理客户端的DHCP请求。 DHCP采用UDP作为传输协议客户端发送消息到DHCP服务器的的67号端口服务器返回消息给客户端的68号端口。 在生产环境中物理服务器的IP地址是静态地址当在容器环境中则容器都是采用DHCP动态地址。 DHCP 八种报文 报文类型用途DHCP Discover客户端广播查找可用服务器DHCP Offer响应DHCP discover报文分配相应配置参数DHCP Request客户端请求配置参数、请求配置确认、续租约DHCP Ack服务器确认DHCP request报文DHCP Decline客户端发现地址被使用通知服务器DHCP Release客户端释放地址时通知服务器的报文DHCP Inform客户端已有IP地址请求更详情配置参数DHCP Nak服务器告诉客户端地址请求不正确或租期已过期 DHCP 动态主机配置协议工作原理 拓展Windows里管理网络命令 C:\Users\Administratornetsh netsh?3.5.11 IPv4 到 IPv6 的过渡 考虑到因特网上的系统和设备非常之多想要一次性从IPv4升级到IPv6是无法做到的。而要实现IP版本的升级需要花费相当多的时间且升级过程必须是相当平滑的防止升级过程中出现任何问题。IETFInternet Engineering Task Force国际互联网工程任务组设计了三种策略来实现平滑的IP版本升级。 1双协议栈策略就是一个站同时运行IPv4和IPv6直到整个因特网使用IPv6。当一个分组被发送到目的端时主机向DNS进行查询。如果DNS返回一个IPv4地址那么源主机就发送一个IPv4分组如果返回一个IPv6地址就发送一个IPv6分组。 2隧道技术策略当两台使用IPv6的计算机要进行相互通信但其分组数据要通过使用IPv4的网络时该分组要封装成IPv4分组而当分组离开时该网络时再去掉这个封装。 3头部转换策略当因特网中绝大多数系统设备已经过渡到IPv6但一些系统仍然使用IPv4时发送方想使用IPv6但接收方不能识别IPv6这时将IPv6头部格式转换成IPv4头部格式IPv6地址按照一定规则映射转换为IPv4地址。 4 网络配置 4.1 基本网络配置 将Linux主机接入到网络需要配置网络相关设置—般包括如下内容 4.2 CentOS6 之前的版本的网卡名称 接口命名方式CentOS 6 以太网eth[0,1,2,......] # CentOS6使用eth命名可能会造成网络设备编号混乱#ppp拨号网络 pppppp[0,1,2,......]网络接口识别并命名相关的 udev 配置文件 /etc/udev/rules.d/70-persistent-net.rules#修改对应的名称即可。重启系统或者将网卡卸载重新安装 ~ vim /etc/udev/rules.d/70-persistent-net.rules SUBSYSTEMnet, ACTIONadd, DRIVERS?*, ATTR{address}00:0c:29:4b:20:62, ATTR{type}1, KERNELeth*, NAMEeth0查看网卡 dmesg | grep -i eth ethtool -i eth0卸载网卡驱动 modprobe -r e1000 rmmod e1000装载网卡驱动 modprobe e1000范例临时修改网卡名称 ~ ip link set eth0 down ~ ip link set eth0 name abc ~ ip link set abc up范例主机名设置 # 查看主机名 # 主机名不支持下划线支持使用横线。 ~ hostname ~ vim /etc/sysconfig/network HOSTNAMEGD-VM-CentOS6-10-0-0-40.kubernetes.com4.3 网络配置命令 4.3.1 网络配置方式 4.3.2 ifconfig 命令 来自于 net-tools 包建议使用 ip 代替换 ~ rpm -qi net-tools Name : net-tools Version : 2.0 Release : 0.52.20160912git.el8 Architecture: x86_64 Install Date: Sun 11 Jul 2021 08:42:19 PM CST Group : System Environment/Base Size : 964782 License : GPLv2 Signature : RSA/SHA256, Tue 28 Apr 2020 11:49:03 PM CST, Key ID 05b555b38483c65d Source RPM : net-tools-2.0-0.52.20160912git.el8.src.rpm Build Date : Mon 27 Apr 2020 09:59:47 AM CST Build Host : x86-01.mbox.centos.org Relocations : (not relocatable) Packager : CentOS Buildsys bugscentos.org Vendor : CentOS URL : http://sourceforge.net/projects/net-tools/ Summary : Basic networking tools Description : The net-tools package contains basic networking tools, including ifconfig, netstat, route, and others. Most of them are obsolete. For replacement check iproute package. # 网络工具包包含基本的网络工具包括ifconfig、netstat、route等。大多数都过时了。更换检查iproute包。范例 ifconfig [interface]# -a 可以查看所有网卡信息不管是启用还是禁用 ifconfig -a# 启用和禁用网卡 ifconfig IFACE [up|down] ifup IFACE # 启动网卡 ifdown IFACE # 禁用网卡将IP逻辑地址禁用链路层没有禁用 # ifconfig 的禁用是数据链路层当然链路层禁用后网络层也不能使用ifconfig interface [aftype] options | address ... ifconfig IFACE IP/netmask [up] ifconfig IFACE IP netmask NETMASK注意立刻生效 启用混杂模式[-] promisc 范例 #添加/修改网卡IP地址(临时性的) ~ ifconfig eth0 10.0.0.68 netmask 255.255.0.0 或者 ~ ifconfig eth0 10.0.0.68/16#清除eth0上面的IP地址 ~ ifconfig eth0 0.0.0.0 | ifconfig eth0 0.0.0.0/0 或者 ~ ifconfig eth0 0#启用和禁用网卡 ~ ifconfig eth0 down ~ ifconfig eth0 up#对一个网卡设置多个IP地址 ~ ifconfig eth1:1 10.0.0.200/24 ~ ifconfig eth1: flags4163UP,BROADCAST,RUNNING,MULTICAST mtu 1500inet 10.0.0.100 netmask 255.255.255.0 broadcast 10.0.0.255ether 00:0c:29:bf:63:5c txqueuelen 1000 (Ethernet)RX packets 590 bytes 47797 (46.6 KiB)RX errors 0 dropped 0 overruns 0 frame 0TX packets 818 bytes 112874 (110.2 KiB)TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0eth1:1: flags4163UP,BROADCAST,RUNNING,MULTICAST mtu 1500inet 10.0.0.200 netmask 255.255.255.0 broadcast 10.0.0.255ether 00:0c:29:bf:63:5c txqueuelen 1000 (Ethernet)#禁用eth1:1网卡 ~ ifconfig eth1:1 down ~ ifconfig范例 #-s 可以查看网卡的通信情况 ~ ifconfig -s Iface MTU RX-OK RX-ERR RX-DRP RX-OVR TX-OK TX-ERR TX-DRP TX-OVR Flg ens33 1500 330960 0 0 0 411959 0 0 0 BMRU eth1 1500 1013 0 0 0 1562 0 0 0 BMRU lo 65536 599 0 0 0 599 0 0 0 LRU virbr0 1500 0 0 0 0 0 0 0 0 BMU#查看指定网卡的通信情况 ~ ifconfig -s eth14.3.3 route 命令 任何一个网络通信的主机都有路由表包括LinuxWindows以及路由器等网络设备都有路由表 Route Record 网络路由表示一个网段的路由主机路由表示一个主机的路由默认路由所有未知网段的路由 0.0.0.0/0 路由表组成四个组成部分 目标网络Destination目标主机所在的网络ID子网掩码Netmask目标网络的子网掩码接口lface当前网络设备的出口网关Gateway下一个路由器的邻近当前路由器的接口IP下一跳Next Hop开销Metric费用值越小优先级越高 路由表管理命令 路由表主要构成 查看路由表 route route -n范例 ➜ ~ route Kernel IP routing table Destination Gateway Genmask Flags Metric Ref Use Iface default gateway 0.0.0.0 UG 100 0 0 eth0 10.0.0.0 0.0.0.0 255.255.255.0 U 0 0 0 eth0 10.150.22.0 0.0.0.0 255.255.255.0 U 100 0 0 eth0 # 直连路由则网关不需要配置直连路由在配置接口IP地址就会自动生成➜ ~ route -n Kernel IP routing table Destination Gateway Genmask Flags Metric Ref Use Iface 0.0.0.0 10.150.22.1 0.0.0.0 UG 100 0 0 eth0 10.0.0.0 0.0.0.0 255.255.255.0 U 0 0 0 eth0 10.150.22.0 0.0.0.0 255.255.255.0 U 100 0 0 eth0添加route add route add [-net|-host|default] target [netmask Nm] [gw GW] [[dev] If]范例route del route del [-net|-host] target [netmask Nm] [gw GW] [[dev] If]范例 ###添加路由 #目标192.168.1.3 网关172.16.0.1 ➜ ~ route add -host 192.168.1.3 gw 172.16.0.1 dev eth0#目标192.168.0.0 网关172.16.0.1 ➜ ~ route add -net 192.168.0.0 netmask 255.255.255.0 gw 172.16.0.1 dev eth0 ➜ ~ route add -net 192.168.0.0/24 gw 172.16.0.1 dev eth0 #设置路由优先级 ➜ ~ route add -net 192.168.8.0/24 dev eth0 metric 200#默认路由网关172.16.0.1 ➜ ~ route add -net 0.0.0.0 netmask 0.0.0.0 gw 172.16.0.1 ➜ ~ route add -net 0.0.0.0/0 gw 172.16.0.1 ➜ ~ route add default gw 172.16.0.1###删除路由 #目标192.168.1.3 网关172.16.0.1 ➜ ~ route del -host 192.168.1.3 gw 172.16.0.1 ➜ ~ route del -host 192.168.1.3#目标192.168.0.0 网关172.16.0.1 ➜ ~ route del -net 192.168.0.0 netmask 255.255.255.0 gw 172.16.0.1 ➜ ~ route del -net 192.168.0.0/24范例实现静态路由 静态路由英语Static routing是一种路由的方式路由项routing entry由手动配置而非动态决定。与动态路由不同静态路由是固定的不会改变即使网络状况已经改变或是重新被组态。一般来说静态路由是由网络管理员逐项加入路由表。 环境 四台主机 A主机etho NAT模式 R1主机 etho NAT模式eth1仅主机模式 R2主机 etho桥接摸式eth1仅主机模式 B主机eth0桥接模式 #A主机 ifconfig eth0 10.0.0.123/8 route add -net 10.0.0.0/8 dev eth0 route add default gw 10.0.0.200 dev eth0#R1主机 ifconfig eth0 10.0.0.200/8 ifconfig eth1 192.168.0.200/24 route add -net 10.0.0.0/8 dev eth0 route add -net 192.168.0.0/24 dev eth1 route add -net 172.16.0.0/16 gw 192.168.0.201 dev eth1 #临时生效(路由转发功能) echo 1 /proc/sys/net/ipv4/ip_forward #永久生效(路由转发功能) ~ vim /etc/sysctl.conf net.ipv4.ip_forward1 ~ sysctl -p#R2主机 ifconfig etho 172.16.0.200/16 ifconfig eth1 192.168.0.201/24 route add -net 192.168.0.0/24 dev eth1 route add -net 172.16.0.0/16 dev etho route add -net 10.0.0.0/8 gw 10.0.0.200 dev eth1 #临时生效(路由转发功能) echo 1 /proc/sys/net/ipv4/ip_forward #永久生效(路由转发功能) vim /etc/sysctl.conf net.ipv4.ip_forward1#B主机 ifconfig eth0 172.16.0.123/16 route add -net 172.16.0.0/16 dev eth0 route add default gw 172.16.0.200 dev eth0范例将两台不同网段的主机直连通信 # A --- Switch --- B# A主机IP地址11.0.0.101 ~ ifconfig eth0 11.0.0.101/24 ~ route add -host 10.0.0.102 dev eth0 ~ ping -c 1 -W 1 10.0.0.102# B主机IP地址10.0.0.102 ~ ifconfig eth0 10.0.0.102/24 ~ route add -host 11.0.0.101 dev eth0 ~ ping -c 1 -W 1 11.0.0.101 PING 11.0.0.101 (11.0.0.101) 56(84) bytes of data. 64 bytes from 11.0.0.101: icmp_seq1 ttl64 time0.473 ms--- 11.0.0.101 ping statistics --- 1 packets transmitted, 1 received, 0% packet loss, time 0ms rtt min/avg/max/mdev 0.473/0.473/0.473/0.000 ms# 在两主机之间添加路由器可以实现需求 # 环境中只要确保物理上是连通的有路(路由)就可以通 # 若物理上是连通的但是没有路(路由)那么还是不通的#使其Linux系统具有路由转发功能 echo 1 /proc/sys/net/ipv4/ip_forward 范例Linux系统实验 ###网络规划(Linux主机中添加相应的网卡配置并添加对应的网络) # A--net8(10.0.0.0/24)--R1--net1(192.168.10.0/24)--R2--net2(172.16.20.0/24)--B #A:10.0.0.123/24 修改网卡配置即可#R1:开启路由转发功能(重要)并添加相应的路由策略 ##eth0:10.0.0.200/24 ##eth1:192.168.10.200/24 修改网卡配置即可 #临时生效 route add -net 172.16.20.0/24 gw 192.168.10.100 dev eth1 #永久生效 vim /etc/sysconfig/static-routes any net 172.16.20.0/24 gw 192.168.10.100#R2:开启路由转发功能(重要)并添加相应的路由策略 ##eth0:192.168.10.100/24 ##eth1:172.16.20.100/24 修改网卡配置即可 #临时生效 route add -net 10.0.0.0/24 gw 192.168.10.200 dev eth0 #永久生效 vim /etc/sysconfig/static-routes any net 10.0.0.0/24 gw 192.168.10.200#B:172.16.20.123/24 修改网卡配置即可#查看系统的路由转发功能是否开启 sysctl -a | grep -i ip_forward #抓包 tcpdump -i eth0 -nn icmp #查看路由的追踪过程(查看跳数) mtr IP地址 tracepath traceroute范例查看路由 #查看路由 route -n#查看网关 cat /etc/sysconfig/network-scripts/ifcfg-eth1 | grep -i gateway#查看DNS服务 cat /etc/resolv.conf # Generated by NetworkManager nameserver 114.114.114.114 nameserver 8.8.8.84.3.4 配置动态路由 通过守护进程获取动态路由安装quagga包通过命令 vtysh 配置 支持多种路由协议RIP、OSPF 和 BGP 路由信息协议RIPRouting Information Protocol是基于距离矢量算法的路由协议利用跳数来作为计量标准。 OSPF(Open Shortest Path First开放式最短路径优先是一个内部网关协议(Interior Gateway Protocol简称IGP用于在单一自治系统autonomous system,AS内决策路由。是对链路状态路由协议的一种实现隶属内部网关协议IGP故运作于自治系统内部。著名的迪克斯彻Dijkstra算法被用来计算最短路径树。OSPF支持负载均衡和基于服务类型的选路也支持多种路由形式如特定主机路由和子网路由等。 边界网关协议BGP是运行于 TCP 上的一种自治系统的路由协议。 BGP 是唯一一个用来处理像因特网大小的网络的协议也是唯一能够妥善处理好不相关路由域间的多路连接的协议。 BGP 构建在 EGP 的经验之上。 BGP 系统的主要功能是和其他的 BGP 系统交换网络可达信息。网络可达信息包括列出的自治系统AS的信息。这些信息有效地构造了 AS 互联的拓扑图并由此清除了路由环路同时在 AS 级别上可实施策略决策。 4.3.5 netstat 命令 来自于net-tools包建议便用 ss 代替 ss代替显示网络连接: netstat [--tcp|-t] [--udp|-u] [--raw|-w] [--listening|-l] [--all|-a] [--numeric|-n] [--extend|-e[--extend|-e]] [--program|-p]常用选项 -t: tcp协议相关 -u: udp协议相关 -w: raw socket相关 -l: 处于监听状态 -a: 所有状态 -n: 以数字显示IP和端口 -e: 扩展格式 -p: 显示相关进程及PID常用组合 netstat: -tan -uan -tnl -unl显示路由表 netstat {--route|-r} [--numeric|-n] -r显示内核路由表 -n数据格式4.3.6 显示接口统计数据 netstat {--interfaces|-I|-i} [iface] [--all|-a] [--extend|-e] [--program|-p] [--numeric|-n] netstat -i netstat -IIFACE ifconfig -s IFACE范例 ➜ ~ netstat -Ieth0 Kernel Interface table Iface MTU RX-OK RX-ERR RX-DRP RX-OVR TX-OK TX-ERR TX-DRP TX-OVR Flg eth0 1500 15672755 0 0 0 19992263 0 0 0 BMRU ➜ ~ ifconfig -s eth0 Iface MTU RX-OK RX-ERR RX-DRP RX-OVR TX-OK TX-ERR TX-DRP TX-OVR Flg eth0 1500 15672842 0 0 0 19992354 0 0 0 BMRU ➜ ~ netstat -nt Active Internet connections (w/o servers) Proto Recv-Q Send-Q Local Address Foreign Address State tcp 0 0 10.150.22.47:22 120.229.46.206:6176 ESTABLISHED tcp 0 0 10.150.22.47:22 120.229.46.206:6170 ESTABLISHED4.3.7 ip 命令 来自于iproute包可用于代替ifconfigroute Linux ip 命令与 ifconfig 命令类似但比 ifconfig 命令更加强大主要功能是用于显示或设置网络设备。 ip 命令是 Linux 加强版的的网络配置工具用于代替 ifconfig 命令。 菜鸟教程 Linux ip 命令 4.3.7.1 配置 Linux 网络属性 ip [ OPTIONS ] OBJECT { COMMAND | help } ip 命令说明 OBJECT{ link | addr | addrlabel | route | rule | neigh | ntable | tunnel | maddr | mroute | mrule | monitor | xfrm | token }OBJECT : { link | addr | route } ip link - network device configuration set dev IFACE可设置属性: up and down:激活或禁用指定接口相当于 ifup / ifdown show [dev IFACE] [up]: :指定接口up仅显示处于激活状态的接口man帮助:ip(8), ip-address(8),ip-link(8)ip-route(8)范例查看帮助 ~ ip help Usage: ip [ OPTIONS ] OBJECT { COMMAND | help }ip [ -force ] -batch filename where OBJECT : { link | address | addrlabel | route | rule | neigh | ntable |tunnel | tuntap | maddress | mroute | mrule | monitor | xfrm |netns | l2tp | fou | macsec | tcp_metrics | token | netconf | ila |vrf | sr | nexthop | mptcp }OPTIONS : { -V[ersion] | -s[tatistics] | -d[etails] | -r[esolve] |-h[uman-readable] | -iec | -j[son] | -p[retty] |-f[amily] { inet | inet6 | mpls | bridge | link } |-4 | -6 | -I | -D | -M | -B | -0 |-l[oops] { maximum-addr-flush-attempts } | -br[ief] |-o[neline] | -t[imestamp] | -ts[hort] | -b[atch] [filename] |-rc[vbuf] [size] | -n[etns] name | -N[umeric] | -a[ll] |-c[olor]}~ ip link help ~ ip addr help ~ ip route helpIP地址管理 ip addr { add | del } IFADDR dev STRING [label LABEL] [scope {global | link | host}] [broadcast ADDRESS][label LABEL]:添加地址时之名网卡别名 [scope {global | link | host}]:指明作用域,global全局可用,link仅链接可用,host本机可用 # global表示网卡中的IP地址是保存在内核中的全局性的 # link表示网卡只能针对所连接的链路有效 # host表示IP地址只能本机有效地址即不会广播出去别的机器也不能访问该机器地址 [broadcast ADDRESS]:指明广播地址ip address show ip address flush范例 ip link show # 显示网络接口信息 ip link set eth0 up # 开启网卡 ip link set eth0 down # 关闭网卡 ip link set eth0 promisc on # 开启网卡的混合模式 ip link set eth0 promisc offi # 关闭网卡的混个模式 ip link set eth0 txqueuelen 1200 # 设置网卡队列长度 ip link set eth0 mtu 1400 # 设置网卡最大传输单元 ip addr show # 显示网卡IP信息 ip addr add 192.168.0.1/24 dev eth0 # 设置eth0网卡IP地址192.168.0.1 ip addr del 192.168.0.1/24 dev eth0 # 删除eth0网卡IP地址ip addr add 192.168.0.1/24 dev eth0 label eth0:0 # 设置网卡别名 ip addr del 192.168.0.1/24 dev eth0 label eth0:0 # 删除网卡别名ip addr flush dev eth0 # 清空网络地址范例增加网卡别名实现一个网卡多个IP地址 ~ ip addr show eth0 2: eth0: BROADCAST,MULTICAST,UP,LOWER_UP mtu 1500 qdisc pfifo_fast state UP group default qlen 1000link/ether 00:0c:29:37:9e:a1 brd ff:ff:ff:ff:ff:ffinet 10.0.0.110/24 brd 10.0.0.255 scope global noprefixroute eth0valid_lft forever preferred_lft foreverinet6 fe80::698a:144a:4ba2:572e/64 scope link noprefixroutevalid_lft forever preferred_lft forever # 添加子网卡 ~ ip addr add 192.168.1.110/24 dev eth0 label eth0:0 ~ ip addr show eth0 2: eth0: BROADCAST,MULTICAST,UP,LOWER_UP mtu 1500 qdisc pfifo_fast state UP group default qlen 1000link/ether 00:0c:29:37:9e:a1 brd ff:ff:ff:ff:ff:ffinet 10.0.0.110/24 brd 10.0.0.255 scope global noprefixroute eth0valid_lft forever preferred_lft foreverinet 192.168.1.110/24 scope global eth0:0valid_lft forever preferred_lft foreverinet6 fe80::698a:144a:4ba2:572e/64 scope link noprefixroutevalid_lft forever preferred_lft forever # 删除子网卡 ~ ip addr del 192.168.1.110/24 dev eth0 label eth0:0 ~ ip addr show eth0 2: eth0: BROADCAST,MULTICAST,UP,LOWER_UP mtu 1500 qdisc pfifo_fast state UP group default qlen 1000link/ether 00:0c:29:37:9e:a1 brd ff:ff:ff:ff:ff:ffinet 10.0.0.110/24 brd 10.0.0.255 scope global noprefixroute eth0valid_lft forever preferred_lft foreverinet6 fe80::698a:144a:4ba2:572e/64 scope link noprefixroutevalid_lft forever preferred_lft forever范例修改IP地址 ~ ip addr show eth1 3: eth1: BROADCAST,MULTICAST,UP,LOWER_UP mtu 1500 qdisc pfifo_fast state UP group default qlen 1000link/ether 00:0c:29:37:9e:ab brd ff:ff:ff:ff:ff:ffinet 192.168.1.1/24 scope global eth1valid_lft forever preferred_lft forever # 先添加新的IP地址再删除旧的IP地址 ~ ip addr add 10.10.10.10/24 dev eth1 ~ ip addr del 192.168.1.1/24 dev eth1 ~ ip addr show eth1 3: eth1: BROADCAST,MULTICAST,UP,LOWER_UP mtu 1500 qdisc pfifo_fast state UP group default qlen 1000link/ether 00:0c:29:37:9e:ab brd ff:ff:ff:ff:ff:ffinet 10.10.10.10/24 scope global eth1valid_lft forever preferred_lft forever范例 ~ ip addr change 10.0.0.18/24 dev eth1 preferred_lft 30 valid_lft 6 preferred_lft is greater than valid_lft~ ip addr change 10.0.0.18/24 dev eth1 preferred_lft 5 valid_lft 30 ~ 3: eth1: BROADCAST,MULTICAST,UP,LOWER_UP mtu 1500 qdisc pfifo_fast state UP group default qlen 1000link/ether 00:0c:29:37:9e:ab brd ff:ff:ff:ff:ff:ffinet 10.0.0.18/24 scope global deprecated dynamic eth1valid_lft 20sec preferred_lft 0sec4.3.7.2 管理路由 ip route 的用法 # 添加路由 ip route add TARGET via GW dev IFACE src SOURCE_IPTARGET:主机路由: IP网络路由: NETWORK/MASK# 添加网关 ip route add default via GW dev IFACE # 网关是和当前网卡是在同一个网段中# 删除路由 route del TARGET# 查看路由 ip route show | ip route list# 清空路由表 ip route flush [dev IFACE] [via PREFIX]范例 # 设置系统默认路由 ip route add default via 192.168.1.254 # 设置192.168.4.0网段的网关为192.168.0.254,数据走eth0接口 ip route add 192.168.4.0/24 via 192.168.0.254 dev eth0 # 设置默认网关为192.168.0.254 ip route add default via 192.168.0.254 dev eth0 # 删除192.168.4.0网段的网关 ip route del 192.168.4.0/24 # 删除默认路由 ip route del default # 删除路由 ip route delete 192.168.1.0/24 dev eth0范例查看路由过程 ~ ip route get 10.0.0.111 10.0.0.111 dev eth0 src 10.0.0.110cache4.3.8 ss 命令 来自于iproute包代替netstatnetstat通过遍历/proc来获取 socket信息ss 使用netlink与内核tcp_diag 模块通信获取socket信息 格式 ss [OPTIONS]... [FILTER]选项 -t: tcp协议相关 -u: udp协议相关 -w: 裸套接字相关 -X: unix sock相关 -l: listen状态的连接 -a: 所有 -n: 数字格式 -p: 相关的程序及PID -e: 扩展的信息 -m: 内存用里 -o: 计时器信息格式说明 FILTER :[ state TCP-STATE ][ EXPRESSION ]TCP的常见状态: tcp finite state machine:LISTEN:监听ESTABLISHED:已建立的连接FIN_WAIT_1FIN_WAIT_2SYN_SENTSYN_RECVCLOSEDEXPRESSION: dport sport 常用组合 ss -ant ss -antl ss -antlp ss -aun范例常见用法 #显示本地打开的所有端口 ss -l#显示每个进程具体打开的socket ss -pl#显示所有的TCP socket ss -t -a#显示所有的UDP socket ss -u -a#显示所有已经建立的ssh链接 ss -o state established ( dport :ssh or sport :ssh ) ss -o state established ( dport :22 or sport :22 )#显示所有已经建立的HTTP链接 ss -o state established ( dport :http or sport :http )#列出当前的socket详细信息显示 ss -s范例ss命令的使用实例介绍 #不带任何选项处理证明已建立连接的所有结果的列表 ss #如果要取消命令输出中的标题行可以使用 -H 选项 ss -H #如果需要在命令的输出中显示 tcp 连接可以使用 -t 选项 ss -t #如果需要在命令的输出中显示 udp 连接可以使用 -u 选项 ss -u #如果必须在命令的输出中显示 unix 效率连接可以使用 -x 选项 ss -x #如果你只求是侦听的结果可以使用 -l 选项 ss -l #使用 -s 选项可以显示摘要信息 ss -s #如果显示ipv4侦听的可以使用 -4 和 -l 选项。 ss -4l #如果显示ipv6侦听的可以使用 -6 和 -l 选项。 ss -6l #如果不想将ip解析为主机名称可以使用 -n 选项以防止将ip地址解析为主机名。但可能会阻止端口号的解析 ss -n -4l4.4 网络配置文件 CentOS 6 之前的版本网卡名为 eth开头 CentOS 7 以后的版本网卡名为 ens开头 原因是传统的 eth 开头的命名简单但是有个缺点在生产环境中添加或者删除网卡会带来 网卡名的变化。eth 命名方式不是特别的稳定。CentOS 7 以后的版本网卡名是通过硬件和网卡的类型进行确认也就是说通过增加或者删除网卡不会动态的自动将网卡名修改可以保证网卡名的稳定性从而避免增加或者删除网卡带来网卡名的变化进而导致配置文件出错的问题错误。 但是生产环境中还是会将 eth 开头因为生产环境中要兼容低版本的操作系统进而比较好的实现自动化标准化。 CentOS 8 则取消了 network 服务所以在 /etc/sysconfig/network-scripts/ 下就少了很多的脚本文件。使用的是 NetworkManager 管理网络服务。 4.4.1 网络基本配置文件 IP、MASK、GW、DNS相关的配置文件: /etc/sysconfig/network-scripts/ifcfg-IFACE 说明参考 /usr/share/doc/initcripts-*/sysconfig.txt 常用配置 设置说明TYPE接口类型;常见有的Ethernet, BridgeNAME此配置文件应用到的设备DEVICE设备名HWADDR对应的设备的MAC地址UUID设备的惟一标识BOOTPROTO激活此设备时使用的地址配置协议常用的dhcp, static, none, bootpIPADDR指明IP地址NETMASK子网掩码,如:255.255.255.0PREFIX网络ID的位数,如:24GATEWAY默认网关DNS1第一个DNS服务器地址DNS2第二个DNS服务器地址DOMAIN主机不完整时自动搜索的域名后缀ONBOOT在系统引导时是否激活此设备USERCTL普通用户是否可控制此设备PEERDNS如果BOOTPROTO的值为dhcpYES将允许dhcp server分配的dns服务器信息直接覆盖至/etc/resolv.conf文件NO不允许修改resolv.confNM_CONTROLLEDNM是NetworkManager的简写此网卡是否接受NM控制 范例常见配置网卡 #静态配置 ~ vim /etc/sysconfig/network-scripts/ifcfg-eth0 DEVICEeth0 NAMEeth0 #BOOTPROTOnone BOOTPROTOstatic IPADDR10.0.0.8 #NETMASK255.255.255.0 PREFIX24 GATEWAY10.0.0.2 DNS1223.5.5.5 DNS2223.6.6.6 ONBOOTyes DOMAINkubesphere.org#DHCP ~ vim /etc/sysconfig/network-scripts/ifcfg-eth0 DEVICEeth0 NAMEeth0 BOOTPROTOdhcp ONBOOTyes范例重启网络服务 #CentOS6和CentOS7 service network restart systemctl restart network#CentOS8 nmcli connection reload nmcli connection up 网卡设备 #重启网卡设备 nmcli device reapply 网卡设备4.4.2 配置当前主机的主机名 #CentOS6之前的版本 /etc/sysconfig/network HOSTNAME#CentOS7以后的版本 /etc/hostname [HOSTNAME]4.4.3 本地主机名数据库和IP地址的映射 优先于使用 DNS 前检查 getent hosts 查看 /etc/hosts 内容 /etc/hosts4.4.4 DNS 域名解析 ~ cat /etc/resolv.conf # Generated by NetworkManager nameserver DNS_SERVER_IP1 nameserver DNS_SERVER_IP2 nameserver DNS_SERVER_IP3 search DOMAIN#常用的DNS服务器 DNS_SERVER_IP: 114.114.114.114 , 8.8.8.8 #阿里 223.5.5.5 , 223.6.6.6 #百度 180.76.76.76 #腾讯 119.29.29.29 , 119.28.28.28 182.254.118.118 , 182.254.116.1164.4.5 修改/etc/hosts和DNS的优先级 /etc/nsswitch.conf hosts: files dns4.4.6 路由相关的配置文件 /etc/sysconfig/network-scripts/route-IFACE两种风格: (1)TARGET (via Gw) 如:10.0.0.0/8 via 172.16.0.1(2)每三行一定一条路由 ADDRESS #TARGET NETMASK #mask GATEWAY #GW范例CentOS7创建/etc/sysconfig/network-scripts/static-routes文件添加持久静态路由 注意CentOS7支持CentOS8已经不支持了因为CentOS8默认取消了 network.service 服务 #查看network脚本调用路由文件 ➜ ~ grep -A 3 /etc/sysconfig/static-routes /etc/init.d/networkif [ -f /etc/sysconfig/static-routes ]; thenif [ -x /sbin/route ]; thengrep ^any /etc/sysconfig/static-routes | while read ignore args ; do/sbin/route add -$argsdoneelse#查看当前路由 ➜ ~ route -n Kernel IP routing table Destination Gateway Genmask Flags Metric Ref Use Iface 0.0.0.0 10.0.0.2 0.0.0.0 UG 100 0 0 ens33 10.0.0.0 0.0.0.0 255.255.255.0 U 100 0 0 ens33#创建文件 ➜ ~ vim /etc/sysconfig/static-routes ➜ ~ cat /etc/sysconfig/static-routes any net 192.168.1.0/24 gw 10.0.0.2 any net 192.168.2.0/24 gw 10.0.0.2 ➜ ~ systemctl restart network#确认路由生效 ➜ ~ route -n Kernel IP routing table Destination Gateway Genmask Flags Metric Ref Use Iface 0.0.0.0 10.0.0.2 0.0.0.0 UG 100 0 0 ens33 10.0.0.0 0.0.0.0 255.255.255.0 U 100 0 0 ens33 192.168.1.0 10.0.0.2 255.255.255.0 UG 0 0 0 ens33 192.168.2.0 10.0.0.2 255.255.255.0 UG 0 0 0 ens334.5 网卡别名 将多个IP地址绑定到一个NIC上 每个IP绑定到独立逻辑网卡即网络别名命名格式: ethX:Y如: eth0:1 , eth0:2、eth0:3 范例ifconfig命令 ifconfig eth0:0 192.168.1.100/24 up ifconfig eth0:0 down范例网卡别名 #创建网卡别名 ➜ ~ ifconfig eth0:1 10.0.0.20/24 ➜ ~ ifconfig eth0:1 10.0.0.20 netmask 255.255.255.0#启用网卡别名(默认创建即启用) ➜ ~ ifconfig eth0:1 up#查看网卡别名 ➜ ~ ifconfig ➜ ~ ip addr#清除网卡别名上面的IP地址 ➜ ~ ifconfig eth0:1 0.0.0.0 ifconfig eth0:1 0#禁用网卡别名 ➜ ~ ifconfig eth0:1 down#清除网卡别名上面的IP地址并禁用网卡别名 ➜ ~ ifconfig eth0:1 0 down范例ip 命令 #在eth0网卡新增IP地址 ip addr add 172.16.1.1/16 dev eth0 #创建网卡别名 ip addr add 172.16.1.1/16 dev eth0 label eth0:0 #删除网卡别名 ip addr del 172.16.1.1/14 dev eth0 label eth0:0 #清楚网卡别名上面的IP地址 ip addr flush dev eth0 label eth0:0为每个设备别名生成独立的接口配置文件格式为ifcfg-ethX:xxx 范例 ~ cat /etc/sysconfig/network-scripts/ifcfg-eth0:1 NAMEeth0:1 DEVICEeth0:1 IPADDR10.0.0.100 NETMASK255.255.255.0 #PREFIX24#CentOS8 ~ nmcli connection reload ~ nmcli device reapply eth0#CentOS7以前版本重启网络服务即可 ~ service network restart#查看网卡别名配置 ~ ifconfig ~ ip addr show注意 4.6 多网卡Bonding 将多块网卡绑定同一IP地址对外提供服务可以实现高可用或者负载均衡。直接给两块网卡设置同一IP地址是不可以的。通过bonding虚拟一块网卡对外提供连接物理网卡的被修改为相同的MAC地址。 4.6.1 Bonding 聚合链路工作模式 bond聚合链路模式共7种模式0-6 Mode 负载均衡─所有链路处于负载均衡状态轮询方式往每条链路发送报文这模式的特点增加了带宽同时支持容错能力当有链路出问题会把流量切换到正常的链路上。 性能问题——个连接或者会话的数据包如果从不同的接口发出的话中途再经过不同的链路在客户端很有可能会出现数据包无序到达的问题而无序到达的数据包需要重新要求被发送这样网络的吞吐量就会下降。Bond0在大压力的网烙传输下性能增长的并不是很理想。 需要交换机进行端口绑定 容错能力一只有一个slave是激活的(active)。也就是说同一时刻只有一个网卡处于工作状态其他的slave都处于备份状态只有在当前激活的slave故障后才有可能会变为激活的(active)。 无负载均衡一此算法的优点是可以提供高网络连接的可用性但是它的资源利用率较低只有一个接口处于工作状态在有N个网络接口的情况下资源利用率为1/N。 负载均衡一基于指定的传输HASH策略传输数据包。 容错能力一这模式的特点增加了带宽同时支持容错能力当有链路出问题会把流量切换到正常的链路上。 性能问题―该模式将限定流量以保证到达特定对端的流量总是从同一个接口上发出。既然目的地是通过MAC地址来决定的因此该模式在’本地网络配置下可以工作得很好。如果所有流最是通过单个路由器由于只有一个网关源和目标mac都固定了那么这个算法算出的线路就一直是同一条那么这种模式就没有多少意义了。 需要交换机配置为port channel 当有对端交换机失效感觉不到任何downtime但此法过于浪费资源不过这种模式有很好的容错机制。此模式适用于金融行业因为他们需要高可靠性的网络。不先评出现任何问题。 在动态聚合模式下聚合组内的成员端口上均启用LACP(链路汇聚控制协议协议其端口状态通过该协议自动进行维护。负载均衡一基于指定的传输HASH策略传输数据包。默认算法与blance-xor一样。 容错能力一这模式的特点增加了带宽同时支持容错能力当有链路出问题会把流量切换到正常的链路上对比blance-xor这种模式定期发送LACPD报文维护镞路聚合状态保证链路质量。 需要交换机支持LACP协议 在每个物理接口上根据当前的负载根据速度计算分配外出流量。如果正在接收数据的物理接口口出故障了另一个物理接口接管该故障物理口的MAC地址。 需要ethtool支持获取每个slave的速率 该模式包含了balance-tb模式同时加上针对IPV4流量的接收负载均衡而且不需要任何switch(交换机)的支持。接收负载均衡是通过ARP协商实现的。bonding驱动截获本机发送的ARP应答并把源硬件地址改写为bond中某个物理接口的难一硬件地址从而便得不同的对端使用不同的硬件地址进行通信。 mod6 与 mod0的区别 mod6先把eth0流量占满再占eth1 …ethX;而mod0的话会发现2个口的流虽都很稳定基本一样的带宽。而mod6,会发现第一个口流是很高,第2个口只占了小部分流量。 说明 常用的模式为 0136mode 156 不需要交换机的设置 mode 0234 需要交换机配置active-backup、balance-tlb 和 balance-alb 模式不需要交换机的任何特殊配置。 其他绑定模式需要配置交换机以便整合链接。 如Cisco交换机需要在模式0、2和3中使用EtherChannel但是模式4中需要LACP和EtherChannel4.6.2 Bonding 配置 详细信息帮助 /usr/share/doc/kernel-doc-version/Documentation/networking/bonding.txt https://www.kernel.org/doc/Documentation/networking/bonding.txt创建bonding设备的配置文件 ~ vim /etc/sysconfig/network-scripts/ifcfg-bond0 NAMEbond0 TYPEbond DEVICEbond0 BOOTPROTOnone IPADDR10.0.0.100 PREFIX8 #miimon指定链路监测时间间隔。如果miimon100那么系统每100ms监测一次链路连接状态如果有一条线路不通就转入另一条线路 #fail_over_mac1用于虚拟环境生产环境中不需要添加 BONDING_OPTSmode1 miimon100 fail_over_mac1~ vim /etc/sysconfig/network-scripts/ifcfg-eth0 NAMEeth0 DEVICEeth0 BOOTPROTOnone MASTERbond0 SLAVEyes ONBOOTyes~ vim /etc/sysconfig/network-scripts/ifcfg-eth1 NAMEeth1 DEVICEeth1 BOOTPROTOnone MASTERbond0 SLAVEyes ONBOOTyes#重启网络服务(CentOS 7|CentOS 8) ~ systemctl restart network ~ nmcli connection reload ~ nmcli connection up bond0 ~ nmcli connection up eth0 ~ nmcli connection up eth1 # CentOS 6重启网卡 ~ service network restart查看bond0状态 /proc/net/bonding/bond0删除bond0 ifconfig bond0 down rmmod bonding4.7 CentOS7 以上版本网络配置 CentOS 6之前网络接口使用连续号码命名eth0、eth1等,当增加或删除网卡时名称可能会发生变化CentOS7以上版使用基于硬件设备拓扑和设置类型命名。 CentOS 8中已弃用network.service采用NetworkManager (NM)为网卡启用命令。CentOS 8仍可以安装network.service作为网卡服务只是默认没有安装具体方法为: dnf install network-scripts不过官方已明确在下一个大版本中将彻底放弃network.sevice不建议继续使用network.service管理网络。 4.7.1 网卡命名机制 systemd对网络设备的命名方式 基于BIOS支持启用biosdevname软件 内置网卡em1,em2 pci卡pYpX Y: s1ot ,x: port 网卡组成格式 en : Ethernet有线局域网 wl : wlan无线局域网 ww : wwan无线广域网 o : 集成设备的设备素引号 s : 护展槽的素引号 x : 基于MAC地址的命名 ps : enp2s1 使用传统命名方式 1编辑/etc/default/grub配置文件 #需要提前准备好 ifcfg-eth0 的配置文件否则网络找不到网卡配置文件 #biosdevname0 用于戴尔服务器的网卡设置 GRUB_CMDLINE_LINUX“net.ifnames0 biosdevname0” sed -i.bak -r ‘/GRUB_CMDLINE_LINUX/s#(.*)“#\1 net.ifnames0 biosdevname0”#ig’ grub 2为grub2生成其配置文件 grub2-mkconfig -o /etc/grub2.cfg grub2-mkconfig -o /boot/grub2/grub.cfg 3重启系统 reboot 4.7.2 主机名 配置文件 #CentOS6版本 /etc/sysconfig/network #CentOS7以后版本 /etc/hostname 默认没有此文件通过DNS反向解析获取主机名主机名默认为: localhost.localdomain。 设置主机名 hostnamectl set-hostname centos7.kubernetes . com 删除文件/etc/hostname恢复主机名localhost.localdomain 显示主机名信息 hostname hostnamectl status 4.7.3 网络配置工具 nmcli 图形工具nm-connection-editor 字符配置tui工具 命令行工具nmcli 以上工具都依赖 NetworkManager 服务此服务是管理和监控网络设置的守护进程 nmcli 命令 nmcli 命令相关术语 格式 nmcli [ OPTIONS ] OBJECT { COMMAND \ help }device - show and manage network interfacesnmcli device helpconnection - start stopand manage network connectionsnmcli connection help修改IP地址等属性 nmcli connection modify IFACE [|-]setting-property value setting-property: ipv4.addresses ipv4.gateway ipv4.dns1 ipv4.method manual | auto修改配置文件执行生效 nmcli connection reload nmc1i connection up con-namenmcli con modifcfg_*文件ipv4.method manualBOOTPROTOnoneipv4.method autoBOOTPROTOdhcpipv4.addresses 192.168.2.1/24IPADDR192.168.2.1 PREFIX24ipv4.gateway 172.16.0.200GATEWAY172.16.0.200ipv4.dns 8.8.8.8DNS08.8.8.8ipv4.dns-search example.comDOMAlNexample.comipv4.ignore-auto-dns truePEERDNSnoconnection.autoconnect yesONBOOTyesconnection.id eth0NAMEeth0connection.interface-name eth0DEVICEeth0802-3-ethernet.mac-address …HWADDR … 范例nmcli 的基本使用 #查看帮助 ➜ ~ nmcli connection add help#使用nmcli配置网络 ➜ ~ nmcli connection show#显示所有活动连接 ➜ ~ nmcli connection show active#显示网络连接配置 ➜ ~ nmcli connection show System eth0#修改网卡名称(作用在网卡配置文件中的NAME字段) ➜ ~ nmcli connection modify eth1 con-name System eth1#显示设备状态 ➜ ~ nmcli dev status#显示网络接口属性 ➜ ~ nmcli connection show eth0#创建新连接defaultIP自动通过DHCP获取 ➜ ~ nmcli connection add con-name default type Ethernet ifname eth0#删除连接 ➜ ~ nmcli connection del default#创建新连接static指定静态IP不自动连接 ➜ ~ nmcli connection add con-name static ifname eth0 autoconnect no type Ethernet ipv4.addresses 172.16.X.10/24 ipv4.gateway 172.16.X.254#启用static连接配置 ➜ ~ nmcli connection up static#启用default连接配置 ➜ ~ nmcli connection up default#修改连接设置 ➜ ~ nmcli connection mod static connection.autoconnect no ➜ ~ nmcli connection mod static ipv4.dns 223.5.5.5 ➜ ~ nmcli connection mod static ipv4.dns 8.8.8.8 ➜ ~ nmcli connection mod static -ipv4.dns 8.8.8.8 ➜ ~ nmcli connection mod static ipv4.addresses 172.16.X.10/24 172.16.X.254 #在网卡IP地址的基础上再来添加IP地址 ➜ ~ nmcli connection mod static ipv4.addresses 10.10.10.10/16#DNS设置存放在/etc/resolve.confPEERDNSno 表示当IP通过DHCP自动获取时DNS仍是手动设置不自动获取等价于下面命令 ➜ ~ nmcli coconnectionn mod System eth0 ipv4.ignore-auto-dns yes范例nmcli 生成新的网卡配置文件 ~ nmcli connection add con-name eth1-office ipv4.addresses 192.168.1.1/24 \ ipv4.gateway 192.168.1.254 ipv4.method manual type ethernet \ ifname eth1 ipv4.dns 223.5.5.5 ipv4.dns 223.6.6.6# 查看配置文件 ~ cat /etc/sysconfig/network-scripts/ifcfg-eth-office# 启动该网卡 ~ nmcli connection reload ~ nmcli connection up eth1-office# 查看网卡信息 ~ ip addr show eth1 3: eth1: BROADCAST,MULTICAST,UP,LOWER_UP mtu 1500 qdisc pfifo_fast state UP group default qlen 1000link/ether 00:0c:29:16:73:3f brd ff:ff:ff:ff:ff:ffinet 192.168.1.1/24 brd 192.168.1.255 scope global noprefixroute eth1valid_lft forever preferred_lft foreverinet6 fe80::19a9:320d:30ea:67c0/64 scope link noprefixroutevalid_lft forever preferred_lft forever4.7.4 nmcli 实现 bonding #CentOS 7以后的版本使用CentOS 6以前的版本没有该功能。 #添加bonding接口 # con-name 连接名 # ifname 接口名 nmcli connection add type bond con-name mybond0 ifname bond0 \ mode active-backup ipv4.method manual ipv4.addresses 10.0.0.100/24#添加从属接口 nmcli connection add type bond-slave ifname eth0 master bond0 nmcli connection add type bond-slave ifname eth1 master bond0 #注意如无为从属接口提供连接名则该名称时接口名称加类型构成#查看连接名 nmcli connection#要启动绑定则必须首先启动从属接口 nmcli connection up bond-salve-eth0 nmcli connection up bond-salve-eth1#启动绑定 nmcli connection up mybond04.7.5 网络组 Network Teaming 网络组是将多个网卡聚合在一起方法从而实现冗错和提高吞吐量 网络组不同于旧版中bonding技术提供更好的性能和扩展性。Team 号称是内核里的新技术在CentOS 7 之后的新的Linux发行版可以考虑使用 Team 网络组技术。 网络组由内核驱动和teamd守护进程实现 多种方式 runner 网络组特点 范例 #创建网络组接口 nmcli con add type team con-name CNAME ifname INAME [config JSON]CNAME 连接名 INAME 接口名 JSON 指定runner方式格式{runner: {name: METHOD}} # METHOD 选择需要的模式#创建port接口 nmcli connection add type team-slave con-rlame CNAME ifname INAME master TEAMCNAME 连接名,连接名若不指定默认为team-slave-IFACE INAME 网络接口名 TEAM 网络组接口名#断开和启动 nmcli device disconnect INAME nmc1i connection up CNAMEINAME 设备名 CNAME 网络组接口名或port接口范例网络组示例 # 配置的作用域是全局性的 nmcli con add type team con-name myteam0 ifname team0 config {runner: {name :loadbalance }} \ ipv4.addresses 192.168.1.100/24 ipv4.method manual # 添加之后就会有192.168.1.100/24地址是属于虚拟网卡没有意义。nmcli connection add con-name team0-eth1 type team-slave ifname eth1 master team0 nmcli connection add con-name team0-eth2 type team-slave ifname eth2 master team0 nmcli connection up team0-eth1 nmcli connection up team0-eth2 nmc1i connection up myteam0teamdct1 team0 state ping -I team0 192.168.0.254 nmcli device disconnect eth1teamdct1 team0 state nmcli connection up team0-port1 nmcli device disconnect eth2teamdct1 team0 state nmcli connection up team0-port2 teamdct1 team0 state管理网络组配置文件 /etc/sysconfig/network-scripts/ifcfg-team0DEVICEteam0 DEVICETYPETeam TEAM__CONFIG{\runner\: { \name\: \broadcast\}} BOOTPROTOnone IPADDR0172.16.0.100 PREFIX024 NAMEteam0 ONBOOTyes管理网络组配置文件 /etc/sysconfig/network-scripts/ifcfg-team0-eth1NAMEteam0-eth1 DEVICEeth1 ONBOOTyes TEAM_MASTERteam0 DEVICETYPETeamPort删除网络组 nmcli connection delete team0-eth0 nmcli connection delete team0-eth1 nmcli connection delete team0 teamdctl team0 state nmcli connection show4.8 网桥 4.8.1 桥接原理 桥接把一台机器上的若干个网络接口连接起来。其结果是其中一个网口收到的报文会被复制给其他网口并发送出去。以使得网口之间的报文能够互相转发。网桥就是这样一个设备它有若干个网口并且这些网口是桥接起来的。与网桥相连的主机就能通过交换机的报文转发而互相通信。实现网络的划分。KVM 就使用该技术。 主机A发送的报文被送到交换机S1的eth0口由于eth0与eth1、eth2桥接在一起故而报文被复制到eth1和eth2并且发送出去然后被主机B和交换机S2接收到。而S2又会将报文转发给主机C、D。 范例CentOS 8取消brctl工具,可以用下面方法查看网桥 #查看桥接情况 ~ ip link show master virbr0~ bridge link show4.8.2 配置实现网桥 工具包 bridge-utils目前CentOS 8无此包。 CentOS 7是主机默认情况下是无法起到Hub或者交换机的功能所以默认情况下收到目的地址不是主机IP地址的数据包就会丢弃。 桥接设备的IP地址并没有关系。 yum install bridge-utils -y#查看网桥 brctl show #查看CAM(content addressable memory内容可寻址存储器)表 brctl showmacs br0#添加和删除网桥 brctl addbr br0 | brctl delbr br0#添加和删除网桥中的网卡 brctl addif br0 eth0 | brctl delbr br0 eth0ip link | ip addr #默认br0是down必须启用 ifconfig br0 up ip link set br0 up#启用STP brctl show brctl stp br0 on brctl show#以上操作都是临时生效重启系统将丢失配置范例brctl 命令创建软件网桥 # 创建网桥(类似于交换机) brctl addbr br0 # 将接口加入到网桥中 brctl addif br0 eth0 brctl addif br0 eth1 # 查看网桥的MAC表 brctl showmacs br0 # 启用br0 ip link set br0 up # 为br0配置管理接口 ip address add 10.0.0.111/24 dev br0 # 查看网桥所连接的信息 $ brctl show bridge name bridge id STP enabled interfaces br0 8000.000c291380be no eth0eth1注意NetworkManager只支持以太网接口接口连接到网桥不支持聚合接口 范例nmcli 命令创建软件网桥 nmcli connection add con-name mybr0 type bridge ifname br0 nmcli connection modify mybr0 ipv4.addresses 10.0.0.100/24 ipv4.method manual nmcli connection add con-name br0-port0 type bridge-slave ifname eth0 master br0查看配置文件 cat /etc/sysconfig/network-scripts/ifcfg-br0 cat /etc/sysconfig/network-scripts/ifcfg-br0-port0范例nmcli 实现 #1创建网桥 #nmcli默认会开启stp生成树协议 nmcli con add type bridge con-name br0 ifname br0 #(可选)网桥可以不加地址添加地址为了方便管理 nmcli connection modify br0 ipv4.addresses 10.0.0.100/24 ipv4.method manual nmcli connection up br0#2加入物理网卡 nmcli connection add type bridge-slave con-name br0-port0 ifname eth0 master br0 nmcli connection add type bridge-slave con-name br0-port1 ifname eth1 master br0 nmcli con up br0-port0 nmcli con up br0-port1#3查看网桥配置文件 cat/etc/sysconfig/network-scripts/ifcfg-br0 DEVICEbr0 STPyes TYPEBridge BOOTPROTOstatic IPADDR10.0.0.100 PREFIX24cat /etc/sysconfig/network-scripts/ifcfg-br0-port0 TYPEEthernet NAMEbr0-port0 DEVICEeth0 ONBOOTyes BRIDGEbr0 UUID23f41d3b-b57c-4e26-9b17-d5f02dafd12d#4安装管理软件包 yum install -y bridge-utils brctl show #5删除br0 nmcli con down br0 rm /etc/sysconfig/network-scripts/ifcfg-br0* nmcli con reload4.8.3 网络相关术语 4.8.3.1 广播风暴 广播风暴broadcast storm简单的讲是指当广播数据充斥网络无法处理并占用大量网络带宽导致正常业务不能运行甚至彻底瘫痪这就发生了“广播风暴”。一个数据帧或包被传输到本地网段 由广播域定义上的每个节点就是广播由于网络拓扑的设计和连接问题或其他原因导致广播在网段内大量复制传播数据帧导致网络性能下降甚至网络瘫痪这就是广播风暴。 4.8.3.2 生成树STP STPSpanning Tree Protocol是生成树协议的英文缩写可应用于计算机网络中树形拓扑结构建立主要作用是防止网桥网络中的冗余链路形成环路工作。但某些特定因素会导致STP失败要排除故障可能非常困难这取决于网络设计 。生成树协议适合所有厂商的网络设备在配置上和体现功能强度上有所差别但是在原理和应用效果是一致的。 是一种工作在OSI网络模型中的第二层(数据链路层)的通信协议基本应用是防止交换机冗余链路产生的环路.用于确保以太网中无环路的逻辑拓扑结构.从而避免了广播风暴,大量占用交换机的资源。 功能 生成树协议的主要功能有两个一是在利用生成树算法、在以太网络中创建一个以某台交换机的某个端口为根的生成树避免环路。二是在以太网络拓扑发生变化时通过生成树协议达到收敛保护的目的。 特点 1生成树协议提供一种控制环路的方法。采用这种方法在连接发生问题的时候你控制的以太网能够绕过出现故障的连接。 2生成树中的根桥是一个逻辑的中心并且监视整个网络的通信。最好不要依靠设备的自动选择去挑选哪一个网桥会成为根桥。 3生成树协议重新计算是繁冗的。恰当地设置主机连接端口(这样就不会引起重新计算)推荐使用快速生成树协议。 4生成树协议可以有效的抑制广播风暴。开启生成树协议后抑制广播风暴网络将会更加稳定可靠性、安全性会大大增强。 4.9 网络测试诊断工具 4.9.1 fping fping是一个程序用于将ICMP探测发送到网络主机类似于ping, fping的历史由来已久:Roland schemers在1992年确实发布了它的第一个版本从那时起它就确立了自己的地位成为网络诊断和统计的标准工具 相对于ping多个主机时性能要高得多。fping完全不同于ping可以在命令行上定义任意数量的主机或者指定包含要ping的IP地址或主机列表的文件,常在she脚本中使用 CentOS中由EPEL源提供 官网http://www.fping.org/ ~ yum install -y fping~ fping 10.0.0.22 10.0.0.22 is alive~ echo 1 /proc/sys/net/ipv4/icmp_echo_ignore_all ~ fping 10.0.0.22 10.0.0.22 is unreachable#fping可以多个地址 ~ fping 10.0.0.22 139.198.105.99 139.198.105.99 is alive 10.0.0.22 is unreachable#-g 选项可以指定网段或者地址范围 ~ fping -g 10.0.0.0/24 ~ fping -g 10.0.0.5 10.0.0.10#对文件中的主机进行测试 ~ tee hosts.txt -EOF 10.0.0.7 10.0.0.6 EOF~ fping hosts.txt ~ fping -s hosts.txt4.9.2 tcpudmp tcpdump详细教程 tcpdump是一个用于截取网络分组并输出分组内容的工具。凭借强大的功能和灵活的截取策略使其成为类UNIX系统下用于网络分析和问题排查的首选工具 tcpdump 支持针对网络层、协议、主机、网络或端口的过滤并提供and、or、not等逻辑语句来帮助你去掉无用的信息 网络数据包截获分析工具。支持针对网络层、协议、主机、网络或端口的过滤。并提供and、or、not等逻辑语句帮助去除无用的信息。 tcpdump只能抓取流经本机的数据包 语法 tcpdump [-adeflnNOpqStvx][-c数据包数目][-dd][-ddd][-F表达文件][-i网络界面][-r数据包文件][-s数据包大小][-tt][-T数据包类型][-vv][-w数据包文件][输出数据栏位]参数说明-a 尝试将网络和广播地址转换成名称。 -c 数据包数目 收到指定的数据包数目后就停止进行倾倒操作。 -d 把编译过的数据包编码转换成可阅读的格式并倾倒到标准输出。 -dd 把编译过的数据包编码转换成C语言的格式并倾倒到标准输出。 -ddd 把编译过的数据包编码转换成十进制数字的格式并倾倒到标准输出。 -e 在每列倾倒资料上显示连接层级的文件头。 -f 用数字显示网际网络地址。 -F 表达文件 指定内含表达方式的文件。 -i 网络接口 使用指定的网络截面送出数据包。 -l 使用标准输出列的缓冲区。-n 不把主机的网络地址转换成名字。 -nn除了-n的作用外还把端口显示为数值否则显示端口服务名。 -N 不列出域名。-O 不将数据包编码最佳化。 -p 不让网络界面进入混杂模式。 -q 快速输出仅列出少数的传输协议信息。 -r数据包文件 从指定的文件读取数据包数据。 -s数据包大小 设置每个数据包的大小。 -S 用绝对而非相对数值列出TCP关联数。 -t 在每列倾倒资料上不显示时间戳记。 -tt 在每列倾倒资料上显示未经格式化的时间戳记。 -T 数据包类型 强制将表达方式所指定的数据包转译成设置的数据包类型。-v 详细显示指令执行过程。 -vv 更详细显示指令执行过程。 -vvv产生比-vv更详细的输出。-x 用十六进制字码列出数据包资料。 -XX输出包的头部数据会以16进制和ASCII两种方式同时输出更详细。 -w 数据包文件把数据包数据写入指定的文件。范例 #查看网卡 ~ tcpdump -D 1.virbr0 2.bluetooth0 (Bluetooth adapter number 0) 3.nflog (Linux netfilter log (NFLOG) interface) 4.nfqueue (Linux netfilter queue (NFQUEUE) interface) 5.usbmon1 (USB bus number 1) 6.usbmon2 (USB bus number 2) 7.ens33 8.any (Pseudo-device that captures on all interfaces) 9.lo [Loopback]#不指定任何参数监听第一块网卡上经过的数据包主机可能有不止一块网卡所以经常需要指定网卡 tcpdump#监听特定网卡 tcpdump -i eth0#监听10.0.0.100的通信包注意出、入的包都会被监听 tcpdump host 10.0.0.100#特定来源、目标地址的通信 #特定来源 tcpdump src host hostname#特定目标地址 tcpdump dst host hostname#如果不指定src跟dst那么来源或者目标是hostname的通信都会被监听 tcpdump host hostname#面试题 tcpdump -i eth0 -nn icmp and src host 10.0.0.6 and dst host 10.0.0.7#特定端口 tcpdump port 3000#监听TCP/UDP服务器上不同服务分别用了TCP,UDP作为传输层假如只想监听TCP的数据包 tcpdump tcp#来源主机端口TCP监听来自主机10.0.0.100在端口22上的TCP数据包 tcpdump tcp port 22 and src host 10.0.0.100#监听特定主机之间的通信 tcpdump ip host 10.0.0.101 and 10.0.0.102#10.0.0.101和除了10.0.0.1之外的主机之间的通信 tcpdump ip host 10.0.0.101 and ! 10.0.0.1#详细示例: tcpdump tcp -i eth1 t -g 0 -c 100 and dst port ! 22 and src net 192.168.1.0/24 -w ./target.cap (1)tcp: ip icmp arp rarp和tcp、udp、icmp这些选项等都要放到第一个参数的位置用来过滤数据报的类型 (2)-i eth1 :只抓经过接口eth1的包 (3)-t :不显示时间戳 (4)-s 0:抓取数据包时默认抓取长度为68字节。加上-s 0后可以抓到完整的数据包 (5)-c 100 :只抓取100个数据包 (6)dst port ! 22 :不抓取目标端口是22的数据包 (7)src net 192.168.1.0/24 :数据包的源网络地址为192.168.1.0/24 (8)-w ./target.cap :保存成cap文件,方便用wireshark分析#限制抓包的数量如下抓到1000个包后自动推出 tcpdump -c 1000#保存到本地tcpdump默认会将输出写到缓存区中只有缓存区内容达到一定的大小或者tcpdump推出时才会将输出写到本地磁盘可以加上-U强制 #立即写到本地磁盘一般不建议性能相对较差 tcpdump -n -vvv -c 1000 -w /tmp/tcpdump_save.cap范例tcpdump示例 #默认情况下直接启动tcpdump将监视第一个网络接口(非lo口)上所有流通的数据包。这样抓取的结果会非常多滚动非常快。 tcpdump#监视指定网络接口的数据包 tcpdump -i eth0#监视指定主机的数据包例如所有进入或离开node1的数据包 tcpdump -i eth0 host node1#打印node1--node2或node1--node3之间通信的数据包 tcpdump -i eth0 host node1 and \( node2 or node3 \)#打印node1与任何其他主机之间通信的IP数据包,但不包括与node4之间的数据包 tcpdump -i eth0 host node1 and not node4#截获主机node1 发送的所有数据 tcpdump -i eth0 src host node1#监视所有发送到主机node1 的数据包 tcpdump -i eth0 dst host node1#监视指定主机和端口的数据包 tcpdump -i eth0 host node1 and port 8080#监视指定网络的数据包如本机与192.168网段通信的数据包-c 10表示只抓取10个包 tcpdump -i eth0 -c 10 port 8080 net 192.168#打印所有通过网关snup的ftp数据包 tcpdump gateway snup and (port ftp or ftp-data) ##注意,表达式被单引号括起来了,这可以防止shell对其中的括号进行错误解析#抓取ping包 tcpdump -i eth0 -nn icmp -c 5 #指定主机抓ping包 tcpdump -i eth0 -nn icmp -c 5 and src host 192.168.10.100#抓取到本机22端口包 tcpdump -i eth0 dst port 22 -c 10 -nn #解析包数据 tcpdump -i eth0 -c 2 -q -XX -vvv -nn tcp dst port 224.9.3 nmap 扫描远程主机工具功能远超越用世人皆知的Ping工具发送简单的ICMP回声请求报文。探测主机是否存活的工具 官方帮助https://nmap.org/book/man.html 格式 nmap [scan Type(s)][options] {target specification}命令选项 -sT TCP connect() 扫描这是最基本的 TCP扫描方式。这种扫描很容易该检测到在目标主机的日志中会记录大批的连接请求以及错误信息 -ss TCP 同步扫描(TCP SYR)因为不必全部打开一个TP连接所以这项技术通常称为半开扫描(half-open)。这项技术最大的好处是很少有系统能够把这记入系统日志 -sF,sX,-sN 秘密FIN数据包扫描、圣诞树(xmas Tree)、空(Nu11)扫描模式。这些扫描方式的理论依据是:关闭的嫌口需要对你的探测包回应RST包而打开的端口必需忽略有问题的包 -sping 扫描用ping方式检查网络上哪些主机正在运行。当主机阻塞工CP echo 请求包是ping 扫描是无效的。nmap在任何情况下都会进行 ping .扫描只有目标主机处于运行状态,才会进行后续的扫描 -sU UDP的数据包进行扫描想知道在某台主机上提供哪些UDP服务可以使用此选项 -sA ACK扫描这项高级的扫描方法通常可以用来穿过防火墙。 -sw 滑动窗口扫描非常类似于ACK的扫描 -sR RPC扫描和其它不同的端口扫描方法结合使用。 -b FTP反弹攻击(bounce attack)连接到防火墙后面的一台FTP服务器做代理接着进行端口扫描。 -P0 在扫描之前,不 ping主机。 -PT 扫描之前使用TCP ping 确定哪些主机正在运行 -pS 对于root 用户这个选项让nmap使用SYN 包而不是ACK包来对目标主机进行扫描。 -I 设置这个选项让nmap使用真正的 ping(IcMp echo 请求〉来扫描目标主机是否正在运行。 -PB 这是默认的ping 扫描选项。它使用 AK(-PT)和IONP(-PI)两种扫描类型并行扫描。如果防火墙能够过滤其中一种包使用这种方法你就能够穷过防M箭⑤:-O 这个选项激活对TCP/IP指纹特征(fingerprinting)的扫描获得远程主机的标志也就是操作系统类型 -I 打开nmap的反向标志扫描功能。 -f 使用碎片IP数据包发送SYN、FIN、XMAS、NULL。包增加包过滤、入侵检测系统的难度使其无法知道你的企图 -v 冗余模式。强烈推荐使用这个选项它会给出扫描过程中的详细信息。 -5 IP 在一些情况下nmap可能无法确定你的源地址。在这种情况使用这个选项给出指定IP地址 -g port 设置扫描的源端口 -oN 把扫描结果重定向到一个可读的文件logfilename中 -oS 扫描结果输出到标准输出。 --host_timeout 设置扫描一台主机的时间以毫秒为单位。默认的情况下没有超时限制 --max_rtt_timeout 设置对每次探测的等待时间以毫秒为单位。如果超过这个时间限制就重传或者超时。默认值是大约9000毫秒 --min_rtt_timeout 设置nmap对每次探测至少等待你指定的时间以毫秒为单位 -M count 只进行TCP connect()扫描时最多使用多少个套接字进行并行的扫描##设置时间模板 简单来说就是调整你的扫描时间等级数字越大时间越快但是相应就要牺牲一些别的东西。 -T0paranoid可以避免IDS报警速度最慢一个时间扫描一个端口每个探测报文的发送间隔为5分钟。 -T1sneaky可以避免IDS报警速度很慢探测报文发送间隔为15s。 -T2polite降低了扫描速度从而可以使用更少的带宽和目标主机资源速度较慢探测报文发送间隔为0.4s。 -T3normal正常模式未作任何改变和优化。 -T4aggressive假设用户具有合适及可靠的网络从而加速扫描针对TCP端口禁止动态扫描延迟超过10ms一般如果扫描可靠的网络使用这个较好。 -T5insane假设用户拥有特别快的网络或者为了速度可以牺牲准确性等其他因素可能会使目标主机崩溃。 ##扫描目标的选择相关选项 -iL 从一个文件中输入你的扫描目标信息(IP地址主机名CIDRIPv6或者八位字节范围)文件中的每一项必须以一个或多个空格制表符或换行符分开。比如你创建了一个文件test.txt里面输入了用换行符分开的一些IP地址那么你就可以输入nmap命令nmap -iL test.txt来扫描文件中的目标。 -iR 随机生成个的目标进行扫描如果hostnum是0则代表永无止尽的随机扫描慎用慎用。 --exclude host1[host2][host3]...排除主机/网络如果在你扫描过程中有一些网络/主机不是你想扫描的那么就使用这个命令进行排除举个例子比如我的test.txt有3个IP地址现在我不想对其中的192.168.1.121进行扫描那么我就可以输入nmap命令nmap -iL test.txt --exclude 192.168.1.121。 --excludefile 排除文件中的主机/网络列表原理和上面类似如果我现在在test.txt中有一些IP地址不想扫描那么我们可以把它们放在exclude.txt中并用适当的分隔符进行分割举个例子就是nmap -iL test.txt --excludefile exclude.txt。 ##主机/网络的发现和探测 可以理解为平时我们的ping命令但是这里nmap有更多别的五花八门的方法来实现我们的“ping”。 -sL列出指定网络上的每台主机不发送任何报文到目标主机例如nmap -sL 192.168.1.1当然很多网络都对这个做了防护措施或许你并扫不出来什么。 -sn无端口扫描也就是ping扫描仅仅可以探测出目标是否可达例如nmap -sn 192.168.1.112早一些的版本这个命令叫-sP在局域网内该扫描可能并不会发送ICMP报文而是会广播ARP报文。 --dns-servers指定DNS服务器来进行端口扫描指定一个或者多个dns服务器可以让你的扫描更快例如nmap --dns-servers xxx.xxx.xxx.xxx -sn 192.168.1.112。 ##扫描方式 -sTTCP全连接扫描主机会与目标端口进行三次握手建立完整的TCP连接这种方式扫描速度慢网络流量大容易被发现例如nmap -sT 192.168.1.112。 -sSTCP SYN扫描主机向目标端口发送SYN报文如果目标端口返回了[ACK,SYN]主机发送RST直接断开这种扫描方式速度较快被广泛使用例如nmap -sS 192.168.1.112。 -sATCP ACK扫描主机向目标端口发送ACK报文如果目标端口返回了RST则说明目标端口开放该方式可以用来绕过防火墙例如nmap -sA 192.168.1.112。 -sUUDP扫描通过向端口发送UDP数据包来判断开启了哪些UDP服务UDP扫描通常比TCP扫描要慢你可以将UDP扫描与TCP扫描同时进行例如nmap -sS -sU 192.168.1.112。 -sN-sF-sX这是三种秘密扫描方式分别为NULL扫描FIN扫描和Xmas扫描扫描它们相对比较隐蔽除了探测报文的标志位不同这三种扫描在行为上完全一致。如果收到一个RST报文该端口被认为是关闭的而没有响应则意味着端口是开放或者被过滤的这些扫描可以结合--scanflags进行使用它的参数可以是URGACKPSHRSTSYN等。 ##扫描端口设置 -p设置扫描端口范围设置扫描端口范围有多种方式比如nmap -sS -p 1-65535 192.168.1.112代表扫描1到65535这些端口。当然你也可以根据不同的协议指定的更细一点比如nmap -sS -p U:53,111,137,T:21-25,80,139,8080 192.168.1.112代表扫描UDP的53111137端口和TCP的21到2580。。。等端口其中T代表TCP, U代表UDP, S代表SCTP, P代表IP协议。\ --exclude-ports 设置扫描要排除的端口用法和上面类似例如nmap -sS -p 1-65535 --exclude-ports 3306 192.168.1.112。 -F快速扫描这里按照nmap内置的最常用端口表进行扫描扫描数量比默认的更少时间也会更短一些例如nmap -sS -F 192.168.1.112。 -r正常情况下为了扫描效率端口扫描的顺序是随机的这个参数可以让扫描顺序按照由低到高的顺序进行扫描例如nmap -sS -r 192.168.1.112。 --top-ports 扫描nmap的端口表里最常见的前n个端口例如nmap -sS --top-ports 10 192.168.1.105。 ##版本与操作系统探测 -sV检测目标运行的服务版本例如nmap -sV 192.168.1.105它会检测出目标主机端口号所运行的服务或软件的版本 -O检测目标操作系统例如nmap -O 192.168.1.105 ##扫描时间设置 --host-timeout 由于性能较差或不可靠的网络硬件或软件、带宽限制、严格的防火墙等原因一些主机需要很长的时间扫描。这些极少数的主机扫描往往占据了大部分的扫描时间。因此最好的办法是减少时间消耗并且忽略这些主机使用--host-timeout选项来说明等待的时间(毫秒)。 --scan-delay 调整探测报文的时间间隔将它设置小可以用来躲避防火墙。 ##其他常用设置 -v提高输出信息的详细程度 -A启动强力扫描模式该模式下会默认启动操作系统检测(-O) 和版本扫描(-sV) -6启用IPv6扫描范例 #TCP ack扫描并发2000速度快 ~ nmap -n -pA --min-parallelism 2000 172.16.0.0/16#仅列出指定网段的每台主机不发送任何报文到目标主机 ~ nmap -sL 10.0.0.0/24#可以指定一个IP地址范围 ~ nmap -sP 10.0.0.1-10#批量扫描一个网段的主机存活数 ~ nmap -sP -v 192.168.1.0/24 ~ nmap -v -sn IP地址/24#有些主机关闭了ping检测所以可以使用-P0跳过ping的探测可以加快扫描速度 ~ nmap -P0 192.168.1.100#扫描主机 ~ nmap -v -A IP地址#一次性扫描多台目标主机 ~ nmap 10.0.0.6 10.0.0.7#从一个文件中导入IP地址并进行扫描 ~ cat hosts.txt 10.0.0.6 10.0.0.7 58.87.87.99~ nmap -iL hosts.txt#探测目标主机开放的端口可以指定一个以逗号分隔的端口列表如-PS22,443,80 ~ nmap -PS22,443,80 10.0.0.1#使用SYN半开放扫描 ~ nmap -sS 10.0.0.1#扫描开放了TCP端口的设备 ~ nmap -sT 10.0.0.1#扫描开放了UDP端口的设备 ~ nmap -sU 10.0.0.1#只扫描UDP端口 ~ nmap -e eth1 -sU -O 10.0.0.1#扫描了TCP和UDP的端口 ~ nmap -e eth1 -sU -sT -O 10.0.0.1 ~ nmap -sU -sT -p0-65535 10.0.0.1#探测所有列出的目标主机端口 nmap -PS22,80,3306 10.0.0.1#探测目标主机操作系统类型 nmap -O10.0.0.1 #探测目标主机操作系统类型 nmap -A 10.0.0.15 Ubuntu 网络配置 参考网址路由协议基础 - 华为 网关Gateway如果网络和当前设备同一网段Gateway 为空如果不在同一个网段下一个路由器临近当前设备的接口IP地址 路由表组成四个组成部分 目标网络Destination目标主机所在的网络ID子网掩码Netmask目标网络的子网掩码接口lface当前网络设备的出口网关Gateway下一个路由器的邻近当前路由器的接口IP下一跳Next Hop开销Metric、Cost费用值越小优先级越高 直连路由网关不需要配置。直连路由自动生成。 0.0.0.0 默认路由当路由表的所有路由都不匹配的时候就会走默认路由 default 路由协议缺省时的外部优先级 路由协议的类型路由协议的外部优先级Direct0OSPF10IS-IS15Static60RIP100OSPF ASE150OSPF NSSA150IBGP255EBGP255 路由协议内部优先级 路由协议的类型路由协议的内部优先级Direct0OSPF10IS-IS Level-115IS-IS Level-218Static60RIP100OSPF ASE150OSPF NSSA150IBGP200EBGP20 5.1 主机名 修改主机名 ~ hostnamectl set-hostname ubuntu2004-clone.kubesphere.io ~ cat /etc/hostname ubuntu2004-clone.kubesphere.io ~ hostname ubuntu2004-clone.kubesphere.io ~ echo $HOSTNAME ubuntu2004-server ~ exit logout$~ sudo -i $ echo $HOSTNAME ubuntu2004-clone.kubesphere.io扩展Ubuntu系统运行root远程登录系统 1vim /etc/ssh/sshd_config PermitRootLogin yes 2systemctl restart sshd 3passwd root 生产环境中尽量不要使用root用户登录 5.2 网卡名称 默认ubuntu的网卡名和CentOS7类似如ens33ens38等。 修改网卡名称为传统命名方式 #修改配置文件为下面形式 [rootubuntu2004-server ~]# vim /etc/default/grub GRUB_CMDLINE_LINUXnet.ifnames0#或者sed修改 ~ sed -i.bak -r /^GRUB_CMDLINE_LINUX/s#$#net.ifnames0# /etc/default/grub ~ sed -i.bak -r /^GRUB_CMDLINE_LINUX/c\GRUB_CMDLINE_LINUXnet.ifnames0 /etc/default/grub#生效新的grub.cfg文件 ~ grub-mkconfig -o /boot/grub/grub.cfg #或者 ~ update-grub ~ grep net.ifnames /boot/grub/grub.cfglinux /vmlinuz-5.4.0-117-generic rootUUIDfd454862-6eba-4ce2-a6bd-10532bdcaa46 ro net.ifnames0 maybe-ubiquitylinux /vmlinuz-5.4.0-117-generic rootUUIDfd454862-6eba-4ce2-a6bd-10532bdcaa46 ro net.ifnames0 maybe-ubiquitylinux /vmlinuz-5.4.0-117-generic rootUUIDfd454862-6eba-4ce2-a6bd-10532bdcaa46 ro recovery nomodeset dis_ucode_ldr net.ifnames0linux /vmlinuz-5.4.0-113-generic rootUUIDfd454862-6eba-4ce2-a6bd-10532bdcaa46 ro net.ifnames0 maybe-ubiquitylinux /vmlinuz-5.4.0-113-generic rootUUIDfd454862-6eba-4ce2-a6bd-10532bdcaa46 ro recovery nomodeset dis_ucode_ldr net.ifnames0#重启生效 reboot5.3 Ubuntu网络配置 官网文档 https://help.ubuntu.com/ https://ubuntu.com/server/docs/network-configuration 5.3.1 配置自动获取IP 网卡配置文件采用YAML格式缩进严格缩进的空格数一致必须以 /etc/netplan/xxx .yaml 文件命名方式存放 可以每个网卡对应一个单独的配置文件也可以将所有网卡都放在一个配置文件里 范例 ~ cat /etc/netplan/00-installer-config.yaml # This is the network config written by subiquity network:renderer: networkdethernets:eth0:dhcp4: yesversion: 2修改网卡配置文件后需要执行命令生效 ~ netplan apply5.3.2 配置静态IP 范例配置静态IP ~ cat /etc/netplan/00-installer-config.yaml # This is the network config written by subiquity network:ethernets:eth0:addresses:- 10.0.0.30/24gateway4: 10.0.0.2nameservers:addresses: [114.114.114.114,8.8.8.8]search:- Ubuntu2004-Serverversion: 2~ cat /etc/netplan/00-installer-config.yaml # This is the network config written by subiquity network:ethernets:eth0:addresses: [192.168.10.10/24,10.0.0.10/8] #或者用下面两行两种格式不能混用- 192.168.10.10/24- 10.0.0.10/8gateway4: 10.0.0.2nameservers:addresses: [114.114.114.114,8.8.8.8]search: [Ubuntu2004-Server,kubesphere.io] #或者用下面两行两种格式不能混用- Ubuntu2004-Server- kubesphere.ioversion: 2查看IP和Gateway ~ ip addr ~ route -n查看DNSDNS最多可以添加三个 ~ ls -l /etc/resolv.conf lrwxrwxrwx 1 root root 39 Feb 1 2021 /etc/resolv.conf - ../run/systemd/resolve/stub-resolv.conf~ grep -Ev ^(#|$) /etc/resolv.conf#使用以下命令进行替代 ~ resolvectl status5.3.3 配置多网卡静态IP和静态路由 ~ vim /etc/netplan/01-netcfg.yaml network:version: 2renderer: networkdethernets:eth0:dhcp4: nodhcp6: noaddresses: [10.0.0.100/16]gateway4: 10.0.0.2nameservers:addresses: [223.5.5.5,223.6.6.6]eth1:dhcp4: nodhcp6: noaddresses: [10.20.0.100/16]routes:- to: 10.30.0.0/16via: 10.20.0.1- to: 10.40.0.0/16via: 10.20.0.1- to: 10.50.0.0/16via: 10.20.0.1- to: 10.60.0.0/16via: 10.20.0.1~ netplan apply ~ route -n #或者每个网卡各自一个配置文件 ~ ls /etc/netplan/ 01-netcfg.yaml 02-netcfg.yaml~ cat /etc/netplan/01-netcfg.yaml network:version: 2renderer: networkdethernets:eth0:dhcp4: yes~ cat /etc/netplan/02-netcfg.yaml network:version: 2renderer: networkdethernets:eth1:addresses:- 10.20.0.100/16- 192.168.0.100/24gateway4: 10.20.0.2nameservers:search: [kubesphere.io, kubesphere.com]addresses: [223.5.5.5,223.6.6.6]routes:- to: 10.30.0.0/16via: 10.20.0.1- to: 10.40.0.0/16via: 10.20.0.1- to: 10.50.0.0/16via: 10.20.0.1- to: 10.60.0.0/16via: 10.20.0.15.3.4 单网卡桥接 ~ apt install -y bridge-utils ~ dpkg -L bridge-utils#三个网卡配置使用一个配置文件 ~ cat /etc/netplan/01-netcfg.yaml network:version: 2renderer: networkdethernets:eth0:dhcp4: yeseth1:dhcp4: nodhcp6: noeth2:dhcp4: nobridges:br0:dhcp4: no dhcp6: noaddresses: [10.0.0.18/16]gateway4: 10.0.0.2nameservers:addresses: [223.5.5.5,223.6.6.6]interfaces:- eth0- eth1#桥接配置单独一个文件 ~ cat /etc/netplan/01-netcfg.yaml network:version: 2renderer: networkdethernets:eth1:dhcp4: nodhcp6: noeth2:dhcp4: nobridges:br0:dhcp4: no dhcp6: noaddresses: [10.0.0.18/16]gateway4: 10.0.0.2nameservers:addresses: [223.5.5.5,223.6.6.6]interfaces:- eth0- eth1~ netplan apply ~ ifconfig br0 ~ brctl show5.3.5 多网卡桥接 ~ cat /etc/netplan/01-netcfg.yaml network:version: 2renderer: networkdethernets:eth0:dhcp4: nodhcp6: noeth1:dhcp4: nodhcp6: nobridges:br0:dhcp4: nodhcp6: noaddresses: [10.0.0.18/16]gateway4: 10.0.0.1nameservers:addresses: [223.5.5.5,223.6.6.6]interfaces:- eth0br1:dhcp4: nodhcp6: noaddresses: [10.10.0.18/16]routes:- to: 10.30.0.0/16via: 10.20.0.1- to: 10.40.0.0/16via: 10.20.0.1- to: 10.50.0.0/16via: 10.20.0.1- to: 10.60.0.0/16via: 10.20.0.1interfaces:- eth1~ netplan apply ~ brctl show ~ ifconfig br0 | ifconfig br1 ~ routes5.3.6 双网卡绑定 支持多网卡绑定方式 bond聚合链路模式共7种模式0-6 Mode mod0即:(balance-rr)Round-robin policy(轮间聚合口数据报文按包轮询从物理接口转发。 负载均衡─所有链路处于负载均衡状态轮询方式往每条链路发送报文这模式的特点增加了带宽同时支持容错能力当有链路出问题会把流量切换到正常的链路上。 性能问题——个连接或者会话的数据包如果从不同的接口发出的话中途再经过不同的链路在客户端很有可能会出现数据包无序到达的问题而无序到达的数据包需要重新要求被发送这样网络的吞吐量就会下降。Bond0在大压力的网烙传输下性能增长的并不是很理想。 需要交换机进行端口绑定 mod1即: (active-backup) Active-backup policy (主-备份策略只有Active状态的物理接口才转发数据报文。 容错能力一只有一个slave是激活的(active)。也就是说同一时刻只有一个网卡处于工作状态其他的slave都处于备份状态只有在当前激活的slave故障后才有可能会变为激活的(active)。 无负载均衡一此算法的优点是可以提供高网络连接的可用性但是它的资源利用率较低只有一个接口处于工作状态在有N个网络接口的情况下资源利用率为1/N。 mod2即: (balance xoar) XOR policy (平衡策略聚合口数据报文按源目MAC、源目IP、源目端口进行异或HASH运算得到一个值根据该值查找接口转发数据报文 负载均衡一基于指定的传输HASH策略传输数据包。 容错能力一这模式的特点增加了带宽同时支持容错能力当有链路出问题会把流量切换到正常的链路上。 性能问题―该模式将限定流量以保证到达特定对端的流量总是从同一个接口上发出。既然目的地是通过MAC地址来决定的因此该模式在’本地网络配置下可以工作得很好。如果所有流最是通过单个路由器由于只有一个网关源和目标mac都固定了那么这个算法算出的线路就一直是同一条那么这种模式就没有多少意义了。 需要交换机配置为port channel mod3即: broadcast(广播策略这种模式的特点是一个报文会复制两份往bond下的两个接口分别发送出去 当有对端交换机失效感觉不到任何downtime但此法过于浪费资源;不过这种模式有很好的容错机制。此模式适用于金融行业因为他们需要高可靠性的网络。不先评出现任何问题。 mod4即:(802.3ad) IEEE 802.3ad Dynamic link aggregation (IEEE 802.3ad 动态链接聚合) 在动态聚合模式下聚合组内的成员端口上均启用LACP(链路汇聚控制协议协议其端口状态通过该协议自动进行维护。负载均衡一基于指定的传输HASH策略传输数据包。默认算法与blance-xor一样。 容错能力一这模式的特点增加了带宽同时支持容错能力当有链路出问题会把流量切换到正常的链路上对比blance-xor这种模式定期发送LACPD报文维护镞路聚合状态保证链路质量。 需要交换机支持LACP协议 mod5即:(balance-tlb) Adaptive transmit load balancing适配器传输负载均衡 在每个物理接口上根据当前的负载根据速度计算分配外出流量。如果正在接收数据的物理接口口出故障了另一个物理接口接管该故障物理口的MAC地址。 需要ethtool支持获取每个slave的速率 mod6即:(balance-alb)Adaptive load balancing适配器适应性负载均衡 该模式包含了balance-tb模式同时加上针对IPV4流量的接收负载均衡而且不需要任何switch(交换机)的支持。接收负载均衡是通过ARP协商实现的。bonding驱动截获本机发送的ARP应答并把源硬件地址改写为bond中某个物理接口的难一硬件地址从而便得不同的对端使用不同的硬件地址进行通信。 mod6 与 mod0的区别 mod6先把eth0流量占满再占eth1 …ethX;而mod0的话会发现2个口的流虽都很稳定基本一样的带宽。而mod6,会发现第一个口流是很高,第2个口只占了小部分流量。 ~ vim /etc/netplan/01-netcfg.yaml network:version: 2renderer: networkdethernets:eth0:dhcp4: nodhcp6: noeth1:dhcp4: nodhcp6: nobonds:bond0:interfaces:- eth0- eth1addresses: [10.0.0.18/16]gateway4: 10.0.0.1nameservers:addresses: [223.5.5.5,223.6.6.6]parameters:mode: active-backupmii-monitor-interval: 100~ netplan apply ~ ifconfig bond0 ~ ifconfig eth0 ~ ifconfig eth1 ~ cat /proc/net/bonding/bond05.3.7 双网卡绑定桥接 网卡绑定用于提供网卡接口冗余以及高可用和端口聚合功能桥接网卡再给需要桥接设备的服务使用 ~ vim /etc/netplan/01-netcfg.yaml network:version: 2renderer: networkdethernets:eth0:dhcp4: nodhcp6: noeth1:dhcp4: nodhcp6: nobonds:bond0:interfaces:- eth0- eth1parameters:mode: active-backupmii-monitor-interval: 100bridges:br0:dhcp4: nodhcp6: noaddresses: [10.0.0.18/16]gateway4: 10.0.0.1nameservers:addresses: [223.5.5.5,223.6.6.6]interfaces:- bond0~ netplan apply ~ brctl show ~ ifconfig br0 ~ route -n ~ ifconfig5.3.8 网卡的多组绑定 可以实现网卡的多组绑定比如: eth0,eth1绑定至bond0,eth2和eth3绑定bond1 ~ vim /etc/netplan/01-netcfg.yaml network:version: 2renderer: networkdethernets:eth0:dhcp4: nodhcp6: noeth1:dhcp4: nodhcp6: noeth2:dhcp4: nodhcp6: noeth3:dhcp4: nodhcp6: nobonds:bond0:interfaces:- eth0- eth1addresses: [10.0.0.18/16]gateway4: 10.0.0.1nameservers:addresses: [223.5.5.5,223.6.6.6]parameters:mode: active-backupmii-monitor-interval: 100bond1:interfaces:- eth2- eth3addresses: [10.0.0.18/16]gateway4: 10.0.0.1nameservers:addresses: [223.5.5.5,223.6.6.6]routes:- to: 10.30.0.0/16via: 10.20.0.1- to: 10.40.0.0/16via: 10.20.0.1- to: 10.50.0.0/16via: 10.20.0.1- to: 10.60.0.0/16via: 10.20.0.1~ netplan apply ~ ifconfig ~ ip addr ~ cat /proc/net/bonding/bond{0,1} ~ route -n5.3.9 网卡的多组绑定 ~ cat /etc/netplan/01-netcfg.yaml network:version: 2renderer: networkdethernets:eth0:dhcp4: nodhcp6: noeth1:dhcp4: nodhcp6: noeth2:dhcp4: nodhcp6: noeth3:dhcp4: nodhcp6: nobonds:bond0:interfaces:- eth0- eth1parameters:mode: active-backupmii-monitor-interval: 100bond0:interfaces:- eth2- eth3parameters:mode: active-backupmii-monitor-interval: 100bridges:br0:dhcp4: nodhcp6: noaddresses: [10.0.0.18/16]gateway4: 10.0.0.1nameservers:addresses: [223.5.5.5,223.6.6.6]interfaces:- bond0br1:dhcp4: nodhcp6: noaddresses: [10.0.0.18/16]interfaces:- bond1routes:- to: 10.30.0.0/16via: 10.20.0.1- to: 10.40.0.0/16via: 10.20.0.1- to: 10.50.0.0/16via: 10.20.0.1- to: 10.60.0.0/16via: 10.20.0.1~ netplan apply ~ brctl show ~ ifconfig br0 ~ route -n ~ ifconfig
http://www.ho-use.cn/article/10816795.html

相关文章:

  • 网站策划与设计(百度推广可以自己开户吗
  • 泰安集团网站建设地点优化搜索引擎的方法
  • 电脑网站建设方案网站怎么用栏目做地区词
  • 交易网站备案p2p视频网站开发
  • 微信网站公司买了个网站源码后要怎么用
  • wordpress无法创建页面合肥seo按天扣费
  • 做网站订金为什么需要交那么多做积分商城网站
  • 帝国cms做漫画网站教程唐山路北网站建设
  • 衡水微信网站建设厦门网页设计代做
  • 网站开发需要证书吗优秀网页欣赏
  • 制作网站多少钱一个网页制作步骤流程
  • 如果网站设计时wordpress2018
  • 建立网站 费用wordpress设置的页面跳转失败
  • 怎样建设一个自己的网站首页wordpress 文章列表顺序
  • 网站解析后wordpress注册登陆
  • 网站seo优化价格可以自己做网站卖东西
  • 网站开发前端简历wordpress 后台忘了
  • 网站建设app销售好做吗wordpress怎么置顶
  • 药品网上商城新媒体seo指的是什么
  • 网站地址栏小图标口碑好的网站建设方法有哪些
  • 建设网站需要招聘哪些人网站备案主体
  • 企业网站建站的专业性原则是指可以做公众号封面图的网站
  • 电子商务网站建设工资公司企业信息查询
  • 专业的丹阳网站建设定制网络流量监控软件
  • 优秀图网站2017做那个网站致富
  • 大淘客怎样做网站网络推广托管公司深圳
  • 不限流量网站空间个人官方网站怎么建设
  • 网站托管服务协议wordpress 弹出 广告
  • 申请制作网站网站内做链接
  • 网站推广的渠道有品牌建设理论包括哪些内容