不得不会的网络
- 一、查看网络配置
- 1.1 显示网络接口的信息 ifconfig命令
- 1.1.1 查看所有已启用的网络接口信息
- 1.1.2 查看所有接口(包括未启用)
- 1.1.3 查看指定网络接口
- 1.2 显示当前主机名------hostname命令
- 1.3 查看主机中的路由表信息------route命令
- 1.4 查看网络连接情况
- 1.4.1 netstat命令(不推荐使用)
- 1.4.2 ss命令(重要)
- 1.5 什么是DNS
- 二、配置Linux网络
- 2.1 配置网络接口------ifconfig命令
- 2.1.1 临时修改网卡属性
- 2.1.2 开启/关闭网络接口
- 2.1.3 添加虚拟网卡
- 2.2 修改主机名------hostname
- 2.2.1 临时修改主机名
- 2.2.2 永久修改主机名
- 2.3 设置主机中路由表信息------route
- 三、测试网络
- 3.1测试网络连通性------ping命令
- 3.2 路由追踪------traceroute命令
- 3.3 测试域名解析------nslookup命令
- 四、永久修改网络相关配置文件
- 4.1 网络接口配置文件
- 4.2 域名解析配置文件
- 4.3 添加新网卡
- 五、多网卡绑定bond
- 5.1 什么是bond
- 5.2 Bonding 聚合链路工作模式
- 5.2 模拟实现bond mod=1
- 1)添加网卡
- 2)编辑网卡配置文件
- 3)查看bond0状态,看看是否配置成功
- 4)模拟网卡故障,观察bond0的状态
一、查看网络配置
将Linux主机接入到网络,需要配置网络相关设置
一般包括如下内容:
- 主机名
- IP/netmask
- 路由:默认网关
- DNS服务器
- 主DNS服务器
- 次DNS服务器
- 第三个DNS服务器
1.1 显示网络接口的信息 ifconfig命令
ifconfig
命令用于显示和配置网络接口的信息,包括IP地址、MAC地址、网络状态等。
1.1.1 查看所有已启用的网络接口信息
ifconfig #显示所有网络接口的信息
网络接口的信息的主要构成(相似的部分不再重复描述)
enss33 网络接口
flags=4163<UP, BROADCAST,RUNNING,MULTICAST> mtu 1500
#4163是网络接口的标志位 < >中的内容是网络接口的具体状态标志
#UP 表示接口已启用
#BROADCAST 表示接口支持广播通信
#RUNNING 表示接口当前正在运行
#MULTICAST 表示接口支持多播通信
#mtu 1500 表示接口的最大传输单元 (MTU) 设置为1500字节
inet 192.168.2.100 netmask 255.255.255.0 broadcast 192.168.2.255
#inet 主机的IP地址 主机的子网掩码 广播地址
inet6 fe80::895a:2d5c:5ebe:ddb8 prefixlen 64 scopeid 0x20<link>
#inet6 fe80::895a:2d5c:5ebe:ddb8是IPv6地址
#prefixlen 64表示IPv6地址的前缀长度为64位
#scopeid 0x20<link> 示地址的作用域标识为链路本地(link-local)范围。“0x20” 是表示链路本地地址作用域的十六进制值
ether 00:0c:29:0a:74:7d txqueuelen 1000 (Ethernet)
#ether 00:0c:29:0a:74:7d 表示MAC 地址
#txqueuelen 1000 表示发送队列长度或缓冲区的大小为 1000。这是指在发送数据时,以太网接口的缓冲区可以容纳的数据包数量
#(Ethernet) 表示这是一个以太网接口
RX packets 3434 bytes 301796 (294.7 KiB)
#RX packets表示接收数据包的数量
RX errors 0 dropped 0 overruns 0 frame 0
#RX errors 0 表示接收错误的次数为 0,即没有发生任何接收错误
#dropped 0 表示接收丢弃的数据包数量为 0,即没有丢弃任何接收的数据包
#overruns 0 表示接收溢出的次数为 0,即没有发生接收缓冲区溢出
#frame 0 表示帧错误的数量为 0,即没有发生任何帧错误
TX packets 2705 bytes 881668 (861.0 KiB)
#TX packets是指已发送的数据包数量
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
#TX errors 表示发送错误的次数,即在发送过程中发生的错误次数
#dropped 表示被丢弃的发送数据包数量,即在发送过程中由于某些原因导致数据包被丢弃的次数
#overruns 表示发送过程中发生的溢出次数,即发送缓冲区溢出导致的错误次数
#carrier 表示载波错误的次数,即由于无法检测到载波信号而无法成功发送数据的错误次数
#collisions 表示冲突的次数,在以太网中指的是同时发送数据的两个或多个设备之间发生碰撞的次数
lo 特殊的接口,loopback(回环接口)
inet 127.0.0.1 netmask 255.0.0.0
#本地回环接口的IP地址是 127.0.0.1,网络掩码是 255.0.0.0,这是一种常见的配置用于本地主机内部的回环通信
inet6 ::1 prefixlen 128 scopeid 0x10<host>
#inet6 ::1 表示IPv6下的本地回环地址
#prefixlen 128 表示网络前缀的长度为 128,全部地址都被视为主机标识。
#scopeid 0x10<host> 表示该地址的作用域 ID 是 0x10,标识为主机(host)级别的地址
loop txqueuelen 1 (Local Loopback)
# 可缓存一个数据包 本地环回接口
virbr0 虚拟网络接口
ther 52:54:00:74:e7:a9 txqueuelen 1000 (Ethernet)
# MAC地址 可以缓存1000个数据包 以太网
1.1.2 查看所有接口(包括未启用)
ifcongfig -a #所有接口
1.1.3 查看指定网络接口
ifconfig 接口名 #显示指定网络接口的详细配置信息
#举例
ifconfig ens33 #显示网络接口ens33的详细信息
1.2 显示当前主机名------hostname命令
hostname命令用于显示或设置系统的主机名。主机名是标识网络上计算机的名称。
hostname #显示当前主机名
1.3 查看主机中的路由表信息------route命令
route
命令用于查看和操作系统的IP路由表。
该命令会打印出系统的路由表,包括目标网络、下一跳网关、子网掩码、接口等信息。
route #查看IP路由表
路由表主要构成
Destination 目标网络ID,表示可以到达的目标网络ID,0.0.0.0/0 表示所有未知网络,又称为默认路由,优先级最低
Gateway 到达非直连的网络,将数据发送到临近(下一个)路由器的临近本主机的接口的IP地址,如果是直连网络,gateway是0.0.0.0
Genmask 目标网络对应的netmask
Iface 到达对应网络,应该从当前主机哪个网卡发送出来
Metric 开销cost,值越小,路由记录的优先级最高
route -n #以数字形式显示
1.4 查看网络连接情况
1.4.1 netstat命令(不推荐使用)
netstat命令用于显示与网络相关的统计信息,包括连接状态、网络接口的活动情况、路由表等。
#命令格式
netstat [选项]
#常用选项:
-a 显示所有活动连接和监听端口
-n 直接使用IP地址和端口号显示网络连接,而不进行DNS解析
-o 显示与每个连接关联的进程ID
-p 显示与每个连接关联的程序名称或进程名称
-s 显示不同协议的统计信息,例如TCP、UDP和ICMP
1.4.2 ss命令(重要)
ss命令也用于显示系统网络连接和相关统计信息。
相较于netstat,提供了更快速和更详细的统计数据。
#命令格式
ss [选项]
#常用选项
-t: tcp协议相关
-u: udp协议相关
-a: 所有
-n: 数字格式
-p: 相关的程序及PID
-w: 裸套接字相关
-x:unix sock相关
-l: listen状态的连接
-e: 扩展的信息
-m:内存用量
-o:计时器信息
-r: --resolve 把 IP 解释为域名,把端口号解释为协议名称
# 一般用 ss -natp
如何查看此系统中的514端口是否开启?
ss -natp | grep 514 #查找端口号为514的TCP和UDP连接信息,以及与该端口相关的进程信息
1.5 什么是DNS
域名解析服务(Domain Name System, DNS)是负责将域名(如example.com)转换为对应的IP地址(如192.0.2.1)的服务。
域名解析服务的主要功能:
-
域名解析:将域名解析为对应的IP地址
-
反向解析:提供IP地址到域名的解析服务
-
域名别名和重定向:域名解析服务支持域名别名和重定向功能。通过配置域名解析记录,可以将一个域名重定向到另一个域名,或者为一个域名设置多个别名。
二、配置Linux网络
2.1 配置网络接口------ifconfig命令
2.1.1 临时修改网卡属性
ifconfig ens33 192.168.2.122 255.255.255.0 #临时修改IP地址和子网掩码
2.1.2 开启/关闭网络接口
ifconfig 网卡名 up/down #开启/关闭 网络接口
ifconfig lo down #关闭回环接口
ifconfig lo up #开启回环接口
2.1.3 添加虚拟网卡
可以添加虚拟网卡 用于测试环境
ifconfig ens33:0 10.0.0.6 255.255.255.0
# 添加虚拟网卡ens33:0 IP为10.0.0.6 子网掩码为255.255.255.0
ifconfig enss33:0 down #关闭虚拟网卡
2.2 修改主机名------hostname
2.2.1 临时修改主机名
hostname x #将主机名临时修改为x,x为自定义,重启后修改失效
2.2.2 永久修改主机名
hostnamectl set-hostname x #将主机名永久修改为x,x为自定义,重启依旧生效
2.3 设置主机中路由表信息------route
添加静态路由规则:
route add -net 目标网段地址 子网掩码 gw 下一跳IP地址 [下一跳网关 下一跳IP地址的端口]
route add -net 192.168.100.0/24 gw 192.168.91.2
#给192.168.100.0/24段添加静态路由
删除现有的路由规则:
route del -net 目标网段 子网掩码 [gw 下一跳IP地址]
route del -net 192.168.100.0/24
#删除添加路由
向路由表中添加默认网关记录
route add default gw IP地址
route add default gw 192.168.91.2
#添加默认路由
删除路由表中默认的网关记录
route del default gw IP地址
三、测试网络
3.1测试网络连通性------ping命令
#命令格式
ping [选项] 目标主机 #检查能否连通目标主机,默认是长ping
#常用选项
-c n 代表发n个包,n为具体数字
-w 2 表示 如果ping不通,2秒后返回(立刻返回)
-W 2 表示超时等待,会继续ping ,2秒后返回(不会立刻返回)
#超时等待时间为一直ping不通,持续多久结束
#ping使用icmp协议
3.2 路由追踪------traceroute命令
traceroute
用于跟踪 IP 数据包从源地址到目标地址的路径。
#命令格式
traceroute [选项] 目标地址
#常用的选项
-I 使用 ICMP Echo 请求数据包(默认),常用于 IPv4
-T 使用 TCP SYN 数据包进行跟踪,常用于 IPv6
-U 使用 UDP 数据包进行跟踪
traceroute www.baidu.com #域名
3.3 测试域名解析------nslookup命令
nslookup
命令用于查询域名系统(DNS)记录,以获取与特定主机名或域名相关的 IP 地址、MX 记录、NS 记录等信息。
#命令格式
nslookup [选项] [域名]
#常用的选项
-type=记录类型 指定查询的记录类型,如 A、MX、NS 等,默认为 A。
-server=DNS服务器 指定要查询的特定 DNS 服务器的 IP 地址。
四、永久修改网络相关配置文件
4.1 网络接口配置文件
网卡配置文件:/etc/sysconfig/network-scripts/ifcfg-ens33
vim /etc/sysconfig/network-scripts/ifcfg-ens33 #编辑网卡配置文件
#修改后需要重启网络服务,否则修改不生效
systemctl restart network #重启网络服务
DEVICE=ens33 设置网卡的名称为ens33
BOOTPROTO=static 设置启动协议,static/dhcp
ONBOOT=yes 设置网卡是否随系统启动而启用,yes/no
IPADDR= 设置静态IP地址。
NETMASK= 设置子网掩码。
GATEWAY= 设置默认网关。
DNS1= 设置首选DNS服务器。
DNS2= 设置备用DNS服务器。
4.2 域名解析配置文件
/etc/resolv.conf
文件,保存本机需要使用的DNS服务器的IP地址
cat /etc/resolv.conf #查看配置文件
4.3 添加新网卡
思路:
用虚拟机模拟添加
配置新网卡
测试连通性
1)添加新的网络适配器
2)查看已启用的网络接口,是否添加成功
ifconfig
3)配置新网卡
cp /etc/sysconfig/network-scripts/ifcfg-ens33 /etc/sysconfig/network-scripts/ifcfg-ens36
#将已有的网卡配置导入,只需要修改
systemctl restart network #重启网络服务,应用修改
4)测试新网卡是否能使用
ifconfig ens36 #查看新网卡的信息
ping 192.168.2.111 #检测网络连通性
五、多网卡绑定bond
5.1 什么是bond
bond(网络绑定或链路聚合),将多个网络接口绑定在一起,形成一个虚拟的网络接口。
bond技术可以增加带宽、提高连接可靠性和实现负载均衡。
5.2 Bonding 聚合链路工作模式
-
模式 0 - 轮询 mod=0
数据包轮流通过不同的网络接口发送,实现负载均衡。 -
模式 1-主备 mod=1
一个接口正常工作,其他备用接口处于待命状态。当主接口故障时,备份接口接管工作。 -
模式 2 - XOR mod=2
根据源和目标 MAC 地址,对接口进行散列,以选择发送数据包的接口。提供负载均衡和 failover 功能。 -
模式三 - broadcast(广播策略) mod=3
一个报文会复制两份往bond下的两个接口分别发送出去,当有对端交换机失效,感觉不到任何downtime,有很好的容错机制。 -
模式 4 - 动态链路聚合 mod=4
根据网络交换机的 LACP 协议进行动态链路聚合,实现负载均衡和故障切换。 -
模式 5 - 传输负载均衡 mod =5
按照发送数据包的一组源和目标 IP 地址进行散列,实现负载均衡。 -
模式 6 - 自适应负载均衡 mod=6
该模式使用转发散列算法基于源和目标 IP 地址、源和目标端口号,以及传输协议进行数据包散列。这样,不同的数据流可以通过不同的接口进行传输,实现负载均衡。此模式能够根据数据流的特性进行动态调整,并提供较好的负载均衡效果
5.2 模拟实现bond mod=1
1)添加网卡
ifconfig #查看是否添加成功新网卡
2)编辑网卡配置文件
cd /etc/sysconfig/network-scripts #切换到配置文件所在目录 方便编辑
##添加ifcfg-bond0文件##
vim ifcfg-bond0
NAME=bond0
TYPE=bond #用bond技术
DEVICE=bond0
BOOTPROTO=none
IPADDR=192.168.91.22
NETMASK=255.255.255.0
GATEWAY=192.168.91.2
BONDING_OPTS="mode=1 miimon=100 fail_over_mac=1"
#mode=1:指定了绑定模式为模式 1,即主备模式(Active-Backup)
#miimon=100:设置了监测接口状态的时间间隔为 100 毫秒。这个参数用于检测接口的连通性,以便在发生故障时快速切换到备用接口。
#fail_over_mac=1:启用了 MAC 地址切换功能。当主接口发生故障时,备用接口会接管其 MAC 地址,以便在网络中保持连通性
##修改ifcfg-ens33文件##
vim ifcfg-ens33
BOOTPROTO=static #none=static
NAME=ens33
DEVICE=ens33
ONBOOT=yes
MASTER=bond0 #主网卡为bond0
SLAVE=yes #自身为备网卡
cp -p ifcfg-ens33 ifcfg-ens36 #套用ens33的格式,也可以直接创建ens36
##修改ifcfg-ens36文件##
vim ifcfg-ens36
NAME=ens36
DEVICE=ens36
BOOTPROTO=none #none=static
MASTER=bond0 #主网卡为bond0
SLAVE=yes #备网卡
PNBOOT=yes
systemctl restart network #重启网络服务,应用修改
3)查看bond0状态,看看是否配置成功
cat /proc/net/bonding/bond0 #查看bond0状态
4)模拟网卡故障,观察bond0的状态
ifconfig ens33 down #关闭ens33接口 模拟出错
cat /proc/net/bonding/bond0 #查看bond0状态