1. 什么是网络
所谓网络,就是通过一定的形式连接起来的设备,设备与设备之间可以实现通信。
网络的重要性
所有的系统都有网络!
我们的生活当中已经离不开网络!
运维生涯当中所遇到的故障,有50%是网络故障!
1. 如何通过网络来实现多台主机之间的通信
两台
1. 两台主机实现通信要有传输介质( 网线 无线 光纤等 )
2. 两台主机要有网卡设备
3. 在进行传输数据之前,需要协商网络的传输速率。
千兆网卡
百兆网卡
100Mbps 比特 8bit=1B 网络传输数据单位 0101 比特流
12.8 MB/s
MB 字节 磁盘存储数据单位
2. 网络设备说明
实现多台主机之间进行互相通信
网络设备 交换机
1. 在传输数据的前面设置目标地址和源地址,此地址用户mac地址进行标识
Mac地址称为物理地址,每块网卡上面都有一个标识身份的Mac地址
Mac地址是全球唯一,不能进行修改,使用16进制标识
2. 在网络通讯的初期,利用广播的方式进行发送数据包,数据在传输的过程中,一定是要有一来一回的。
广播风暴问题: 在一个交换网络内,如果产生了大量的数据包会出现一个问题。
广播风暴会影响主机的接收发数据。
解决广播风暴问题:
为了减少广播风暴问题,将一个大的局域网切割为多个小的局域网。
交换机的种类
傻瓜交换机 TP-link Dlink 水星 拿来就用
程控交换机 思科 华为 华三 配置管理 程序控制
网络设备 路由器
功能:实现不同局域网之间的主机通讯,隔离广播风暴问题。
路由:把传递数据所经过的线路的过程,我们称之为路由,每条传递数据的路径。
1. 需要身份标识信息: IP地址
逻辑地址: 可以改变的地址???
使用10进制进行标识
全网唯一:
公网 运营商
私网 交换机
IP地址组成: 172.16.1.100
网络标识信息+主机地址标识信息 网段地址+主机地址
#获取公网地址
[root@web01 ~]# curl ifconfig.me
116.226.145.126
高级的路由器有上网行为管理器和防火墙的功能
论坛:鸿鹄论坛(网络工程师)
https://bbs.hh010.com/
相关证书
CCNA 入门级
CCNP 广度
CCIE 深度
HCIA
HCIP
HCIE
2. 网关
实现不同网段之间通讯的,所经过的一条必经之路,这条路我们称之为网关。
路由条目信息 路由表
[root@web01 ~]# route -n
Kernel IP routing table
Destination Gateway Genmask Flags Metric Ref Use Iface
0.0.0.0 10.0.0.254 0.0.0.0 UG 0 0 0 eth0
10.0.0.0 0.0.0.0 255.255.255.0 U 0 0 0 eth0
169.254.0.0 0.0.0.0 255.255.0.0 U 1002 0 0 eth0
169.254.0.0 0.0.0.0 255.255.0.0 U 1003 0 0 eth1
172.16.1.0 0.0.0.0 255.255.255.0 U 0 0 0 eth1
[root@web01 ~]# netstat -rn
Kernel IP routing table
Destination Gateway Genmask Flags MSS Window irtt Iface
0.0.0.0 10.0.0.254 0.0.0.0 UG 0 0 0 eth0
10.0.0.0 0.0.0.0 255.255.255.0 U 0 0 0 eth0
169.254.0.0 0.0.0.0 255.255.0.0 U 0 0 0 eth0
169.254.0.0 0.0.0.0 255.255.0.0 U 0 0 0 eth1
172.16.1.0 0.0.0.0 255.255.255.0 U 0 0 0 eth1
[root@web01 ~]# ip route
default via 10.0.0.254 dev eth0
10.0.0.0/24 dev eth0 proto kernel scope link src 10.0.0.7
169.254.0.0/16 dev eth0 scope link metric 1002
169.254.0.0/16 dev eth1 scope link metric 1003
172.16.1.0/24 dev eth1 proto kernel scope link src 172.16.1.7
第一列:所能去的地址,目标地址
第二列:网关
第三列:子网掩码
最后一列:从哪个网卡出去
3. 网络层次结构
1. 网络拓扑
网络层次结构
核心层 主要用来部署路由器设备,主要用来连接外网。而且需要具备冗余能力。高可用,虚拟的IP地址
汇聚层 主要部署三层交换设备,用于安全访问控制,链路汇聚
接入层 主要部署二层交换设备,终端的接入
一层交换机 只支持物理层协议
二层交换机 支持物理层和数据链路层
三层交换机 支持物理层,数据链路层及网络层
网络类型:
局域网 本地一个私有的网络,规模比较大的局域网,称之为园区网
城域网 当你的网络覆盖范围达到一个城市,城域网
广域网 网络覆盖范围达到全国或全球,广域网, internet是世界上最大的广域网
4. 网络层次模型(OSI)
OSI是开放式的系统互联 ISO组织 模型分为7层 ios
从下到上依次为:
作用: 复用性
网络工程师
物理层 第一层 通信的介质,电信号,数字信号 网线 光纤
在发送信息时:将二进制(数字信号)信息转换为高低电压(电信号) 调制过程
在接收信息时:将高低电压(电信号)信息转换为二进制数(数字信号) 解调过程
传输的模式:
单工 通讯的时候,只有一方作为发送方,一方作为接收方 广播电台
半双工 通讯的某个时刻,只有一方作为发送方,另一方作为接收方,通讯时刻发生改变,发送方变成接收方,接收方变成发送方。双方不能同时进行, 对讲机
全双工 同一时刻,双方皆为发送方,又可以为接收方。 电话,手机
数据链路层 第二层 局域网之间主机通信, 通过Mac地址实现 ARP表
网络层 第三层 IP地址 身份标识信息 通过网路访问全世界
运维
传输层 第四层 传输的协议 TCP/UDP 端口
TCP 可靠,速度慢 UDP 不可靠 速度快
开发
会话层 第五层 建立会话,管理会话,终止会话 三次握手
表示层 第六层 文件的格式 编码解码 压缩解压缩 加密解密
应用层 第七层 应用程序的使用,程序接口
5. TCP/IP模型
TCP/IP 4层或者5层模型 (DOD)
应用层
表示层 上三层合并为 应用层 上三层合并为 应用层
会话层
传输层 传输层 传输层
网络层 网络层 网络层
数据链路层 数据链路层
网络接入层
物理层 物理层
OSI七层 TCP/IP五层 TCP/IP四层


数据封装与解封装
封装
封装的过程:从上到下的进行封装
上三层 应用层 PDU数据
传输层 TCP协议端口+PDU数据
网络层 IP地址+TCP协议端口+PDU数据
数据链路层 Mac地址+IP地址+TCP协议端口+PDU数据
物理层 将这些数据转换成比特流 二进制数字 调制过程 电信号传输
解封装
解封装的过程:从下到上的进行解封
电信号收到数据
物理层 解调过程 将比特流转换为数据 Mac地址+IP地址+TCP协议端口+PDU数据
数据链路层 查看Mac地址 IP地址+TCP协议端口+PDU数据
网络层 查看IP地址 TCP协议端口+PDU数据
传输层 查看TCP协议端口 PDU数据
上三层 应用层 PDU数据
一个数据包:头部信息只占一小部分 数据才占用大部分。
不知名的端口:
[root@web01 ~]# cat /proc/sys/net/ipv4/ip_local_port_range
32768 60999

