CentOS 网络管理命令

一、IP命令网络配置

  Linux的 ip 命令和 ifconfig 类似,但前者功能更强大,并旨在取代后者。使用ip命令,只需一个命令,就能很轻松地执行一些网络管理任务。ifconfig是net-tools中已被废弃使用的一个命令,许多年前就已经没有维护了。Linux系统提供iproute2工具用于替代一些常用的net-tools命令,iproute2套件里提供了许多增强功能的命令,ip命令即是其中之一,ip命令支持tab补全。

1、ip常用命令格式如下

ip [ OPTIONS ] OBJECT { COMMAND | help }

【选项可选内容】
OPTIONS={ -V[ersion] | -s[tatistics] | -d[etails] | -r[esolve] | -h[uman-readable] | -iec | -f[amily] { inet | inet6 | ipx | dnet | link } | -o[neline] | -t[imestamp] | -b[atch] [filename] | -rc[vbuf] [size] }
常用选项的取值含义如下:
-V,-Version						:显示指令版本信息
-s,-stats,statistics			:输出详细信息
-h,-human,-human-readable		:输出人类可读的统计信息和后缀
-o,-oneline						:将每条记录输出到一行,用‘\’字符替换换行符

【对象可选内容】
OBJECT={ link | addr | addrlabel | route | rule | neigh | ntable | tunnel | maddr | mroute | mrule | monitor | xfrm | token }
常用对象的取值含义如下:
link				:网络设备
address				:设备上的协议(IP或IPv6)地址
addrlabel			:协议地址选择的标签配置
route				:路由表条目
rule				:路由策略数据库中的规则

2、使用实例

1、检查网卡信息

命令:ip addr
说明:显示网卡及配置的地址信息

1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
inet 127.0.0.1/8 scope host lo
valid_lft forever preferred_lft forever
inet6 ::1/128 scope host
valid_lft forever preferred_lft forever
2: enp0s3: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
link/ether 08:00:27:0b:cc:63 brd ff:ff:ff:ff:ff:ff
inet 192.168.1.56/24 brd 192.168.1.255 scope global noprefixroute dynamic enp0s3
valid_lft 81504sec preferred_lft 81504sec
inet6 2408:832e:ca9:5c40:f046:c71f:fa9:134b/64 scope global noprefixroute dynamic
valid_lft 174827sec preferred_lft 88427sec
inet6 fe80::c632:ffaa:370:ca71/64 scope link noprefixroute
valid_lft forever preferred_lft forever

输出内容详解:
首先这个系统有三个接口:lo和ens33,lo是环回接口,重点关注下ens33这个普通网络接口;下面在看看每个子项的含义:

<BROADCAST,MULTICAST,UP,LOWER_UP>:
BROADCAST表示该接口支持广播;MULTICAST表示该接口支持多播;
UP表示该网络接口已启用;LOWER_UP表示网络电缆已插入,设备已连接至网络;
mtu 1500										最大传输单位(数据包大小)为1,500字节
qdisc pfifo_fast								用于数据包排队
state UP										网络接口已激活
qlen 1000										传输队列长度
link/ether 08:00:27:0b:cc:63					接口的MAC(硬件)地址
brd ff:ff:ff:ff:ff:ff							广播地址
inet 192.168.1.56/24							IPv4地址(主机号/网络号)
brd 192.168.1.255								广播地址
scope global									全局有效
dynamic enp0s3									地址是动态分配的
valid_lft forever								IPv4地址的有效使用期限
preferred_lft forever							IPv4地址的首选生存期
inet6 fe80::2c8e:1de0:a862:14fd/64				IPv6地址
scope link										仅在此设备上有效
valid_lft forever								IPv6地址的有效使用期限
preferred_lft forever							IPv6地址的首选生存期

ip link 可以设定与设备(device)有关的相关设定,包括MTU以及该网络设备的MAC等,当然也可以启动(up)或关闭(down)某个网络设备。

1、显示出所有可用网络接口的列表(无论接口是否激活)
ip link

