11.网络管理1-网络的参数配置与网络服务
网络属于Linux内核的功能
网口状态(up/down,速率,自协商/强制,全双工/半双工)
ip,掩码,网关/路由(目标网段/掩码/下一跳),DNS
虚拟接口
网卡配置文件
网卡命名规则
RHEL 6
lo
: 本地回环网卡eth0
: eth表示以太网卡0表示第一块网卡ppp[num]
: 点对点连接
RHEL 7
eno1
: BIOS 内建的网卡ens1
: BIOS 内建的 PCI-E 网卡enp2s0
: PCI-E 独立网卡,可能因此会有多个网卡接口,因此会有s0,s1...的编号eth0
: 当上述规则不适用时,采用传统命名
网卡配置文件
网络配置文件
rhel6# /etc/sysconfig/network-scripts/ifcfg-eth0
rhel7# /etc/sysconfig/network-scripts/ifcfg-eno16777736
网卡硬件信息文件
rhel6# RHEL6: /etc/udev/rules.d/70-persistent-net.rules
RHEL5: /etc/modprobe.conf
网络参数配置
网络接口配置文件:/etc/sysconfig/network-scripts/ifcfg-INTERFACE-NAME
DEVICE=eth0 #关联的设备名称,要与文件名的后半部INTERFACE-NAME相一致
BOOTPROTO= (static|none|dhcp|bootp) #引导协议,要使用静态地址,使用static或者none;dhcp表示使用DHCP服务器获取地址
IPADDR=10.168.80.158 #IP地址
NETMASK=255.255.248.0 #子网掩码
GATEWAY= #设定网关
ONBOOT=(yes|no) #开机时是否自动激活此网络接口
HWADDR= #MAC地址(硬件地址),要与硬件中的地址保持一致,可以省略
USERCTL=(yes|no) #是否允许普通用户控制此接口
PEERDNS=(yes|no) #是否在BOOTPROTO为dhcp时接受由DHCP服务器指定的DNS地址
注意:配置文件的方式设置不会立即生效,需重启网络服务或系统才能生效。
HWADDR与MACADDR的区别
-
HWADDR="00:0C:29:97:DE:DB"
HWADDR 用于确保设备接口正确分配,不与 MACADDR 同时使用。 -
MACADDR="00:0C:29:DF:52:DA"
MACADDR 用于覆盖物理 MAC 地址,同样不与 HWADDR 并存。
NAME和DEVICE的区别
-
DEVICE:
- DEVICE 选项指定实际的网络设备名称,通常是硬件接口的名称,如 eth0、enp0s3 或 wlan0。
- 这个选项告诉系统内核应该与哪个物理网络接口关联这个配置。
- DEVICE 是一个必需的选项,没有它,网络配置将无法正确应用到任何接口上。
-
NAME:
- NAME 选项则更多地用于人为识别和管理上的方便,它可以被设置为任何字符串,不一定与实际的设备名称相同。
- NAME 可以用于脚本或者管理工具中,作为引用配置的别名。例如,在 NetworkManager 中,NAME 可能被用来标识一个连接配置。
- 在某些情况下,NAME 和 DEVICE 可能会设置成相同的值,但这不是必须的,它们可以不同。
DNS与hosts
配置DNS
在 /etc/resolv.conf
文件中指定DNS 服务器。
nameserver DNS-IP_1
nameserver DNS-IP_2
hosts
/etc/hosts
文件用于静态主机名解析,修改后立即生效。
主机IP 主机名 主机别名(可选)
最左边一列是主机IP信息,中间一列是主机名. 任何后面的列都是该主机的别名
路由
路由配置文件
/etc/sysconfig/network-scripts/route-enp1s0
添加格式一:
default via 192.168.0.1 dev enp1s0
10.10.10.0/24 via 192.168.0.10 dev enp1s0
172.16.1.10/32 via 192.168.0.10 dev enp1s0
添加格式二:
ADDRESS0=10.10.10.0
NETMASK0=255.255.255.0
GATEWAY0=192.168.0.10
ADDRESS1=172.16.1.10
NETMASK1=255.255.255.0
GATEWAY1=192.168.0.10
注意:两种格式不能混合使用
NetworkManager 和 network
对于Linux来说,现在流行的有网络管理有两个工具,Network服务与NetworkManager
network 服务
network 服务由 initscripts 软件包提供,用于初始化网络设备。initscripts软件包提供了操作系统运行起来后的一些脚本对系统做一些设备初始化,其中就包括对网络设备做初始化;
服务启停脚本:/etc/init.d/network (start|stop|restart|status)
网卡配置文件:/etc/sysconfig/network-scripts/ifcfg-*
。
NetworkManager
NetworkManager 自动管理网络连接,特别适用于无线网络。NetworkManager的目的就是将linux操作系统下的各种网络相关的服务都统一管理起来,有点类似systemd。
在 CentOS 7 中,NetworkManager 与 network 服务并存,但在 CentOS 8 中,network 服务已被废弃。
NetworkManager 服务与工具
- NetworkManager 服务:管理和监控网络设置的守护进程。
- 配置文件通常位于
/etc/NetworkManager/
目录下,而具体的网卡配置文件则存储在/etc/NetworkManager/system-connections/
- 服务脚本位置为
/etc/init.d/NetworkManager
、/etc/rc.d/init.d/NetworkManager
- 配置文件通常位于
- 图形化配置:提供桌面环境中的网络配置界面(右上角的网络连接标志)。
- 命令行与字符界面工具:同时提供了
nmcli
和nmtui
两个工具,分别用于命令行和文本界面的网络配置。
setup与nmtui图形化管理工具
是Red Hat自带的一个工具集,这个工具只有只有Red Hat系列有。
setup 工具在 Red Hat 6.5 版本之后得到增强,可以直接修改 IP 配置。然而,在 Red Hat 7 及更高版本中,setup 功能被大幅缩减,网络配置功能由 nmtui 提供,是一个基于字符图形界面的网络配置工具。
NetworkManager 管理逻辑
NetworkManager 作为网络管理的核心组件,负责监控和配置网络设备,其主要职责包括:
设备/接口/网卡 被 NetworkManager 管理的状态,叫受管模式。
-
设备状态保持:NetworkManager 在重启后能接管“配置为受管模式”的设备,并恢复其网络状态。
-
设备管理:受管模式的设备 在NetworkManager服务停止的时候会 down 掉。
-
手动控制设备:允许用户手动或其他服务控制未明确标记为受管的设备。
-
自动配置:当网络设备缺少网络配置时,NetworkManager 会创建临时连接确保网络可用性。
NetworkManager 主要管理 网络设备(Device)和设备的配置文件(Connection)。每个设备可以有多个配置文件,但同一时刻只有一个配置文件生效。
NetworkManager 可以与传统的 network
服务并行运行,但系统通常优先启动 NetworkManager,以防止配置冲突。
在启动时,network读取所有ifcfg文件,对于每个ONBOOT=yes
的文件,它检查NetworkManager是否已经从该ifcfg文件启动设备。如果NetworkManager正在启动该设备或已经启动该设备,则不再对该文件执行任何操作,并检查下一个ONBOOT=yes
文件。如果NetworkManager还没有启动该设备,那么初始化脚本将继续下去,并为该ifcfg文件调用ifup。
禁止 NetworkManager 管理特定接口
可在 ifcfg-*
文件中添加 NM_CONTROLLED=no
,然后让NetworkManager重新加载该配置文件,(网会断),并ifup该接口重新获取IP。
参考NetworkManager的坑(如何让network manager不去管理网络端口)
使用 nmcli 或 nmtui 进行命令行或文本界面配置。
命令参数与配置文件内的参数对应关系图
图来自 Linux下NetworkManager和network的和平共处
有三种方法配置网络:
- 通过
nmcli connection add
命令 会自动生成配置文件ifcfg-*
。 - 手动配置
ifcfg-*
,通过nmcli connection reload
来加载生效。 - 手动配置
ifcfg-*
,通过传统network.service来加载生效。
如果直接手动编辑ifcfg文件,NetworkManager不会自动知道更改,需要重新加载配置文件。
nmcli connection reload # 重新读取配置
nmcli con load /etc/sysconfig/network-scripts/ifcfg-ens33 # 仅重新加载一个更改的文件
使用诸如nmcli之类的工具进行的更改不需要重新加载,但需要down和up,nmcli dev disconnect interface-name && nmcli con up interface-name
冲突导致异常
1 https://cloud.tencent.com/developer/article/1404156
2 在CentOS系统上,目前有NetworkManager和network两种网络管理工具。如果两种都配置会引起冲突,而且NetworkManager在网络断开的时候,会清理路由,如果一些自定义的路由,没有加入到NetworkManager的配置文件中,路由就被清理掉,网络连接后需要自定义添加上去。
https://blog.csdn.net/weixin_41831919/article/details/101318928
https://blog.csdn.net/weixin_48912068/article/details/108241990
ifup与ifdown
ifup eth0 启动接口
ifdown eth0 禁用接口
在使用 ifup 和 ifdown 前,应确认 NetworkManager 是否管理目标接口,否则这些命令可能被 NetworkManager 拦截。
ethtool命令
ethtool
用于查询及设置网卡的高级参数,如速度、双工模式、流量控制等。
故障排查
- 检查网络配置是否正确:
- IP地址
- 子网掩码
- 网关
- DNS
- 查看到达网关是否连通:ping 网关IP地址
- 查看DNS解析是否正常:使用 nslookup, dig, 或 host 命令测试域名解析。