ARTICLE DETAIL

资讯详情

深耕郑州网站建设与运营推广的一线实战洞察。

动态IP与静态IP怎么选?Ubuntu与Rocky Linux静态配置全攻略

动态IP与静态IP怎么选?Ubuntu与Rocky Linux静态配置全攻略 做运维这些年被问得最多的基础问题之一就是动态IP和静态IP到底怎么选。这问题听起来简单但真到了实操环节翻车的人可不少。有人给服务器配完静态IP直接断网有人嫌麻烦一直用动态IP结果NAS隔三差五失联一次还有人把Ubuntu和Rocky Linux的配置方式搞混改了半天网卡就是不生效。今天就把这件事从头到尾理清楚。先讲透动态IP和静态IP的本质区别和适用场景再给出Ubuntu、Rocky Linux两套最常见的静态IP配置实操最后整理一份排查清单。不管你是家里折腾NAS、公司维护服务器还是刚入门Linux网络配置这篇文章应该都能让你少走点弯路。1. 动态IP和静态IP到底差在哪1.1 先弄明白IP地址是怎么到你机器上的IP地址可以理解成设备在网络里的门牌号。两台机器要通信必须知道对方的门牌号才能把数据送过去。那这个门牌号是怎么来的说白了就两种方式一种是你手工给它贴上固定不变这就是静态IP另一种是网络里的DHCP服务器临时发给你用完了或到期了就还回去重新拿这就是动态IP。DHCP分配地址的过程有个经典的DORA四步握手很多人学过但没跟实际现象对应起来。机器一开机先广播一个Discover消息相当于在楼道里喊有没有人愿意给我发一个门牌号DHCP服务器收到后回一个Offer说我这有192.168.1.100可以给你用。机器再回一个Request好我就要这个。最后服务器回Acknowledge确认并把租约时间一起告诉它。这个租约时间通常是12到24小时家用路由器默认值一般是12小时或者24小时企业网络里也可以自定义。理解了DORA流程很多现象就说得通了。比如你重启了家里路由器所有设备的IP可能集体变一遍因为DHCP服务器重启后分配池的起始位置可能变了。再比如一台设备离线太久它的IP会被服务器收回分给别人等它再回来可能就拿不到原来的地址了。1.2 一张对照表看清核心差异动态IP和静态IP的区别核心就集中在分配方式、地址是否变化、配置和管理成本这几个维度上。对比维度动态IP静态IP分配方式DHCP服务器自动分配人工手工指定地址变化租约到期或设备重连后可能改变永久固定只要没人改就不变配置成本零配置插上网线/连上WiFi就能用需要手工填写地址、网关、DNS管理成本低地址由DHCP统一回收和分配高需要登记造册防止冲突适用场景终端设备、办公电脑、手机、临时设备服务器、NAS、打印机、摄像头等被访问的设备故障排查地址变了导致的玄学问题配置错误、地址冲突这类确定性问题有一点需要强调动态IP并不是每次都换IP的定时炸弹。它只在租约到期且续租失败或者设备重连、网络重启之后才可能变化。如果你只是在家上网刷视频看网页动态IP完全够用根本不用关心地址变不变。1.3 常见误区动态IP等于不稳定静态IP等于高性能这个误会我见过太多次了。很多人觉得动态IP就是劣质的静态IP就是高级的其实完全不是这么回事。动态IP的管理模型更适合大规模终端接入你想想要是公司五百台电脑每台都手工配静态IP光登记IP就得配个专人管理还得提心吊胆地防冲突。DHCP的价值恰恰在于自动化、零维护让非技术人员插上网线就能用。静态IP的优势只有一个词可预期。地址固定意味着其他设备可以稳定地找到它可以给它做端口转发可以把域名解析指向它。这种确定性是服务端场景的刚需但它的代价是你得自己维护好这张地址表。静态IP本身不会让网速更快也不会让延迟更低它只是解决了一个找得到的问题。2. 哪些场景必须用静态IP哪些用动态就够2.1 服务端场景静态IP是刚需判断要不要用静态IP我自己的标准就一句话这台机器是不是别人访问的对象是就配静态不是就保持动态。举例来说家里那台NAS电脑、电视、手机都要通过固定地址访问它的共享目录和媒体服务那它就最好是静态IP。你在一台Linux机器上跑了网站、数据库、Git服务或者配置了端口转发让外网能访问过来那静态IP更是必须的否则DHCP租约一到期IP一变端口转发规则还指向旧地址服务就失联了。还有一类场景容易被忽略设备之间互相调用。比如你在机器A上写了脚本每天凌晨通过SSH到机器B拉数据。脚本里写死的是IP如果B是动态IP哪天地址变了脚本就静默失败。我见过不少朋友排查这种时好时坏的问题查了半天最后发现是IP变了白白浪费一下午。2.2 动态IP真没你想的那么弱反过来办公电脑、个人笔记本、手机、智能电视这类终端设备动态IP是更合理的选择。它们的特点是移动性强、不需要被外部稳定访问、数量多。给它们配静态IP不仅管理成本高还容易踩地址冲突的雷——你手工分配的地址可能跟DHCP分配池里的地址重复到时候两台设备抢一个IP网络直接瘫痪。企业里还有一种常见做法可以平滑兼顾给重要设备在DHCP服务器上做保留。也就是说设备还是走DHCP动态获取但DHCP服务器根据这台设备的MAC地址每次都分配同一个IP。这样既不用在终端上手工配置又能保证地址固定家里路由器一般叫IP/MAC绑定或DHCP静态分配。很多人的NAS其实都用这种方式实现伪静态效果跟静态IP几乎没差别管理上还省心。2.3 选型之前先想清楚一个前提这里顺手提一个边界问题本文说的静态IP主要指局域网内你自己可控的地址配置。如果你的服务器要对外提供服务需要的是运营商分配的公网静态IP那种资源通常要单独申请、额外付费而且很多家庭宽带根本不提供。一般家庭和企业内网场景下你要做的其实是保证内网地址稳定再把路由器的端口映射做好这跟公网静态IP是两码事不要混为一谈。3. Ubuntu设置静态IP实操netplan3.1 动工之前先判断你用的是哪套网络方案Ubuntu从18.04开始默认使用netplan来管理网络配置配置文件统一放在/etc/netplan/目录下通常是00-installer-config.yaml或者01-netcfg.yaml。老版本16.04及更早用的是/etc/network/interfaces但那套机制在新版本里基本已经退出历史舞台了。换句话说如果你在Ubuntu 20.04或22.04上还在改interfaces文件大概率不生效改完还得靠netplan重新生成配置。还要注意一个坑云服务器或装过cloud-init的Ubuntu系统里可能有一个50-cloud-init.yaml它可能在配置文件的加载顺序里优先级更高。如果你改了00-installer-config.yaml却发现没生效优先检查一下这个文件。用netplan get可以快速查看当前生效的完整配置动手前先跑一下这个命令心里就有数了。3.2 netplan写静态IP的正确姿势先获取当前网卡名这一步别跳过。跑 ip -br addr输出第一列就是网卡名常见的有ens160、eth0、enp0s3、ens33之类。千万别照着网上教程的网卡名直接抄每台机器都不一样抄错的后果是netplan apply之后直接跟服务器失去联系。确认网卡名后先备份原配置然后编辑文件sudo cp /etc/netplan/00-installer-config.yaml /etc/netplan/00-installer-config.yaml.bak sudo nano /etc/netplan/00-installer-config.yaml假设网卡叫ens160要配的地址是192.168.1.100网关192.168.1.1配置内容如下network: version: 2 ethernets: ens160: dhcp4: false addresses: - 192.168.1.100/24 routes: - to: default via: 192.168.1.1 nameservers: addresses: - 223.5.5.5 - 119.29.29.29几个关键点必须说清楚。addresses里的/24是CIDR写法它同时表达了IP地址和子网掩码/24相当于255.255.255.0不要在这里单独写掩码字段。默认网关在新版netplan里用routes的to: default来表达老教程里的gateway4字段在新版本中已经废弃写了也不报错但可能不生效。DNS地址我习惯用国内公共DNS阿里223.5.5.5和腾讯119.29.29.29延迟低且较少被污染如果你所在网络有内网DNS优先填内网的。3.3 配置完了怎么验证和回滚这是我要反复强调的一点在远程服务器上改netplan千万别直接netplan apply然后干等着看自己掉线。netplan提供了一个安全命令sudo netplan try它会在应用配置后启动一个倒计时如果10秒内你没有按回车确认它会自动回滚到之前的配置。这个设计就是为了防止你把自己锁在门外。如果你在本地虚拟机里操作可以直接netplan apply但在SSH远程环境下养成用try的习惯能救命。生效之后按这个顺序验证ip addr show ens160 # 确认地址、掩码对不对 ip route # 确认默认路由走的是192.168.1.1 ping -c 4 192.168.1.1 # 先测网关通不通 ping -c 4 223.5.5.5 # 再测公网通不通如果IP能ping通但域名解析不了那就是DNS的问题可以用resolvectl status或nslookup baidu.com来验证。整套流程跑完没问题这次配置才算真正落地。3.4 Ubuntu配置容易踩的坑netplan用的是YAML格式对缩进极度敏感必须用空格缩进严禁用Tab。新手最常犯的错就是缩进层级不对导致apply报错或者配置被静默忽略。另一个坑是只改了配置文件却忘了应用改完文件不等于生效必须netplan apply。还有如果你原来有多个配置文件要留意它们会不会互相覆盖比如50-cloud-init.yaml存在时最好把静态IP写进去而不是新建文件跟它抢优先级。改配置之前先netplan get看一下当前加载了哪些文件能省掉一大半麻烦。4. Rocky Linux设置静态IP实操NetworkManager4.1 Rocky Linux的网络到底归谁管Rocky Linux属于RHEL系默认的网络管理服务是NetworkManager。CentOS 7时代大家都习惯直接改/etc/sysconfig/network-scripts/ifcfg-*文件到了Rocky 8、Rocky 9底层配置目录虽然还在但官方推荐的方式已经变成用nmcli命令操作。nmcli是NetworkManager的命令行管理工具它的好处是配置会实时校验、自动写入对应配置文件不容易出现手工改文件时那种格式错误。如果你是一台没有图形界面的服务器nmcli基本就是唯一的官方正道。动手之前先看当前网络状态nmcli device status # 查看设备状态 nmcli connection show # 查看当前连接配置注意NetworkManager里设备和连接是两个概念。设备是物理网卡连接是绑定在这个网卡上的一套配置。大多数情况下连接名和网卡名相同比如都是ens160但也有叫System ens160之类的奇怪名字的情况以nmcli connection show输出的第一列为准。4.2 用nmcli给网卡换成静态IP假设网卡和连接名都叫ens160我们需要跑这四条命令sudo nmcli con mod ens160 ipv4.method manual sudo nmcli con mod ens160 ipv4.addresses 192.168.1.100/24 sudo nmcli con mod ens160 ipv4.gateway 192.168.1.1 sudo nmcli con mod ens160 ipv4.dns 223.5.5.5 119.29.29.29第一条把获取方式从自动改成手动这是整个操作的开关漏了这条后面写再多地址也不会生效。第二条是填入IP和掩码同样用CIDR格式。第三条是默认网关。第四条是DNS多个DNS用空格隔开外面加引号。修改连接配置后不会立即生效需要重新激活连接sudo nmcli con up ens160这一步如果是SSH远程操作网络会短暂中断一下但只要配置没错一秒钟内就会自动恢复。如果配置错了你可能当场掉线所以远程操作时建议先在本地开一个持续ping或者干脆用screen/tmux保持会话。配置正确性的验证方式跟Ubuntu那套一样ip addr、ip route、ping逐层来。也可以用nmcli device show ens160 | grep IP4查看当前生效的IP配置。4.3 手工改ifcfg文件的兜底方案虽然推荐用nmcli但有些朋友习惯手工管理配置文件或者在写脚本批量初始化机器时直接操作文件反而更直观。这种情况下打开/etc/sysconfig/network-scripts/ifcfg-ens160改成这样TYPEEthernet BOOTPROTOstatic NAMEens160 DEVICEens160 ONBOOTyes IPADDR192.168.1.100 PREFIX24 GATEWAY192.168.1.1 DNS1223.5.5.5 DNS2119.29.29.29BOOTPROTOstatic是关闭DHCP的关键PREFIX24等价于子网掩码255.255.255.0老写法里还可以用NETMASK255.255.255.0两者二选一就行。改完后要让NetworkManager重新加载配置sudo nmcli con reload sudo nmcli con up ens160注意如果这个连接在NetworkManager里已经被管理直接改动文件后必须reload否则配置不会自动被感知。还有个小坑ifcfg文件里的NAME和DEVICE必须跟你实际的连接名一致不然reload可能生成一个新连接而不是更新旧的。4.4 Rocky Linux配置容易踩的坑Rocky这边最容易出问题的点一个是连接名跟网卡名搞混一个是改完文件或者mod之后忘了up。另外要留意有些云镜像里网卡配置默认是DHCP而且可能开着NetworkManager的自动连接之外的额外配置改完发现重启后又变回DHCP那多半是还有另一个connection在跟你抢网卡用nmcli connection show检查一下有没有重复的连接配置。实在不行可以nmcli con delete把多余连接删掉只留一个干净的。5. 动态IP与静态IP常见问题排查清单5.1 改完配置上不了网按这个顺序查我处理过太多配置完静态IP就断网的问题90%都能用下面这个顺序定位。第一先看网卡状态ip link确认网卡是UP还是DOWN必要时ip link set ens160 up手动拉起。第二看IP地址和掩码ip addr确认地址、前缀确实生效了没生效就回去检查配置文件。第三看默认路由ip route里有没有default via那一条没有的话就检查gateway或routes配置。第四ping网关不通就是二层问题或网关写错检查网线、交换机、网关地址。第五ping一个公网IP比如223.5.5.5通的话说明三层转发和运营商链路没问题不通就是网关到公网的路径问题。第六nslookup解析一个域名解析不了就是DNS问题检查nameservers配置。这六步按顺序走完绝大多数问题都能定位。好多朋友一上来就各种查logs绕一大圈其实底层链路都没通方向完全搞反了。5.2 Ubuntu和Rocky的排查命令速查表两套系统命令差异不大但配置检查手段不一样我整理了一张表建议收藏。操作Ubuntu (netplan)Rocky (NetworkManager)查看网卡地址ip -br addrip -br addr查看路由表ip routeip route测试网关ping -c 4 网关地址ping -c 4 网关地址测试DNS解析nslookup baidu.comnslookup baidu.com查看当前生效配置netplan getnmcli connection show 连接名应用配置netplan try / netplan applynmcli con up 连接名重启网络服务systemctl restart systemd-networkdsystemctl restart NetworkManager这里提一个容易忽略的细节在Ubuntu上如果netplan apply之后发现配置没变试试systemctl restart systemd-networkd有时候netplan只是写入了配置但服务没完全重新加载。Rocky那边同理改了NetworkManager配置后重启NetworkManager服务虽然常规情况下不必但在排查疑难杂症时可以试试。5.3 几个容易被忽略的玄学坑有些问题不是配置本身错了而是环境因素。比如虚拟机克隆你用VMware或KVM克隆了一台已配置静态IP的虚机结果原机和新机网卡MAC地址一样IP就冲突了。解决方法是克隆后重新生成MAC或者干脆把网卡配置里的地址改成新地址。再比如双系统共存Windows和Linux对同一台物理机的网卡驱动初始化行为不同偶尔会出现Linux这边网卡没被正确识别的情况ip link里根本看不到网卡这种情况先查驱动和固件而不是纠结IP配置。还有一种情况是系统自带的systemd-resolved默认监听127.0.0.53当你用resolvectl status看DNS时会发现所有解析都走本地这不一定是配置错误只要/etc/resolv.conf里有一条指向127.0.0.53的链接就是systemd-resolved在接管你的nameservers配置会被它代理转发观察时心里有数就行。最后再分享一个我个人的小习惯所有改网络配置的操作我都会先备份原文件再写一个备注用的文本留在/tmp下记录这台机器原来的IP、网关、DNS方便随时回退。网络配置这事儿宁可在动手前多花两分钟做备份也不要出事之后再靠回忆去还原。这套方法我用了这么多年基本没失过手。
返回列表