在linux中配置静态ip有四种方法:一、用nmcli命令(适用于networkmanager);二、编辑/etc/netplan/*.yaml(ubuntu 17.10+等);三、修改/etc/network/interfaces(debian/ubuntu server传统方式);四、用ip命令临时配置。

如果您在Linux系统中需要将网络接口从动态获取IP地址切换为固定IP地址,则需手动编辑网络配置文件或使用命令行工具进行设置。以下是针对不同场景的多种配置方法:
一、使用nmcli命令配置静态IP
nmcli是NetworkManager提供的命令行工具,适用于启用NetworkManager服务的发行版(如RHEL 8+、CentOS 8+、Fedora、Ubuntu Desktop等),无需重启网络服务即可生效。
1、查看当前活动连接名称:nmcli connection show --active
2、修改指定连接的IPv4地址配置:nmcli connection modify "连接名称" ipv4.addresses 192.168.1.100/24
3、设置网关:nmcli connection modify "连接名称" ipv4.gateway 192.168.1.1
4、设置DNS服务器:nmcli connection modify "连接名称" ipv4.dns "8.8.8.8,114.114.114.114"
5、禁用DHCP并启用手动配置:nmcli connection modify "连接名称" ipv4.method manual
6、重新加载并激活连接:nmcli connection down "连接名称" && nmcli connection up "连接名称"
二、编辑/etc/netplan/*.yaml配置静态IP
Netplan是Ubuntu 17.10及以后版本、部分Debian和CentOS Stream默认采用的网络配置工具,通过YAML格式声明式定义网络接口行为,应用后自动调用后端渲染器(如systemd-networkd或NetworkManager)。
1、列出Netplan配置文件:ls /etc/netplan/
2、用文本编辑器打开配置文件(如01-network-manager-all.yaml):sudo nano /etc/netplan/01-network-manager-all.yaml
3、将原DHCP配置替换为静态配置,示例内容如下:
network:
version: 2
renderer: networkd
ethernets:
ens33:
addresses: [192.168.1.100/24]
gateway4: 192.168.1.1
nameservers:
addresses: [8.8.8.8, 114.114.114.114]
4、保存文件并应用配置:sudo netplan apply
三、修改/etc/network/interfaces配置静态IP
该方式适用于使用ifupdown工具的传统Debian/Ubuntu Server(未启用Netplan)、旧版CentOS(配合network-scripts)等系统,依赖systemd-networkd或传统network服务管理接口启停。
1、备份原始配置文件:sudo cp /etc/network/interfaces /etc/network/interfaces.bak
2、编辑接口配置文件:sudo nano /etc/network/interfaces
3、注释掉原有dhcp行,添加静态配置,示例:
auto eth0
iface eth0 inet static
address 192.168.1.100
netmask 255.255.255.0
gateway 192.168.1.1
dns-nameservers 8.8.8.8 114.114.114.114
4、重启网络服务:sudo systemctl restart networking
四、使用ip命令临时配置静态IP
ip命令仅在当前会话生效,系统重启或接口重载后失效,适用于快速测试或故障排查场景,不修改任何配置文件。
1、查看当前接口名:ip link show | grep 'state UP' -B1
2、清除已有IP地址:sudo ip addr flush dev eth0
3、添加新IPv4地址:sudo ip addr add 192.168.1.100/24 dev eth0
4、添加默认路由:sudo ip route add default via 192.168.1.1
5、添加DNS解析(需同步修改/etc/resolv.conf):echo "nameserver 8.8.8.8" | sudo tee /etc/resolv.conf









