Linux静态IP设置教程与步骤详解
时间:2026-01-05 13:24:51 303浏览 收藏
来到golang学习网的大家,相信都是编程学习爱好者,希望在这里学习文章相关编程知识。下面本篇文章就来带大家聊聊《Linux下静态IP配置方法及步骤详解》,介绍一下,希望对大家的知识积累有所帮助,助力实战开发!
配置Linux静态IP需根据发行版选择工具:Ubuntu/Debian用Netplan编辑YAML文件,RHEL/CentOS修改network-scripts中的ifcfg文件,核心参数包括IP地址、子网掩码、网关和DNS,确保参数准确、避免IP冲突,并正确应用配置。

在Linux系统上配置静态IP地址,其实主要就是通过编辑网络配置文件来固定你的机器在网络中的身份。这通常意味着你需要告诉系统你的IP地址是什么、子网掩码是多少、默认网关指向哪里,以及使用哪些DNS服务器。这样做的好处显而易见:你的服务器或特定设备将永远拥有一个可预测的网络位置,这对于提供稳定服务、设置防火墙规则或者进行端口转发来说至关重要。
解决方案
配置静态IP地址,我们通常会根据你使用的Linux发行版和其默认的网络管理工具来选择不同的路径。这里我主要以现代Ubuntu/Debian系常用的Netplan,以及RHEL/CentOS系常用的network-scripts为例,它们覆盖了大部分常见的服务器场景。
方法一:使用Netplan (Ubuntu 18.04+ / Debian 10+)
Netplan是Ubuntu和Debian等现代发行版推荐的网络配置工具,它使用YAML文件来定义网络接口。
识别你的网络接口名: 打开终端,输入
ip a或ifconfig。你会看到类似eth0、ens33、enp0s3这样的接口名。记住它,这是你接下来要配置的对象。找到Netplan配置文件: 通常,Netplan的配置文件位于
/etc/netplan/目录下。你可能会看到一个名为00-installer-config.yaml或01-netcfg.yaml的文件。如果不存在,你可以自己创建一个,比如00-static-ip.yaml。 使用你喜欢的文本编辑器打开它,比如sudo nano /etc/netplan/00-installer-config.yaml。编辑配置文件内容: 将文件的内容修改为以下格式。注意YAML文件的缩进非常重要,务必使用空格而不是Tab键。
network: version: 2 renderer: networkd # 或者 network-manager,取决于你的系统配置 ethernets: ens33: # 将 'ens33' 替换为你的实际网络接口名 dhcp4: no # 禁用IPv4 DHCP addresses: - 192.168.1.100/24 # 你的静态IP地址和子网掩码(CIDR格式) gateway4: 192.168.1.1 # 你的默认网关 nameservers: addresses: [8.8.8.8, 8.8.4.4] # 你的DNS服务器地址 # 可选:如果需要IPv6静态地址 # dhcp6: no # addresses: # - 2001:db8::100/64 # gateway6: 2001:db8::1这里
renderer: networkd是一个常见的选择,如果你在桌面环境且使用NetworkManager,也可以尝试renderer: network-manager。addresses字段后面跟着的/24表示子网掩码是255.255.255.0。应用Netplan配置: 保存文件并退出编辑器。然后执行以下命令应用更改:
sudo netplan apply如果一切顺利,命令会立即生效。如果有错误,它会提示你。
方法二:使用network-scripts (RHEL/CentOS 7/8 或 Fedora 旧版)
在基于RHEL的系统上,网络配置通常通过 /etc/sysconfig/network-scripts/ 目录下的 ifcfg- 文件来管理。
识别你的网络接口名: 同样,使用
ip a或ifconfig来找到你的网络接口名,比如eth0或enp0s3。编辑接口配置文件: 进入
/etc/sysconfig/network-scripts/目录,找到对应你网络接口的文件,例如ifcfg-eth0。 使用文本编辑器打开它:sudo nano /etc/sysconfig/network-scripts/ifcfg-eth0。修改配置文件内容: 确保以下关键行存在并配置正确:
TYPE=Ethernet BOOTPROTO=static # 设置为静态IP DEFROUTE=yes PEERDNS=yes PEERROUTES=yes IPV4_FAILURE_FATAL=no IPV6INIT=yes IPV6_AUTOCONF=yes NAME=eth0 # 你的网络接口名 UUID=xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx # 保持不变或删除 DEVICE=eth0 # 你的网络接口名 ONBOOT=yes # 开机启动时激活此接口 IPADDR=192.168.1.100 # 你的静态IP地址 NETMASK=255.255.255.0 # 你的子网掩码 GATEWAY=192.168.1.1 # 你的默认网关 DNS1=8.8.8.8 # 你的主DNS服务器 DNS2=8.8.4.4 # 你的备用DNS服务器
如果你之前是DHCP,
BOOTPROTO可能是dhcp,需要改为static。重启网络服务: 保存文件并退出。然后重启网络服务以应用更改:
sudo systemctl restart network或者,如果你使用的是NetworkManager:sudo nmcli connection reloadsudo nmcli connection up eth0(将eth0替换为你的接口名)
验证配置: 无论你使用哪种方法,配置完成后,都应该验证一下:
ip a show:检查IP地址是否已正确分配。ping google.com:测试网络连接和DNS解析是否正常。ip route:确认默认网关是否正确。
为什么我的Linux需要静态IP地址?动态IP不好吗?
这个问题我被问过很多次,尤其是在搭建服务器或进行一些网络服务配置时。其实,动态IP(DHCP分配)在很多场景下非常方便,比如你的笔记本电脑、手机,它们需要随时随地接入不同的网络,DHCP能自动获取IP,省去了手动配置的麻烦。但对于一台服务器、一个路由器,或者任何需要提供稳定服务的设备来说,动态IP就可能成为一个隐患了。
想象一下,你配置了一个Web服务器,端口转发也设置好了,防火墙规则也只允许特定IP访问。如果你的服务器IP地址突然变了,那么所有的这些配置都会失效,你的网站就访问不了了,远程连接也会中断。我个人就遇到过这种情况,半夜被电话叫醒,结果发现服务器IP变了,排查了半天才定位到问题,那种经历真是让人头大。
静态IP的价值在于它的确定性和稳定性。它就像你家的门牌号,永远固定在那里,不会变。这样一来:
- 服务可预测性: 任何依赖IP地址的服务(如Web服务器、数据库、SSH远程访问、VPN服务器)都能稳定运行,不会因为IP地址变化而中断。
- 端口转发和防火墙: 你可以精确地为这个IP地址配置端口转发规则,或者在防火墙中设置只允许特定IP访问,安全性更高。
- DNS解析: 如果你在内部网络有自己的DNS服务器,或者需要将域名指向你的服务器,静态IP能确保解析始终指向正确的目标。
- 网络管理: 对于网络管理员来说,管理和排查问题时,知道每台设备的固定IP地址会大大简化工作。
当然,如果你只是一个普通用户,在自己的电脑上浏览网页、收发邮件,那么动态IP完全够用,甚至更方便。但一旦涉及到“提供服务”或“需要被稳定访问”,静态IP就是不二之选。
配置静态IP时常犯的错误有哪些?如何避免?
在配置静态IP时,我见过太多小细节导致整个网络连接中断的情况,有些错误真的让人哭笑不得,但又非常常见。
IP地址、子网掩码或网关的拼写错误/数值错误: 这是最常见的,比如把
192.168.1.100打成192.168.100,或者子网掩码255.255.255.0写错。网关地址尤其关键,一旦错了,你的机器就无法与外部网络通信了。- 避免: 配置前务必确认你的网络环境参数(路由器的IP、子网掩码),并仔细核对输入的每一个字符。使用
ip route或route -n可以查看当前路由表,帮助你确认网关。
- 避免: 配置前务必确认你的网络环境参数(路由器的IP、子网掩码),并仔细核对输入的每一个字符。使用
IP地址冲突: 你配置的静态IP地址可能已经被网络中的另一台设备占用了。这会导致两台设备都无法正常通信,或者网络行为异常。
- 避免: 在配置静态IP之前,最好先用
ping命令(如ping 192.168.1.100)检查一下你打算使用的IP地址是否已被占用。更严谨的做法是在你的路由器或DHCP服务器上保留一个IP地址段,专门用于静态分配,避免DHCP分配到这些地址。
- 避免: 在配置静态IP之前,最好先用
DNS服务器配置错误或遗漏: 即使IP、网关都对,如果DNS服务器地址错了或者没配置,你依然无法通过域名访问互联网(比如
ping google.com会失败,但ping 8.8.8.8可能成功)。这就像你有了地址,却没有电话簿来查找联系人。- 避免: 使用公共DNS(如
8.8.8.8和8.8.4.4)或者你ISP提供的DNS服务器地址。确保在配置文件中正确填写。
- 避免: 使用公共DNS(如
忘记应用更改或重启网络服务: 很多人改了配置文件,却忘了执行
sudo netplan apply或sudo systemctl restart network。结果就是配置没生效,然后开始怀疑人生。- 避免: 养成习惯,修改完网络配置后,立即执行相应的命令来应用更改。如果系统提示错误,仔细阅读错误信息。
编辑了错误的配置文件或使用了错误的工具: 比如在CentOS上尝试用Netplan的YAML格式,或者在Ubuntu上修改
ifcfg-*文件。每个发行版都有其偏好的网络管理方式。- 避免: 了解你当前Linux发行版使用的网络管理工具。
systemctl status systemd-networkd或systemctl status NetworkManager可以帮你判断。
- 避免: 了解你当前Linux发行版使用的网络管理工具。
接口名称错误:
ens33、eth0、enp0s3这些接口名在不同的系统上可能不一样。填错了接口名,配置就无法应用到正确的网卡上。- 避免: 始终用
ip a命令确认当前系统中的网络接口名称。
- 避免: 始终用
遇到问题时,我通常会先检查日志文件,比如 journalctl -xe 可以显示最近的系统日志,很多时候网络服务的错误信息会在这里。另外,一步步地排查:先 ip a 看看IP对不对,再 ip route 看看网关对不对,最后 ping 8.8.8.8 看看能否通外网,如果能通但 ping google.com 不通,那基本就是DNS的问题了。
如何在不同的Linux发行版上灵活调整静态IP配置?
Linux世界的多样性既是魅力也是挑战,尤其是在网络配置这块。虽然核心的网络概念(IP、子网掩码、网关、DNS)是通用的,但实现这些配置的工具和文件路径却五花八门。我发现,掌握几种主流的配置方式,就能应对绝大多数场景了。
Netplan (Ubuntu 18.04+, Debian 10+等) 这是我前面详细介绍过的,基于YAML文件,位于
/etc/netplan/目录下。它的设计哲学是提供一个抽象层,底层可以是networkd也可以是NetworkManager。理解YAML的缩进规则是关键。优点是简洁、统一,缺点是如果YAML格式有误,可能导致整个网络服务启动失败。network-scripts(RHEL/CentOS 7/8, Fedora 旧版) 这种方式主要通过/etc/sysconfig/network-scripts/ifcfg-文件来配置。它是传统的、基于键值对的配置文件。对于习惯了RHEL系的用户来说,这套很熟悉。CentOS 8 引入了nmcli(NetworkManager CLI) 作为首选,但ifcfg文件仍然被支持。systemd-networkd(Arch Linux, CoreOS, 以及其他一些追求简洁的发行版)systemd-networkd是systemd套件的一部分,它提供了一种原生的网络管理方式。配置文件通常位于/etc/systemd/network/目录下,以.network结尾。例如,你可以创建一个20-wired.network文件:[Match] Name=enp0s3 # 你的网络接口名 [Network] Address=192.168.1.100/24 Gateway=192.168.1.1 DNS=8.8.8.8 DNS=8.8.4.4
配置完成后,需要启用并启动
systemd-networkd服务:sudo systemctl enable systemd-networkdsudo systemctl start systemd-networkd这种方式很适合轻量级、无GUI的服务器环境。NetworkManager(桌面版Linux,以及一些服务器)NetworkManager是一个更高级的网络管理工具,通常带有图形界面,但在服务器上也可以通过nmcli(NetworkManager Command Line Interface) 来操作。它能够管理Wi-Fi、以太网、VPN等多种连接。 配置静态IP的命令大致如下:nmcli connection modify "Wired connection 1" ipv4.method manual ipv4.addresses 192.168.1.100/24 ipv4.gateway 192.168.1.1 ipv4.dns "8.8.8.8,8.8.4.4" nmcli connection up "Wired connection 1"
这里的
"Wired connection 1"是NetworkManager为你的有线连接创建的名称,你可以通过nmcli connection show来查看。NetworkManager的优势在于其灵活性和对复杂网络环境的支持,但对于简单的静态IP配置,它的命令可能显得有些冗长。
我的经验是,无论你面对哪种发行版,首先要做的就是识别当前系统使用的网络管理工具。通常可以通过 systemctl status network、systemctl status NetworkManager、systemctl status systemd-networkd 等命令来判断哪个服务正在运行。一旦确定了工具,再查找对应的配置文件或命令,就能事半功倍了。虽然表面形式各异,但底层逻辑都是围绕IP、子网、网关和DNS这几个核心参数展开的,理解了这些,配置起来就游刃有余了。
今天关于《Linux静态IP设置教程与步骤详解》的内容就介绍到这里了,是不是学起来一目了然!想要了解更多关于Linux系统的内容请关注golang学习网公众号!
-
501 收藏
-
501 收藏
-
501 收藏
-
501 收藏
-
501 收藏
-
497 收藏
-
183 收藏
-
101 收藏
-
430 收藏
-
188 收藏
-
227 收藏
-
329 收藏
-
272 收藏
-
350 收藏
-
174 收藏
-
151 收藏
-
437 收藏
-
- 前端进阶之JavaScript设计模式
- 设计模式是开发人员在软件开发过程中面临一般问题时的解决方案,代表了最佳的实践。本课程的主打内容包括JS常见设计模式以及具体应用场景,打造一站式知识长龙服务,适合有JS基础的同学学习。
- 立即学习 543次学习
-
- GO语言核心编程课程
- 本课程采用真实案例,全面具体可落地,从理论到实践,一步一步将GO核心编程技术、编程思想、底层实现融会贯通,使学习者贴近时代脉搏,做IT互联网时代的弄潮儿。
- 立即学习 516次学习
-
- 简单聊聊mysql8与网络通信
- 如有问题加微信:Le-studyg;在课程中,我们将首先介绍MySQL8的新特性,包括性能优化、安全增强、新数据类型等,帮助学生快速熟悉MySQL8的最新功能。接着,我们将深入解析MySQL的网络通信机制,包括协议、连接管理、数据传输等,让
- 立即学习 500次学习
-
- JavaScript正则表达式基础与实战
- 在任何一门编程语言中,正则表达式,都是一项重要的知识,它提供了高效的字符串匹配与捕获机制,可以极大的简化程序设计。
- 立即学习 487次学习
-
- 从零制作响应式网站—Grid布局
- 本系列教程将展示从零制作一个假想的网络科技公司官网,分为导航,轮播,关于我们,成功案例,服务流程,团队介绍,数据部分,公司动态,底部信息等内容区块。网站整体采用CSSGrid布局,支持响应式,有流畅过渡和展现动画。
- 立即学习 485次学习