6. TCP/IP五层相关协议
应用层
FTP 21 TCP协议 文件传输协议 明文
SSH 22 TCP协议 安全外壳协议 远程连接 加密
Telnet 23 TCP协议 远程连接协议 网络设备 不支持管理员用户登录 明文
SMTP 25 TCP协议 简单邮件传输协议
TFTP 69 UDP协议 简单文件传输协议
HTTP 80 TCP协议 超文本传输协议
HTTPS 443 TCP协议 超文本安全传输协议
DHCP 67/68/546 client 67 server 68 IPv6 546 动态主机设置协议 动态的ip地址协议
DHCP的工作原理
1. 客户端向服务端请求IP地址的租用
2. 服务端同意客户端IP地址的租用,服务端从地址池中分配一个IP给客户端使用
3. 客户端确认IP地址的租用,客户端只能在租期内容使用该IP地址
4. 服务端将分配过的IP地址从地址池中移除。

7.DNS解析过程
域名是什么 ?
举个例子,https://www.baidu.com,这个其实并不是域名,其中https是指协议,去掉https后,www.baidu.com.(注意最后面有一个点号)才是真正的域名。
每个域名的最后面都有一个点号 "." 表示根域名,为了方便在实际使用的时候被省略了。
根域名的下一级就是顶级域名了,.com 也就是顶级域名,常见的顶级域名后缀有.com、.cn、.net、.org 等,这些都是固定的,用户不能自己修改,只能选择。
顶级域名的下一级又是权威域名,如baidu.com中的.baidu,这个权威域名就是我们自己可注册的域名。
顶级域名下就是主机名了,www是指主机名,这个是我们可以自己定义的,通常在http服务器如nginx中可以修改。
1.域名解析过程分析
下面就还以www.baidu,com这个网址来分析一下dns的解析过程。
当浏览器拿到输入的www.baidu.com后,首先会去浏览器的dns缓存中去查询是否有对应记录,如果查询到记录就可以直接返回ip地址,完成解析。
如果浏览器没有缓存,那就再去查询操作系统的缓存,同样的,如果查询到记录就可以直接返回ip地址,完成解析。
如果操作系统也没有缓存,那就再去查看本地host文件,Windows下host文件一般位于 "C:\Windows\System32\drivers\etc"。
近几年网上流传的通过修改本地host文件来避免双11女友剁手的段子,其实就是将淘宝的支付接口解析到错误的ip地址,从而导致支付不成功。
如果本地host文件也没有相应记录,那就需要求助于本地dns服务器了,所以应该要知道本地dns的ip地址。
本地dns服务器ip地址一般是由本地网络服务商如移动、电信提供,一般是通过DHCP自动分配,当然你也可以自己手动配置。目前用的比较多的是谷歌提供的公用dns 8.8.8.8和国内的公用dns 114.114.114.114及阿里的223.5.5.5。你之前可能有遇到过电脑可以正常上QQ但是就是不能打开网页的怪现象,这种情况大多数可能就是dns域名解析出问题了,你可以尝试手动把dns设置为公用dns。
.找到本地dns后,它也会先去查询一遍它自己的缓存,如果有记录就返回,如果没有记录,它将开始要去我们前面提到的根域名服务器查询了。注意由于根域名服务器ip地址一般都是固定的,所以本地dns服务器一般都内置了根域名服务器ip地址。https://www.uedbox.com/post/50977/
目前全球一共有13个根域名服务器(这里并不是指13台服务器,是指13个ip地址,按字母a-m编号),为了能更高效完成全球所有域名的解析请求,根域名服务器本身并不会直接去解析域名,而是会把不同的解析请求分配给下面的其他服务器去完成,下面是dns域名系统的树状结构图。

注意dns域名服务器一般分三种,分别是根域名服务器(.)、顶级域名服务器(.com)、权威域名服务(.baidu.com) 。当根域名接收到本地dns的解析请求后,发现是后缀是.com,于是就把负责.com的顶级域名服务器ip地址返给本地dns。
本地dns拿着返回的ip地址再去找到对应的顶级域名服务器,顶级域名又把负责该域名的权威服务器ip返回去。
本地dns又拿着ip去找对应的权威服务器,权威服务器最终把对应的主机ip的解析记录(俗称A记录)返回给本地dns。
本地dns会将解析后的ip地址信息进行缓存,缓存好将A记录信息返回给客户端。
客户端收到本地dns响应的A记录信息,会将A记录缓存到本地,然后使用解析后的ip地址访问www.baidu.com。
至此就完成了域名解析的全过程。