2、激活或停用网络接口
ip link set ens33 down #停用接口,可以用tab补全
ip link set ens33 up #激活接口

3、开启或关闭网卡混合模式(即网卡对流经它的任何数据都接收,不管目的是否是自己,一般用于网络分析)。
ip link set ens33 promisc on      #开启
ip link set ens33 promisc off     #关闭

4、设置网卡的MTU
ip link set ens33 mtu 1100

5、改变网络接口的MAC地址
ip link set dev ens33 address 08:00:27:75:2a:67

6、显示网络统计数据
ip -s link #所以网卡统计数据
ip -s link ls ens33 #单个网卡统计信息,这里可以添加多个 -s 会给你这个特定接口更详细的信息。特别是在排除网络连接故障时,这会非常有用。

【例如】

[root@test ~]# ip -s link
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN mode DEFAULT group default qlen 1000
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
RX: bytes packets errors dropped overrun mcast
0 0 0 0 0 0
TX: bytes packets errors dropped carrier collsns
0 0 0 0 0 0
2: enp0s3: <BROADCAST,MULTICAST> mtu 1100 qdisc pfifo_fast state DOWN mode DEFAULT group default qlen 1000
link/ether 08:00:27:0b:cc:63 brd ff:ff:ff:ff:ff:ff
RX: bytes packets errors dropped overrun mcast
993408 11778 0 0 0 6597
TX: bytes packets errors dropped carrier collsns
24237 228 0 0 0 0
----------------------------------  输出重点内容详解  -------------------------------------------
RX			:表示接收
TX			:表示发送
bytes		:接收/发送的字节数
packets		:接收/发送的包数
errors		:接收/发送的带有错误的包总数
dropped		:由于处理资源不足导致接收/发送的丢弃的包数
overrun		:因接收溢出(环形缓冲区)导致丢失的包;通常如果接口溢出,则表示内核中存在严重问题,或者说服务器上该网络设备的处理设备太慢
mcast		:接收到的多播包数
carrier		:因数据链路错误导致发送失败的包数
collsns		:因在网络上发送冲突而导致的失败数

4、ARP地址解析协议(ARP)

  用于将一个IP地址转换成它对应的物理地址,也就是通常所说的MAC地址。使用ip命令的neigh或者neighbour选项,可以查看当前所在的局域网的其它设备的MAC地址。
1、显示ARP表
ip neigh

2、添加静态ARP项
ip neigh add 192.168.111.100 lladdr 00:0c:29:c0:5a:ef dev enp0s3

2删除静态ARP项
ip neigh del 192.168.111.100 dev enp0s3

5、ip address

如果说 ip link 是与OSI七层模型的第二层数据链路层有关的话,那么 ip address (ip addr)就是与第三层网络层有关的了。主要是在设定与 IP 有关的各项参数,包括 netmask, broadcast 等。

1、查看IP参数
ip addr show # show可以省略,addr是address的简写
ip addr show ens33 # 查看特定网络接口,这里的show不可以省略

2、为网络接口分配IPv4地址
ip addr add 10.0.0.1/24 dev ens33(dev 表示 device/设备)

3、为网络接口分配多个IPv4地址,一个网卡只能绑定一个IP地址(即IP与MAC绑定),但可以设置多个IP地址,作用就是可以连接多个网段(就是可以访问多个网段),但前提是这些网段物理层是连接在一起。
ip addr add 10.0.0.1/24 dev ens33
ip addr add 10.0.0.2/24 dev ens33

4、移除网络接口的IPv4地址
ip addr del 10.0.0.2/24 dev ens33

6、ip route 相关

ip rule 命令中包含 add、delete、show(或者list)等子命令。注意:策略路由(policy routing)不等于路由策略(rouing policy)。在某些情况下,我们不只是需要通过数据包的目的地址决定路由,可能还需要通过其他一些域:源地址、IP协议、传输层端口甚至数据包的负载。这就叫做:策略路由(policy routing)。用这种方法修改的默认路由只是临时有效的,在系统重启后所有的改动都会丢失。

路由配置格式:

