首页 > 系统相关 >Linux网络

Linux网络

时间:2022-10-15 16:36:57浏览次数:45  
标签:报文 链路 网络 接口 网卡 地址 Linux 数据包

一、Linux网络相关概念

1、网卡的命名规则

      centos6的网卡命名方式:它会根据情况有所改变而非唯一且固定,在centos6之前,网络接口使用连续号码命名:eth0,eth1等,当增加或删除网卡时,名称可能会发生变化

      centos7采用dmidecode采集命名方案,以此来得到主板信息,它可以实现网卡名字永久唯一(dmidecode这个命令可以采集有关硬件方面的信息)

      对网络设备的命名方式:

      1.如果Firmware(固件)或BIOS为主板上集成的设备提供的索引信息可用,则根据此索引进行命名,例:ifcfg-ens33

      2.如果Firmware (固件)或BIOS为PCI-E扩展槽所提供的索引信息可用,则根据此索引进行命名,例如:ifcfg-enp33

      3.如果硬件接口的物理位置信息可用,则根据此信息进行命名,例如:enp2s0

      上述均不可用时,则使用传统命名机制

扩展:

在centos7中,en表示:ethernet以太网,就是咱们现在使用的局域网

enX(X常见有下面3种类型)

s:热插拔网卡,usb之类,扩展槽的索引号

o:主板板载网卡,集成设备的设备索引号

p:独立网卡,PCI网卡

nnn(数字)表示:MAC地址+主板信息计算得出唯一的序列

在centos8当中网卡名称延续了ens的格式

二、网络配置命令

1、ifconfig

基础用法:在不带任何选项和参数执行ifconfig命令时,将显示当前主机中已启用的网络接口信息

[root@localhost ~]# ifconfig
ens33: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
#该接口已启用,支持广播,正在允许,支持组播 最大传输单元1500字节
inet 192.168.246.77 netmask 255.255.255.0 broadcast 192.168.246.255
inet6 fe80::e5b8:7444:11fc:c1c3 prefixlen 64 scopeid 0x20<link>
#IPV6地址 子网长度 作用域link表示仅该接口有效
ether 00:0c:29:3a:75:18 txqueuelen 1000 (Ethernet)
#mac地址 传输队列长度(传输缓存大小) 接口类型
RX packets 6393 bytes 438583 (428.3 KiB)
#接收 报文个数 总和字节数
RX errors 0 dropped 0 overruns 0 frame 0
#接收 错误 丢弃 溢出 冲突帧数
TX packets 1562 bytes 135632 (132.4 KiB)
#发送 报文个数 总字节数
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
#错误 丢失 溢出 载荷数 冲突数

