linux 网络
一、网络管理
1.1 网络文件位置和命名
该路径下都是跟网络相关的配置,对应的 配置文件我们可以认为是对应的网卡配置
通常centos6的网卡文件命名是eth0、centos7的命名规则是ens 或者是enp 等,对应的命名是多样性的,通常有几个网卡就有几个对应的配置文件
- 注意:
- 修改网络文件配置时,要注意首先把网络配置文件备份
- 网络文件排查问题时,要注意排查隐藏的swap网络文件
# etc是系统总配置的文件夹
# sysconfig 是系统配置文件夹
# network-scripts 是对应网络配置文件夹
ls /etc/sysconfig/network-scripts/
# 对于的网卡配置文件为
ifcfg-enp0s3
1.2 网络管理器
网络管理器(NetworkManger) 是一个动态的网络控制器与配置系统,它用于当网络设备可用时
保持设备连接和开启并激活,默认情况下centos7已安装网络管理器,并处于启用状态
- 查看网络管理程序的状态
下面显示的是 active状态,表示服务是正常的
systmectl status NetworkManger
- 查看网络子管理程序的状态
1.3 配置网络参数
TYPE=Ethernet
PROXY_METHOD=none
BROWSER_ONLY=no
BOOTPROTO=dhcp
DEFROUTE=yes
IPV4_FAILURE_FATAL=no
# 涉及到ipv6的配置都可以删除掉 没有用
IPV6INIT=yes
IPV6_AUTOCONF=yes
IPV6_DEFROUTE=yes
IPV6_FAILURE_FATAL=no
IPV6_ADDR_GEN_MODE=stable-privacy
NAME=enp0s3
UUID=dc0def99-b021-4713-8f2f-989492229022
DEVICE=enp0s3
ONBOOT=yes
-
NAME 网卡名称,该配置不要动
-
DEVICE 网卡设备名称 该配置不要动
-
UUID 网卡唯一编号 该配置不要动
-
ONBOOT 配置电脑开机是否启用网络
- no 开机时不启用网络 yes开机时启用网络
- 修改网络参数时,需要重启网络 systemctl start network
- 一切操作根据配置文件
- 图形界面的操作临时存在内存里,不会修改配置文件
-
BOOTPROTO 开机启动协议
- boot 为启动 protocol 为协议 综上为启动协议,主要是决定ip是手动获取还是自动获取
- dhcp 自动获取ip地址 (dhcp全称为动态主机配置协议,主要是为网络设备自动分配ip地址)
- none 手动获取ip地址
- boot 为启动 protocol 为协议 综上为启动协议,主要是决定ip是手动获取还是自动获取
-
IPADDR 手动配置ip地址,当BOOTPROTO=none时,IPADDR可以手动配置ip地址
- 配置ip地址时 要一起配置子网掩码来指明网段
-
NETMASK 子网掩码,跟ip地址是一对,都要配置
- 子网掩码是用来定义网段的 255.255.255.0 表示前面3部分是网段,后面是主机地址
- 如果子网掩码是 255.255.0.0 那么 表示后面两个0是 主机地址
-
DNS 域名解析系统
1.4 配置主机名
- 查看主机名 hostname
- 配置主机名
hostnamectl set-hostname 主机名称 修改方式1
vim /etc/hostname 修改方式2
init6/reboot 重启机器
1.5 网络测试工具
- 测试工具
- ip a 查看ip
- ifconfig 查看ip
- ip route 查看网关
- ip neigh 查看局域网内的其他网络
- ping 查看网络
- ping 127.0.0.1 ping自己查自己的网络是否有问题,相当于查自己是否有余额,ping自己很有意义
- ping otherip 查看其他网络是否相通
1.6 端口号
- 查看端口号
# ss表示网络连接状态 t表示tcp n表示数字 l表示罗列
ss -tnl 表示把所有的网络连接罗列出来
ss -tnl
1.7 初始化服务器
-
为服务器设置root密码
-
配置IP
- 配置IP地址
- 配置网关
- 配置DNS
-
配置YUM源
- 能上网 配置YUM仓库
- 不能上网 自动挂载光驱/阿里YUM
-
关闭防火墙
- systemctl stop firewalld 临时关闭防火墙,重启时又会开启
- systemctl disable firewalld stop之后再操作该步骤,防火墙真正关闭
- systemctl status firewalld 查卡防火墙的状态
disabled表示 开机不自启,inactive表示防火墙处于关闭状态 -
selinux 表示 另一道防火墙 也要关掉
- setenforce 0 表示临时关闭 重启也会打开
- vi /etc/sysconfig/selinux SELINUX=disabled 表示永久关闭
-
安装常用的程序
yum install -y lrzsz sysstat elinks wget net-tools bash-completion
二、网络模型
2.1 OSI 7层网络模型 (只停留在理论部分 没有真正实际用)
OSI 的全称是 Open System Interconnection 表示开放系统互联模型,该模型是由国际标准化组织 ISO指定,定义了不同计算机的互联标准,OSI的七层模型如下:
- 应用层
- 应用层 负责是 由应用程序产生原始数据,通过应用接受用户的原始数据
- 表示层
- 表示层 负责数据传输的格式,压缩 和加密的方式
- 会话层
- 全双工 能同时接收和发送 电话
- 半双工 同一时间只能接收或者发送 同一个时间点只能沿一个方向传输 对讲机
- 管理身份信息
- 传输层
- 分段传输 (提升传递效率,某段数据传输出错,可以保证数据迅速重传,假如不分段,数据传输错误,所有的数据都要重传)
- 重组 信息分段之后不是按顺序到达,需要重组数据包
- 网络层
- IP地址
- 路由 所谓路由 就是指明信息传递 大的方向
- 数据链路层
- 任何信息的送达不是直接传输到目标机器上,而是都分段的,传输到一个地址然后再传输到另一个局域地址,再传输到其他地址,就像送快递样,各自的人都只负责送到各自的目标地址
- MAC 地址
- 局域网段
- 物理层
- 传输介质/比特流 比如 电流 、光、无线信号、4G 5G
2.2 TCP/IP 5 层模型 传输控制协议/互联网协议
- TCP 全称是 Trancation Control Protocol /Internet Protocol 美国军方实践 总结出 来的理论
TCP/IP 模型的本质 就是 应用层、表示层、会话层 合并到一个层次了,都叫会话层 - 我们实际应用的都是 TCP/IP 5层模型
2.3 数据单元
为了方便交流,通信模型不同的模块对信息进行加工,并进行统一命名
- 应用层数据 APDU, 应用协议数据单元 ApplicationProtocolDataUnit – 应用协议数据单元,用户产生的原始数据叫APDU,通常是声音文字等原始数据。
- 传输层数据 SegmentDU 分段数据 SegmentDataUnit
- 网络层数据 packet DU 包数据
- 数据链路层数据 frame DU 帧数据
- 物理层数据 bit DU 比特数据
发送的过程 经过每一层 都是封装的过程,都需要经过必要的处理和携带必要的信息,才能经过下一层
接收信息的过程,经过每一层都是解封装的过程
数据封装的大致过程如下:
1、(应用层) 用户信息转换为数据,以便在网络上传输
2、(传输层) 数据转换为数据段,并在发送方和接收方之间建立一条可靠的连接
3、(网络层) 数据段转换为数据包或数据报,并在报头中放上逻辑地址,这样每个数据包都可以通过网络进行传输
4、(数据链路层) 数据包或数据报转换为帧,以便在本地网络中进行传输。在本地网段上,使用硬件地址唯一标识每一台主机
5、(物理层) 帧转换为比特流,并采用数字编码和时钟方案。
2.4 进制转换
- 二进制
二进制就是两个符号0和1,然后缝2进1
比如 8位制二进制表示 00000000
1 就是 00000001
2 00000010
3 000000011
4 000000100 依此类推
255以内的数字用二进制表示,可以快速用下面的公式 位权加减法
当出现一个数时,比如是253
首先公式分布如下
128 64 32 16 8 4 2 1
1 1 1 1 1 1 1 1
首先能拆出来128 所以 对应的位置是1
拆出64 1
拆出32 1
拆出 16 1
拆出8 1
拆出4 1
2不能拆除 0
拆除1 1
所以253的二进制表示是 11111101
-
十六进制
运算符号是 0-9 A(10) B(11) C(12) D(13) E(14) F(15) -
单位换算
0000 0000 8位数 1和0的变化 一共有256种,足够表示日常生活中的数字、符号、字母- 比特=bit=b= 1/0 表示二进制中的1和0
- 一个字节 就是一个符号的表示 需要8个比特来表示 因此 一个字节等于8个比特,字节=byte 1byte=8btit
- 1KB = 1024 B
- 1MB = 1024 KB
- 1GB = 1024 MB
- 1TB = 1024 TB
三、网络模型详解
3.1 物理层
- 通过介质传递
-
双绞线(也就是网线)
- 通过数字信号传播 通过高电压表示 1 低电压表示 0
-
光纤
- 光纤 是通过 光源传递信号 通常光源 是发光二极管
-
3.2 数据链路层
通常一个局域网内的通信,我们需要一个交换机(路由器),来处理网络的信号,比如在公司里我们签一跟网线,这个网线就直接接到交换机上,这是对外,对内的话,公司所有的主机的网线都可以接到交换机上,交换机会给每台机器 生成一个特有的网络传输通道,保证通信
-
地址
-MAC地址,全称 Media Access Control Address ,称为媒体访问控制地址,是网卡地址,网卡地址在全球是唯一的,是由12位16进制数字表示,前6位是厂商标识,后6位是硬件标识 -
帧封装
收到信息的MAC地址// 发送信息的MAC地址//发送的信息//CRC
目标MAC//源MAC//数据//CRC -
交换机工作原理
- 学习/广播/转发/更新
- 交换机会维护一张MAC地址/端口表
- 发送消息时,记录发送消息机器的MAC地址 学习
- 广播,交换机会对局域网各个机器 先发送消息去核实目标地址
- 转发 通过广播拿到目标地址后,则会在目标机器里建立专属网络通道进行通信
- 更新 如果两台机器300s 没有通信会把对应的机器从MAC地址表中擦除,提高后面的查询效率
- 学习/广播/转发/更新
-
VLAN (vittual local area network) 虚拟局域网
生产环境,交换网络是互联互通的,因为人员职能的关系,需要将网络隔离,所以创建vlan- 在同一个交换机创建隔离局域网,只有局域网内的机器才能相互通信
- vlan的范围为2-1024 0和1被征用了,通常一个部门一个vlan,vlan是用数字来分割的,一个数字一个vlan,创建valn的命令,vlan 10 ,表示创建了10号vlan
- 接口和vlan的关系 按照接口 归属到不同的vlan里面 F0/1~F0/10 vlan 10 ,哪个接口属于哪个vlan是自己定的
- 第一创建vlan,第二 将接口划分到对应的vlan
- 交换机上配置VLAN
enable # 前置命名
config t # 进入配置模式
vlan 10 # 创建局域网10
interface fastethernet0/1 # 进入接口1
switch access vlan10 # 把接口1 划分到vlan10
interface fastethernet0/2 # 进入接口2
switch access vlan10 # 把接口2 划分到vlan10
# 接口1的设备和接口2的设备是网络是互通的,1和2和其他的接口是不通的,相当于把1和2从VLAN1移到了VLAN10中
show vlan # 查看自己创建vlan
交换机默认会有个VLAN1,默认所有的设备都在VLAN1中,同一个VLAN下的设备才可以通信
- TRUNK
栈道技术,该技术主要的目的 是为了解决在不同的交换机上,每个交换机上有多个VLAN的情况下,两个交换机上连接的设备可以安全正常地通信
输入Trunk后,如果某个接口的设备向另一个交换机的某个接口的设备发送信息,Trunk技术会标记,信息来自哪个接口,可以发送到哪些接口,这样就避免搞错
Trunk实验步骤
1、准备两个交换机
2、在交换机1上,划分VLAN10 和VLAN20,主机配置IP地址
3、在交换机2上,划分VLAN10 和VLAN20,主机配置IP地址
4、连接2台交换机,在连接的接口上配置Trunk
5、相同VLAN的主机互通,不同VLAN的主机不可通信
交换机1和2的步骤完全一样,前提是1交换机和2交换机网线插入的接口都要一样
Swith1 步骤 交换机1的步骤
enable # 进入特权模式
config t # 进入编辑模式
vlan 10 # 创建 vlan10
vlan 20 # 创建vlan20
int f0/1 # 进入接口1 (简写模式)
sw ac vlan 10
int f0/2 # 进入接口2(简写模式)
sw ac vlan 20
Switch2 步骤 交换机2的步骤
enable # 进入特权模式
config t # 进入编辑模式
vlan 10 # 创建 vlan10
vlan 20 # 创建vlan20
int f0/1 # 进入接口1 (简写模式)
sw ac vlan 10
int f0/2 # 进入接口2(简写模式)
sw ac vlan 20
# 配置Trunk
两个交换机,被连接的接口是哪个,就在哪个接口配置Trunk
Switch1
int f0/3
swtich mode trunk
Switch2
inf f0/3
switch mode trunk
3.3 网络层
为什么需要网络层,如果只是靠交换机和主机互联,会造成广播域太大,效率缓慢,需要网络层来隔离和切割网络,网络层的核心目的是 分割广播域,实现网络层,通常是接路由器实现网络层,路由器的主要是职责是分割广播域,没有路由器分割,所有交换机相连的区域都只是一个广播域
ip地址:具有逻辑特性地址,加快和简化了寻址
-
IP地址
- 简介
- 32位二进制数,ip是用于主机在互联网中的标识,用4组十进制表示,IP地址每8位用 . 分割,用十进制表示
- 分类
- A 类地址 第一个十进制表示的数字范围(1-126)
- B类地址 (128-191)
- C类地址 (192-223)
- 私有IP分类 (局域内网地址,因为ip地址不够用,所以会有私有地址)
- A类 10.0.0.0 - 10.255.255.255 配 A类子网掩码
- B类 172.16.0.0 - 172.31.255.255 配B类子网掩码
- C类 192.168.0.0 - 192.168.255.255 配C类子网掩码
- 简介
-
子网掩码
- 32位二进制数字 又可以用 4位十进制数字表示
- 分类
- A 类 255.0.0.0 对应A类私有IP
- B类 255.255.0.0 对应B类私有IP
- C类 255.255.255.0 对应C类私有IP
- 把ip 和 子网掩码进行逻辑运算,得出是不是同一网络,能不能进行通信
- 运算步骤如下:
- ip地址转换位二进制
192.168.1.2 转换为二进制时 为 1100 0000.1010 1000.0000 0001.0000 0011 - 子网掩码转换为二进制
255.255.255.0 转换位二进制时位 1111 1111.1111 1111.1111 1111.0000 0000 - 逻辑运算,逻辑运算的规则是 对应的位进行运算,1和1结果得1 1和0结果得0
所以 192.168.1.2 和 255.255.255.0运算的结果 用十进制的数字表示就是 192.168.1.0,那么我们平时在设置ip时是不能设置ip为192.168.1.0 因为它是一个网段,可以设置ip 为192.168.1.1 - 192.168.1.255,通常我们把运算得出来的192.168.1.0,称为网络地址,表示一个网络段,代表一群地址。192.168.1.254 是属于192.168.1.0网络的 - 当子网掩码和 两个ip 逻辑运算得出来的结果相同时,说明两个ip在同一个网段,可以通信
- ip地址转换位二进制
- 在C类私有地址ip中,同一个网络,共用256个地址
- 192.168.1.0 - 192.169.1.255 其中 192.168.1.0是网络地址 主机不能用,192.168.1.255是广播地址,主机也不能用,因此实际能用的地址只有254个 192.168.1.1 -192.168.1.244
- 经验之谈,在配地址时一般不要配第1个 和最后1个ip地址 192.168.1.1 和192.168.1.254
- 如果 一个公司又260个人,用标准的C类地址是不可行的,因为标准的C类地址可以用的ip只有254个,为了解决这个问题可以用B类地址 172.16.0.0,超过6W人的局域网是 则用A类地址
-
路由器
两个不同网络段的通信 192.168.2.12 和 192.168.1.3 ,必须需要路由器,路由器的作用既是连接网络又是分割的- 在网络层通信时,需要封装数据,把目标ip 和 来源ip 封装到数据中
- 计算发现,访问的地址是其他网段。把这个数据包丢给网关(网关就是路由器)
- 路由器 看路由表, 路由器只看网段不看具体的ip地址
路由表 路由器中维护的路由条目的集合 路由器根据路由表做路径选择,路由表的形成由直连网段和非直连网段行成:直连网段,配置IP地址 端口UDP, 路由器只能在同一个网段通信,两台路由器之间连的网线对应的接口 一定是在同一个网段,要不然无法正常通信。
-
网关
出网的唯一接口,如果通信对象跟自己不在同一个网络必须要用到网关
路由器也需要ip 而通常网关的地址就是路由器的地址,通常是配最小的,所以一般配 第1个ip,比如192.168.2.1
192.168.2.1/24 24表示二进制1的长度 是子网掩码 255.255.255.0 的表示
172.16.1.1/16 16是子网掩码 255.255.0.0.的表示
10.0.0.0/8 是子网掩码 255.0.0.0 的表示配置成功
一台路由器
两台路由器