• Linux系统升级内核重启后网卡地址获取失败


    一、问题描述

    某次centos 7.1 系统升级后,检查系统版本升级为centos7.9了,但重启后发现网卡eth0地址获取失败(dhcp),重启网卡报错:RTNETLINK answers: Cannot assign requested address ,如下所示:
    在这里插入图片描述

    二、原因及处理

    1、出现这种故障一般原因有2:

    1)与NetworkManager 服务冲突;这时,我们直接关闭 NetworkManger 服务就好了, 执行service NetworkManager stop,并且禁止开机启动 chkconfig NetworkManager off 。

    2)与配置文件的MAC地址不匹配,这种情况我们查看修改 /etc/udev/rules.d/70-persistent-net.rules文件的MAC地址和 /etc/sysconfig/network-scripts/ifcfg-eth0一样就好了。

    2、执行重启网卡:

    ip link set eth0 down/up
    ifdown/ifup eth0
    
    • 1
    • 2

    3、检查NetworkManager 服务并停用它在这里插入图片描述

    systemctl list-unit-files --type service | grep NetworkManager
    chkconfig --list | grep network
    
    • 1
    • 2

    4、 ip addr flush dev eth0
    在这里插入图片描述
    5、重启网卡出现:RTNETLINK answers: File exists 提示

    在这里插入图片描述
    注:omfwd是rsyslog的日志转发模块。

    6、再次刷新网卡信息

    ip addr flush dev eth0
    dhclient eth0
    ip a s //输出如下
    
    • 1
    • 2
    • 3

    在这里插入图片描述

    三、NetworkManager

    NetworkManager是2004年RedHat启动的项目,皆在能够让Linux用户更轻松的处理现代网络需求,尤其是无线网络,能够自动发现网卡并配置IP地址。NetworkManager由一个管理系统网络连接、并且将其状态通过D-BUS(一个提供简单的应用程序 互相通讯的途径的自由软件项目,它是做为freedesktoporg项目的一部分来开发的。)进行报告的后台服务,NetworkManager的后台服务对于GNOME和Xfce那就是nm-applet工具,而对于KDE用户来说就是KNetworkManager;以及一个允许用户管理网络连接的客户端程序(nmcli、nmtui图形),使用nmcli用户可以查询网络连接的状态,也可以用来管理。它们都可用来管理网络,但是有一个前提:nmctl networking 状态必须是enable(nmcli networking on),否则设备状态为unmanaged,这会导致network启动不了!
    在这里插入图片描述

        RHEL7上同时支持network.service和NetworkManager.service(简称NM)。默认情况下这2个服务都有开启,CentOS7更加注重使用NetworkManager服务来实现网络的配置和管理;但是两者兼容性问题,会出现未知的问题(ip地址无法生效或网络不通等问题),一般我们使用其中之一。**注意:**RHEL 8/Centos 8上已废弃network.service(默认不安装),只能通过NetworkManager进行网络配置。

      NetworkManager主要管理2个对象: Connection(网卡连接配置) 和 Device(网卡设备),他们之间是多对一的关系,但是同一时刻只能有一个Connection在device生效,即不是多会话的。在RHEL 8/Centos 8有三种方法配置网络:

    1、通过nmcli connection add命令配置,会自动生成ifcfg文件。

    2、手动配置ifcfg文件,通过nmcli connection reload来加载生效。

    3、手动配置ifcfg文件,通过传统network.service来加载生效。

    NetworkManager 0.8.1后还支持使用蓝牙,不仅支持个人区域网络(PAN)上网,也支持老的蓝牙拨号网络(DUN)协议。NetworkManager支持IPv6的自动配置和静态IP;NetworkManager 新版本还会带来IPv6的DHCP支持。

    NetworkManager 的出现主要为了解决下面的问题:软件可以自动检测尽量多的信息,在复杂网络环境下可以平滑的切换,可以即时反馈网络状态,可以在桌面环境下工作。NetworkManager 网络配置顺序:

    1) 如果有线网络连接可用,NetworkManager会自动配置有线网络连接。
    2) 如果有线网络连接不可以用,NetworkManager 会搜寻所有可检测到的无线网络,如果有保存的授权信息, NetworkManager会自动配置无线网络连接
    3) 如果用户自定义网络信息,用户定义具有最高优先权。

    1)nmcli

    配置文件:/etc/NetworkManager/system-connections;命令选项:

    在这里插入图片描述

    # 查看广播状态(radio)
    nmcli r
    
    #查看当前区域内的无线网络
    nmcli dev wifi
    
    # 打开wifi(软件级别)
    nmcli r wifi on
    
    # 搜索wifi(device)
    nmcli d wifi
    
    # 连接wifi
    nmcli d wifi connect wifi名称 password wifi密码
    
    # 显示密码
    nmcli d wifi show-password
    
    # 查看现有接口(connection)
    nmcli c
    
    # 关闭网络(硬件级别)
    nmcli c down netplan-wlan0-TP-LINK_A9BD
    nmcli c down netplan-eth0
    
    #查看连接状态:
    nmcli nm
    nmcli connection
    
    #查看连接状态:
    nmcli con status
    
    #查看VPN:
    nmcli con
    
    #连接/断开VPN: 
    nmcli con up id YOUR_VPN_ID
    nmcli con down id YOUR_VPN_ID
    
    #查看网络适配器状态,即device有没有连接到connection,列出所有网络设备
    nmcli device
    nmcli dev disconnect eth0 //断开连接
    nmcli dev connect  eth0
    nmcli con show
    nmcli device show ens160
    nmcli device status
    
    #链接到ens33
    nmcli device connect ens33
    nmcli connection
    
    # 重新加载网卡配置,不会立即生效
    nmcli connection reload
    
    #立即生效网卡配置
    nmcli device reapply ens160
    
    # 立即生效Connection配置
    nmcli connection down ens160 && nmcli connection up ens160
    # 为device创建connection
    nmcli connection add type ethernet con-name ens160-con ifname ens160 ipv4.addr 1.1.1.2/24 ipv4.gateway 1.1.1.1 ipv4.method manual
    
    nmcli connection add type ethernet con-name ens160-con ifname ens160 ipv.method auto
    
    # 修改IP地址并立即生效
    nmcli connection modify ens160-con ipv.addr 1.1.1.3/24 && nmcli connection up ens160-con
    
    #交互方式修改IP
    nmcli connection edit ens160-con
    
    #修改当前网络连接对应的DNS服务器
    nmcli con mod eno1 ipv4.dns "223.5.5.5 8.8.8.8"
    nmcli con up eno1
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40
    • 41
    • 42
    • 43
    • 44
    • 45
    • 46
    • 47
    • 48
    • 49
    • 50
    • 51
    • 52
    • 53
    • 54
    • 55
    • 56
    • 57
    • 58
    • 59
    • 60
    • 61
    • 62
    • 63
    • 64
    • 65
    • 66
    • 67
    • 68
    • 69
    • 70
    • 71
    • 72
    • 73

    NetworkManger客户端nmcli对应参数项目与配置文件内的参数对应关系图:

    在这里插入图片描述

    # 比如我这里设置eth0为手动设置静态地址,为192.168.31.5,子网掩码24,自启动
    nmcli connection modify eth0 ipv4.method manual ipv4.addresses 192.168.31.5/24 connection.autoconnect yes 
    nmcli connection up eth0
    
    • 1
    • 2
    • 3

    2)ip命令

    禁用网卡:ip pnk set eth1 down
    启用网卡:ip pnk set eth1 up
    更改名称:ip pnk set eth1 name ethwang
    添加IP: ip addr add 192.168.179.150/24 dev eth1 label eth1:0
    删除IP: ip addr del 192.168.179.150/24 dev eth1 label eth1:0
    清楚网卡:ip addr flush dev eth1
    添加路由:
    ip route add 192.168.0.0/24 via 172.16.0.1 dev eth1
    ip route add defapt via 172.16.0.1 dev eth1
    删除路由:ip route flush dev eth1
    
    #路由写入相关配置文件(永久生效route)
    
    vi /etc/sysconfig/network-scripts/route-eth1
    #写法一:TARGET via GW
    10.0.0.0/8 via 172.16.0.1
    
    #写法二:三行定义一条路由
    ADDRESS#=10.0.0.0
    NETMASK#=255.0.0.0
    GATEWAY#=172.16.0.1
    
    ifconfig eth1:0 192.168.179.180/24 up
    ifconfig eth1:0 192.168.179.180/24 down
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
  • 相关阅读:
    Patroni的执行流
    深入理解Flink的检查点
    Python redis 使用教程
    浅谈一下前端字符编码
    SAP UI5 ManagedObject 的 Event 讲解
    基于微信中介看房预约小程序系统设计与实现 开题报告
    【阅读笔记】多任务学习之PLE(含代码实现)
    【Redis学习1】Redis持久化机制详解
    [Lecture_Review] [VALSE]薪火相传经验谈——学长学姐教你如何做科研
    在ubuntu上安装ns2和nam(ubuntu16.04)
  • 原文地址:https://blog.csdn.net/ximenjianxue/article/details/125710952