Linux 网络管理
目录- Linux 网络管理
- 一. 什么是网络?
- 二. Linux处理数据包过程
- 三. OSI 7层网络模型
- 四. TCP/IP (四层模型)
- 五. 因特网层-网络层
- 六. DNS
- 七. 网络配置
- 八. 防火墙
- 九. 网络常用命令
一. 什么是网络?
1.1 网络的定义
- 定义: 网络: internet 不同设备通过介质连接在一起,互相通信.
IOT=物联网,Internet OF Things
1.2 网络传输介质
- 1位bit 1个0或1位置
- 1字节byte=8bit
#01 在两台主机之间需要有传输介质 网线
网线分类: Cat5-cat7
568B做法线序
直线:用于不同设备之间互连(交换机-PC)
白橙—橙—白绿—蓝—白蓝—绿—白棕—棕
光纤:
数据亮大,速度要求高,延迟低.
#02 在两台主机上面需要有网卡设备
网卡核心作用: 二进制(系统)<-网卡->高低电压(传输介质)
在发送信息时:将二进制(数字信号)信息转换为高低电压(电信号) #
调至过程
在接收信息时:将高低电压(电信号)信息转换为二进制数(数字信号) #
解调过程
调制解调器-model 猫 宽带 ADSL 非对称式网络(下载快,上传慢)
#03 在进行数据传输之前,需要协商网络传输速率。
1位bit 1个0或1位置
1字节byte=8bit
500Mb/s 每秒传输500M个二进制位 实际下载速度是多少? 500/8=62.5 MB
解释下:
什么时候是字节?什么时候是位? 一般标准:
小写的一般是bit 位 比特
大写的一般是Byte 字节
1.3 网络设备
1. 交换机
- 实现同一个局域网通信工具
- 网络交换机,是一个扩大网络的器材,能为子网络中提供更多的连接端
口,以便连接更多的计算机。
#01 如何利用交换机实现通讯
1. 在数据前面设置目标地址和源地址,目标地址和源地址用mac地址进行标
识
mac称为物理地址,每块网卡上都有的一个标识身份信息的
mac地址全球唯一,不能进行修改,mac地址用12位(48bit)16进制标识
2. 在网络通讯初期,会利用广播方式进行发送数据包,在通讯的过程,数据
包的发送一定是有去有回的。
在一个交换网路中,如果产生了大量广播数据包时会产生广播风暴,影响
主机性能,这样的问题称为广播风暴问题
#02 解决广播风暴问题思路:
减少广播产生数量,将一个大的交换网络切割为几个小的交换网络(局域
网,广播域)
#03 交换机的种类
傻瓜交换机(TP-link/Dlink/水星...)
程控交换机(存储程序控制交换机,配置管理,思科、华为、华三) 二
层交换(正常交换机) 三层交换(带管理功能的交换机)
2. 路由器
- 路由器: 实现多个网段数据传输
- 根据路由表路由和寻址
#01 linux查看路由
route -n 查看路由表
#windows路由追踪命令
[C:\~]$ tracert -d www.baidu.com
通过最多 30 个跃点跟踪
到 www.a.shifen.com [110.242.68.3] 的路由:
- 路由器相关知识点
#01 需要有身份标识信息:ip地址 格式: 点分十进制 点分割的4位十进制数 每个位置0-255
解释下:
IP地址由两部分组成: 交换网络标识信息+主机地址标识信息===网段地址+ 主机地址
10.0.0 . 100
网段地址 主机地址 0-255 0无法使用 255广播地区 1或254 给网关用的
#02 查公网ip的方法:
windows,打开浏览器,访问百度,搜IP即可
linux:curl cip.cc
高级路由器还有上网行为管理器和防火墙功能
3. 网关路由
- 实现不同网段之间通讯需要经过一条必经之路,这条路称为网关
#01 路由实现数据传输通讯时,会根据路由表信息进行数据包路由
#### 实现不同网段之间通讯需要经过一条必经之路,这条路称为网关
gateway (交换机,路由器) 默认的出口/入口
[root@aliyun ~]# route -n
Kernel IP routing table
Destination Gateway Genmask Flags Metric Ref Use Iface
0.0.0.0 172.26.143.253 0.0.0.0 UG 0 0 0 eth0
169.254.0.0 0.0.0.0 255.255.0.0 U 1002 0 0 eth0
172.17.0.0 0.0.0.0 255.255.0.0 U 0 0 0 docker0
172.26.128.0 0.0.0.0 255.255.240.0 U 0 0 0 eth0
Destination 第1列 目标网段
Gateway 第2列 默认网关 如果是 ip默认网关 如果是 0.0.0.0 路由条目
Genmask 第3列 子网掩码
Use Iface 最后一列 网卡(网络接口) 进出的接口
4. 区别
交换机 | 路由器 |
---|---|
转发数据,同一个局域网/网段处理数据 | 段处理数据转发数据,处理不同网段/局域网的数据 |
识别的是mac地址 | 识别的ip地址 |
产生广播风暴 | 隔离广播风暴,每个路由器的接口可以是不同的网段 |
多个接口24/48/ | 接口较少4/8 |
mac地址缓存表(指路) | 路由条目(静态/动态) |
工作层次: 二层交换机 三层交换机 | 三层设备 |
二. Linux处理数据包过程
4.1 详解
![image-20230728135311022](/Users/ningcaichen/04-个人文档/01-Markdown/man-文档总计/1-Linux核心基础入门/Linux 网络管理.assets/image-20230728135311022.png)
#01 解释下含义
User Space 用户态
kernel Space 内核态
#02 具体流程
1)当向外界主机发送数据时,在它从网卡流入后需要对它做路由决策,根据其目标决定是流入本机数据还是转发给其他主机
2)如果是流入本机的数据,则数据会从内核空间进入用户空间(被应用程序接收、处理)
3)当用户空间响应(应用程序生成新的数据包)时,响应数据包是本机产生的新数据,在响应包流出之前,需要做路由决策,根据目标决定从哪个网卡流出
4)如果不是流入本机的,而是要转发给其他主机的,则必然涉及到另一个流出网卡,此时数据包必须从流入网卡完整地转发给流出网卡,这要求Linux主机能够完成这样的转发
5) 但Linux主机默认未开启ip_forward功能,这使得数据包无法转发而被丢弃。Linux主机和路由器不同,路由器本身就是为了转发数据包,所以路由器内部默认就能在不同网卡间转发数据包,而Linux主机默认则不能转发
4.2 开启 内核转发
#01 临时开启内核转发
echo 1 > /proc/sys/net/ipv4/ip_forward
sysctl -w net.ipv4.ip_forward=1
#02 永久开启内核转发
echo "net.ipv4.ip_forward=1" > /etc/sysctl.d/ip_forward.conf
#03 检查
[root@xuexi ~]# sysctl net.ipv4.ip_forward
net.ipv4.ip_forward = 0
[root@xuexi ~]# cat /proc/sys/net/ipv4/ip_forward
0
[root@xuexi ~]# sysctl -a | grep ip_forward
net.ipv4.ip_forward = 0
net.ipv4.ip_forward_use_pmtu = 0
三. OSI 7层网络模型
3.1 定义
- 从低到高物理层,数据链路层,网络层,传输层,会话层,表示层,应用层
- 物数网传会表应
含义 | 涉及协议或内容 | |
---|---|---|
应用层 | 应用软件,接口,各种协议 | http https dns smtp ..... |
表示层 | 对数据转换,加密解密 压缩解压 | Telnet, Rlogin, SNMP, Gopher |
会话层 | 建立终止会话 | SMTP, DNS |
传输层 | 数据如何传输到对端,建立端到端之间的连接 | tcp udp 端口 |
网络层 | 网络路由和寻址 | IP 3CMP, ARP 路由器 |
数据链路层 | 通过mac地址识别设备,进行传输 | mac 2层交换机 |
物理层 | 数据转换为010101010,通过网络介质传递 | IEEE 802.1A, IEEE 802.2到IEEE 802.11 |
3.2 每层解释
#01 应用层含义
应用软件 接口 各种协议,(例如;http https dns smtp)
#02 表示层含义
对数据进行转换 加密压缩
#03 会话层
建立管理和终止会话
#04 传输层 (分段)
主要作用: 负责网络中 端到端之间的连接,保证端到端之间的传输(将上层的数据分段处理)
tcp 传输速度慢 但是可靠(如果对面没收到 则再发送一次)(和用户有关的 重要数据)
udp 不可靠的传输,速度快 (应用场景 直播 音频)
#05 网络层 (打包)
主要作用:将分组数据从源端传输到目的源 (对应的设备 有路由器)(IP 3层交换机)
主要功能:就是路由(指路)和寻址(根据ip 地址找人) 接触的是IP协议即ip地址
对应的设备有 路由器(IP 地址 )
#06 数据链路层 (成帧,祯就是本地局域网中传输数据的一个单元)
主要作用: 通过识别mac地址 进行数据传输 (mac 2层交换机)
主要是识别mac标识 12位(48 bit)16进制
1个16进制数 相当于4个比特 bit
#07 物理层 (变位 bit)
主要作用:把数据转换为010101 内容 通过介质传递给对方
- 经典图示
![image-20230727160702035](/Users/ningcaichen/04-个人文档/01-Markdown/man-文档总计/1-Linux核心基础入门/Linux 网络管理.assets/image-20230727160702035.png)
四. TCP/IP (四层模型)
4.1 TCP和UDP区别
- 7层模型中的传输层
传输控制协议 (TCP) | 用户数据报协议(UDP) |
---|---|
面向连接 | 无连接 |
可靠连接 | 不可靠连接 |
流控 (检查数据是否丢失 丢失重新发送) | 尽力而为 尽力传递 |
使用TCP 应用场景 web 浏览器 电子邮件 文件传输程序 | 使用UDP 的应用场景 域名系统(DNS) 视频流 IP 语音 |
- Tcp 数据包
![image-20230728114833850](/Users/ningcaichen/04-个人文档/01-Markdown/man-文档总计/1-Linux核心基础入门/Linux 网络管理.assets/image-20230728114833850.png)
- UDP没有序列号字段和确认字段 所以是不安全协议
##解释下 本数据包固定首部长度 20
#01 源端口:
即本地发起连接的端口
前4个字节来标识了发送方的端口号和接收方的端口号,即该数据包由谁发送,由谁接收。前2个字节标识源端口号,紧接着2个字节标识目的端口号
#02 目标端口:
即要访问的服务的端口
#03 序列号:
因为传输层会将上层的数据进行分段,因此需要对分段数据进行编号,同
时也便于数据的重组。
#04 确认号(ack)
用于对数据的进行验证
ack:确认序号,更确切地说,是接收端所期望收到的下一个序号。
确认序号为上次接收的最后一个字节序号加1.只有确认标志位(ACK)为1的时候,确认序号才有效
4.2 TCP 3次握手
- 图示
![image-20230728112441766](/Users/ningcaichen/04-个人文档/01-Markdown/man-文档总计/1-Linux核心基础入门/Linux 网络管理.assets/image-20230728112441766.png)
#TCp 三次握手
01. 由主机 A 发送建立 TCP 连接的请求报文,其中报文中包含 seq 序列号,
是由发送端随机生成的,并且还将报文中 SYN 字段置为 1,表示需要建立 TCP 连接请求。
02. 主机 B 会回复 A 发送的 TCP 连接请求报文,其中包含 seq 序列号,也
是由回复端随机生成的,并且将回复报文的 SYN 字段置 1,而且会产生
ACK 验证字段,ACK 验证字段数值是在 A 发过来的 seq 序列号基础上加
1 进行回复;并且还会回复 ack 确认控制字段,以便 A 收到信息时,知
晓自己的 TCP 建立请求已得到了确认。
03. A 端收到 B 端发送的 TCP 建立请求后,会使自己的原有序列号加 1 进行
再次发送序列号,并且再次回复 ACK 验证请求,在 B 端发送过来的 seq
基础上加 1,进行回复;同时也会回复 ack 确认控制字段,以便 B 收到
信息时,知晓自己的 TCP 建立请求已经得到了确认。
##tcp三次握手的 状态变化说明
\01. 首先,建立连接之前服务器和客户端的状态都为CLOSED。
\02. 服务器创建socket后开始监听(启动服务),变为LISTEN状态。
\03. 客户端请求建立连接,向服务器发送SYN报文,客户端的状态变为SYN_SENT。
\04. 服务器收到客户端的报文后向客户端发送ACK和SYN报文,此时服务器的状态变为SYN_RCVD。
\05. 然后,客户端收到ACK、SYN,就向服务器发送ACK,客户端状态变为ESTABLISHED
\06. 服务器收到客户端的ACK后也变为ESTABLISHED。
此时3次握手完成,连接建立!
4.3 TCP 4次握手
-
图示
![image-20230728112424598](/Users/ningcaichen/04-个人文档/01-Markdown/man-文档总计/1-Linux核心基础入门/Linux 网络管理.assets/image-20230728112424598.png)
#TCP 四次挥手断开过程说明:
01. 主机 A 发送断开 TCP 连接请求的报文,其中报文中包含 seq 序列号,是
由发送端随机生成的,并且还将报文中 FIN 字段置为 1,表示需要断开
TCP 连接。
02. 主机 B 会回复 A 发送的 TCP 断开请求报文,其中包含 seq 序列号,是
由回复端随机生成的,而且会产生 ACK 验证字段,ACK 验证字段数值是
在 A 发过来的 seq 序列号基础上加 1 进行回复;并且还会回复 ack 确认
控制字段,以便 A 收到信息时,知晓自己的 TCP 断开请求已得到了确认。
03. 主机 B 在回复完 A 的 TCP 断开请求确认控制字段后,不会马上就进行
TCP 连接的断开,主机 B 会先确保断开前,所有传输到 A 的数据是否已
经传输完毕,一旦确认传输数据完毕就会将控制报文中 FIN 字段置 1,进
行发送断开请求
syn 与你建立连接请求
seq 随机序列号
ack 确认控制字段
FIN 断开连接请求
##白话文
01. 客户端先向服务端发送FIN报文,请求断开连接,其状态变为FIN_WAIT1。
02. 服务器收到FIN后向客户端发送ACK,服务器状态变为CLOSE_WAIT。
03. 客户端收到ACK后就进入FIN_WAIT2状态。此时连接已经断开了一半了。如果服务器还有数据要发送给客户端,就会继续发送。
04. 直到发完了,就发送FIN报文,此时服务器进入LAST_ACK状态。
05. 客户端收到服务器的FIN后,马上发送ACK给服务器,此时客户端进入TIME_WAIT状态,再过了2MSL长的时间后进入CLOSED状态。服务器收到
客户端的ACK就进入CLOSED状态。
4.4 TCP 11中状态
状态出现方式 | 状态出现环境 | 状态名称 | 状态描述 |
---|---|---|---|
TCP 建立过程 涉及5种状态 | 服务端/客户端 | CLOSED | 默认初始化状态 |
服务端 | listen | 建立socket 进入监听状态 | |
客户端 | syn_sent | 发送syn报文 进入syn发送状态 | |
服务端 | syn_rcvd | 接收syn报文 并回复ack及syn报文 | |
客户端/服务端 | established | 接收syn报文 回复ack 建立连接(客户端) 接收ack报文 建立连接(服务端) |
|
TCP 断开过程 涉及的6种状态 | 服务端/客户端 | established | 默认断开前初始化状态(连接中) |
客户端 | fin_wait1 | 发送断开连接请求 fin 报文 | |
服务端 | close wait | 收到fin后 向客户端发送ack (如有数据,需要传输完,再发送fin) | |
客户端 | fin wait2 | 收到服务端返回的ack报文 等待数据传输 | |
服务端 | last ack | 数据传完了 发送fin 报文 | |
客户端 | time wait | 回复fin断开连接请求 发送ack | |
服务端/客户端 | closed | 收到ack后报文后 立刻断开连接 等待2MSL 后 断开连接(客户端)11中国 |
|
11种 | 客户端 | closing | 没有收到回复fin报文的ack 直接收到fin |
五. 因特网层-网络层
- 就是7层中的网络层
- 核心协议是: IP协议 , ARP协议
4.1 ARP 协议
1. 定义
ARP协议说明 地址解析协议
-
功能
①. 将IPv4地址解析为MAC地址
②. 维护映射的缓存
2. ARP 解析流程
ARP解析流程:
- 用户查询本地arp缓存,看看有没有对应的mac缓存记录
- 客户发出APR 广播10.1.1.2的mac地址是什么?请告诉我(10.1.1.1)
- 局域网汇中所有机器收到广播信息,只有10.1.1.2 通过单播进行回复,说
10.1.1.2mac地址是........ - 客户收到后把10.1.1.2 mac 缓存下.
#01 提示信息:
网络层对应的是IP地址,是跨网段使用的;
链路层地址对应的是MAC地址,是物理地址,是在局域网内部使用
的;
MAC地址就好比自己的小名一样,只有本地局域网有效
3. 命令使用
##基本语法
arp (命令) 管理系统的arp缓存。ip<< >> mac
arp: 显示所有的表项。
-d address: 删除一个arp表项。
-a 使用bsd形式输出。(没有固定的列)
-n 使用数字形式显示ip地址,而不是默认的主机名
#01 查看arp 信息
[root@centos_4c8g ~]# arp -a
Address HWtype HWaddress Flags Mask Iface
192.168.5.241 ether f8:bc:12:45:86:ac C ens3
192.168.5.15 ether 52:54:00:a8:f8:ac C ens3
gateway ether 58:25:75:bc:cb:87 C ens3
172.17.0.2 ether 02:42:ac:11:00:02 C docker0
192.168.5.8 ether 52:54:00:2e:b5:46 C ens3
4. arp 欺骗
ARP 欺骗是一种以 ARP 地址解析协议为基础的一种网络攻击方式
在讲 ARP 欺骗之前我们先来了解一下正常情况下一台主机是如何通过路由器上网的:
![image-20230728113724173](/Users/ningcaichen/04-个人文档/01-Markdown/man-文档总计/1-Linux核心基础入门/Linux 网络管理.assets/image-20230728113724173.png)
如上图, 我们以 A 主机 ping 8.8.8.8 为例:
- 主机 A 上执行
ping 8.8.8.8
- 主机 A 准备根据默认路由将数据包发送给
192.168.0.1
, 但是最开始的时候主机 A 不知道192.168.0.1
的 Mac 地址, 所以主机 A 广播一条 ARP Request, 询问192.168.0.1
的 Mac 地址是什么 - 路由器收到该 ARP 请求, 发现自己是
192.168.0.1
于是向主机 A 回复一条 ARP Reply, 告诉主机 A192.168.0.1
的 Mac 地址是 xxxGW. - 主机 A 收到该 ARP Reply, 并使用该 Reply 中的 MAC 地址封一个 ICMP Request 包, 然后将包发出去
- 路由器收到该 ICMP 包, 发现目标 IP 是公网 IP, 便将该包放送到公网, 公网返回 ICMP Reply 给路由器
- 路由器准备将 ICMP Reply 发送给
192.168.0.100
, 但是同第2步, 路由器最开始的时候也不知道192.168.0.100
的 Mac 地址是多少, 所以路由器会广播一条 ARP Request, 询问192.168.0.100
的 Mac 地址是什么 - 主机 A 收到 ARP Request, 发现自己是
192.168.0.100
, 于是向路由器回复 ARP Reply, 告诉路由器192.168.0.100
的 Mac 地址是 xxxA. - 路由器收到 ARP Reply, 并使用该 Reply 中的 MAC 地址将第5步收到 ICMP Reply 包重新封包, 并发送出去
- 主机 A 收到 ICMP Reply
至此, 正常的上网流程结束. 然后对照上面的流程回答下面两个问题:
- 如果主机 B 无脑的向主机 A 发送 ARP Reply, 告诉 A
192.168.0.1
的 MAC 是 xxxB, 会发生什么? - 如果主机 B 无脑的向路由器 GW 发送 ARP Reply, 告诉 GW
192.168.0.100
的 MAC 是 xxxB, 会发生什么?
答案如下图
![image-20230728113826654](/Users/ningcaichen/04-个人文档/01-Markdown/man-文档总计/1-Linux核心基础入门/Linux 网络管理.assets/image-20230728113826654.png)
如果主机 B 做了上面说的两件事的话, 那么主机 A 访问网络的所有数据都会先经过主机 B, 并且回来的数据也都会经过 B, 至此, 整个 ARP 欺骗完成.
于实际操作, 在自己的机器上安装一个 arpspoof
工具便可以, Ubuntu 下可以直接使用如下命令安装:
apt install dsniff
安装好之后先打开 IP 转发:
echo 1 > /proc/sys/net/ipv4/ip_forward
然后使用 arpspoof
命令进行欺骗, 命令使用方法如下:
arpspoof -i <网卡名> -t <欺骗的目标> <我是谁>
比如上面我举得例子, 分别开两个终端:
终端1, 欺骗主机 A 我是网关
arpspoof -i eth0 -t 192.168.0.100 192.168.0.1
终端2, 欺骗网关我是主机 A
arpspoof -i eth0 -t 192.168.0.1 192.168.0.100
欺骗成功之后可以通过抓包工具查看主机 A 所有的流量, 这里不再多说.
4.2 IP地址 详解
1. 什么是IP地址
#01 几个问题
我们为什么要使用逻辑地址(IP地址)来标识网络设备,而不采用网卡设备本身就有的世界唯一标识物理地址(MAC地址)呢?
IP地址的使用到底是基于什么考虑呢?
#02 答案
IP地址可唯一标识IP网络中的每台设备的所在位置,这才是它真正存在的意义,而MAC地址顶多能标识它是哪个厂家生产的,并不能标识它所处于网络架构的网络位置。
#03 IP地址的组成
每台主机(计算机、网络设备、外围设备)必须具有唯一的地址
IP地址由两部分组成
网络ID:
标识网络
每个网段分配一个网络ID
身份证 唯一性
主机 ID:
标识单个主机
由组织分配给各设备
2. IPv4地址格式
- 点分十进制
![image-20230728115023301](/Users/ningcaichen/04-个人文档/01-Markdown/man-文档总计/1-Linux核心基础入门/Linux 网络管理.assets/image-20230728115023301.png)
3. 十进制和二进制之间的转换
2^8 | 2^7 | 2^6 | 2^5 | 2^4 | 2^3 | 2^2 | 2^1 | 2^0 | |
---|---|---|---|---|---|---|---|---|---|
十进制 | 256 | 128 | 64 | 32 | 16 | 8 | 4 | 2 | 1 |
二进制 | 掩码 | 1000 0000 | 0100 0000 | 0010 0000 | 0001 0000 | 0000 1000 | 0000 0100 | 0000 0010 | 0000 00001 |
- 简述 口算
#01 十进制----> 2进制
0000 0110 6
0000 0011 3
解释下: 0000 0110 = 6
根据上方表格对于数字 4 +2 +0
#02 掩码计算可用IP公式 例如掩码 /28:
2^(32-24) -2 其中28为掩码 (-2 ,广播地址和0 两个IP 不可用 所有减2 二进制都为111111时 为广播地址)
32位减去网络位 等于主机位,2^(32-28) 2的次幂 为主机可用ip
- Linux ibase
- bc 计算器
- 二进制转十进制:ibase=10
- 十进制转二进制:obase=2
#01 我们ping一个IP地址
[[email protected] ~]# ping -w 3 192.168.30.1
[root@aliyun ~]# ping -w 4 172.17.0.1
PING 172.17.0.1 (172.17.0.1) 56(84) bytes of data.
64 bytes from 172.17.0.1: icmp_seq=1 ttl=64 time=0.041 ms
64 bytes from 172.17.0.1: icmp_seq=2 ttl=64 time=0.049 ms
64 bytes from 172.17.0.1: icmp_seq=3 ttl=64 time=0.053 ms
64 bytes from 172.17.0.1: icmp_seq=4 ttl=64 time=0.048 ms
64 bytes from 172.17.0.1: icmp_seq=5 ttl=64 time=0.050 ms
--- 172.17.0.1 ping statistics ---
5 packets transmitted, 5 received, 0% packet loss, time 3999ms
rtt min/avg/max/mdev = 0.041/0.048/0.053/0.006 ms
# 设置转换的进制:配个 bc
bc 计算器
二进制转十六进制:ibase=10
十六进制转二进制:obase=2
#02 紧接着我们将ip地址 172.17.0.1 转为二进制。
[root@aliyun ~]# echo "obase=2;172" | bc
10101100
[root@aliyun ~]# echo "obase=2;17" | bc
10001
[root@aliyun ~]# echo "obase=2;0" | bc
0
[root@aliyun ~]# echo "obase=2;1" | bc
1
解释下:计算器前面的 0默认不显示 自己补全8位即可
例如: 10001 = 00010001
0 = 00000000
1 = 00000001
#03 二进制转位十进制
[root@aliyun ~]# echo "ibase=2;00000001" | bc
1
[root@aliyun ~]# echo "ibase=2;00000000" | bc
0
[root@aliyun ~]# echo "ibase=2;00010001" | bc
17
[root@aliyun ~]# echo "ibase=2;10101100" | bc
172
#04 将以上十进制IP地址 一起转位二进制(了解即可)
[root@aliyun ~]# echo "ibase=2;10101100000100010000000000000001" |bc
2886795265
[root@aliyun ~]# ping 2886795265
PING 2886795265 (172.17.0.1) 56(84) bytes of data.
64 bytes from 172.17.0.1: icmp_seq=1 ttl=64 time=0.039 ms
64 bytes from 172.17.0.1: icmp_seq=2 ttl=64 time=0.047 ms
^C
--- 2886795265 ping statistics ---
2 packets transmitted, 2 received, 0% packet loss, time 999ms
rtt min/avg/max/mdev = 0.039/0.043/0.047/0.004 ms
解释下:使用上面计算的数字去ping,发现照样ping的地址是 172.17.0.1
4. IP地址分类
- 图示
![image-20230728133925728](/Users/ningcaichen/04-个人文档/01-Markdown/man-文档总计/1-Linux核心基础入门/Linux 网络管理.assets/image-20230728133925728.png)
类别 | 8bits | 8bits | 8bits | 8bits | IP 取值范围 |
---|---|---|---|---|---|
A 类型 | 网络位 | 1-126 | |||
B 类型 | 网络位 | 网络位 | 128-191 | ||
C 类型 | 网络位 | 网络位 | 网络位 | 192-223 | |
D 类型(多播) | 224-239 | ||||
E 类型(实验室地址) | research |
- 特殊类别
#01 简述下 D类
多播地址,或组播地址。
多播地址最高4位必须是1110,那么地址范围就是:"224.0.0.0"到"239.255.255.255"。
224.0.0.1特质所有主机。
#02 E类
实验室使用地址,即保留未使用,那么地址范围就是:"240.0.0.0"到"255.255.255.255"
- 特殊地址
0.0.0.0
0.0.0.0不是一个真正意义上的IP地址。它表示所有不清楚的主机和目的网络
255.255.255.255
限制广播地址。对本机来说,这个地址指本网段内(同一广播域)的所有主机
127.0.0.1~127.255.255.254
本机回环地址,主要用于测试。在传输介质上永远不应该出现目的地址为“127.0.0.1”的 数据包
224.0.0.0到239.255.255.255
组播地址,224.0.0.1特指所有主机,224.0.0.2特指所有路由器。224.0.0.5指OSPF 路由器,地址多用于一些特定的程序以及多媒体程序
169.254.x.x
如果Windows主机使用了DHCP自动分配IP地址,而又无法从DHCP服务器获取地址,系统会为主机分配这样地址
5. 公私网IP范围
- 公网IP范围
![image-20230728135112959](/Users/ningcaichen/04-个人文档/01-Markdown/man-文档总计/1-Linux核心基础入门/Linux 网络管理.assets/image-20230728135112959.png)
- 私网IP范围
![image-20230728134751402](/Users/ningcaichen/04-个人文档/01-Markdown/man-文档总计/1-Linux核心基础入门/Linux 网络管理.assets/image-20230728134751402.png)
六. DNS
6.1 dns解析定义
-
dns 域名解析器
-
DNS的用处:
- A记录:域名解析为IP
- 2.CNAME别名记录:给设置别名 cname
-
解析流程
![image-20230728141454880](/Users/ningcaichen/04-个人文档/01-Markdown/man-文档总计/1-Linux核心基础入门/Linux 网络管理.assets/image-20230728141454880.png)
dns域名解析服务 (域名解析为ip)
DNS的用处:
1.A记录:域名解析为IP
2.CNAME别名记录:给设置别名 cname
域名解析的过程
首先检查本地dns缓存 和hosts 配置文件内 有没有相对应的记录
然后 联系到本地dns 服务器-->> 根域名服务器-->>
从根域名服务器开始一层一层寻找,找到后返回 生成缓存,方便并加速下次访问
dig 查询解析DNS过程 (dig +域名 )
dig +trace www.baidu.com 显示详细过程
6.2 dns 相关命令
#01 dig命令 查询解析DNS过程 (dig +域名 )
[root@aliyun ~]# dig www.baidu.com
#02 nslookup命令 查询域名对应的ip (nslookup www.baidu.com
[root@aliyun ~]# nslookup ww.baidu.com
Server: 100.100.2.136
Address: 100.100.2.136#53
Non-authoritative answer:
ww.baidu.com canonical name = ps_other.a.shifen.com.
Name: ps_other.a.shifen.com
Address: 110.242.68.66
#03 host 查询域名对应的ip cname记录域名的别名
[root@aliyun ~]# host www.baidu.com
www.baidu.com is an alias for www.a.shifen.com.
www.a.shifen.com has address 112.80.248.75
www.a.shifen.com has address 112.80.248.76
#04 ping命令
[root@aliyun ~]# ping www.baidu.com
PING www.a.shifen.com (112.80.248.75) 56(84) bytes of data.
64 bytes from 112.80.248.75 (112.80.248.75): icmp_seq=1 ttl=52 time=7.79 ms
64 bytes from 112.80.248.75 (112.80.248.75): icmp_seq=2 ttl=52 time=7.81 ms
^C
--- www.a.shifen.com ping statistics ---
2 packets transmitted, 2 received, 0% packet loss, time 1000ms
rtt min/avg/max/mdev = 7.793/7.803/7.813/0.010 ms
6.3 dns配置文件
/etc/resolv.conf是DNS客户机的配置文件,用于设置DNS服务器的IP地址及DNS域名,还包含了主机的域名搜索顺序。该文件是由域名解析器(resolver,一个根据主机名解析IP地址的库)使用的配置文件。它的格式比较简单,每行以一个关键字开头,后接一个或多个由空格隔开的参数。
resolv.conf的关键字主要有4个,分别为:
- nameserver:定义DNS服务器的IP地址
- domain:定义本地域名
- search:定义域名的搜索列表
- sortlist:对返回的域名进行排序
注意:这里最主要的就是nameserver关键字,如果没有指定nameserver就找不到DNS服务,其它关键字是可选的。
1.1 参数解释
- nameserver
表明DNS服务器的IP地址。可以有很多行的nameserver,每一个带一个IP地址。在查询时就按nameserver在本文件中的顺序进行,且只有当第一个nameserver没有反应时才查询下面的nameserver。 - domain
声明主机的域名。很多程序用到它,如邮件系统;当为没有域名的主机进行DNS查询时,也要用到。如果没有域名,主机名将被使用,删除所有在第一个点( .)前面的内容。 - search
它的多个参数指明域名查询顺序。当要查询没有域名的主机,主机将在由search声明的域中分别查找。domain和search不能共存;如果同时存在,后面出现的将会被使用。 - sortlist
允许将得到域名结果进行特定的排序。它的参数为网络/掩码对,允许任意的排列顺序。
1.2 举例说明
cat /etc/resolv.conf
domain 51osos.com
search www.51osos.com 51osos.com
nameserver 202.102.192.68
nameserver 202.102.192.69
1)nameserver:表示域名解析时,使用该地址指定的主机为域名服务器,其中域名服务器是按照文件中出现的顺序来查询的,且只有当第一个nameserver没有反应时才查询下面的nameserver。
2)domain:声明主机的域名,很多程序会用到,如邮件系统。当为没有域名的主机进行DNS查询时,也要用到。如果没有域名,主机名将被使用,删除所有在第一个点(.)前面的内容。
3)search:它的多个参数指明域名查询顺序,当要查询没有域名的主机,主机将在由search声明的域中分别查找。
注意:search和domain不能共存,如果同时存在,后面出现的将会被使用。
4)sortlist:运行将得到域名结果进行特定的排序。它的参数为网络/掩码对,允许任意的排列顺序。
"search domainname.com"表示当提供了一个不包含完全域名的主机名时,在该主机名后添加domainname.com的后缀;"nameserver"表示解析域名时使用该地址指定的主机为域名服务器。其中域名服务器是按照文件中出现的顺序来查询的。其中domain和search可以同时存在,也可以只有一个,nameserver可以指定多个。
6.4 常见的dns服务器
#公共的DNS服务器地址
##阿里云
223.5.5.5
223.6.6.6
##114
114.114.114.114
114.114.115.115
##google
8.8.8.8
##云服务器自动设置, 物理服务器机房提供
##其他dns
https://dnsdaquan.com/#8.8.8.8
七. 网络配置
7.1 网络相关配置文件
1. 网卡配置文件
- /etc/sysconfig/network-scripts/ifcfg* 配置网卡信息
- /etc/sysconfig/network 配置主机名和网关
#01 定义
在/etc/sysconfig/network-scripts/目录下有不少文件,绝大部分都是脚本类的文件,但有一类ifcfg开头的文件为网卡配置文件(interface config),所有ifcfg开头的文件在启动网络服务的时候都会被加载读取,但具体的文件名ifcfg-XX的XX可以随意命名。
#02 配置文件每行含义
[root@oldboy-c7 ~]# cat /etc/sysconfig/networkscripts/ifcfg-ens32
TYPE=Ethernet #网络类型 互联网(以太网)
BOOTPROTO=none #网卡获取ip方式, dhcp(自动获取), none/static 固定ip地址
ONBOOT=yes #网卡开机的时候(或重启网络的时候)是否自启动
NAME=ens33 #网卡名字
DEVICE=ens33 #设备名称
UUID=b5ac98d2-6350-4aae-bdec-08455218d340 #设备统一识别符 #HWADDR=xxxx #Hard Ware
Addresss 硬件地址 mac地址
IPADDR=10.0.0.100 #ip地址
PREFIX=24 #子网掩码
NETMASK=255.255.255.0
GATEWAY=10.0.0.2 #默认网关 给可以访问公网网卡设置
DNS1=223.5.5.5 #配置当前系统使用的DNS服务的地址
DNS2=223.6.6.6
#03 重启网卡
#systemctl stop NetworkManager #nmtui nmcli(可以尝试研究)
#重启所有网卡
systemctl restart network #vi修改配置文件 然后restart
network 重启网卡生效
#重启某一块网卡
ifdown ens33 && ifup ens33
# 查询帮助
less /usr/share/doc/initscripts-9.49.53/sysconfig.txt
2. DNS配置文件
- /etc/resolv.conf
- /et/hosts
#01 /etc/hosts
[root@aliyun ~]# cat /etc/hosts
::1 localhost localhost.localdomain localhost6 localhost6.localdomain6
127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4
172.26.138.198 zhangyuzhou.cn
属于本地文件解析 ip 域名方式
#02 /etc/resolv.conf
[root@aliyun ~]# cat /etc/resolv.conf
; generated by /usr/sbin/dhclient-script
nameserver 100.100.2.136
nameserver 100.100.2.138
dns服务器配置文件
4. /etc/services
- 该文件中记录的是端口和服务的对应关系。
[root@aliyun ~]# grep '^ftp\|^ssh' /etc/services
ftp-data 20/tcp
ftp-data 20/udp
ftp 21/tcp
ftp 21/udp fsp fspd
ssh 22/tcp # The Secure Shell (SSH) Protocol
ssh 22/udp # The Secure Shell (SSH) Protocol
ftp-data 20/sctp # FTP
ftp 21/sctp # FTP
ssh 22/sctp # SSH
ftp-agent 574/tcp # FTP Software Agent System
ftp-agent 574/udp # FTP Software Agent System
sshell 614/tcp # SSLshell
sshell 614/udp # SSLshell
ftps-data 989/tcp # ftp protocol, data, over TLS/SSL
ftps-data 989/udp # ftp protocol, data, over TLS/SSL
ftps 990/tcp # ftp protocol, control, over TLS/SSL
ftps 990/udp # ftp protocol, control, over TLS/SSL
ssh-mgmt 17235/tcp # SSH Tectia Manager
ssh-mgmt 17235/udp # SSH Tectia Manager
7.2 网卡管理-增删改IP
- 增加临时IP
#01 增加IP地址 ifconfig
1) 临时增加IP
[root@aliyun ~]# ifconfig eth0:0 10.0.0.200/24 up
[root@aliyun ~]# ip a s eth0:0
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
link/ether 00:16:3e:12:d1:c0 brd ff:ff:ff:ff:ff:ff
inet 172.26.138.198/20 brd 172.26.143.255 scope global dynamic eth0
valid_lft 265678079sec preferred_lft 265678079sec
inet 10.0.0.200/24 brd 10.0.0.255 scope global eth0:0
valid_lft forever preferred_lft forever
inet6 fe80::216:3eff:fe12:d1c0/64 scope link
valid_lft forever preferred_lft forever
2)删除IP
[root@aliyun ~]# ip addr del 10.0.0.121/24 dev eth0 label eth0:1
删除ip, add换成 del
#02 方式二 ip addr
1) 增加临时IP
[root@aliyun ~]# ip addr add 10.0.0.121/24 dev eth0 label eth0:1
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
link/ether 00:16:3e:12:d1:c0 brd ff:ff:ff:ff:ff:ff
inet 172.26.138.198/20 brd 172.26.143.255 scope global dynamic eth0
valid_lft 265677949sec preferred_lft 265677949sec
inet 10.0.0.200/24 brd 10.0.0.255 scope global eth0:0
valid_lft forever preferred_lft forever
inet 10.0.0.121/24 scope global secondary eth0:1
2)删除IP
[root@aliyun ~]# ifconfig eth0:0 down
ifconfig eth0:0 down 删除eth:0 ip地址
*详细第九条会讲*
- 永久增加IP
#配置永久ip
#01 增加10.0.0.200ip 命名为 ens33:0
[root@oldboy-c7 ~]# cat /etc/sysconfig/networkscripts/ifcfg-ens33:0
NAME=ens33:0
DEVICE=ens33:0
IPADDR=10.0.0.200
PREFIX=24
#02 重启网络服务
#重启所有网卡
systemctl restart network #vi修改配置文件 然后restart
network 重启网卡生效
#重启某一块网卡
ifdown ens33 && ifup ens33
八. 防火墙
8.1 firewalld防火墙
#01 查看firewalld服务状态
systemctl status firewalld
出现 Active: active (running)高亮显示则表示是启动状态。
出现 Active: inactive (dead)灰色表示停止,看单词也行。
#02 查看firewalld的状态
firewall-cmd --state
#03 开启、重启、关闭firewalld.service服务
1)开启
service firewalld start
2)重启
service firewalld restart
3)关闭
service firewalld stop
#05 查看防火墙规则
firewall-cmd --list-all
###查询、开放、关闭端口
1)查询端口是否开放
firewall-cmd --query-port=8080/tcp
2)开放80端口
firewall-cmd --permanent --add-port=80/tcp
3)移除端口
firewall-cmd --permanent --remove-port=8080/tcp
4)重启防火墙(修改配置后要重启防火墙)
firewall-cmd --reload
##6、参数解释
1)firwall-cmd:是Linux提供的操作firewall的一个工具;
2)--permanent:表示设置为持久;
3)--add-port:标识添加的端口;
8.2 selinux
8.3 iptables
九. 网络常用命令
9.1 ifconfig
- 具体参数
ifconfig [ interface | -a ]
ifconfig interface options
选项说明:
interface:指定被操作的网络接口名,如eth0
up :激活指定的网络接口,如果在命令行中为网络接口分配了IP地址,则默认会up
down :将指定的接口设置为down状态
[-]arp :启用或禁用该接口上使用ARP协议,如"ifconfig eth0 -arp"
mtu N :设置指定接口的最大传输单元(MTU)
netmask :设置该接口的IP netmask,默认会采用A/B/C类地址的掩码位数
address :要分配给该接口的IP地址
- 案例
[root@xuexi ~]# ifconfig eth0:1 192.168.100.20 netmask 255.255.255.0 up # 添加IP地址
[root@xuexi ~]# ifconfig eth0:1 192.168.100.20/24 up # 也可使用CIDR格式掩码
[root@xuexi ~]# ifconfig eth1 up # 激活该网络接口
[root@xuexi ~]# ifconfig eth1 down # 临时down掉eth1接口
[root@xuexi ~]# ifconfig eth1 -arp # 抑制eth1上的arp
[root@xuexi ~]# ifconfig eth1 arp # 启用eth1上的arp
需要注意的是,ifconfig所有的配置都是应用于内核的,所以只会临时生效,重启网络服务后会立即失效。
对于slave地址,即别名地址,若要永久生效,应该建立对应的别名接口配置文件,如/ets/sysconfig/network-scripts/ifcfg-eth0:0,然后在该文件中的DEVICE关键字上给定eth0:0名称,该DEVICE项必须配置正确。
9.2 ifcfg
- 具体语法
ifcfg DEV [[add|del [ADDR[/LEN]] | stop]
add - add new address
del - delete address
stop - completely disable IP
- 简单使用
[root@xuexi ~]# ifcfg eth1:0 add 192.168.100.20/24 # 添加一个地址
[root@xuexi ~]# ifcfg eth1:0 del 192.168.100.20 # 删除一个地址
[root@xuexi ~]# ifcfg eth1 stop # 临时禁用eth1
9.3 hostname
- 用于设置主机名,但也有几个其它好用的功能。
hostname [-I] [-f] [-d] [-s] [hostname]
选项说明:
-I :获取该主机上所有非环回IP地址,该选项不依赖于主机名解析
-f,--fqdn :获取fqdn
-d,--domain:获取fqdn的域名部分,等价于命令dnsdomainname
-s,--short :获取fqdn的主机名部分,严格地说是获取第一个"."前的部分,例如"www.baidu.com"将获取为"www"
- 简单使用
使用-I选项可以直接获取该主机上的所有IP地址,包括别名地址,这在某些时候太方便了。
[root@xuexi ~]# hostname -I
192.168.100.54 172.16.10.10
hostname修改的主机名为临时生效,它修改的其实是/proc/sys/kernel/hostname文件。
[root@xuexi ~]# cat /proc/sys/kernel/hostname
xuexi.longshuai.com
9.4 route 网关路由
1. 定义
#01 路由解释
主机路由:直接指明到某台具体的主机怎么走,主机路由也就是所谓的静态路由
网络路由:指明某类网络怎么走
默认路由:不走主机路由的和网络路由的就走默认路由。操作系统上设置的默认路由一般也称为网关。
#02 优先级
若Linux上到某主机有多条路由可以选择,这时候会挑选优先级高的路由。在Linux中,路由条目的优先级确定方式是先匹配掩码位长度,再比较管理距离(比如metric)。也就是说,掩码位长的路由条目优先级一定比掩码位短的优先级高,所以主机路由的优先级最高,然后是直连网络(即同网段)的路由(也算是网络路由)次之,再是网络路由,最后才是默认路由。若路由条目的掩码长度相同,则比较节点之间的管理距离,管理距离短的生效。
#03 解释
route命令用于显示和管理路由表。当使用了add或del选项时,route命令将设置路由条目,否则route命令将显示路由表。
要显示路由表信息,只需简单的route -n即可,其中-n选项表示不解析主机名
2 简单使用
- 基本语法
#01 查看当前路由表信息
[root@xuexi ~]# route -n
Kernel IP routing table
Destination Gateway Genmask Flags Metric Ref Use Iface
0.0.0.0 192.168.100.2 0.0.0.0 UG 100 0 0 eth0
172.16.10.0 0.0.0.0 255.255.255.0 U 100 0 0 eth1
192.168.0.0 192.168.100.70 255.255.0.0 UG 0 0 0 eth0
192.168.100.0 0.0.0.0 255.255.255.0 U 100 0 0 eth0
192.168.100.78 0.0.0.0 255.255.255.255 UH 0 0 0 eth0
[](javascript:void(0)
标签:网络管理,ip,主机,192.168,地址,Linux,root,路由 From: https://www.cnblogs.com/saas-open/p/17616318.html