lo: flags=73<UP,LOOPBACK,RUNNING> mtu 65536
inet 127.0.0.1 netmask 255.0.0.0
inet6 ::1 prefixlen 128 scopeid 0x10<host>
loop txqueuelen 1 (Local Loopback)
RX packets 222 bytes 19240 (18.7 KiB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 222 bytes 19240 (18.7 KiB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0

virbr0: flags=4099<UP,BROADCAST,MULTICAST> mtu 1500
inet 192.168.122.1 netmask 255.255.255.0 broadcast 192.168.122.255
ether 52:54:00:06:e1:30 txqueuelen 1000 (Ethernet)
RX packets 0 bytes 0 (0.0 B)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 0 bytes 0 (0.0 B)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0

常用格式:

ifconfig

只显示具体网卡的详细信息(无论该网卡是否启动)

ifconfig -a

表示显示所有网卡包括没有启动的网卡

ifconfig  网卡名称  [up/down]

表示开启或关闭网卡

ifconfig  ens33:0  地址

设置临时虚拟网卡

ifconfig -s

网络通讯情况

ip addr delete

删除临时ip

ip addr show

查看IP地址

Linux网络_链路

Linux网络_ip地址_02

2、永久修改网卡地址

vim查看网卡配置文件:[root@localhost ~]# vim /etc/sysconfig/network-scripts/ifcfg-ens33

Linux网络_服务器_03

红帽下修改网络地址:

Linux网络_链路_04

Linux网络_服务器_05

3、hostname

查看或设置当前主机名

hostname [主机名]   临时生效

永久修改主机名:

Linux网络_链路_06

永久修改当时不会生效,重启或重新打开一个终端才会改变

Linux网络_链路_07

4、route

查看或设置主机中路由表信息

route [-n]

-n :将路由记录中的地址信息显示为数字形式

Linux网络_服务器_08

路由表主要构成

Destination: 目标网络ID,表示可以到达的目标网络ID,0.0.0.0/0 表示所有未知网络,又称为默认路由,优先级最低

Genmask:目标网络对应的netmask

Iface: 到达对应网络,应该从当前主机哪个网卡发送出来

Gateway: 到达非直连的网络,将数据发送到临近(下一个)路由器的临近本主机的接口的IP地址,如果是直连网络,gateway是0.0.0.0

Metric: 开销cost,值越小,路由记录的优先级最高

常用命令:

route add -net 网段地址 gw IP地址

添加指定网段的路由记录

route del -net 网段地址

删除指定网段的路由记录

route add default gw IP地址

向路由表中添加默认网关记录

route del default gw IP地址

删除路由表中默认的网关记录

路由文件的配置

/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

5、netstat

查看网络连接情况netstat

netstat选项:

-a

显示主机中所有活动的网络连接信息(包括监听、非监听状态的服务端口)

-n

以数字的形式显示相关的主机地址、端口等信息

-t

查看 TCP(Transmission Control Protocol,传输控制协议)相关的信息

-p

显示与网络连接相关联的进程号、进程名称信息(该选项需要 root 权限)

-r

显示路由表信息

-l

显示处于监听(Listening)状态的网络连接及端口信息

-u

显示 UDP(User Datagram Protocol,用户数据报协议)协议相关的信息

6、ss(socket statistics)

ss命令:可以查看网络连接情况,主要用于获取socket统计信息,它可以显示和netstat命令类似的输出内容。但ss的优势在于它能够显示更多更详细的有关TCP和UDP连接状态的信息,而且比 netstat 更快速更高效,当服务器的socket连接数量变得非常大时,无论是使用netstat命令还是直接cat /proc/net/tcp,执行速度都会很慢。ss快的秘诀在于,它利用到了TCP协议栈中tcp_diag。tcp_diag是一个用于分析统计的模块,可以获得Linux内核中第一手的信息,这就确保了ss的快捷高效,ss命令是Linux CentOS 7中iproute软件包的一部分,默认已经安装。

命令格式: ss [选项]

选项

说明

-t

tcp协议相关

-u

udp协议相关

-w

裸套接字相关

-x

unix sock相关

-l

listen状态的连接

-a

所有

-n

数字格式

-p

相关的程序及PID

-e

扩展的信息

-m

内存用量

-o

计时器信息

-r

--resolve 把IP 解释为域名,把端口号解释为协议名称

7、ping

测试网络连通性,使用ICMP协议

命令格式:ping [选项] 目标主机

选项

说明

-c

发送多少个包

-w

等待多少秒

-t

无终止ping,一直ping

Linux网络_ip地址_09

8、traceroute

路由追踪

命令格式:traceroute  IP地址

Linux网络_链路_10

9、nslookup

域名解析

命令格式: nslookup  域名

Linux网络_链路_11

dig可以显示出更多详细信息

Linux网络_链路_12

域名解析配置文件


/etc/resolv.conf   保存的是DNS服务器的地址

Linux网络_ip地址_13

/etc/hosts文件   保存主机名与IP地址的映射记录

Linux网络_服务器_14

  • 默认情况下,系统首先从 hosts 文件查找解析记录
  • hosts 文件只对当前的主机有效
  • hosts 文件可减少 DNS 查询过程,从而加快访问速度

10、scp

远程同步

[root@fuck opt]#scp /opt/passwd [email protected]:/opt/passwd
命令字 本地文件地址 对方用户名@地址冒号对面地址
[root@fuck opt]#scp [email protected]:/opt/passwd /opt/
命令字 对方用户名@地址冒号对面地址 本地地址

11、多网卡绑定

将多块网卡绑定同一IP地址对外提供服务,可以实现高可用或者负载均衡。直接给两块网卡设置同一IP地址是不可以的。通过 bonding,虚拟一块网卡对外提供连接,物理网卡的被修改为相同的MAC地址

Bonding聚合链路工作模式

  • mod=0 ,即:(balance-rr) Round-robin policy(轮询)聚合口数据报文按包轮询从物理接口转发。负载均衡—所有链路处于负载均衡状态,轮询方式往每条链路发送报文这模式的特点增加了带宽,同时支持容错能力,当有链路出问题,会把流量切换到正常的链路上。性能问题—一个连接或者会话的数据包如果从不同的接口发出的话,中途再经过不同的链路,在客户端很有可能会出现数据包无序到达的问题,而无序到达的数据包需要重新要求被发送,这样网络的吞吐量就会下降。Bond0在大压力的网络传输下,性能增长的并不是很理想。需要交换机进行端口绑定。
  • mod=1,即: (active-backup) Active-backup policy(主-备份策略)只有Active状态的物理接口才转发数据报文。容错能力—只有一个slave是激活的(active)。也就是说同一时刻只有一个网卡处于工作状态,其他的slave都处于备份状态,只有在当前激活的slave故障后才有可能会变为激活的(active)。无负载均衡—此算法的优点是可以提供高网络连接的可用性,但是它的资源利用率较低,只有一个接口处于工作状态,在有 N 个网络接口的情况下,资源利用率为1/N。
  • mod=2,即:(balance-xor) XOR policy(平衡策略)聚合口数据报文按源目MAC、源目IP、源目端口进行异或HASH运算得到一个值,根据该值查找接口转发数据报文负载均衡—基于指定的传输HASH策略传输数据包。容错能力—这模式的特点增加了带宽,同时支持容错能力,当有链路出问题,会把流量切换到正常的链路上。性能问题—该模式将限定流量,以保证到达特定对端的流量总是从同一个接口上发出。既然目的地是通过MAC地址来决定的,因此该模式在“本地”网络配置下可以工作得很好。如果所有流量是通过单个路由器,由于只有一个网关,源和目标mac都固定了,那么这个算法算出的线路就一直是同一条,那么这种模式就没有多少意义了。需要交换机配置为port channel
  • mod=3,即:broadcast(广播策略)这种模式的特点是一个报文会复制两份往bond下的两个接口分别发送出去,当有对端交换机失效,感觉不到任何downtime,但此法过于浪费资源;不过这种模式有很好的容错机制。此模式适用于金融行业,因为他们需要高可靠性的网络,不允许出现任何问题。
  • mod=4,即:(802.3ad) IEEE 802.3ad Dynamic link aggregation(IEEE 802.3ad 动态链接聚合)在动态聚合模式下,聚合组内的成员端口上均启用LACP(链路汇聚控制协议)协议,其端口状态通过该协议自动进行维护。负载均衡—基于指定的传输HASH策略传输数据包。默认算法与blance-xor一样。容错能力—这模式的特点增加了带宽,同时支持容错能力,当有链路出问题,会把流量切换到正常的链路上。对比blance-xor,这种模式定期发送LACPDU报文维护链路聚合状态,保证链路质量。需要交换机支持LACP协议
  • mod=5,即:(balance-tlb) Adaptive transmit load balancing(适配器传输负载均衡)在每个物理接口上根据当前的负载(根据速度计算)分配外出流量。如果正在接收数据的物理接口口出故障了,另一个物理接口接管该故障物理口的MAC地址。需要ethtool支持获取每个slave的速率
  • mod=6,即:(balance-alb) Adaptive load balancing(适配器适应性负载均衡)该模式包含了balance-tlb模式,同时加上针对IPV4流量的接收负载均衡,而且不需要任何switch(交换机)的支持。接收负载均衡是通过ARP协商实现的。bonding驱动截获本机发送的ARP应答,并把源硬件地址改写为bond中某个物理接口的唯一硬件地址,从而使得不同的对端使用不同的硬件地址进行通信。mod=6与mod=0的区别:mod=6,先把eth0流量占满,再占eth1,….ethX;而mod=0的话,会发现2个口的流量都很稳定,基本一样的带宽。而mod=6,会发现第一个口流量很高,第2个口只占了小部分流量

常用的模式为0,1,3,6

mode1,5,6不需要交换机设置

mode0,2,3,4需要交换机设置

active-backup、balance-tlb 和 balance-alb 模式不需要交换机的任何特殊配置。其他绑定模式需

要配置交换机以便整合链接。如:Cisco 交换机需要在模式 0、2 和 3 中使用 EtherChannel,但在模

式4中需要 LACP和 EtherChannel

实际操作:

1.添加一个双网卡

Linux网络_ip地址_15

添加完成后在系统中设置参数,激活网卡

Linux网络_服务器_16

Linux网络_ip地址_17

Linux网络_ip地址_18

可以看到ens35网卡以及配置成功

2.创建bonding设备的配置文件

vim /etc/sysconfig/network-scripts/ifcfg-bond0

Linux网络_ip地址_19

#miimon指定链路监测时间间隔。如果miimnotallow=100,那么系统每100ms 监测一次链路连接状态,如果有一条线路不通就转入另一条线路

vim /etc/sysconfig/network-scripts/ifcfg-ens33

Linux网络_ip地址_20

/etc/sysconfig/network-scripts/ifcfg-ens35

Linux网络_服务器_21

[root@localhost network-scripts]# systemctl restart network

Linux网络_服务器_22

现在断开一块网卡,再次ping还是可以ping通

Linux网络_ip地址_23

Linux网络_服务器_24

两块网卡都是通过bond0通信,断了一块还是可以通信

Linux网络_服务器_25

3.nmcli实现bonding

#创建新连接static ,指定静态IP,不自动连接
nmcti con add con-name static   ifname eth0 autoconnect no type Ethernet
ipv4.addresses 172.25.X.10/24 ipv4.gateway   172.25.X.254

nmcli connection modify ens33 ipv4.addresses 192.168.91.100/2
nmcli connection up ens33

#添加bonding接口
nmcli con add type bond con-name mybond0 ifname bond0 mode active-backup ipv4.method manual ipv4.addresses 192.168.91.123/24
#添加从属接口
nmcli con add type bond-slave ifname ens33 master bond0
nmcli con add type bond-slave ifname ens36 master bond0
#注:如无为从属接口提供连接名,则该名称是接口名称加类型构成
#要启动绑定,则必须首先启动从属接口
nmcli con up bond-slave-ens33
nmcli con up bond-slave-ens36
#启动绑定
nmcli con up mybond0

12、tcpdump

      网络数据包截获分析工具。支持针对网络层、协议、主机、网络或端口的过滤。并提供and、or、not等逻辑语句帮助去除无用的信息。

      命令格式: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

不把主机的网络地址转换成名字

-N

不列出域名

-O

不将数据包编码最佳化

-p

不让网络界面进入混杂模式

-q

快速输出,仅列出少数的传输协议信息

-r

<数据包文件> 从指定的文件读取数据包数据

-s

<数据包大小> 设置每个数据包的大小

-S

 用绝对而非相对数值列出TCP关联数

-t

在每列倾倒资料上不显示时间戳记

-tt

在每列倾倒资料上显示未经格式化的时间戳记

-T

<数据包类型> 强制将表达方式所指定的数据包转译成设置的数据包类型

-v

详细显示指令执行过程

-vv

更详细显示指令执行过程

-x

用十六进制字码列出数据包资料

-w

<数据包文件> 把数据包数据写入指定的文件

[root@localhost ~]# tcpdump -D   #查看网卡

Linux网络_服务器_26

tcpdump   #不指定任何参数,监听第一块网卡上经过的数据包。主机上可能有不止一块网卡,所以经常需要指定网卡。

Linux网络_链路_27

tcpdump -i ens33    #指定查看ens33 网卡

Linux网络_服务器_28

tcpdump host 192.168.246.77 -i ens33    #监听特定主机,监听主机10.0.0.100 的通信包,注意:出、入的包都会被监听。

Linux网络_服务器_29

tcpdump src host hostname   #特定来源


tcpdump dst host hostname   #特定目标地址


tcpdump host hostname    #如果不指定src跟dst,那么来源或者目标是hostname的通信都会被监听

 

[root@localhost ~]#tcpdump ip host 192.168.246.77 and 192.168.246.87 -i ens33   #只抓取 特定主机之间的数据包.

[root@localhost ~]#tcpdump -i ens33 -nn icmp and src host 192.168.91.101 and dst host 192.168.91.100   #扩展

三、DHCP

1、概述

主机获取网络配置可以通过两种方式:

1.指定

2.动态获取

DHCP: Dynamic Host Configuration Protocol,动态主机配置协议

UDP协议,C/S模式,dhcp server: 67/udp,dhcpv4 client :68/udp, dhcpv6 client: 546/udp 主要用途:

  • 用于内部网络和网络服务供应商自动分配IP地址给用户
  • 用于内部网络管理员作为对所有电脑作集中管理的手段
  • 自动化安装系统

当有多个服务器,已客户机先收到谁的 offer报文为准

1.首先客户机加入到当前网络中是没有地址的,他会发送一个dhcp discover广播报文来寻找dhcp服务器

2.服务器接收到discover报文会回复offer(ip地址(合法地址地址中挑出),子网掩码,dns地址,网关等信息)

3.客户机收到offer以后会发送一个request的报文告诉服务器我收到了你的offer,并且我很满意你的地址,我就使用它了,不要再分配给别人了

4.当服务器收到request的报文以后好了解会发送一个ack报文确认消息告诉客户端你放心使用,不会再给别人分配你的ip地址

2、DHCP共有八种报文:

DHCP DISCOVER

客户端到服务器

DHCP OFFER

服务器到客户端

DHCP REQUEST

客户端到服务器

DHCPACK

服务器到客户端

DHCPNAK

服务器到客户端通知用户无法分配合适的IP地址

DHCP DECLINE

客户端到服务器,指示地址已被使用

DHCP RELEASE

客户端到服务器,放弃网络地地口取消剩余的租约时间

DHCP INFORM

客户端到服务器,客户端如果需要从DHCP服务器端获取更为单ffl的配置信息,则 发送Inform报文向服务器进行请求,极少用到

3、配置dhcp动态获取实验

1.安装dhcp

Linux网络_服务器_30

2.将本机的网段加入配置文件,调成仅主机模式

Linux网络_服务器_31

Linux网络_链路_32

配置完后修改本机网卡

Linux网络_服务器_33

Linux网络_链路_34

启动dhcp服务

Linux网络_ip地址_35

Linux网络_链路_36

3.使用windows验证,可以看到windows自动获取了ip地址,还有设置的dns服务器

Linux网络_链路_37

Linux网络_ip地址_38


标签:报文,链路,网络,接口,网卡,地址,Linux,数据包
From: https://blog.51cto.com/u_15768428/5759201

相关文章

  • Linux学习笔记 | Shell基本介绍
    (一)内核(Kernal)      内核,是一个​​操作系统​​的核心。是基于硬件的第一层软件扩充,提供操作系统的最基本的功能,是操作系统工作的基础,它负责管理系统的进程、​​......
  • 网络通信——HTTP接口访问——移动数据格式JSON
        网络通信的交互数据格式有两大类,分别是JSON和XML。对于App来说,基本采用JSON格式与服务器通信。JSON相比XML的优势主要有两个:(1)手机流量很贵,表达同样的信息,J......
  • linux Traffic Control Configuration example 限速 配置示例 进出双方向
    linuxTrafficControlConfigurationexample限速配置示例进出双方向背景公司的公网是没有限速设备的,导致公网带宽相互抢占,奈何有个大佬业务线说自己的产品架构脆弱,经......
  • Linux apache服务实现URL重定向配置
    URL重定向,  即将httpd请求的URL转发至另一个的URL实现URL重定向的指令:Redirect[status]URL-pathURLstatus状态:permanent:返回永久重定向状态码301,此重定向......
  • Linux扫描本网络内的主机
    1.安装arp-scan2.输入下面命令sudoarp-scan-Iwan-l参数:-Ior--interface:(大写的 i )选择的网络接口,上面的命令中接口名称为wan,具体网络接口名字可用......
  • Linux的基础命令
    1.pwd 查看当前所在位置 2.ls查看当前所有文件和目录,非隐藏文件ls的参数以及作用,参数之间可以一起使用ls -a   查看所有文件,包括隐藏文件ls ......
  • LINUX第四章——并发编程
    第四章Linux学习笔记并行计算顺序算法与并行计算并行性和并发性并行算法只识别可并行执行的任务。CPU系统中,并发性是通过多任务处理来实现的线程线程的原理某进程同......
  • Linux apache实现https的配置
    http协议:  应用层协议,传输层使用TCP协议,默认使用80端口。http协议主要是用来是实现万维网站点资源的访问。ssl(安全套接层)协议:  全称为SecureSocketsLayer。工作与......
  • 大学生视角下的Linux学习之路
    如今的软件开发行业可谓是众星云集,要在这个行业干出一番大事业是比较艰难的。回看如今的服务器端市场,没有以前那些服务器一哥的存在了,更多的变成了Linux系统的身影。移动......
  • linux-shell与环境变量配置
    之前的时候一直用win,环境变量的配置直接图形化,简单易上手,几乎0难度。虽然偶尔用linux也会去配置环境变量,但不懂那些命令是干什么的,每次都是网上搜,然后直接复制命令。直到最......