[Linux/OS] 常用命令之【ping/network/NetworkManager/ip/ifconfig/ifup/ifdown/nslookup/dig/dhclient】 | 基于CENTOS 7的网络服务与配置管理

  • 近期为了复现生产环境 gemini的问题,为此新搭建 centos 虚拟机集群。
  • 遇到了几个网络方面的问题,需要汇总记录。
  • centos7.9-DVD-2009版本的网络问题为契机,总结linux网络方面的常见操作。

network.service (老版本)网络管理服务

  • Network服务:Network服务是一个传统的网络配置工具,旨在提供基本的网络配置功能。

它使用简单的文本文件(例如/etc/network/interfaces)来配置网络接口、IP地址、子网掩码、网关等。
通过编辑这些文件,用户可以手动配置网络设置。
然后,可以使用命令行工具(如ifconfig、route)来启用、禁用和管理网络接口。

重启服务进程

sudo systemctl restart network

查看运行状态

[gemini@localhost ~]$ systemctl status network.service
● network.service - LSB: Bring up/down networking
   Loaded: loaded (/etc/rc.d/init.d/network; bad; vendor preset: disabled)
   Active: active (exited) since Tue 2024-12-17 17:47:26 PST; 15min ago
     Docs: man:systemd-sysv-generator(8)
  Process: 65412 ExecStop=/etc/rc.d/init.d/network stop (code=exited, status=0/SUCCESS)
  Process: 66222 ExecStart=/etc/rc.d/init.d/network start (code=exited, status=0/SUCCESS)
    Tasks: 0

Dec 17 17:47:26 localhost.localdomain network[66222]: RTNETLINK answers: File exists
Dec 17 17:47:26 localhost.localdomain network[66222]: RTNETLINK answers: File exists
Dec 17 17:47:26 localhost.localdomain network[66222]: RTNETLINK answers: File exists
Dec 17 17:47:26 localhost.localdomain network[66222]: RTNETLINK answers: File exists
Dec 17 17:47:26 localhost.localdomain network[66222]: RTNETLINK answers: File exists
Dec 17 17:47:26 localhost.localdomain network[66222]: RTNETLINK answers: File exists
Dec 17 17:47:26 localhost.localdomain network[66222]: RTNETLINK answers: File exists
Dec 17 17:47:26 localhost.localdomain network[66222]: RTNETLINK answers: File exists
Dec 17 17:47:26 localhost.localdomain systemd[1]: Started LSB: Bring up/down networking.
Dec 17 17:47:58 localhost.localdomain network[66039]: Bringing up interface ens33:  Error: Connection activation failed: IP configuration could not be reserv...ut, etc.)
Hint: Some lines were ellipsized, use -l to show in full.

查看进程日志

journalctl -u network.service

查看进程的依赖组件及其运行状态

systemctl list-dependencies network.service

ip addr : 查看网络配置情况(网卡名称、MAC、IP等)

[gemini@localhost ~]$ ip addr 或 ip addr show
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: ens33: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
    link/ether 00:0c:29:cf:e2:b3 brd ff:ff:ff:ff:ff:ff
    inet6 fe80::b3ce:d8eb:4ef4:48e9/64 scope link noprefixroute 
       valid_lft forever preferred_lft forever
3: virbr0: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc noqueue state DOWN group default qlen 1000
    link/ether 52:54:00:a4:f2:38 brd ff:ff:ff:ff:ff:ff
    inet 192.168.122.1/24 brd 192.168.122.255 scope global virbr0
       valid_lft forever preferred_lft forever
4: virbr0-nic: <BROADCAST,MULTICAST> mtu 1500 qdisc pfifo_fast master virbr0 state DOWN group default qlen 1000
    link/ether 52:54:00:a4:f2:38 brd ff:ff:ff:ff:ff:ff
  • 以太网卡的网卡名称: ens33
  • MAC地址 : 00:0c:29:cf:e2:b3
  • ipv6地址: fe80::b3ce:d8eb:4ef4:48e9
ping -6 fe80::b3ce:d8eb:4ef4:48e9

ifcofig : 网卡的配置与管理

  • ifconfig(interfaces config)。通常需要以root身份登录或使用sudo来使用ifconfig工具

  • ifconfig 命令用来查看和配置网络设备。当网络环境发生改变时可通过此命令对网络进行相应的配置。

用ifconfig命令配置的网卡信息,在网卡重启后、机器重启后,配置就不存在。
故,要想将上述的配置信息永远的存的电脑里,那就要修改网卡的配置文件了。

  • 命令的一般格式: ifconfig interface {options}
  • interface,网卡接口代号,包括 eth0、eth1、ppp0 等
  • options,可以接的参数,包括如下:

Up或down,启动 (up) 或关闭 (down) 该网络接口(不涉及任何参数)
mtu,可以设置不同的 MTU 数值,例如MTU 1500 (单位为 byte)
netmask,就是子屏蔽网络
broadcast,就是广播地址

网卡配置文件路径

  • /etc/sysconfig/network-scripts/ifcfg-{网卡名}

查看指定网卡的网络配置及状态

如果是输入 ifconfig eth0,则会显示出这个接口的相关数据,而不管该接口是否启动

[gemini@localhost ~]$ ifconfig ens33
ens33: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        ether 00:0c:29:cf:e2:b3  txqueuelen 1000  (Ethernet)
        RX packets 1637  bytes 1831881 (1.7 MiB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 3838  bytes 584640 (570.9 KiB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

[root@linux ~]# ifconfig eth0
eth0 Link encap:Ethernet  HWaddr 00:0F:EA:A3:06:A2
      inet addr:192.168.10.100  Bcast:192.168.10.255   Mask:255.255.255.0
      inet6 addr: fe80::20f:eaff:fe73:682/64 Scope:Link
      UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
      RX packets:3439 errors:0 dropped:0 overruns:0 frame:0
      TX packets:2735 errors:0 dropped:0 overruns:0 carrier:0
      collisions:0 txqueuelen:1000
      RX bytes:646935 (631.7 KiB)  TX bytes:562313 (549.1 KiB)
      Interrupt:209 Memory:fb000000-0
  • eth0:网卡的代号,也有 lo 这个 loopback。
  • HWaddr:网卡的硬件地址,习惯称为 MAC。
  • inet addr:IPv4 的 IP 地址,后续的 Bcase、Mask 分别代表的是 Broadcast 与 Netmask。
  • inet6 addr:是 IPv6 的版本的 IP,我们没有使用,所以略过。
  • RX:那一行代表的是网络由启动到目前为止的数据包接收情况,packets 代表数据包数、errors 代表数据包发生错误的数量、dropped 代表数据包由于有问题而遭丢弃的数量等。
  • TX:与 RX 相反,为网络由启动到目前为止的传送情况。
  • collisions:代表数据包碰撞的情况,如果发生太多次,表示你的网络状况不太好。
  • txqueuelen:代表用来传输数据的缓冲区的储存长度。
  • RX Bytes、TX Bytes:总传送、接收的字节总量。
  • Interrupt、Memory:网卡硬件的数据,IRQ 岔断与内存地址。

大致上可以了解到你的网络情况,尤其是 RX、TX 内的 error 数量,以及是否发生严重的 collisions 情况,都是需要注意的。

网卡启、停、重载命令

# 启动 <br>ifcfg etho up           # 启动
ifconfig eth0 up

# 关闭<br>ifcfg eth0 down         # 关闭
ifconfig eth0 down

# 重启
ifconfig eth0 reload

说明:
ifconfig eth0 up 为启动网卡eth0 ;
ifconfig eth0 down 为关闭网卡eth0。
ssh登陆linux服务器操作要小心,关闭了就不能开启了,除非你有多网卡。

为网卡配置和删除IPv4地址

注:【临时生效,永久生效需要更改配置文件】

假定: eth0 网卡配置文件: /etc/sysconfig/network-scripts/ifcfg-eth0

[root@localhost ~]# ifconfig eth0 192.168.25.166 netmask 255.255.255.0 up

[root@localhost ~]# ifconfig eth0 192.168.25.166/24 up       【效果同上】

[root@localhost ~]# ip addr add 192.168.25.166/24  dev eth0  【效果同上】

为网卡配置和删除IPv6地址

注: 【临时生效,永久生效需要更改配置文件】

eth0 网卡配置文件: /etc/sysconfig/network-scripts/ifcfg-eth0

ifconfig eth0 add 33ffe:3240:800:1005::2/64             # 为网卡eth0配置IPv6地址 

ifconfig eth0 del 33ffe:3240:800:1005::2/64              # 为网卡eth0删除IPv6地址 

用ifconfig修改MAC地址

ifconfig eth0 down //关闭网卡

ifconfig eth0 hw ether 00:AA:BB:CC:DD:EE //修改MAC地址

ifconfig eth0 up    //启动网卡

启用和关闭ARP协议

ifconfig eth0:ws arp 
 
ifconfig eth0:ws -arp 

设置最大传输单元

ifconfig eth0 mtu 1500

配置网卡

配置参数解释

  • NAME
  • DEVICE 接口名(设备,网卡)
  • UUID
NAME="ens33"
DEVICE="ens33"
UUID="252953cf-2d23-4c2c-8bc1-8539f88a98b9"
  • USERCTL [yes|no](非root用户是否可以控制该设备)
  • BOOTPROTO IP 的配置方法 [none|static|bootp|dhcp](引导时不使用协议|静态分配IP|BOOTP协议|DHCP协议)
  • HWADDR MAC地址
  • ONBOOT 系统启动的时候网络接口是否有效(yes/no)
  • TYPE 网络类型(通常是 Ethernet )
  • NETMASK 网络掩码
  • IPADDR IP地址
  • IPV6INIT IPV6是否有效(yes/no)
  • GATEWAY 默认网关IP地址
  • BROADCAST 广播地址
  • DNS / DNS2 / DNS3 : DNS 地址
DNS=8.8.8.8  # 设置主DNS
DNS2=8.8.4.4  # 设置备DNS
  • 其他参数
DEFROUTE=yes
PEERDNS=yes
PEERROUTES=yes

IPV4_FAILURE_FATAL=no
IPV6INIT=yes
IPV6_AUTOCONF=yes
IPV6_DEFROUTE=yes
IPV6_PEERDNS=yes
IPV6_PEERROUTES=yes
IPV6_FAILURE_FATAL=no

场景1:dhcp 的动态IP分配模式

推荐文献

  • step1 配置DHCP服务器
    1、安装DHCP服务器软件
[root@localhost ~]# yum -y install dhcp

2、建立主配置文件dhcpd.conf

[root@localhost ~]# cp /usr/share/doc/dhcp-4.2.5/dhcpd.conf.example /etc/dhcp/dhcpd.conf(可直接创建) 
cp:是否覆盖"/etc/dhcp/dhcpd.conf"? y

[root@localhost ~]# vim /etc/dhcp/dhcpd.conf
subnet 192.168.1.0 netmask 255.255.255.0 {       #声明192.168.1.0网段           
range 192.168.1.100 192.168.1.200;      #地址池
option domain-name-servers 202.106.0.20,202.106.148.1;     #DNS服务器地址
option routers 192.168.1.1;     #默认网关
default-lease-time 600;     #默认租约,可以省略
max-lease-time 7200;    #最大租约,可以省略
#option domain-name "admin.com";      #默认搜索区域
#ddns-update-style none      #动态DNS更新模式
}
host localhost.localdomain {      #声明保留地址
hardware ethernet 00:0c:29:75:ac:c4;       #客户端的MAC地址
fixed-address 192.168.1.150;       #保留的IP地址
}
[root@localhost ~]# systemctl restart dhcpd

3、排错

[root@localhost ~]# tail -30 /var/log/messages

step2 使用DHCP客户端

[root@localhost ~]# vim /etc/sysconfig/network-scripts/ifcfg-ens33
BOOTPROTO=dhcp
DEVICE=ens33
ONBOOT=yes

[root@localhost ~]# ifdown ens33 ; ifup ens33
成功激活的连接(D-Bus 激活路径:/org/freedesktop/NetworkManager/ActiveConnection/5)

[root@localhost ~]# dhclient -d ens33
Internet Systems Consortium DHCP Client 4.2.5
Copyright 2004-2013 Internet Systems Consortium.
All rights reserved.
For info, please visit https://www.isc.org/software/dhcp/

Listening on LPF/ens33/00:0c:29:75:ac:c4
Sending on   LPF/ens33/00:0c:29:75:ac:c4
Sending on   Socket/fallback
DHCPREQUEST on ens33 to 255.255.255.255 port 67 (xid=0x5b07f9b5)
DHCPREQUEST on ens33 to 255.255.255.255 port 67 (xid=0x5b07f9b5)
DHCPDISCOVER on ens33 to 255.255.255.255 port 67 interval 7 (xid=0x48df23e5)                  //DHCP发现
DHCPREQUEST on ens33 to 255.255.255.255 port 67 (xid=0x48df23e5)                  //DHCP请求
DHCPOFFER from 192.168.1.10                  //DHCP提供
DHCPACK from 192.168.1.10 (xid=0x48df23e5)                  //DHCP确认
bound to 192.168.1.150 -- renewal in 267 seconds.

如果创建 DHCP 服务器的后果,报:No DHCPOFFERS received错误

[gemini@localhost ~]$ sudo dhclient ens33 -v
Internet Systems Consortium DHCP Client 4.2.5
Copyright 2004-2013 Internet Systems Consortium.
All rights reserved.
For info, please visit https://www.isc.org/software/dhcp/

Listening on LPF/ens33/00:0c:29:cf:e2:b3
Sending on   LPF/ens33/00:0c:29:cf:e2:b3
Sending on   Socket/fallback
DHCPDISCOVER on ens33 to 255.255.255.255 port 67 interval 8 (xid=0xee26e7)
DHCPDISCOVER on ens33 to 255.255.255.255 port 67 interval 13 (xid=0xee26e7)
DHCPDISCOVER on ens33 to 255.255.255.255 port 67 interval 13 (xid=0xee26e7)
DHCPDISCOVER on ens33 to 255.255.255.255 port 67 interval 11 (xid=0xee26e7)
DHCPDISCOVER on ens33 to 255.255.255.255 port 67 interval 16 (xid=0xee26e7)
No DHCPOFFERS received.
No working leases in persistent database - sleeping.

4、释放获取的IP租约

[root@localhost ~]# dhclient -r ens33

场景2: static 的固定静态IP分配模式

  • case1
DEVICE=ens33
BOOTPROTO=static
ONBOOT=yes
IPADDR=192.168.1.100
NETMASK=255.255.255.0
GATEWAY=192.168.1.1
DNS1=8.8.8.8
DNS2=8.8.4.4
  • case2
TYPE="Ethernet"
BOOTPROTO="static"
NAME="ens33"
UUID="005d64e1-529e-423a-b65b-fc280f54a317"
IPADDR=10.0.1.130
GATEWAY=10.0.1.2
DEVICE="ens33"
DNS=114.114.114.114
DNS2=8.8.8.8
ONBOOT="yes"

可根据实际情况进行相应的修改。

  • 配置完成后,重启指定网卡
# 查询当前网络接口的状态
ip addr show ens33

# 用于激活处于禁用状态的网络接口
sudo ifup ens33

# 禁用处于激活状态的网络接口ens33的命令
sudo ifdown ens33

或者: systemctl restart network

ifup/ifdown : 网卡的启停

  • 实时地手动修改一些网络接口参数,可以利用 ifconfig 来实现。
  • 但如果是要直接以配置文件,亦即是在 /etc/sysconfig/network-scripts 里面的 ifcfg-ethx 等文件的设置参数来启动的话,那就得要通过 ifdown 或 ifup 来实现了。
[root@linux ~]# ifup   {interface}
[root@linux ~]# ifdown {interface}
 
[root@linux ~]# ifup eth0
  • ifup 与 ifdown 真是太简单了。这两个程序其实是 script 而已

它会直接到 /etc/ sysconfig/network-scripts 目录下搜索对应的配置文件,例如 ifup eth0,它会找出 ifcfg-eth0 这个文件的内容,然后加以设置。
关于 ifcfg-eth0 的设置请参考下面的说明。
不过,由于这两个程序主要是搜索设置文件(ifcfg-ethx)来进行启动与关闭的,所以在使用前请确定 ifcfg-ethx 是否真的存在于正确的目录内,否则会启动失败。
另外,如果以 ifconfig eth0 来设置或者是修改了网络接口后,就无法再以 ifdown eth0 的方式来关闭了。
因为 ifdown 会分析比较目前的网络参数与 ifcfg-eth0 是否相符,不符的话,就会放弃这次操作。
因此,使用 ifconfig 修改完毕后,应该要以 ifconfig eth0 down 才能够关闭该接口。

route : 路由管理

查看路由表

[gemini@localhost ~]$ route -n
Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
192.168.122.0   0.0.0.0         255.255.255.0   U     0      0        0 virbr0

显示更详细的路由信息

# route -ee
 routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface    MSS   Window irtt
192.168.122.0   0.0.0.0         255.255.255.0   U     0      0        0 virbr0   0     0      0

添加路由

route add -net 192.168.0.0/24 gw 192.168.0.1

route add -net 10.192.139.0/24 gw 10.192.154.65 dev eth1

ip route add 192.168.0.0/24 via 192.168.0.1 ip route add 192.168.1.1 dev 192.168.0.1

route add -net 11.1.1.0 netmask 255.255.255.0 gw 11.1.1.1

route add -net 192.168.100.0 gw 192.168.100.254 netmask 255.255.252.0 metric 1 virbr0

sudo route add -net 192.168.122.0 netmask 255.255.255.0 metric 0 virbr0
#sudo route del -net 192.168.122.0 netmask 255.255.255.0 metric 0 virbr0


# 添加默认路由
ip route add default via 192.168.0.1 dev eth0

-net 设置到某个网段的路由
-host 设置到某台主机的路由

gw 出口网关 IP地址
dev 出口网关 物理设备名
via 网关出口 IP地址

删除路由

# 删除一个网络路由
route del -net [目标网络] netmask [子网掩码] gw [网关IP]

# 删除一个主机路由
route del -host [目标主机] dev [网关设备名]

# 删除一个默认路由
route del default gw [默认网关IP]

查看路由信息

[gemini@localhost ~]$ ip route
192.168.122.0/24 dev virbr0 proto kernel scope link src 192.168.122.1 

保存路由设置

  • 保存路由设置,使其在网络重启后任然有效 。

/etc/sysconfig/network-script/目录下创建名为route-ethx的文件:

nslookup : DNS查询

安装

# 安装网络工具模块 (略,可不安装)
# yum  -y  install  net-tools

# 安装dns工具模块
yum  -y  install  bind-utils

查询指定域名的DNS解析情况


# 验证DNS
> nslookup  www.lzzy.net

dig : 域名信息抓取器

  • dig是一个用于查询DNS(Domain Name System)信息的命令行工具。

  • 它允许用户通过发送DNS查询请求来获取有关域名或IP地址的详细信息。

  • dig的全称是"domain information groper"。

  • 与nslookup相比,dig提供了更灵活和详细的DNS查询选项,更为推荐使用dig。

安装

sudo yum install bind-utils

查询域名的A记录(IP地址)

dig example.com

查询域名的MX记录(邮件服务器记录)

dig mx example.com

查询域名的NS记录(域名服务器记录)

dig ns example.com

查询指定域名服务器的PTR记录(反向DNS查找)

dig -x 8.8.8.8

dhclient : dhcp客户端

  • dhclient 是Linux系统中的一个非常有用的命令,它用于自动获取网络配置信息(如 IP 地址、子网掩码、默认网关等)的程序,它通常用于 Linux 和其他类 Unix 操作系统。

  • dhclient 主要用于通过 DHCP(Dynamic Host Configuration Protocol,动态主机配置协议)从网络中动态获取IP地址和其他网络配置信息。

  • dhclient是一个DHCP客户端程序,允许Linux系统通过向DHCP服务器发送请求来自动获取IP地址、子网掩码、默认网关、DNS服务器等网络配置信息。

这使得网络配置过程大大简化,尤其适用于具有多个主机的网络环境。

命令格式

  • dhclient [选项] [接口名]

其中,选项可以是一些标志,用于控制DHCP客户端的行为和配置;接口名通常是网络接口的名称,如eth0、wlan0等。

  • 常用选项

-4:只使用IPv4地址。
-6:只使用IPv6地址。
-r:释放当前DHCP租约,即向DHCP服务器发送释放请求,释放已分配的IP地址。
-v:显示详细的调试信息,有助于诊断网络配置问题。
-d:启动守护进程模式,允许DHCP客户端在后台运行,并输出调试信息。

[gemini@localhost ~]$ ps -ef | grep -i dhclient
root       4219      1  0 22:34 ?        00:00:00 dhclient ens33

获取IP地址

  • 在终端中输入sudo dhclient [接口名](如sudo dhclient eth0),系统将向DHCP服务器发送请求,获取并应用分配的IP地址和其他配置信息。

释放IP地址

  • 释放IP地址:使用sudo dhclient -r [接口名]命令,释放已分配的IP地址。

工作原理

  1. 发送DHCP请求
    当dhclient命令被执行时,它会向局域网中的DHCP服务器发送一个DHCPDISCOVER包,请求分配IP地址和其他网络配置信息。

  2. 接收DHCP响应
    DHCP服务器在收到DHCPDISCOVER包后,会发送一个DHCPOFFER包给dhclient,包含可用的IP地址、子网掩码、默认网关和DNS服务器等配置信息。

  3. 请求IP地址
    dhclient收到DHCPOFFER包后,会选择一个IP地址,并向服务器发送一个DHCPREQUEST包来请求该地址。

  4. 确认IP地址
    DHCP服务器接收到DHCPREQUEST包后,会发送一个DHCPACK包给dhclient,确认分配的IP地址,并包含最终的配置信息。

  5. 配置网络接口
    dhclient收到DHCPACK包后,会将获取的配置信息应用到系统上,配置网络接口使用动态获取的IP地址。

注: 通过 journalctl -u NetworkManagerjournalctl -u network.service可查看 CENTOS 网络管理进程启动时利用dhclient获取动态ip的过程

功能特点

  • 自动配置: dhclient 可以自动获取网络参数,使得用户不需要手动设置 IP 地址和其他网络参数。

  • 支持多种接口:可以为多个网络接口配置 IP 地址。

  • 脚本支持:允许使用脚本来执行特定的操作,在获取或释放地址时进行自定义处理。

  • 日志记录:提供详细的日志记录功能,方便调试和故障排查。

  • 定时续约:能够自动续订 DHCP 租约,确保网络连接持续有效。

配置文件

  • dhclient命令通常使用/etc/dhcp/dhclient.conf作为配置文件(配置文件位置可能因Linux发行版而异),用户可以在该文件中设置一些客户端选项、客户标识和钩子函数等,以自定义DHCP客户端的行为。

  • 还可以指定一些全局选项,比如是否接受广播地址、指定特定的域名服务器等。

实际文件大致如下:

# Configuration file for /sbin/dhclient.
#
# This is a sample configuration file for dhclient. See dhclient.conf's
#       man page for more information about the syntax of this file
#       and a more comprehensive list of the parameters understood by
#       dhclient.
#
# Normally, if the DHCP server provides reasonable information and does
#       not leave anything out (like the domain name, for example), then
#       few changes must be made to this file, if any.
#

option rfc3442-classless-static-routes code 121 = array of unsigned integer 8;

send host-name = gethostname();
request subnet-mask, broadcast-address, time-offset, routers,
        domain-name, domain-name-servers, domain-search, host-name,
        dhcp6.name-servers, dhcp6.domain-search, dhcp6.fqdn, dhcp6.sntp-servers,
        netbios-name-servers, netbios-scope, interface-mtu,
        rfc3442-classless-static-routes, ntp-servers;

#send dhcp-client-identifier 1:0:a0:24:ab:fb:9c;
#send dhcp-lease-time 3600;
#supersede domain-name "fugue.com home.vix.com";
#prepend domain-name-servers 127.0.0.1;
#require subnet-mask, domain-name-servers;
timeout 300;
#retry 60;
#reboot 10;
#select-timeout 5;
#initial-interval 2;
#script "/sbin/dhclient-script";
#media "-link0 -link1 -link2", "link0 link1";
#reject 192.33.137.209;

#alias {
#  interface "eth0";
#  fixed-address 192.5.5.213;
#  option subnet-mask 255.255.255.255;
#}

#lease {
#  interface "eth0";
#  fixed-address 192.33.137.200;
#  medium "link0 link1";
#  option host-name "andare.swiftmedia.com";
#  option subnet-mask 255.255.255.0;
#  option broadcast-address 192.33.137.255;
#  option routers 192.33.137.250;
#  option domain-name-servers 127.0.0.1;
#  renew 2 2000/1/12 00:00:01;
#  rebind 2 2000/1/12 00:00:01;
#  expire 2 2000/1/12 00:00:01;
#}

NetManager: 新一代网络管理器

network与NetworkManager的关系

  • CentOS 7Red Hat Enterprise Linux 7 系统中,network服务和NetworkManager(默认使用)是两个常用的网络管理工具,它们之间有一定的关系,但是也有区别:

后者是一个动态网络控制和配置守护进程,在网络设备和连接可用时保持启动和激活。传统的 ifcfg 类型配置文件仍受支持。

  • network服务:network服务是在CentOS 6及更早版本中使用的传统网络管理方式。

它使用/etc/sysconfig/network-scripts/目录下的配置文件来管理网络接口和网络设置。
通过编辑这些配置文件,您可以手动配置网络接口、IP地址、网关、DNS等网络参数。
network服务提供了较为底层的网络管理功能,适用于服务器环境或不需要频繁变动网络配置的情况。

  • NetworkManager:NetworkManager是在CentOS 7及更新的版本中引入的新一代网络管理工具

它提供了更高级的网络管理功能,并且支持动态配置和自动检测网络接口。
NetworkManager可以通过图形界面或命令行进行配置,并且支持各种网络连接类型,包括有线连接、Wi-Fi连接、移动蜂窝数据连接等。
NetworkManager通过/etc/NetworkManager/目录下的配置文件来管理网络设置。

[gemini@localhost ~]$ ls /etc/NetworkManager/
conf.d  dispatcher.d  dnsmasq.d  dnsmasq-shared.d  NetworkManager.conf  system-connections  VPN
  • 虽然network服务和NetworkManager都可以用于配置网络,但它们之间存在一些差异。

在CentOS系统中,默认情况下,NetworkManager会管理网络接口,而network服务会被禁用。
如果您需要使用传统的network服务进行网络配置,可以通过停止和禁用NetworkManager服务,并启用network服务来实现。

[gemini@localhost ~]$ systemctl status network
● network.service - LSB: Bring up/down networking
   Loaded: loaded (/etc/rc.d/init.d/network; bad; vendor preset: disabled)
   Active: active (exited) since Tue 2024-12-17 17:47:26 PST; 1h 8min ago
     Docs: man:systemd-sysv-generator(8)
  Process: 65412 ExecStop=/etc/rc.d/init.d/network stop (code=exited, status=0/SUCCESS)
  Process: 66222 ExecStart=/etc/rc.d/init.d/network start (code=exited, status=0/SUCCESS)
    Tasks: 0

Dec 17 17:47:26 localhost.localdomain network[66222]: RTNETLINK answers: File exists
Dec 17 17:47:26 localhost.localdomain network[66222]: RTNETLINK answers: File exists
Dec 17 17:47:26 localhost.localdomain network[66222]: RTNETLINK answers: File exists
Dec 17 17:47:26 localhost.localdomain network[66222]: RTNETLINK answers: File exists
Dec 17 17:47:26 localhost.localdomain network[66222]: RTNETLINK answers: File exists
Dec 17 17:47:26 localhost.localdomain network[66222]: RTNETLINK answers: File exists
Dec 17 17:47:26 localhost.localdomain network[66222]: RTNETLINK answers: File exists
Dec 17 17:47:26 localhost.localdomain network[66222]: RTNETLINK answers: File exists
Dec 17 17:47:26 localhost.localdomain systemd[1]: Started LSB: Bring up/down networking.
Dec 17 17:47:58 localhost.localdomain network[66039]: Bringing up interface ens33:  Error: Connection activation failed: IP configuration could not be reserv...ut, etc.)
Hint: Some lines were ellipsized, use -l to show in full.

关键词:active (exited) => 已退出运行

总的来说,network服务和NetworkManager都是CentOS系统中常用的网络管理工具,根据您的需求和使用场景选择适合的工具即可。

查看运行状态

[gemini@localhost ~]$ systemctl status NetworkManager
● NetworkManager.service - Network Manager
   Loaded: loaded (/usr/lib/systemd/system/NetworkManager.service; enabled; vendor preset: enabled)
   Active: active (running) since Tue 2024-12-17 03:53:20 PST; 15h ago
     Docs: man:NetworkManager(8)
 Main PID: 800 (NetworkManager)
    Tasks: 3
   CGroup: /system.slice/NetworkManager.service
           └─800 /usr/sbin/NetworkManager --no-daemon

Dec 17 18:55:33 localhost.localdomain dhclient[68758]: DHCPDISCOVER on ens33 to 255.255.255.255 port 67 interval 13 (xid=0x46f6d533)
Dec 17 18:55:46 localhost.localdomain dhclient[68758]: DHCPDISCOVER on ens33 to 255.255.255.255 port 67 interval 17 (xid=0x46f6d533)
Dec 17 18:56:02 localhost.localdomain NetworkManager[800]: <warn>  [1734490562.8840] dhcp4 (ens33): request timed out
Dec 17 18:56:02 localhost.localdomain NetworkManager[800]: <info>  [1734490562.8845] dhcp4 (ens33): state changed unknown -> timeout
Dec 17 18:56:02 localhost.localdomain NetworkManager[800]: <info>  [1734490562.8901] dhcp4 (ens33): canceled DHCP transaction, DHCP client pid 68758
Dec 17 18:56:02 localhost.localdomain NetworkManager[800]: <info>  [1734490562.8901] dhcp4 (ens33): state changed timeout -> done
Dec 17 18:56:02 localhost.localdomain NetworkManager[800]: <info>  [1734490562.8903] device (ens33): state change: ip-config -> failed (reason 'ip-config-unav...anaged')
Dec 17 18:56:02 localhost.localdomain NetworkManager[800]: <info>  [1734490562.8908] manager: NetworkManager state is now CONNECTED_LOCAL
Dec 17 18:56:02 localhost.localdomain NetworkManager[800]: <warn>  [1734490562.8912] device (ens33): Activation: failed for connection 'ens33'
Dec 17 18:56:02 localhost.localdomain NetworkManager[800]: <info>  [1734490562.8915] device (ens33): state change: failed -> disconnected (reason 'none', sys-...anaged')
Hint: Some lines were ellipsized, use -l to show in full.

查看进程日志

journalctl -u NetworkManager

职能1:管理DNS

  • /etc/resolv.conf : DNS 配置
nameserver 8.8.8.8 # google域名服务器
nameserver 8.8.4.4 # google域名服务器

nmcli : NetworkManager的官方命令行工具

  • nmcli : NetworkManager的官方命令行工具,用于配置、管理和监控网络连接。

显示当前的网络连接列表

[gemini@localhost ~]$ nmcli connection show
NAME    UUID                                  TYPE      DEVICE 
virbr0  6aad7a6c-1222-4e2e-ab81-0f059ed2d41b  bridge    virbr0 
ens33   252953cf-2d23-4c2c-8bc1-8539f88a98b9  ethernet  --     

查看某个特定网络连接的详细信息

nmcli connection show {connection_name}

如: nmcli connection show ens33

其中,{connection_name}是要查看的网络连接的名称。

配置静态IP地址、子网掩码和网关

nmcli connection modify {connection_name} ipv4.method manual ipv4.addresses {ip_address}/{subnet_mask} ipv4.gateway {gateway_ip}

{connection_name}是要配置的网络连接的名称;{ip_address}是要设置的IP地址;{subnet_mask}是子网掩码;{gateway_ip}是网关IP地址

配置DNS服务器

nmcli connection modify {connection_name} ipv4.dns {dns_server1} {dns_server2}

可以指定一个或多个DNS服务器的IP地址,用空格分隔

重新启用网络连接使更改生效

nmcli connection up {connection_name}

如果您需要动态获取IP地址(使用DHCP)

nmcli connection modify {connection_name} ipv4.method auto

添加一个新的网络连接

nmcli connection add type {connection_type} con-name {connection_name} ifname {interface_name}

其中
{connection_type}是要添加的网络连接类型,如ethernet、wifi、ppp等;
{connection_name}是新连接的名称;
{interface_name}是要分配给连接的网络接口的名称。

删除某个网络连接

nmcli connection delete {connection_name}

启用或禁用某个网络连接

nmcli connection up {connection_name}

nmcli connection down {connection_name}

修改某个网络连接的设置

nmcli connection modify {connection_name} {setting_name} {value}

{setting_name}是要更改的连接设置的名称;{value}是新值。

FAQ

Q : 修改主机名

  • vim /etc/hostname 编辑配置文件
www   #修改localhost.localdomain为www
  • vim /etc/hosts 编辑配置文件
127.0.0.1   localhost  www   #修改localhost.localdomain为www

Q: 重启network服务时,报:Error:Failed to start LSB: Bring up/down networking

问题描述

  • 配置好CENTOS的网卡(/etc/sysconfig/network-scripts/ifcfg-ens33),重启网卡(sudo systemctl restart network)时报错:
Job for network.service failed because the control process exited with error code. 
See “systemctl status network.service” and “journalctl -xe” for details.

问题描述

  • step1 可通过查看网卡状态下面产生的错误日志,可以看到上面没有发现配置文件发生错误,没有错误行的报错,而下面报Failed to start LSB: Bring up/down networking.

  • step2 配置及解决
  • 第一种方法:修改MAC地址

造成这样的原因可能是配置文件中的MAC地址与当前网卡MAC不一致,只需要修改一下配置文件即可

[root@kvm ~]# ip addr

其中00:0c:29:9a:8e:9e为MAC地址,进入一个你自已的网卡中/etc/sysconfig/network-scripts/ifcfg-xxx添加修改HWADDR(如果该选项没有就添加上去)成这个MAC地址
注:因为MAC地址在网卡中都是一样的所以直接从其他网卡中复制就好了

HWADDR=00:0c:29:9a:8e:9e

这边问题不一定是MAC地址的问题,我上网搜了一下修改MAC地址后并没有什么用,最后查到是NetworkManager服务的问题

  • 第二种方法:禁用NetworkManager(新一代网络管理器),启用network服务(老版网络管理器)

NetworkManager(NetworManager)是检测网络、自动连接网络的程序。无论是无线还是有线连接,它都可以令您轻松管理。
对于无线网络,网络管理器可以自动切换到最可靠的无线网络。利用网络管理器的程序可以自由切换在线和离线模式。
网络管理器可以优先选择有线网络,支持 VPN。
网络管理器最初由 Redhat 公司开发,现在由 GNOME 管理。

systemctl status NetworkManager
systemctl status network

[root@kvm ~]#systemctl stop NetworkManager
[root@kvm ~]#systemctl disable NetworkManager
[root@kvm ~]#systemctl restart  network

或

[root@kvm ~]#systemctl  restart NetworkManager
[root@kvm ~]#systemctl restart  network

重启之后,网络恢复正常

参考文献

Y 推荐文献

X 参考文献

posted @ 2024-12-18 11:24  千千寰宇  阅读(192)  评论(0编辑  收藏  举报