Linux系统管理入门:网络管理

前言

在现代社会中,网络已经成为我们日常生活中不可或缺的一部分。无论是工作、学习还是娱乐,我们都离不开网络。然而,网络的复杂性使得网络管理变得困难重重。为了更好地管理和维护网络,我们需要了解一些基本的网络知识。

本文将介绍一些常用的Linux网络管理知识和命令,包括网卡命名规则、网络设备配置、IP地址管理、路由设置、DNS解析等。通过学习这些内容,我们可以更好地理解和掌握网络的运行原理,从而提高我们的网络管理能力。

1、网卡命名规则

RHEL7以前是根据网卡的加载顺序依次以eth0、eth1…命名网卡;
RHEL8以网卡设备类型命名(基于udev规则),例如enp3s0

  • 接口类型
    • en 以太网 Ethernet
    • wl 无线局域网 WLAN
    • ww 无线广域网 WWLAN
  • 适配器类型
    • o 集成设备索引号(板载)
    • s 扩展槽的索引号(热拔插)
    • p s PCI扩展总线
    • x s 基于MAC进行命名

数字代表索引、ID、端口

去除udev规则方法

1
2
3
4
①$ vim /etc/default/grub
在GRUB_CMDLINE_LINUX行的rhgb前添加net.ifnames=0 biosdevname=0
②grub2-mkconfig -o /boot/grub2/grub.cfg
③reboot后生效

2、ifconfig命令

来自于net-tools软件包,被用于配置和显示Linux内核中网络接口的网络参数。用ifconfig命令配置的网卡信息,在网卡重启后机器重启后,配置就不存在。

  • ①显示网络设备信息
    • ifconfig 显示已激活网卡信息
    • ifconfig -a 显示所有网卡信息
  • ②启动/关闭指定网卡
    • ifconfig eth0 up 启动eth0网卡
    • ifconfig eth0 down 关闭eth0网卡
  • ③启动/关闭arp协议
    • ifconfig eth0 arp 启动eth0设备arp
    • ifconfig eth0 -arp 关闭eth0设备arp
  • ④临时配置IP地址,重启网络服务或者系统重启后失效
    • ifconfig eth0 192.168.1.1/24

3、route命令

用来显示并设置Linux内核中的网络路由表,route命令设置的路由主要是静态路由。要实现两个不同的子网之间的通信,需要一台连接两个网络的路由器,或者同时位于两个网络的网关来实现。

语法

1
route(选项)(参数)

选项

1
2
3
4
5
6
7
-A:设置地址类型;
-C:打印将Linux核心的路由缓存;
-v:详细信息模式;
-n:不执行DNS反向查找,直接显示数字形式的IP地址;
-e:netstat格式显示路由表;
-net:到一个网络的路由表;
-host:到一个主机的路由表。

参数

1
2
3
4
5
6
7
add:增加指定的路由记录;
del:删除指定的路由记录;
target:目的网络或目的主机;
gw:设置默认网关;
mss:设置TCP的最大区块长度(MSS),单位MB;
window:指定通过路由表的TCP连接的TCP窗口大小;
dev:路由记录所表示的网络接口。

示例

  • ①查询路由表
    • route -n
  • ②添加/删除默认路由
    • route add default gw 192.168.80.254 dev eth0(下同可省)
    • route del default
  • ③添加/删除主机路由
    • route add -host 192.168.1.1 gw 192.168.80.254
    • route add -net 192.168.1.1 netmask 255.255.255.255 gw 192.168.80.254
  • 删除
    • route del -host 192.168.1.1
    • route del -net 192.168.1.1 netmask 255.255.255.255
  • ④添加/删除网络路由
    • route add -net 192.168.1.0 netmask 255.255.255.0 dev eth0 同网段路由
    • route add -net 192.168.1.0 netmask 255.255.255.0 gw 192.168.80.254
  • 删除
    • route add -net 192.168.1.0 netmask 255.255.255.0

4、arp命令

用于显示和修改 IP 到 MAC 转换表。

语法

1
arp(选项)(参数)

选项

1
2
3
4
5
6
7
8
9
10
-a # 主机 :显示 arp 缓冲区的所有条目;
-H # 地址类型 :指定 arp 指令使用的地址类型;
-d # 主机 :从 arp 缓冲区中删除指定主机的 arp 条目;
-D # 使用指定接口的硬件地址;
-e # 以 Linux 的显示风格显示 arp 缓冲区中的条目;
-i # 接口 :指定要操作 arp 缓冲区的网络接口;
-s # 主机 MAC 地址 :设置指定的主机的 IP 地址与 MAC 地址的静态映射;
-n # 以数字方式显示 arp 缓冲区中的条目;
-v # 显示详细的 arp 缓冲区条目,包括缓冲区条目的统计信息;
-f # 文件 :设置主机的 IP 地址与 MAC 地址的静态映射。

