CentOS 9 配置静态IP

文章目录

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 管理网络,而nmcliNetworkManager 命令行接口的缩写,是一个用来进行网络配置、管理网络连接的命令工具,可以简化网络设置,尤其是在无头(没有图形界面)环境下。

所以,我们可以尝试用它来设置一个静态 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,可以使用ifconfignmcli 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.查看设备的详细信息

显示特定设备的详细信息(如网络接口 eth0wlan0):

bash 复制代码
nmcli device show <设备名称>

示例:

bash 复制代码
nmcli device show ens33

10.断开 Wi-Fi 连接

bash 复制代码
nmcli device disconnect wlan0

nmcli 选项和常见子命令 说明
device 管理网络设备(如启用/禁用设备、查看设备状态等)。
connection 管理网络连接(如激活、停用、修改连接等)。
general 显示系统网络管理的基本信息(如版本、状态等)。
wifi 用于管理无线网络连接,扫描、连接等。
monitor 实时监控网络状态、连接和设备事件。

相关推荐
シ風箏3 小时前
Neo4j【环境部署 02】图形数据库Neo4j在Linux系统ARM架构下的安装使用
linux·数据库·arm·neo4j
Cachel wood5 小时前
Vue.js前端框架教程8:Vue消息提示ElMessage和ElMessageBox
linux·前端·javascript·vue.js·前端框架·ecmascript
小屁不止是运维7 小时前
麒麟操作系统服务架构保姆级教程(二)ssh远程连接
linux·运维·服务器·学习·架构·ssh
黑客K-ing9 小时前
网络安全防范
linux·服务器·web安全
王三三9 小时前
群晖利用acme.sh自动申请证书并且自动重载证书的问题解决
linux·自动化·证书·群晖·acme·acme.sh·lets encrypt
路飞雪吖~10 小时前
【Linux】进程控制
linux·运维·服务器
wy02_10 小时前
Linux基本命令
linux·运维
qq_4592384910 小时前
Linux之压缩解压相关命令
linux
昌sit!10 小时前
监控IP频繁登录服务器脚本
服务器·网络·tcp/ip
慕羽★10 小时前
详细介绍如何使用rapidjson读取json文件
linux·c++·windows·json·file·param·rapidjson