解析期间涉及到两个特殊查询:
客户端---本地dns服务器:递归查询
本地dns服务器---根域名服务器--顶级域名服务器
权威域名服务器:迭代查询
所谓递归查询过程就是 "查询的递交者" 更替, 而迭代查询过程则是 "查询的递交者"不变。
A记录:
从域名到IP的解析过程,被称为A记录;www.baidu.com---1.1.1.1
获取A记录命令方法:
1) dig www.baidu.com
dig @223.5.5.5 www.baidu.com +trace ---显示完整DNS解析过程
2) nslookup www.baidu.com
3) host www.baidu.com
4) ping www.baidu.com
8.传输层协议介绍
TCP: 传输控制协议,是一种面向连接的、可靠的、基于字节流的传输层通信协议。
特点:面向连接,可靠,传输效率低
应用场景:web浏览器,电子邮件,文件传输程序
UDP: 用户数据报协议,属于无连接的传输协议
特点:无连接、不可靠、快速传输
应用场景:域名系统(DNS),视屏流,IP语音(VOIP)
TCP UDP协议端口号范围 1 - 65535 (可以的),真正端口号总数为2的16次方=65536
面向连接:是指通信双方在通信时,要事先建立一条通信线路,其有三个过程:建立连接、使用连接和释放连接。
面向无连接:是指通信双方不需要事先建立一条通信线路,而是把每个带有目的地址的包(报文分组)送到线路上,由系统自主选定路线进行传输。
9.控制字段介绍
ACK:表示确认控制字段,确认数据是否接收到
SYN:表示请求建立连接字段,和主机建立连接时使用
FIN:表示请求断开连接字段,和主机断开连接时使用
PSH: 表示有DATA数据传输,PSH为1表示的是有真正的TCP数据包内容被传递
RST: 表示连接重置。一般是在FIN之后才会出现为1的情况,表示的是连接重置。
seq序列号:将大的数据进行拆分后标记序列信息,便于接收方将拆分后的数据信息进行组装,在原有序列号基础上+1进行回复,告知发送方下次再给我发送的数据是什么
注意:传输数据包,没有真正数据信息(三次握手过程),传输数据过程,在三次握手之后。
11.TCP三次握手
TCP是面向连接的,无论哪一方向另一方发送数据之前,都必须先在双方之间建立一条连接。
刚开始, 客户端和服务器都处于CLOSED状态.
此时, 客户端向服务器主动发出连接请求, 服务器被动接受连接请求.
1. TCP服务器进程先创建传输控制块TCB, 时刻准备接受客户端进程的连接请求, 此时服务器就进入了LISTEN(监听)状态.
2. TCP客户端进程也是先创建传输控制块TCB, 然后向服务器发出连接请求报文,此时报文首部中的同步标志位 SYN=1, 同时选择一个初始序列号seq = x, 此时TCP客户端进程进入了SYN-SENT(同步已发送状态)状态。TCP规定, SYN报文段( SYN=1 的报文段)不能携带数据,但需要消耗掉一个序号。
3. TCP服务器收到请求报文后, 如果同意连接, 则发出确认报文。确认报文中的 ACK=1, SYN=1, 确认序号是x + 1, 同时也要为自己初始化一个序列号seq = y, 此时TCP服务器进程进入了SYN-RCVD(同步收到)状态。这个报文也不能携带数据, 但是同样要消耗一个序号。
4. TCP客户端进程收到确认后还要向服务器给出确认。确认报文的ACK=1,确认序号是y + 1,自己的序列号是x + 1.
5. 此时TCP连接建立,客户端进入ESTABLISHED(已建立连接)状态。当服务器收到客户端的确认后也进入ESTABLISHED状态,此后双方就可以开始通信了。
6.
为什么要三次握手
为了防止已失效的连接请求报文段突然又传送到了服务端,因而产生错误。
举个栗子:
"已失效的连接请求报文段"的产生在这样一种情况下:客户端发出的第一个连接请求报文段并没有丢失,而是在某个网络结点长时间的滞留了,以致延误到连接释放以后的某个时间才到达服务端。本来这是一个早已失效的报文段。但服务端收到此失效的连接请求报文段后,就误认为是客户端再次发出的一个新的连接请求。于是就向客户端发出确认报文段,同意建立连接。假设不采用"三次握手",那么只要服务端发出确认,新的连接就建立了。由于现在客户端并没有发出建立连接的请求,因此不会理睬服务端的确认,也不会向服务端发送数据。但服务端却以为新的运输连接已经建立,并一直等待客户端发来数据。这样,服务端的很多资源就白白浪费掉了。采用"三次握手"的办法可以防止上述现象发生。例如刚才那种情况,客户端不会向服务端的确认发出确认。服务端由于收不到确认,就知道客户端并没有要求建立连接。"
这就很明白了,防止了服务器端的一直等待而浪费资源。
12.TCP四次挥手
数据传输完毕后,双方都可以释放连接.
此时客户端和服务器都是处于ESTABLISHED状态,然后客户端主动断开连接,服务器被动断开连接.
1. 客户端进程发出连接释放报文,并且停止发送数据。释放数据报文首部,FIN=1,其序列号为seq = u(等于前面已经传送过来的数据的最后一个字节的序号加1),此时客户端进入FIN-WAIT-1(终止等待1)状态。 TCP规定,FIN报文段即使不携带数据,也要消耗一个序号。
2. 服务器收到连接释放报文,发出确认报文,ACK=1,确认序号为 u + 1,并且带上自己的序列号seq = v,此时服务端就进入了CLOSE-WAIT(关闭等待)状态。
TCP服务器通知高层的应用进程,客户端向服务器请求了断开连接,这时候处于半关闭状态,即客户端已经没有数据要发送了,但是服务器若发送数据,客户端依然要接受。这个状态还要持续一段时间,也就是整个CLOSE-WAIT状态持续的时间。
3. 客户端收到服务器的确认请求后,此时客户端就进入FIN-WAIT-2(终止等待2)状态,等待服务器发送连接释放报文(在这之前还需要接受服务器发送的最终数据)
4. 服务器将最后的数据发送完毕后,就向客户端发送连接释放报文,FIN=1,确认序号为v + 1,由于在半关闭状态,服务器很可能又发送了一些数据,假定此时的序列号为seq = w,此时服务器就进入了LAST-ACK(最后确认)状态,等待客户端的确认。
5. 客户端收到服务器的连接释放报文后,必须发出确认,ACK=1,确认序号为w + 1,而自己的序列号是u + 1,此时客户端就进入了TIME-WAIT(时间等待)状态。注意此时TCP连接还没有释放,必须经过2∗MSL(最长报文段寿命)的时间后,当客户端撤销相应的TCB后,才进入CLOSED状态。
6. 服务器只要收到了客户端发出的确认,立即进入CLOSED状态。同样,撤销TCB后,就结束了这次的TCP连接。可以看到,服务器结束TCP连接的时间要比客户端早一些。
小知识点:在网络传输层,tcp模块中有一个tcb(传输控制模块,transmitcontrolblock),它用于记录tcp协议运行过程中的变量。对于有多个连接的tcp,每个连接都有一个tcb。tcb结构的定义包括这个连接使用的源端口、目的端口、目的ip、序号、应答序号、对方窗口大小、己方窗口大小、tcp状态、top输入/输出队列、应用层输出队列、tcp的重传有关变量。

为什么要四次分手?
那四次分手又是为何呢?TCP协议是一种面向连接的、可靠的、基于字节流的传输层通信协议。TCP是全双工模式,这就意味着,当主机1发出FIN报文段时,只是表示主机1已经没有数据要发送了,主机1告诉主机2,它的数据已经全部发送完毕了;但是,这个时候主机1还是可以接受来自主机2的数据;当主机2返回ACK报文段时,表示它已经知道主机1没有数据发送了,但是主机2还是可以发送数据到主机1的;当主机2也发送了FIN报文段时,这个时候就表示主机2也没有数据要发送了,就会告诉主机1,我也没有数据要发送了,主机1收到主机2的FIN报文段时,回复ACK,表示知道主机2也没有数据传输了,之后彼此就会愉快的中断这次TCP连接。
为什么TIME_WAIT 状态还需要等2*MSL秒之后才能返回到CLOSED 状态呢?
因为虽然双方都同意关闭连接了,而且握手的4个报文也都发送完毕,按理可以直接回到CLOSED状态(就好比从SYN_SENT状态到ESTABLISH状态那样),但是我们必须假想网络是不可靠的,你无法保证你最后发送的ACK报文一定会被对方收到,就是说对方处于LAST_ACK状态下的SOCKET可能会因为超时未收到ACK报文,而重发FIN报文,所以这个TIME_WAIT状态的作用就是用来重发可能丢失的ACK报文。
13.TCP协议的十一种状态集转换


