把服务器的 IP 改成局域网地址,说到底就是把网卡上的 IP、掩码、网关这三个参数换成内网网段的静态配置:Linux 改配置文件或走 nmcli,Windows 用 netsh 或图形界面,云服务器则在控制台改私网 IP,动手前先给自己留一条能进机器控制台的后路,比记住命令更重要。
先分清改的是“地址”还是“身份”
服务器IP地址怎么改成局域网IP,关键在三个参数
内网通信只看三样东西,少一样都不通:
- IP 地址:这台机器在内网里的门牌号,常见网段是 192.168.0.0/16、10.0.0.0/8、172.16.0.0/12
- 子网掩码:决定“同一网段”的范围,24 位掩码基本够用,写成 255.255.255.0 或 /24 一个意思
- 默认网关:跨网段出流的出口,通常是内网核心交换机或防火墙的内网口地址
还有一个容易被忽略的:DNS,内网如果没有自建解析,改完地址能 ping 通网关但打不开域名,八成是 DNS 还指着旧网段。
多数情况下,改 IP 失败不是命令敲错,而是网关和掩码跟交换机上的规划对不上,业内专家指出,机房地址规划一旦做成表格公示,后期改动的返工率会明显下降。
动手前的三件保命事
先保住远程连接
改 IP 意味着当前 SSH 或远程桌面会话随时断掉,稳妥做法:
- 通过带外方式操作,比如云服务器的 VNC 控制台、物理机的 IPMI、机房的 KVM
- 或者用
screen、tmux挂着命令执行,断线后还能回去看结果 - 也可以用
at或nohup起一个延迟脚本,5 分钟后自动把旧地址加回去,给自己留个反悔窗口
先探测地址有没有被占用
内网最常见的故障就是地址冲突,改之前在内网另一台机器上:
ping -c 3 192.168.10.50 arping -I eth0 192.168.10.50
两条命令都没回应,才说明这个地址大概率是空的。
记录旧配置
把原来的 ip -4 addr show、ip route、cat /etc/resolv.conf 输出保存下来,哪怕只是复制到记事本里,也能在改崩之后十几分钟内恢复。
Linux服务器改局域网IP的操作路径
不同发行版的落点不一样,先认清系统再动手。
| 发行版 | 配置文件 | 推荐命令 |
|---|---|---|
| Ubuntu 17.10 及以上 | /etc/netplan/.yaml | netplan try |
| CentOS 7 / RHEL 7 | /etc/sysconfig/network-scripts/ifcfg- | systemctl restart network |
| CentOS 8+ / RHEL 8+ / 新版 Rocky | NetworkManager 连接配置 | nmcli con mod |
| 临时测试 | 不落盘 | ip addr |
Ubuntu 系:改 netplan 的 yaml
编辑 /etc/netplan/01-netcfg.yaml:
network:
version: 2
ethernets:
ens33:
addresses: [192.168.10.50/24]
routes:
- to: default
via: 192.168.10.1
nameservers:
addresses: [223.5.5.5, 114.114.114.114]
保存后执行:
sudo chmod 600 /etc/netplan/01-netcfg.yaml sudo netplan try
netplan try 的好处是带倒计时回滚,配置一断网,时间到了自动退回旧配置,确认没问题再 sudo netplan apply 固化。
RHEL 系:nmcli 一条命令搞定
nmcli con show sudo nmcli con mod "ens160" ipv4.addresses 192.168.10.50/24 \ ipv4.gateway 192.168.10.1 ipv4.dns 223.5.5.5 ipv4.method manual sudo nmcli con up "ens160"
YAML 里的缩进和冒号后空格都要讲究,用 netplan generate 可以先做语法检查,避免带着错误配置重启。
只想临时换地址测试
不落盘,重启即恢复:
sudo ip addr del 192.168.10.60/24 dev ens33 sudo ip addr add 192.168.10.50/24 dev ens33 sudo ip route add default via 192.168.10.1
验证用 ip -4 addr show、ip route、ping -c 3 192.168.10.1 三步走完,基本能判断通不通。
Windows服务器改局域网IP:图形界面和命令都能落
图形界面的路径是:控制面板 → 网络和共享中心 → 更改适配器设置 → 右键网卡 → 属性 → Internet 协议版本 4 → 使用下面的 IP 地址,填完地址、掩码、网关、DNS 后确定。
命令行更适合批量改,管理员权限打开 CMD:
netsh interface ipv4 set address name="以太网" static 192.168.10.50 255.255.255.0 192.168.10.1 netsh interface ipv4 set dnsservers name="以太网" static 223.5.5.5 primary
PowerShell 写法:
New-NetIPAddress -InterfaceAlias "以太网" -IPAddress 192.168.10.50 -PrefixLength 24 -DefaultGateway 192.168.10.1 Set-DnsClientServerAddress -InterfaceAlias "以太网" -ServerAddresses 223.5.5.5
注意两点:网卡名要和 Get-NetAdapter 里显示的一致,中文名容易敲错;如果是远程桌面操作,设置网卡的时候勾选“确定后不重启”,避免连接直接断在半路。
云服务器改成局域网IP,操作在控制台不在系统里
这是最容易踩坑的地方,云主机的私网 IP 绑定在虚拟网络层,你在系统里手改,重启后会被云平台的元数据服务覆盖回去。
正确路径是在云控制台找到实例的“修改私网IP”入口,按 VPC 网段选择新地址,多数厂商支持热切换,也有部分规格需要重启实例生效,改完还要顺带检查三处:
- 安全组是否放行了新网段的入方向
- 内网负载均衡、数据库白名单里有没有登记旧 IP
- 自建 DNS 或内部域名解析记录是否要同步
服务器改局域网IP会影响外网访问吗
会,而且影响方式取决于原来怎么访问的。
如果服务器原本直接持有公网 IP,换成私网地址后外网立刻断掉,需要通过 NAT 映射、反向代理或弹性公网 IP 重新挂接,如果服务器本来就在内网,靠防火墙做端口映射对外提供服务,那么只要映射规则里的内网地址同步更新,对外访问基本无感。
行业共识认为,改地址本身不复杂,真正的工作量在于把所有引用旧 IP 的地方找出来,可以提前用 grep -r "192.168.10.60" /etc 在系统内扫一遍,配置文件、监控脚本、数据库连接串都可能藏着旧地址。
改完连不上?按这个顺序排查
ip -4 addr show看地址是否真的生效,注意网卡是不是处于 DOWN 状态ip route核对默认路由的网关地址有没有写错一位ping -c 3 网关IP,不通说明二层或 VLAN 划到了别的网段- 同一网段找台机器
ping回来,双向不通多半是网关或掩码问题 cat /etc/resolv.conf检查 DNS,能通 IP 打不开域名就是这里- 检查防火墙和
cloud-init,后者会在重启时用元数据把地址改回去
在批量场景里,比如机房搬迁或整柜上架,用 Ansible 的 nmcli 模块或 netplan 模板统一推送,比逐台登录稳得多,据统计,中小机房单次搬迁涉及几十台服务器时,手工改 IP 的返工比例并不低。
改一次服务器局域网IP要多少钱
这事的成本主要不在软件,而在停机窗口和人工,云服务器调整私网 IP 一般不在单独收费项里,费用差异来自公网带宽或弹性公网 IP 的计费方式;物理机则要考虑机房上门、托管方配合的开销,真正贵的是业务中断时间,所以计划里最好写清楚回滚时间点。
Q&A:关于服务器IP改局域网的常见疑问
服务器改局域网IP后原来的公网IP还能用吗
要看你是否保留了公网地址,物理机如果只有一个网口和一条线路,把公网地址换成私网地址后公网就不通了,需要另行配置 NAT 或再加一个公网地址;云主机改私网 IP 不影响已绑定的弹性公网 IP,但安全组和端口映射要同步核对。
Ubuntu改完局域网IP,重启后又变回旧地址怎么办
先确认 /etc/netplan/ 目录下有没有多个 yaml 文件同时在生效,后加载的会覆盖前者;再看是否装了 cloud-init,云环境下它会按元数据重写网络配置,需要在 /etc/cloud/cloud.cfg.d/ 里关闭网络模块。
局域网里两台服务器IP冲突了会表现出什么现象
典型症状是两边都时通时断,ARP 表里的 MAC 地址来回跳变,SSH 连接频繁断开,日志里出现地址冲突的告警,用 arping -D 可以在改地址前做冲突检测,改完后用 arp -a 核对网关侧记录的 MAC 是否与预期一致。
首发原创文章,作者:王坚,如若转载,请注明出处:https://idctop.com/article/783053.html


