[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地址。
工作原理
-
发送DHCP请求
当dhclient命令被执行时,它会向局域网中的DHCP服务器发送一个DHCPDISCOVER
包,请求分配IP地址和其他网络配置信息。 -
接收DHCP响应
DHCP服务器在收到DHCPDISCOVER包后,会发送一个DHCPOFFER包给dhclient,包含可用的IP地址、子网掩码、默认网关和DNS服务器等配置信息。 -
请求IP地址
dhclient收到DHCPOFFER包后,会选择一个IP地址,并向服务器发送一个DHCPREQUEST包来请求该地址。 -
确认IP地址
DHCP服务器接收到DHCPREQUEST包后,会发送一个DHCPACK包给dhclient,确认分配的IP地址,并包含最终的配置信息。 -
配置网络接口
dhclient收到DHCPACK包后,会将获取的配置信息应用到系统上,配置网络接口使用动态获取的IP地址。
注: 通过
journalctl -u NetworkManager
或journalctl -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 7
或Red 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 推荐文献
- [网络] 网络可达性测试方法(汇总) - 博客园/千千寰宇 【推荐】
- [网络] IP地址的内外网判别与分类(IPv4) - 博客园/千千寰宇
- [计算机网络] IPv6 - 博客园/千千寰宇
- [Linux]Vmwaer创建CENTOS7虚拟机 - 博客园/千千寰宇
- VMware 虚拟网络编辑器 - 博客园/千千寰宇
- 子网掩码换算器(在线工具)
X 参考文献

本文链接: https://www.cnblogs.com/johnnyzen
关于博文:评论和私信会在第一时间回复,或直接私信我。
版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!
日常交流:大数据与软件开发-QQ交流群: 774386015 【入群二维码】参见左下角。您的支持、鼓励是博主技术写作的重要动力!