各个状态的意义如下:
CLOSED:初始状态,表示TCP连接是"关闭着的"或"未打开的"。
LISTEN :表示服务器端的某个SOCKET处于监听状态,可以接受客户端的连接。
SYN_RCVD :表示服务器接收到了来自客户端请求连接的SYN报文。在正常情况下,这个状态是服务器端的SOCKET在建立TCP连接时的三次握手会话过程中的一个中间状态,很短暂,基本上用netstat很难看到这种状态,除非故意写一个监测程序,将三次TCP握手过程中最后一个ACK报文不予发送。当TCP连接处于此状态时,再收到客户端的ACK报文,它就会进入到ESTABLISHED状态。
SYN_SENT :这个状态与SYN_RCVD状态相呼应,当客户端SOCKET执行connect()进行连接时,它首先发送SYN报文,然后随即进入到SYN_SENT状态,并等待服务端的发送三次握手中的第2个报文。SYN_SENT状态表示客户端已发送SYN报文。
ESTABLISHED :表示TCP连接已经成功建立。
FIN_WAIT_1 :这个状态得好好解释一下,其实FIN_WAIT_1和FIN_WAIT_2两种状态的真正含义都是表示等待对方的FIN报文。而这两种状态的区别是:FIN_WAIT_1状态实际上是当SOCKET在ESTABLISHED状态时,它想主动关闭连接,向对方发送了FIN报文,此时该SOCKET进入到FIN_WAIT_1状态。而当对方回应ACK报文后,则进入到FIN_WAIT_2状态。当然在实际的正常情况下,无论对方处于任何种情况下,都应该马上回应ACK报文,所以FIN_WAIT_1状态一般是比较难见到的,而FIN_WAIT_2状态有时仍可以用netstat看到。
FIN_WAIT_2 :上面已经解释了这种状态的由来,实际上FIN_WAIT_2状态下的SOCKET表示半连接,即有一方调用close()主动要求关闭连接。注意:FIN_WAIT_2是没有超时的(不像TIME_WAIT状态),这种状态下如果对方不关闭(不配合完成4次挥手过程),那这个FIN_WAIT_2状态将一直保持到系统重启,越来越多的FIN_WAIT_2状态会导致内核崩溃。
TIME_WAIT :表示收到了对方的FIN报文,并发送出了ACK报文。TIME_WAIT状态下的TCP连接会等待2*MSL(Max Segment Lifetime,最大分段生存期,指一个TCP报文在Internet上的最长生存时间。每个具体的TCP协议实现都必须选择一个确定的MSL值,RFC 1122建议是2分钟,但BSD传统实现采用了30秒,Linux可以cat /proc/sys/net/ipv4/tcp_fin_timeout看到本机的这个值),然后即可回到CLOSED可用状态了。如果FIN_WAIT_1状态下,收到了对方同时带FIN标志和ACK标志的报文时,可以直接进入到TIME_WAIT状态,而无须经过FIN_WAIT_2状态。(这种情况应该就是四次挥手变成三次挥手的那种情况)
CLOSING :这种状态在实际情况中应该很少见,属于一种比较罕见的例外状态。正常情况下,当一方发送FIN报文后,按理来说是应该先收到(或同时收到)对方的ACK报文,再收到对方的FIN报文。但是CLOSING状态表示一方发送FIN报文后,并没有收到对方的ACK报文,反而却也收到了对方的FIN报文。什么情况下会出现此种情况呢?那就是当双方几乎在同时close()一个SOCKET的话,就出现了双方同时发送FIN报文的情况,这是就会出现CLOSING状态,表示双方都正在关闭SOCKET连接。
CLOSE_WAIT :表示正在等待关闭。怎么理解呢?当对方close()一个SOCKET后发送FIN报文给自己,你的系统毫无疑问地将会回应一个ACK报文给对方,此时TCP连接则进入到CLOSE_WAIT状态。接下来呢,你需要检查自己是否还有数据要发送给对方,如果没有的话,那你也就可以close()这个SOCKET并发送FIN报文给对方,即关闭自己到对方这个方向的连接。有数据的话则看程序的策略,继续发送或丢弃。简单地说,当你处于CLOSE_WAIT状态下,需要完成的事情是等待你去关闭连接。
LAST_ACK :当被动关闭的一方在发送FIN报文后,等待对方的ACK报文的时候,就处于LAST_ACK状态。当收到对方的ACK报文后,也就可以进入到CLOSED可用状态了。
14.网络层协议介绍
ICMP Internet控制报文协议。它是TCP/IP协议簇的一个子协议,用于在IP主机、路由器之间传递控制消息。控制消息是指网络通不通、主机是否可达、路由是否可用等网络本身的消息。这些控制消息虽然并不传输用户数据,但是对于用户数据的传递起着重要的作用。
15.数据链路物理层介绍
RARP 反向地址转换协议
ARP 地址解析协议,是根据IP地址获取物理地址的一个TCP/IP协议。作用:有效的避免广播风暴的产生
动态ARP:自动完善ARP表信息,会定时更新ARP条目,自动更新ARP表时会消耗服务器性能,适用于主机更换频繁网络。
静态ARP:手工配置ARP表信息,不会实时更新ARP条目,节省服务器性能,适用于主机更换不频繁网络。
Ethernet 以太网(Ethernet)是一种计算机局域网技术。
FastEth 快速以太网(Fast Ethernet)是一类新型的局域网,其名称中的"快速"是指数据速率可以达到100Mbps,是标准以太网的数据速率的十倍。
Token Ring 令牌环网(Token Ring)是一种LAN协议,其中所有的工作站都连接到一个环上,每个工作站只能同直接相邻的工作站传输数据。
FDDI 光纤分布式数据接口,在光缆网络上发送数字和音频信号的一组协议。
16.IP地址
1.IP地址基本概念
IP地址(Internet Protocol Address)是指互联网协议地址,又译为网际协议地址。
IP地址在网络层将不同的物理网络地址统一到了全球唯一的IP地址上(屏蔽物理网络差异),是唯一标识互联网上计算机的逻辑地址(相当于手机号码,可以通过唯一的手机号码找到手机),所以IP地址也被称为互联网地址(可见其重要性)。
常见的IP地址,分为IPv4与IPv6两大类,IPV4采用32位地址长度,就是有4段数字,每一段最大不超过255,IPv6采用128位地址长度。
2.IP地址格式
我们目前常用的IPv4中规定,IP地址长度为32位二进制,在表示时,一般将32位地址拆分为4个8位二进制,再转为4个十进制数表示,每个数字之间用点隔开,如127.0.0.1(localhost),这种描述方式被称为"点-数表示法"。
IP地址层次:分为网络号和主机号两个层次。网络号表示主机所属网络,主机号表示主机本身。网络号与主机号的位数与IP地址分类有关。
IP地址是用来识别网络上的设备,因此,IP地址是由网络地址与主机地址两部分所组成。
网络地址
网络地址可用来识别设备所在的网络,网络地址位于IP地址的前段。当组织或企业申请IP地址时,所获得的并非IP地址,而是取得一个唯一的、能够识别的网络地址。同一网络上的所有设备,都有相同的网络地址。IP路由的功能是根据IP地址中的网络地址,决定要将IP信息包送至所指明的那个网络。
主机地址
主机地址位于IP地址的后段,可用来识别网络上设备。同一网络上的设备都会有相同的网络地址,而各设备之间则是以主机地址来区别。