ip route [add|del] [IP或网域] [via gateway] [dev 设备]
[add|del]:增加(add)或删除(del)路由。
[IP或网域]:目标网络或目标主机,可使用192.168.110.0/24之类的网域或者是单纯的IP 。
[via gateway]:从哪个gateway(下一跳ip地址)出去,这个ip地址必须与主机能二层互通。
[dev 网络接口]:所要设定的设备,例如ens33, ens34等。

1、查看IP路由表
ip route show        #show可以省略
ip route show | column -t   #如果感觉显示的太乱可以通过column -t命令让显示更友好
---------------------------------------------------------------------------------
[root@test ~]# ip route
default via 192.168.1.1 dev enp0s3 proto dhcp metric 100
10.10.10.0/24 dev enp0s8 proto kernel scope link src 10.10.10.71 metric 101
192.168.1.0/24 dev enp0s3 proto kernel scope link src 192.168.1.56 metric 100
192.168.12.0/24 via 192.168.1.254 dev enp0s3
192.168.100.0/24 via 192.168.1.1 dev enp0s3
192.168.101.0/24 via 192.168.1.1 dev enp0s3
192.168.122.0/24 dev virbr0 proto kernel scope link src 192.168.122.1
192.168.200.0/24 dev enp0s3 scope link
---------------------------------------------------------------------------------
上面每一行就是一条路由,或叫做路由条目,default字样的是默认路由(默认网关)
proto:此路由的路由协定,主要有redirect,kernel,boot,static,ra等,其中kernel是直接由核心判断自动设定,可以理解为直连路由。
scope:路由的范围,主要是link,是与本设备有关的直接连接。

Metric:为路由指定所需跃点数的整数值(范围是 1 ~ 9999),它用来在路由表里的多个路由中选择与转发包中的目标地址最为匹配的路由。所选的路由具有最少的跃点数。跃点数能够反映跃点的数量、路径的速度、路径可靠性、路径吞吐量以及管理属性。

Metric的值越小,优先级越高:如果两块网卡的Metric的值相同,就会出现抢占优先级继而网卡冲突,将会有一块网卡无法连接

修改Metric的值,修改网卡配置文件,如果没有就加上IPV4_ROUTE_METRIC参数,我这里配置的是eth0的优先级高

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

NAME=“eth1”
TYPE=“Ethernet”
BOOTPROTO=“none”
DEVICE=“eth1”
ONBOOT=“yes”
IPADDR=192.168.1.137
NETMASK=255.255.255.0
GATEWAY=192.168.1.1
IPV4_ROUTE_METRIC=100

修改完配置文件后需要重启网络服务才能生效,重启网络服务,配置的临时路由信息会失

2、添加路由

ip route add default via 192.168.1.2					# 添加默认路由,可以添加多个但是不要这样做,一个设备只添加一个默认路由,如果多个默认路由不能通过优先级区分,那么数据包会不知道从哪里走
ip route add 192.168.200.0/24 dev ens33					# 通过网络接口方式
ip route add 192.168.100.0/24 via 192.168.1.1			# 通过网关的方式,也就是下一跳,推荐这种方式
ip route add 192.168.101.0/24 via 192.168.1.1 dev ens33 可以两个信息都有

3、删除路由

ip route del default						# 删除默认路由,从后添加的让前删除
ip route del default via 192.168.1.2		# 删除指定的默认路由
ip route del 192.168.200.0/24				# 删除去往指定目的网络的路由

4、刷新路由表
ip route flush cache

5、清空路由表
ip route flush all   # 不要轻易用这个命令,用以前也要把路由信息备份下

