文章目录
-
- 1_问题原因
- [2_nmcli 配置静态IP](#2_nmcli 配置静态IP)
- 3_使用配置文件固定IP
- 4_重启后存在的问题
- [5_nmcli 补充](#5_nmcli 补充)
1_问题原因
CentOS 7 于 2014年6月发布,基于 RHEL 7,并在 2024年6月30日 结束维护。
CentOS 9 作为目前的最新版本,今天闲来闲来无事下载下来后研究研究。
为了方便日后学习使用,第一步就是配置静态IP,方便ssh服务远程连接。
所以我按照以往配置静态ip的经验进行了如下操作:
shell
vim /etc/sysconfig/network-scripts/ifcfg-ens33
但是发现,并没有 NAT 网络的这个配置文件:
进入该配置文件所在目录下,查看详细信息:
shell
cd /etc/sysconfig/network-scripts
ls
发现如下文件:
文件内容如下:
shell
[shenyang@localhost network-scripts]$ cat readme-ifcfg-rh.txt
NetworkManager stores new network profiles in keyfile format in the
/etc/NetworkManager/system-connections/ directory.
Previously, NetworkManager stored network profiles in ifcfg format
in this directory (/etc/sysconfig/network-scripts/). However, the ifcfg
format is deprecated. By default, NetworkManager no longer creates
new profiles in this format.
Connection profiles in keyfile format have many benefits. For example,
this format is INI file-based and can easily be parsed and generated.
Each section in NetworkManager keyfiles corresponds to a NetworkManager
setting name as described in the nm-settings(5) and nm-settings-keyfile(5)
man pages. Each key-value-pair in a section is one of the properties
listed in the settings specification of the man page.
If you still use network profiles in ifcfg format, consider migrating
them to keyfile format. To migrate all profiles at once, enter:
# nmcli connection migrate
This command migrates all profiles from ifcfg format to keyfile
format and stores them in /etc/NetworkManager/system-connections/.
Alternatively, to migrate only a specific profile, enter:
# nmcli connection migrate <profile_name|UUID|D-Bus_path>
For further details, see:
* nm-settings-keyfile(5)
* nmcli(1)
大致意思就是老版本的配置文件已被弃用,迁移到了
/etc/NetworkManager/system-connections/
目录中。要一次迁移所有配置文件可以使用
nmcli connection migrate
命令,详细信息参考nmcli
。
2_nmcli 配置静态IP
那么这个nmcli
又是什么呢?经过查阅资料得知:
CentOS 9 默认使用 NetworkManager 管理网络,而nmcli
是 NetworkManager 命令行接口的缩写,是一个用来进行网络配置、管理网络连接的命令工具,可以简化网络设置,尤其是在无头(没有图形界面)环境下。
所以,我们可以尝试用它来设置一个静态 IP:
shell
sudo nmcli con mod "ens33" ipv4.addresses 192.168.150.145/24 # IP地址,自己设置,要匹配网络范围
sudo nmcli con mod "ens33" ipv4.gateway 192.168.150.2 # 网关,要和VMware中配置的虚拟网卡一致
sudo nmcli con mod "ens33" ipv4.dns "192.168.150.2" # DNS服务器,和网关一致即可 8.8.8.8 也可以
sudo nmcli con mod "ens33" ipv4.method manual # IPv4配置方法设置为手动,也就是启用静态IP配置
sudo nmcli con up "ens33" # 使配置生效
查看是否配置成功:
shell
[shenyang@localhost network-scripts]$ ifconfig
ens33: flags=4099<UP,BROADCAST,MULTICAST> mtu 1500
inet 192.168.150.145 netmask 255.255.255.0 broadcast 192.168.150.255
inet6 fe80::20c:29ff:fea4:42bd prefixlen 64 scopeid 0x20<link>
ether 00:0c:29:a4:42:bd txqueuelen 1000 (Ethernet)
RX packets 0 bytes 0 (0.0 B)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 0 bytes 0 (0.0 B)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
[shenyang@localhost network-scripts]$ ping www.baidu.com
PING www.baidu.com.localdomain (198.18.1.175) 56(84) 比特的数据。
64 比特,来自 198.18.1.175 (198.18.1.175): icmp_seq=1 ttl=128 时间=0.582 毫秒
64 比特,来自 198.18.1.175 (198.18.1.175): icmp_seq=2 ttl=128 时间=0.683 毫秒
64 比特,来自 198.18.1.175 (198.18.1.175): icmp_seq=3 ttl=128 时间=0.591 毫秒
64 比特,来自 198.18.1.175 (198.18.1.175): icmp_seq=4 ttl=128 时间=0.386 毫秒
nmcli
配置到此完成!
另外在配置前一定要注意自己的网络接口名称是否是ens33
,可以使用ifconfig
或nmcli d
命令查看,如果不一致别忘了进行替换。
3_使用配置文件固定IP
还记得我们上面提到过的/etc/NetworkManager/system-connections/
目录吗 ?
编辑该目录下的配置文件也可以达到相同的效果:
shell
cd /etc/NetworkManager/system-connections/
ls
可以看到对应的ens33.nmconnection
文件,修改内容如下:
shell
sudo vim ens33.nmconnection
go
[connection]
id=ens33
uuid=2c1fb13d-391d-4add-9919-7cebb1f76782
type=ethernet
autoconnect=false
interface-name=ens33
[ethernet]
[ipv4]
address1=192.168.150.145/24,192.168.150.2
dns=192.168.150.2;
method=manual
[ipv6]
addr-gen-mode=eui64
method=auto
[proxy]
修改配置文件后,需要重启网络服务以使更改生效。
shell
sudo systemctl restart NetworkManager
或者重启网卡:
shell
sudo nmcli connection reload # 重新加载配置文件, 并使网络连接生效
sudo nmcli con up ens33 # 重新启用网络接口并应用新的配置
验证配置:
shell
ip a show ens33
shell
2: ens33: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP group default qlen 1000
link/ether 00:0c:29:a4:42:bd brd ff:ff:ff:ff:ff:ff
altname enp2s1
inet 192.168.150.145/24 brd 192.168.150.255 scope global noprefixroute ens33
valid_lft forever preferred_lft forever
inet6 fe80::20c:29ff:fea4:42bd/64 scope link noprefixroute
valid_lft forever preferred_lft forever
可以看到看到
ens33
接口已经使用了配置的静态 IP 地址192.168.150.145
。
4_重启后存在的问题
部分版本可能出现重启后发现配置没有生效,使用ifconfig
命令也没有查看到对应的IP地址,但是/etc/NetworkManager/system-connections/
配置文件中的内容确实是我们配置之后的。
这是由于配置的网卡(比如ens33
)没有设置自动连接造成的,如果使用nmcli connection up ens33
后再查看会发现配置生效了。
使用如下命令解决:
shell
sudo nmcli connection modify "ens33" connection.autoconnect yes
sudo systemctl restart NetworkManager
还可以通过修改配置文件的方式确保网卡开机后自动连接:
shell
sudo vim /etc/NetworkManager/system-connections/ens33.nmconnection
在文件中找到 [connection]
部分,确保 autoconnect
设置为 true
:
go
[connection]
id=ens33
uuid=2c1fb13d-391d-4add-9919-7cebb1f76782
type=ethernet
autoconnect=true # 确保这一行设置为 true
interface-name=ens33
使更改生效,重新启动 NetworkManager
:
shell
sudo systemctl restart NetworkManager
确保 NetworkManager
服务在系统启动时自动启动:
shell
sudo systemctl enable NetworkManager
配置完毕后, ens33
在系统启动时就能自动连接了。
5_nmcli 补充
nmcli 的功能和作用
nmcli
允许用户执行以下常见的网络管理任务:
- 配置有线和无线网络
- 查看网络接口和连接的状态
- 启动、停止、重新连接网络
- 设置静态或动态 IP 地址
- 管理 VPN 连接
- 配置网络的代理设置等
nmcli
通常在需要通过命令行进行网络管理时非常有用,尤其是在没有图形界面的服务器环境中。
基本语法:nmcli [选项] <命令> [参数]
常用命令和用法
1.查看当前网络连接的状态,包括接口、IP 地址等信息
bash
nmcli device status
示例输出:
plaintext
DEVICE TYPE STATE CONNECTION
ens33 ethernet 已连接 ens33
lo loopback 连接(外部) lo
2.查看所有连接
列出所有网络连接(包括有线、无线、VPN 等):
bash
nmcli connection show
示例输出:
plaintext
NAME UUID TYPE DEVICE
ens33 2c1fb13d-391d-4add-9919-7cebb1f76782 ethernet ens33
lo 4b7c1923-16d8-4f53-90f0-e17b9a6519e0 loopback lo
3.激活网络连接
激活特定的网络连接(例如连接到一个 Wi-Fi 网络):
bash
nmcli connection up <连接名称>
例如,连接到 ens33
:
bash
nmcli connection up ens33
4.停用网络连接
停止一个网络连接(断开 Wi-Fi、以太网等):
bash
nmcli connection down <连接名称>
例如,断开 ens33
:
bash
nmcli connection down ens33
5.配置无线网络
连接到一个无线网络:
bash
nmcli device wifi connect <SSID> password <密码>
示例:
bash
nmcli device wifi connect MyNetwork password MyPassword
6.配置静态 IP 地址
设置静态 IP 地址:
bash
nmcli connection modify <连接名称> ipv4.addresses <IP地址>/<子网掩码> ipv4.method manual
nmcli connection up <连接名称>
示例:
bash
nmcli connection modify Wired connection 1 ipv4.addresses 192.168.1.100/24 ipv4.method manual
nmcli connection up Wired connection 1
7.配置 DNS 服务器
设置 DNS 服务器:
bash
nmcli connection modify <连接名称> ipv4.dns "8.8.8.8 8.8.4.4"
nmcli connection up <连接名称>
8.查看当前活动的 IP 地址
bash
nmcli device show
这将显示设备的详细信息,包括当前的 IP 地址。
9.查看设备的详细信息
显示特定设备的详细信息(如网络接口 eth0
或 wlan0
):
bash
nmcli device show <设备名称>
示例:
bash
nmcli device show ens33
10.断开 Wi-Fi 连接
bash
nmcli device disconnect wlan0
nmcli 选项和常见子命令 | 说明 |
---|---|
device | 管理网络设备(如启用/禁用设备、查看设备状态等)。 |
connection | 管理网络连接(如激活、停用、修改连接等)。 |
general | 显示系统网络管理的基本信息(如版本、状态等)。 |
wifi | 用于管理无线网络连接,扫描、连接等。 |
monitor | 实时监控网络状态、连接和设备事件。 |