3.IP地址分配
IP地址分配的基本原则是:要为同一网络(子网、网段)内不同主机分配相同的网络号,不同的主机号。
4.IP地址类型
#公有地址
公有地址(Public address)由Inter NIC(Internet Network Information Center因特网信息中心)负责。这些IP地址分配给注册并向Inter NIC提出申请的组织机构。通过它直接访问因特网。全球唯一,不能出现重复.
#私有地址
私有地址(Private address)属于非注册地址,专门为组织机构内部使用。缓解了地址枯竭
是可以重复使用的(不同局域网内)
#以下列出留用的内部私有地址
A类 10.0.0.0--10.255.255.255
B类 172.16.0.0--172.31.255.255
C类 192.168.0.0--192.168.255.255
需要实现配置私网地址的服务器可以访问外网(互联网)???
NAT --- 网络地址转换技术(化妆),将私网地址转换为公网地址
5.IP地址等级
在设计IP时,着眼于路由与管理上的需求,因此制定了5种IP地址的等级。不过,一般最常用到的便是A、B、C类这三种等级的IP地址。5种等级分别使用不同长度的网络地址,因此适用于大、中,小型网络。IP地址的管理机构可根据申请者的网络规模,决定要赋予哪种等级。
1、A类:此类用于非常大的网络,在第一个8位字节具有从1到126的的IP地址属于此组;
2、B类:此类用于中型网络,在第一个8位字节中具有从128到191的IP地址属于此组;
3、C类:此类用于中小型网络,在第一个8位字节中具有从192到223的IP地址属于此组;
4、D类:此类用于多播,第一至第三位值为1,第四位值为0;
5、E类:此类仅用于实验目的,它非常类似于D类,第一到第三位值为1,唯一的区别是它的第四位值也是1。
a类 1.0.0.1~126.255.255.254
第一组:1-126开头的地址是A类
0<A类<127
b类 128.0.0.1~191.255.255.254
128<=B类<192
c类 192.0.0.1~223.255.255.254
d类
组播 keepalived高可用,vrrp协议用的就是组播地址
e类
科研
6.特殊的IP地址
在实际应用上,有些网络地址与主机地址有特别的用途,因此在分配或管理IP地址时,要特别注意这些限制。
1.每一个字节都为0的地址("0.0.0.0")对应于当前主机;
2.IP地址中的每一个字节都为1的IP地址("255.255.255.255")是当前子网的广播地址;
3.IP地址中凡是以"11110"开头的E类IP地址都保留用于将来和实验使用。
4.IP地址中不能以十进制"127"作为开头,该类地址中数字127.0.0.1到127.255.255.255用于回路测试,如:127.0.0.1可以代表本机IP地址,用"http://127.0.0.1"就可以测试本机中配置的Web服务器。
5.169.254.0.0~169.254.255.255,是开启了dhcp服务的设备但又无法获取到dhcp的会随机使用这个网段的ip
17.子网掩码
子网掩码(subnet mask)又叫网络掩码、地址掩码、子网络遮罩,它是一种用来指明一个IP地址的哪些位标识的是主机所在的子网,以及哪些位标识的是主机的位掩码。子网掩码不能单独存在,它必须结合IP地址一起使用。子网掩码只有一个作用,就是将某个IP地址划分成网络地址和主机地址两部分。
子网掩码的位数就是网络的位数。A类网络的网络位数是8位,子网掩码就是255.0.0.0,B类网络的网络位数是16位,子网掩码是255.255.0.0,C类是24位,255.255.255.0。
主要作用:将IP地址划分为网络地址和主机地址
子网掩码的计算
例子1:
192.168.11.0/24 24 11111111.11111111.11111111.00000000 255.255.255.0
网络号 192.168.11.0 11000000.10101000.00001011. 00000000
网络IP的起始地址 192.168.11.1
网络IP的结束地址 192.168.11.254
广播地址 192.168.11.255
26(网络地址) + 6(主机地址) == 32
例子2:
192.168.15.0/26 26 11111111.11111111.11111111.11 000000 255.255.255.192
子网掩码: 网络位全为1,主机位全为0的为子网掩码 计算算出他的十进制 就是子网掩码
网络号: 192.168.15.0 11000000.10101000.00001111.00 000000
网络号: 网络地址是不可变的 可改变只有主机位
主机位全为0的时候 == 192.168.15.0
网络IP的起始地址 192.168.15.1 网络号+1
网络IP的结束地址 192.168.15.62 网络号的不变 主机位全为1. -1
广播地址 192.168.15.63 网络地址不动 主机位全为1
例子3:
192.168.15.0/22 11111111.11111111.111111 00. 00000000 255.255.252.0
网络号 192.168.12.0 11000000.10101000.000011 00.00000000
网络IP的起始地址 192.168.12.1
192.168.12.255
192.168.13.0
192.168.13.255
192.168.14.0
192.168.14.255
192.168.15.0
网络IP的结束地址 192.168.15.254
广播地址 192.168.15.255
例子4:
192.168.56.0/18 11111111.11111111.11 000000. 00000000 255.255.192.0
网络号 192.168.0.0 11000000.10101000.00 000000.00000000
网络的起始地址 192.168.0.1
网络的结束地址 192.168.63.254
广播地址 192.168.63.255
11111111.11111111.11111111.00000000 24位 255.255.255.0
11111111.11111111.11111111.10000000 25位 255.255.255.128
11111111.11111111.11111111.11000000 26位 255.255.255.192
11111111.11111111.11111111.11100000 27位 255.255.255.224
11111111.11111111.11111111.11110000 28位 255.255.255.240
11111111.11111111.11111111.11111000 29位 255.255.255.248
11111111.11111111.11111111.11111100 30位 255.255.255.252
11111111.11111111.11111111.11111110 31位 255.255.255.254
11111111.11111111.11111111.11111111 32位 255.255.255.255
18.网关
网关(Gateway)又称网间连接器,就是一个网络连接到另一个网络的"关口"。
网关实质上是一个网络通向其他网络的IP地址。比如有网络A和网络B,网络A的IP地址范围为"192.168.1.1~192. 168.1.254",子网掩码为255.255.255.0;网络B的IP地址范围为"192.168.2.1~192.168.2.254",子网掩码为255.255.255.0。在没有路由器的情况下,两个网络之间是不能进行TCP/IP通信的,即使是两个网络连接在同一台交换机(或集线器)上,TCP/IP协议也会根据子网掩码(255.255.255.0)判定两个网络中的主机处在不同的网络里。而要实现这两个网络之间的通信,则必须通过网关。如果网络A中的主机发现数据包的目的主机不在本地网络中,就把数据包转发给它自己的网关,再由网关转发给网络B的网关,网络B的网关再转发给网络B的某个主机(如附图所示)。网络B向网络A转发数据包的过程。
所以说,只有设置好网关的IP地址,TCP/IP协议才能实现不同网络之间的相互通信。那么这个IP地址是哪台机器的IP地址呢?网关的IP地址是具有路由功能的设备的IP地址,具有路由功能的设备有路由器、启用了路由协议的服务器(实质上相当于一台路由器)、代理服务器(也相当于一台路由器)。
19.抓包方式
抓包方式:wireshark抓包软件在Windows中使用
Linux抓包命令tcpdump是一个抓包工具,用于抓取互联网上传输的数据包
tcpdump是一个用于截取网络分组,并输出分组内容的工具。凭借强大的功能和灵活的截取策略,使其成为类UNIX系统下用于网络分析和问题排查的首选工具
tcpdump 支持针对网络层、协议、主机、网络或端口的过滤,并提供and、or、not等逻辑语句来帮助你去掉无用的信息
#常用选项
-i #监听哪一个网卡
-n #不把ip解析成主机名
-nn #不把端口解析成应用层协议
-c #指定抓包的数量
-S #不把随机序列和确认序列解析成绝对值
-w #将流量保存到文件中,文件中的信息是无法直接查看的
-r #读取文件中的内容
-v #输出一个稍微详细的信息,例如在ip包中可以包括ttl和服务类型的信息。
-vv #输出详细的报文信息。
#实例
1、默认启动
tcpdump -vv #普通情况下,直接启动tcpdump将监视第一个网络接口上所有流过的数据包。
2、过滤主机
tcpdump -i eth1 host 192.168.1.1 #抓取所有经过eth1,目的或源地址是192.168.1.1的网络数据
tcpdump -i eth1 src host 192.168.1.1 #指定源地址,192.168.1.1
tcpdump -i eth1 dst host 192.168.1.1 #指定目的地址,192.168.1.1
3、过滤端口
tcpdump -i eth1 port 80 #抓取所有经过eth1,目的或源端口是80的网络数据
tcpdump -i eth1 src port 80 #指定源端口
tcpdump -i eth1 dst port 80 #指定目的端口
4、协议过滤
tcpdump -i eth1 arp
tcpdump -i eth1 ip
tcpdump -i eth1 tcp
tcpdump -i eth1 udp
tcpdump -i eth1 icmp
#抓tcp某端口的数据包
tcpdump -i eth0 tcp port 21 -nn
5、常用表达式
非 : ! or "not" (去掉双引号)
且 : && or "and"
或 : || or "or"
#抓取所有经过eth1,目的地址是192.168.1.254或192.168.1.200端口是80的TCP数
tcpdump -i eth1 '((tcp) and (port 80) and ((dst host 192.168.1.254) or (dst host 192.168.1.200)))'
#抓取所有经过eth1,目标MAC地址是00:01:02:03:04:05的ICMP数据
tcpdump -i eth1 '((icmp) and ((ether dst host 00:01:02:03:04:05)))'
#抓取所有经过eth1,目的网络是192.168,但目的主机不是192.168.1.200的TCP数据
tcpdump -i eth1 '((tcp) and ((dst net 192.168) and (not dst host 192.168.1.200)))'
20.linux常用网络命令
1.网卡命名规则
CentOS-6之前基于传统的命名方式如:eth1,eth0....
Centos-7提供了不同的命名规则,默认是基于固件、拓扑、位置信息来分配。这样做的优点是命名是全自动的、可预知的,缺点是比eth0、wlan0更难读。比如enp5s0
biosdevname和net.ifnames两种命名规范
#net.ifnames的命名规范为:
设备类型+设备位置+数字
#设备类型:
en 表示Ethernet
wl 表示WLAN
ww 表示无线广域网WWAN
#实际的例子:
eno1 #板载网卡
enp0s2 #pci网卡
ens33 #pci网卡
wlp3s0 #PCI无线网卡
wwp0s29f7u2i2 #4G modem
wlp0s2f1u4u1 #连接在USB Hub上的无线网卡
#biosdevname的命名规范为:
根据系统BIOS提供的信息对网络接口进行重命名。
em[1-N] #表示主板(嵌入式)NIC (对应机箱标签)
pci #表示PCI插槽中的卡,端口1至N
实际的例子:
em1 #板载网卡
p3p4 #pci网卡
p3p4_1 #虚拟网卡
CentOS-7
默认内核参数(biosdevname=0(dell服务器默认是1),net.ifnames=1): 网卡名 "enp5s2"
biosdevname=1,net.ifnames=0:网卡名 "em1"
biosdevname=0,net.ifnames=0:网卡名 "eth0" (最传统的方式,eth0 eth1)
#定义网卡命令规则
在安装系统时,选择安装选项,按tab键,在跳出的一行内容后面添加net.ifnames=0 biosdevname=0
#命令行设置网卡名称规则
[root@qls ~]# cd /etc/sysconfig/network-scripts/ #修改网卡配置文件
[root@qls network-scripts]# mv ifcfg-ens33 ifcfg-eth0
[root@qls network-scripts]# sed -i "s#ens33#eth0#g" ifcfg-eth0
[root@qls ~]# vim /etc/sysconfig/grub #GRUB添加kernel参数
GRUB_CMDLINE_LINUX="...net.ifnames=0 biosdevname=0 quiet"
[root@qls ~]# grub2-mkconfig -o /boot/grub2/grub.cfg
[root@qls ~]# reboot #重启系统生效
2. 网卡配置文件详解
#动态ip
[root@qls ~]# cat /etc/sysconfig/network-scripts/ifcfg-eth0
TYPE="Ethernet"
PROXY_METHOD="none"
BROWSER_ONLY="no"
BOOTPROTO="dhcp"
DEFROUTE="yes"
IPV4_FAILURE_FATAL="no"
IPV6INIT="yes"
IPV6_AUTOCONF="yes"
IPV6_DEFROUTE="yes"
IPV6_FAILURE_FATAL="no"
IPV6_ADDR_GEN_MODE="stable-privacy"
NAME="eth0"
UUID="fb32c09d-5a9f-40b9-852b-0f44ff2202ed"
DEVICE="eth0"
ONBOOT="yes"
#静态ip
[root@qls ~]# cat /etc/sysconfig/network-scripts/ifcfg-eth0
TYPE="Ethernet"
BOOTPROTO="static"
NAME="eth0"
DEVICE="eth0"
ONBOOT="yes"
IPADDR="10.0.0.88"
NETMASK="255.255.255.0"
GATEWAY="10.0.0.254"
DNS1="223.5.5.5"
DNS2="223.6.6.6"
#详解:
TYPE=Ethernet #网卡类型,一般是Ethernet,还有其他的如bond,bridge
BOOTPROTO=dhcp #获取IP地址的方式,启动的协议,获取配置的方式。
dhcp表示动态获取
static或none表示静态手工配置,若想使用本地配置好的IP则应该设置成这个 DEFROUTE=yes #是否设置默认路由,若为yes则可以在该文件通过PREFIX这个参数来设置子网掩码
PEERDNS=yes #yes表示由DHCP来获取DNS, no表示/etc/resolv.conf来控制,默认为yes。
yes:如果DNS设置,修改/etc/resolv.conf中的DNS
no:不修改/etc/resolv.conf中的DNS
NAME=eth0 #这个参数对应的值是网卡名,是给用户看的
UUID=... #通用唯一识别码,若vmware克隆的虚拟机无法启动网卡可以去除此项
DEVICE=eth0 #系统逻辑设备名
ONBOOT=yes #开机启动时是否激活网卡设备,centos7装完网卡后默认设置成no
HWADDR=... #以太网硬件地址,mac地址。若是vmware克隆的虚拟机无法启动网卡,也要改这个。
NM_CONTROLLED=yes #是否通过NetworkManager管理网卡设备
IPADDR=... #设置网卡对应的IP地址,网络服务启动,网卡激活后会自动将该地址配置到网卡上
前提(BOOTPROTO=static)而不是dhcp
PREFIX=24 #子网掩码长度,不要这么写PREFIX=255.255.255.0
NETMASK=255.255.255.0 #生产环境中一般用这种方式指定子网掩码
GATEWAY=10.0.0.254 #该网卡配置的IP对应的网关(默认路由)
若主机是多网卡设备,该参数只能在一个网卡配置文件里面出现,一台主机只有一个默认路由
DNS1=... #主DNS,若这里设置了值,则会优先于/etc/resolv.conf中设置的DNS服务器的地址
需要和"PEERDNS=no"配合使用
DNS2=... #次dns
IPV6INIT=no #是否启用IPV6
PROXY_METHOD=none #代理方式,一般不用这个参数
BROWSER_ONLY=no #没有什么用。
#修改网卡配置文件的方法
vim /etc/sysconfig/network-scripts/ifcfg-eth0
nmtui #需要开启NetworkManger
3. 网络管理命令
ping命令主要的功能是用来检测网络的连通情况和分析网络速度。
#常用选项
-t #持续ping,不中断。不加该选项只ping4个包。
-c #ping的包数,默认是4个。
-W #多长时间ping一次。
-f #极速ping。
nmap即网络映射器对Linux系统/网络管理员来说是一个开源且非常通用的工具。Nmap用于在远程机器上探测网络,执行安全扫描,网络审计和搜寻开放端口。
#常用选项
-p #指定端口号
-p22 #单个端口
-p22,80 #多个端口
-p1-1000 #1到1000之间的端口
nc是netcat的简写,有着网络界的瑞士军刀美誉。
-l #用于指定nc将处于侦听模式。
-u #指定nc使用UDP协议,默认为TCP
#服务端
[root@qls ~]# nc -u -l 10000
a:dkjfh
b:hrgrueg
#客户端
[root@web01 ~]# nc -u 10.0.0.71 10000
a:dkjfh
b:hrgrueg
telnet一种远程登录的工具。同样可以检查某个主机是否开启某个端口
#用法
[C:\~]$ telnet 10.0.0.99 22
Connecting to 10.0.0.99:22...
Connection established.
To escape to local shell, press 'Ctrl+Alt+]'.
SSH-2.0-OpenSSH_7.4
netstat打印网络连接、路由表、tcp11种状态。
#常用选项
-l #只显示监听套接字。
-n #不做名字解析
-t #显示tcp端口
-u #显示udp端口
-p #显示pid和程序名字
-r #显示路由表
-a #显示所有的套接字
ss跟netstat命令差不多。
#常用选项
-l #只显示监听套接字。
-n #不做名字解析
-t #显示tcp端口
-u #显示udp端口
-p #显示pid和程序名字
-a #显示所有的套接字
iftopiftop界面说明:
界面上面显示的是类似刻度尺的刻度范围,为显示流量图形的长条作标尺用的。中间的<= =>这两个左右箭头,表示的是流量的方向。
TX:发送流量
RX:接收流量
TOTAL:总流量
Cumm:运行iftop到目前时间的总流量
peak:流量峰值
rates:分别表示过去 2s 10s 40s 的平均流量
#常用选项
-i #设定监测的网卡
-B #以bytes为单位显示流量(默认是bits)
-n #使host信息默认直接都显示IP
-P #使host信息及端口信息默认就都显示
-m #设置界面最上边的刻度的最大值,刻度分五个大段显示
按q退出监控。
路由追踪
traceroute -n www.qq.com (linux)
-n 禁止把IP解析为对应的域名(主机名)
tracert -d www.qq.com (windows)
-d 禁止把IP解析为对应的域名(主机名)
glances
glances工具可以在用户的终端上实时显示重要的系统信息,并动态地对其进行更新。这个高效的工具可以工作于任何终端屏幕。另外它并不会消耗大量的CPU资源,通常低于百分之二。glances在屏幕上对数据进行显示,并且每隔两秒钟对其进行更新。
21.网络故障报错
1. 远程连接不上虚拟机
1. ping一下虚拟机的IP地址是否能通
2. 检查虚拟机是否开机
3. 通过获取IP的命令检查虚拟机是否存在IP地址
4. 查看网卡配置文件是否存在配置错误
5. 跟NetworkManger这个网络有关系
6. 查看IP地址是否跟别的主机有冲突
7. 检查远程连接服务是否启动
8. 检查远程连接的端口是否正确
9. 检查防火墙是否拦截了此端口
10. SElinux是否存在问题,建议将其关闭
11. 检查虚拟网络编辑器是否配置正确
12. 检查网络适配器是否配置正确
13. 检查VMware的相关服务是否正常启动
14. 检查VMnet8网卡是否被禁用
15. 重新配置虚拟网络编辑器,防止失效。
16. 重启网络服务,重启多次(建议重启三次),拔掉网线,重新插入。重启网络适配器。
17. 重启虚拟机。
2. 虚拟机ping不通百度的问题
1. ping一下公网的DNS。 如果能通,一般就是DNS配置错误
2. ping一下网关,看看自己是否能出去。
3. 检查网卡配置文件,DNS,网关是否设置正确。
4. 重启一下网络服务,建议重启多次。
5. 查看是否受到NetworkManger网络的影响,建议将其关闭。
6. 检查VMware相关服务是否正常启动。
7. 检查虚拟网络编辑器中的网关是否配置正确
8. 重启虚拟网路适配器,拔掉网线,重新插入。
9. 检查本地电脑是否能够上网
10. 检查本地网络是否存在共享情况
11. 建议重启虚拟机。
3. ping不通网关问题
1. 检查网关是否正确。
2. 重启VMware NAT服务
3. 重启网络适配器,拔掉网线,重新插入
4. 重启网络服务
5. 重启虚拟机
4. 企业里面服务器上不了网
核心思路: 了解网络拓扑图,根据网络拓扑图分析问题
1. 检查物理层,硬件,网线,机房是否断网。
2. 检查IP地址是否能通
3. 检查网关是否配置正确,是否能通。
4. 检查DNS是否配置正确。DNS是否出现问题
5. 检查NetworkManger是否存在冲突
6. 重启网络服务,多重启几次,拔掉网线,重新插入
7. 重启服务器 大招
办公室里面上不了网
1. 检查是大面积上不了网,还是单独一台主机上不了网
2. 检查办公室的外网接口是否存在问题
3. 大面积上不了网,找运营商。
4. 单台主机上不了网,根据OSI七层模型进行检查
5. 检查硬件,网线
6. 检查IP地址,网关,DNS是否存在问题
7. 判断是否是上网行为管理器的问题。
8. ARP欺骗 ARP病毒
9. 重启网络,拔掉网线,重新插入
10. 重启电脑
22.静态路由