二、ss命令Linux网络状态工具

  ss是Socket Statistics的缩写。顾名思义,ss命令可以用来获取socket统计信息,它可以显示和netstat类似的内容。但ss的优势在于它能够显示更多更详细的有关TCP和连接状态的信息,而且比netstat更快速更高效。ss命令是CentOS 7,Ubuntu16.04以后的版本中iproute2软件包的一部分,默认已经安装。
  当服务器的socket连接数量变得非常大时,无论是使用netstat命令还是直接cat /proc/net/tcp,执行速度都会很慢。可能你不会有切身的感受,但请相信我,当服务器维持的连接达到上万个的时候,使用netstat等于浪费 生命,而用ss才是节省时间。
  天下武功唯快不破。ss快的秘诀在于,它利用到了TCP协议栈中tcp_diag。tcp_diag是一个用于分析统计的模块,可以获得Linux 内核中第一手的信息,这就确保了ss的快捷高效。当然,如果你的系统中没有tcp_diag,ss也可以正常运行,只是效率会变得稍慢。(但仍然比 netstat要快。)

  • 命令格式

ss [参数]
ss [参数] [过滤]

命令参数:
----------------------------------------------------------------------
-h, --help 帮助信息
-V, --version 程序版本信息
-n, --numeric 不解析服务名称
-r, --resolve 解析主机名
-a, --all 显示所有套接字(sockets)
-l, --listening 显示监听状态的套接字(sockets)
-o, --options 显示计时器信息
-e, --extended 显示详细的套接字(sockets)信息
-m, --memory 显示套接字(socket)的内存使用情况
-p, --processes 显示使用套接字(socket)的进程
-i, --info 显示 TCP内部信息
-s, --summary 显示套接字(socket)使用概况
-4, --ipv4 仅显示IPv4的套接字(sockets)
-6, --ipv6 仅显示IPv6的套接字(sockets)
-0, --packet 显示 PACKET 套接字(socket)
-t, --tcp 仅显示 TCP套接字(sockets)
-u, --udp 仅显示 UCP套接字(sockets)
-d, --dccp 仅显示 DCCP套接字(sockets)
-w, --raw 仅显示 RAW套接字(sockets)
-x, --unix 仅显示 Unix套接字(sockets)
-f, --family=FAMILY 显示 FAMILY类型的套接字(sockets),FAMILY可选,支持 unix, inet, inet6, link, netlink
-A, --query=QUERY, --socket=QUERY

QUERY := {all|inet|tcp|udp|raw|unix|packet|netlink}[,QUERY]

-D, --diag=FILE 将原始TCP套接字(sockets)信息转储到文件
-F, --filter=FILE 从文件中都去过滤器信息

常用命令:ss -ntlp

三、nmcli命令

  RHEL7 与 CentOS 7 以上的版本中默认的网络服务由 NetworkManager 提供(简称NM),这是动态控制及配置网络的守护进程,它用于保持当前网络设备及连接处于工作状态,同时也支持传统的 ifcfg 类型的配置文件。NetworkManager 可以用于以下类型的连接:Ethernet,VLANS,Bridges,Bonds,Teams,Wi-Fi,mobile boradband(如移动3G)以及 IP-over-InfiniBand。 针对与这些网络类型,NetworkManager 可以配置他们的网络别名,IP 地址,静态路由,DNS,VPN连接以及很多其它的特殊参数。可以用命令行工具 nmcli 来控制 NetworkManager。nmcli的功能要比 ifconfig 强大、复杂的多。
  nmcli是命令行的NetworkManager工具,自动把配置写到/etc/sysconfig/network-scripts/目录下面。RHEL7 与 CentOS 7之前的网络管理是通过 ifcfg 文件配置管理接口(device),而现在是通过NetworkManager服务管理连接(connection)。一个接口(device)可以有多个连接(connection),但是同时只允许一个连接(connection)处于激活(active)状态。但有一个问题,重启服务器后默认激活那个连接,我没查到相关的资料,如果是服务器建议一个网口对于一个连接。
  简单理解就是,一个连接就是(connection)就是/etc/sysconfig/network-scripts/目录下的一个配置文件,接口(device)是物理设备,一个物理设备可以拥有多个配置文件,但只能有一个配置文件属于使用(active)状态;配置文件的生成与使用状态均由NetworkManager控制。当然,依旧支持ifcfg文件配置管理网络,但不推荐。

  • nmcli使用方法

  nmcli使用方法非常类似linux ip命令、cisco交换机命令,并且支持tab补全,也可在命令最后通过-h、--help、help查看帮助。在nmcli中有2个命令最为常用:

nmcli语法:
nmcli [ OPTIONS ] OBJECT { COMMAND | help }
   OBJECT和COMMAND可以用全称也可以用简称,最少可以只用一个字母,建议用头三个字母。OBJECT里面我们平时用的最多的就是connection和device,还有其他的选项在里暂时不介绍,这里需要简单区分一下connection和device。

1.1、nmcli connection

连接,偏重于逻辑设置,可理解为配置文件,相当于ifcfg-ethX。可以简写为nmcli c
多个connection可以应用到同一个device,但同一时间只能启用其中一个connection。这样的好处是针对一个网络接口,我们可以设置多个网络连接,比如静态IP和动态IP,再根据需要up相应connection,这样可以方便的切换网络配置,比如笔记本电脑移动办公,到不同的环境同一个网卡可以切换到不同的网络配置,配置好以后不需要每次都从新配置。

1.2、nmcli device

设备,是网络设备的接口,可理解为实际存在的网卡(包括物理网卡和虚拟网卡)。可以简写为nmcli d

在NM里,有2个维度:连接(connection)和设备(device),这是多对一的关系。想给某个网卡配ip,首先NM要能纳管这个网卡。设备里存在的网卡(即 nmcli d可以看到的),就是NM纳管的。接着,可以为一个设备配置多个连接(即 nmcli c可以看到的),每个连接可以理解为一个ifcfg配置文件。同一时刻,一个设备只能有一个连接活跃。可以通过 nmcli c up 连接名称 切换连接。

1.3、connection有2种状态:

▷ 活跃(带颜色字体):表示当前该connection生效
▷ 非活跃(正常字体):表示当前该connection不生效

1.4、device有4种常见状态:

▷ connected:已被NM纳管,并且当前有活跃的connection
▷ disconnected:已被NM纳管,但是当前没有活跃的connection
▷ unmanaged:未被NM纳管
▷ unavailable:不可用,NM无法纳管,通常出现于网卡link为down的时候(比如ip link set ethX down)

nmcli d connect ens33(设备)		# 连接指定物理网卡设备
nmcli d disconnect ens33(设备)	# 与指定物理网卡设备断开连接
nmcli c up 连接名称					# 启动连接 
nmcli c down 连接名称				# 停止连接
nmcli d reapply ens33	# 专门用于刷新connection,前提是网卡的device处于connected状态,否则会报错。
nmcli c reload			# 重载/etc/sysconfig/network-scripts/ 目录下的所有 ifcfg 连接配置文件

四、nmtui网络配置命令

  nmtui可提供一个文本界面来与NetworkManager交互用于配置网络。该工具包含在NetworkManager-tui子软件包中,通常不会默认随NetworkManager的安装而安装该子软件包,需要单独安装 NetworkManager-tui。

  nmtui命令会开启一个图形化的配置工具,通过GUI界面,可以编辑连接,启动连接,设置主机名。

img

1、编辑连接

img

2、添加连接

img

img

img

3、启用连接(激活连接)

注意

有多少个物理网络接口设备数量,就能同时启动并激活多少个连接,并且是一个物理设备对应一个激活的连接。

不允许一个物理网络接口设备同时服务多个激活的连接

img

4、设置系统主机名

img

参考

ip命令网络配置:https://www.cnblogs.com/pipci/p/12575601.html

nmcli命令概述:https://www.cnblogs.com/pipci/p/12562227.html

nmtui网络配置命令:https://www.cnblogs.com/pipci/p/12571469.html

RHEL/CentOS系列发行版网络配置介绍(network.service与NetworkManager的区别):https://www.cnblogs.com/pipci/p/12555854.html

基于RHEL8/CentOS8的网络IP配置详解:https://www.cnblogs.com/pipci/p/12547122.html

posted @ 2023-02-21 22:22  黄河大道东  阅读(74)  评论(0编辑  收藏  举报