参数

主机:查询 arp 缓冲区中指定主机的 arp 条目。

示例

1
2
3
4
5
arp -a 查看arp表
arp -n 不解析ip地址为名称
arp -v 查看arp表详情
arp -i 查看指定网卡设备arp表
arp -d 删除arp缓存

5、ip命令

iproute包提供,用来显示或操纵Linux主机的路由、网络设备、策略路由和隧道,是Linux下较新的功能强大的网络配置工具。

ip link命令

1
2
3
ip link show 查看网卡设备信息
ip link set eth0 up 启动eth0网卡
ip link set eth0 down 关闭eth0网卡

ip addr命令

1
2
3
ip addr show 查看IP地址信息
ip addr add 192.168.1.1/24 dev eth0 添加IP地址(临时,重启网络服务或者系统重启后失效)
ip addr del 192.168.1.1/24 dev eth0 删除IP地址

ip route命令

1
2
3
ip route show 查看路由信息
ip route add 192.168.1.0/24 via 192.168.80.254 dev eth0 添加路由
ip route del 192.168.1.0/24 dev eth0 删除路由

注:ip route同样可以为指定设备eth0添加默认路由、主机路由、网络路由;

6、NetworkManager包提供

目前主流的Linux网络管理工具,NetworkManager的出现是为了解决network-scripts的缺陷 、
在RHEL7之前使用network-scripts管理网络(在RHEL7和Centos7的版本中NetworkManmager和network-scripts是共存的)
从RHEL8开始,淘汰了network-scripts(RHEL9下线)

(1)nmtui命令
nmtui字符图形化配置网络工具

(2)nmcli命令

①查询设备与连接信息

1
2
3
4
5
6
7
8
9
10
nmcli device status 查询网卡设备与配置文件连接状态(可看未托管的)
nmcli device show 查看网卡设备详细信息
nmcli device show eth0 查看指定网卡设置的详细信息
nmcli device connect eth 0 将网卡设备与配置文件连接
nmcli device disconnect eth0 将网卡设备与配置文件断开
nmcli connection show 查询网卡设备与配置文件连接状态
nmcli connection show --active 查询活跃的网卡连接
nmcli connection show eth0_name 查找指定连接的详细信息
nmcli networking on 启动NetworkManager
nmcli networking off 关闭NetworkManager

②删除/修改/更新网卡配置文件

1
2
3
4
5
6
7
nmcli connection delete eth0_name
nmcli connection modify eth0_name +ipv4.address 192.168.1.1/24 添加ip
nmcli connection modify eth0_name -ipv4.address 192.168.1.1/24 删除ip
nmcli connection modify eth0_name ipv4.address 192.168.1.1/24 修改ip
nmcli connection up eth0_name
nmcli connection reload 让nmcli重新读取硬盘上的配置文件
nmcli connection modify eth0 con-name eth1 更改配置文件名

③添加IP地址(永久生效)

1
nmcli connection add type ethernet ifname ens160 con-name ens160_name ipv4.addresses 192.168.80.130/24 ipv4.gateway 192.168.80.254 ipv4.dns 114.114.114.114 ipv4.method manual autoconnect yes

④添加路由(永久生效)

1
nmcli connection modify enp3s0 +ipv4.routes "192.168.122.0/24 192. 168.80.254"

其他配置永久路由方法

1
2
修改/etc/sysconfig/static-routes(重启network服务后生效)
any net 172.25.0.0/24 gw 192.168.80.254 any net 172.25.0.11 netmask 255.255.255.255 gw 192.168.80.254

⑤配置bond

1
2
3
4
5
6
添加bond设备
nmcli connection add type bond ifname bond1 con-name bond1_name mode active-backup miimon 1000 autoconnect yes

添加ens224网卡至bond
nmcli connection add type ethernet slave-type bond ifname ens224 con-name ens224_name master bond1
或者nmcli connection add type bond-slave ifname ens224 con-name ens224_name mast bond1

⑥配置网桥br0

1
2
3
4
5
6
添加网桥设备br0
nmcli connection add type bridge ifname br0 con-name br0_name autoconnect yes

将网卡接口ens161连接至网桥br0
nmcli connection add type ethernet slave-type bridge ifname ens161 con-name br0_ens161 master br0
或者nmcli connection add type bridge-slave ifname ens161 con-name br0_ens161 master br0

7、主机名与地址解析

(1)修改主机名

1
2
3
hostname 临时修改主机名
hostnamectl set-hostname 永久修改主机名
vim /etc/hostname 永久修改主机名,需要重启生效

(2)DNS地址解析

1
2
3
vim /etc/hosts 本地地址解析文件,只在本机上有效,优先级比DNS高
vim /etc/resolv.conf DNS服务器配置文件,手动修改此文件临时有效
另外还可以通过nmcli命令、修改网卡配置文件等方式永久修改DNS地址