#1. 环境准备三台服务器,充当为三个路由器
主机名 Eth0 Eth1
network01 10.0.0.11
network02 10.0.0.12 172.16.0.12
network03 172.16.0.13
#要想让其三台主机能够互相通信,需添加静态路由信息
[root@network01 ~]# route add -net 172.16.0.0/24 gw 10.0.0.12
[root@network02 ~]# sysctl net.ipv4.ip_forward=1 #开启内核转发
[root@network03 ~]# route add -net 10.0.0.0/24 gw 172.16.0.12
[root@network03 ~]# tcpdump -i eth0 icmp #抓包分析

扩展路由架构

主机名 Eth0 Eth1
network01 10.0.0.11
network02 10.0.0.12 172.16.0.12
network03 172.16.0.13 172.16.1.13
network04 172.16.1.14
#要想让其四台主机能够互相通信,需添加静态路由信息,在之前的静态路由上面继续添加
[root@network01 ~]# route add -net 172.16.1.0/24 gw 10.0.0.12
[root@network02 ~]# route add -net 172.16.1.0/24 gw 172.16.0.13
[root@network03 ~]# route add -net 10.0.0.0/24 gw 172.16.0.12
[root@network03 ~]# sysctl net.ipv4.ip_forward=1 #开启内核转
[root@network04 ~]# route add -net 10.0.0.0/24 gw 172.16.1.13
#永久保存
#查看路由规则
[root@network01 ~]# ip route
10.0.0.0/24 dev eth0 proto kernel scope link src 10.0.0.11
169.254.0.0/16 dev eth0 scope link metric 1002
172.16.0.0/24 via 10.0.0.12 dev eth0
#写入到配置文件
[root@network01 ~]# vim /etc/sysconfig/network-scripts/route-eth0
[root@network01 ~]# cat /etc/sysconfig/network-scripts/route-eth0
172.16.0.0/24 via 10.0.0.12 dev eth0
#重启测试是否永久保存
[root@network01 ~]# systemctl restart network
[root@network01 ~]# route -n
Kernel IP routing table
Destination Gateway Genmask Flags Metric Ref Use Iface
10.0.0.0 0.0.0.0 255.255.255.0 U 0 0 0 eth0
169.254.0.0 0.0.0.0 255.255.0.0 U 1002 0 0 eth0
172.16.0.0 10.0.0.12 255.255.255.0 UG 0 0 0 eth0
#永久实现内核转发
[root@network01 ~]# tail -1 /etc/sysctl.conf
net.ipv4.ip_forward = 1
[root@network01 ~]# sysctl -p
net.ipv4.ip_forward = 1
23.把Linux变成路由器
dhcp分配信息包括:
ip地址
子网掩码
网关
dns
#1.安装dhcp服务
[root@network01 ~]# yum install dhcp -y
#2.配置dhcp服务
[root@network01 ~]# cat /etc/dhcp/dhcpd.conf
subnet 10.0.0.0 netmask 255.255.255.0 { #网段和子网掩码
range 10.0.0.100 10.0.0.200; #网段地址范围
option domain-name-servers 180.76.76.76; #指定给客户端的DNS
option routers 10.0.0.254; #指定给客户端的网关
option broadcast-address 10.0.0.255; #广播地址
default-lease-time 600; #租期时间
max-lease-time 7200; #租期最长时间
}
#3.启动dhcp服务
[root@network01 ~]# systemctl start dhcpd
[root@network01 ~]# systemctl enable dhcpd
#4.检查端口是否启动
[root@network01 ~]# netstat -lntup | grep dhcp
udp 0 0 0.0.0.0:67 0.0.0.0:* 9191/dhcpd
#5.客户端配置
[root@network02 ~]# ip a s eth0
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
link/ether 00:0c:29:58:a3:51 brd ff:ff:ff:ff:ff:ff
inet 10.0.0.12/24 brd 10.0.0.255 scope global eth0
valid_lft forever preferred_lft forever
inet6 fe80::20c:29ff:fe58:a351/64 scope link
valid_lft forever preferred_lft forever
[root@network02 ~]# route -n
Kernel IP routing table
Destination Gateway Genmask Flags Metric Ref Use Iface
10.0.0.0 0.0.0.0 255.255.255.0 U 0 0 0 eth0
169.254.0.0 0.0.0.0 255.255.0.0 U 1002 0 0 eth0
169.254.0.0 0.0.0.0 255.255.0.0 U 1003 0 0 eth1
172.16.0.0 0.0.0.0 255.255.255.0 U 0 0 0 eth1
[root@network02 ~]# cat /etc/resolv.conf
# Generated by NetworkManager
nameserver 223.5.5.5
[root@network02 ~]# grep 'BOOTPROTO' /etc/sysconfig/network-scripts/ifcfg-eth0
BOOTPROTO=dhcp
[root@network02 ~]# systemctl restart network
#6.重启之后,网络会断掉,重新分配了ip地址
[root@network02 ~]# ip a s eth0
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
link/ether 00:0c:29:58:a3:51 brd ff:ff:ff:ff:ff:ff
inet 10.0.0.100/24 brd 10.0.0.255 scope global dynamic eth0
valid_lft 505sec preferred_lft 505sec
inet6 fe80::20c:29ff:fe58:a351/64 scope link
valid_lft forever preferred_lft forever
[root@network02 ~]# route -n
Kernel IP routing table
Destination Gateway Genmask Flags Metric Ref Use Iface
0.0.0.0 10.0.0.254 0.0.0.0 UG 0 0 0 eth0
10.0.0.0 0.0.0.0 255.255.255.0 U 0 0 0 eth0
169.254.0.0 0.0.0.0 255.255.0.0 U 1002 0 0 eth0
169.254.0.0 0.0.0.0 255.255.0.0 U 1003 0 0 eth1
172.16.0.0 0.0.0.0 255.255.255.0 U 0 0 0 eth1
[root@network02 ~]# cat /etc/resolv.conf
; generated by /usr/sbin/dhclient-script
nameserver 180.76.76.76
[root@network02 ~]# ping baidu.com
PING baidu.com (39.156.69.79) 56(84) bytes of data.
64 bytes from 39.156.69.79 (39.156.69.79): icmp_seq=1 ttl=128 time=147 ms
^C
--- baidu.com ping statistics ---
2 packets transmitted, 1 received, 50% packet loss, time 1001ms
rtt min/avg/max/mdev = 147.980/147.980/147.980/0.000 ms