8、查看服务端口

标准服务端口配置文件/etc/services

(1)netstat命令
netstat是net-tools包提供,用于显示网络连接信息、路由信息、接口状态等;

1
2
3
4
5
6
7
8
9
netstat   查看网络连接信息
-n 显示ip地址、端口
-l 显示监听中的socket
-a 显示所有状态的socket(默认显示已连接的socket)
-e 显示建立连接的socket,显示更多的信息诸如user、inode
-u 显示udp协议的端口
-t 显示tcp协议的端口
-p 显示pid与程序名
-r 显示路由信息

(2)ss命令

  • ①ss命令由iproute包提供,可以用来获取socket统计信息,能够显示比netstat更多更详细的有关TCP和连接状态的信息;当服务器的socket连接数量变得非常大时,比netstat更快速更高效。
  • ②ss高效的秘诀在于它利用到了TCP协议栈中tcp_diag。tcp_diag是一个用于分析统计的模块,可以获得Linux内核中第一手的信息,这就确保了ss的快捷高效。
1
2
3
4
5
6
7
8
ss  查看网络连接信息
-n 显示ip地址、端口
-l 显示监听中的socket
-a 显示所有状态的socket(默认显示已连接的socket)
-e 显示建立连接的socket,显示更多的信息诸如user、inode
-u 显示udp协议的端口
-t 显示tcp协议的端口
-p 显示pid与程序名

9、网络连接状态详解

共有12中可能的状态,前面11种是按照TCP连接建立的三次握手和TCP连接断开的四次挥手过程来描述的:

  1. LISTEN:首先服务端需要打开一个socket进行监听,状态为 LISTEN,侦听来自远方TCP端口的连接请求 ;
  2. SYN_SENT:客户端通过应用程序调用connect进行active open,于是客户端tcp发送一个SYN以请求建立一个连接,之后状态置为 SYN_SENT,在发送连接请求后等待匹配的连接请求;
  3. SYN_RECV:服务端应发出ACK确认客户端的 SYN,同时自己向客户端发送一个SYN,之后状态置为,在收到和发送一个连接请求后等待对连接请求的确认;
  4. ESTABLISHED:代表一个打开的连接,双方可以进行或已经在数据交互了, 代表一个打开的连接,数据可以传送给用户;
  5. FIN_WAIT1:主动关闭(active close)端应用程序调用close,于是其TCP发出FIN请求主动关闭连接,之后进入FIN_WAIT1状态, 等待远程TCP的连接中断请求,或先前的连接中断请求的确认;
  6. CLOSE_WAIT:被动关闭(passive close)端TCP接到FIN后,就发出ACK以回应FIN请求(它的接收也作为文件结束符传递给上层应用程序),并进入CLOSE_WAIT, 等待从本地用户发来的连接中断请求;
  7. FIN_WAIT2:主动关闭端接到ACK后,就进入了 FIN-WAIT-2,从远程TCP等待连接中断请求;
  8. LAST_ACK:被动关闭端一段时间后,接收到文件结束符的应用程 序将调用CLOSE关闭连接,这导致它的TCP也发送一个 FIN,等待对方的ACK.就进入了LAST-ACK,等待原来发向远程TCP的连接中断请求的确认;
  9. TIME_WAIT:在主动关闭端接收到FIN后,TCP 就发送ACK包,并进入TIME-WAIT状态,等待足够的时间以确保远程TCP接收到连接中断请求的确认;
  10. CLOSING: 比较少见,等待远程TCP对连接中断的确认;
  11. CLOSED: 被动关闭端在接受到ACK包后,就进入了closed的状态,连接结束,没有任何连接状态;
  12. UNKNOWN:未知的Socket状态;

常见标志位

  • SYN: (同步序列编号,Synchronize Sequence Numbers)该标志仅在三次握手建立TCP连接时有效。表示一个新的TCP连接请求。
  • ACK: (确认编号,Acknowledgement Number)是对TCP请求的确认标志,同时提示对端系统已经成功接收所有数据。
  • FIN: (结束标志,FINish)用来结束一个TCP回话.但对应端口仍处于开放状态,准备接收后续数据。

本文主要介绍了Linux网络管理的相关知识和命令,包括网卡命名规则、网络设备配置、IP地址管理、路由设置、DNS解析、NetworkManager工具的使用以及查看服务端口、解析网络连接状态和修改主机名与地址解析等内容。通过学习这些内容,读者可以更好地理解和掌握网络的运行原理,从而提高网络管理能力。

本文提供的命令选项仅包含常用选项,而非所有选项。你可以通过在命令行中输入 命令 --help 来查看所有可用选项。


Linux系统管理入门:网络管理
https://www.zhoumx.net/Linux系统管理入门:网络管理.html
作者
阿星
发布于
2023年12月11日
许可协议