Linux服务器静态IP配置完整指南:从手动配置到自动化脚本
1. 为什么服务器需要配置静态IP在工业现场、EMS边缘网关、服务器部署环境中服务器通常不能依赖 DHCP 动态获取 IP。典型场景EMS边缘控制器工业服务器Docker部署服务器Modbus TCP设备网络PLC/PCS/BMS通信网络局域网管理服务器。如果 IP 地址变化会导致SSH无法连接Web页面无法访问MQTT连接失败Modbus TCP通信失败设备点表IP失效。因此生产环境通常需要配置固定IP 固定网关 固定DNS 固定网口2. Linux网络基础概念配置静态IP之前需要先理解几个概念。2.1 网卡Network InterfaceLinux中每一个物理网口都会对应一个网络接口名称。例如enp3s0 enp4s0 eth0 ens160 eno1这些名字就是 Linux 看到的网卡名称。例如服务器物理网口1 | | Linux 显示 enp3s02.2 IP地址例如192.168.110.101表示服务器在局域网中的地址。2.3 子网掩码常见255.255.255.0Linux写法/24对应关系掩码CIDR255.255.255.0/24255.255.0.0/16255.0.0.0/8例如192.168.110.101/24表示网络 192.168.110.0 可用范围 192.168.110.1 ~ 192.168.110.2542.4 网关 Gateway网关负责访问其他网络。例如服务器 192.168.110.101 | | 路由器 192.168.110.1 | | Internet那么Gateway 192.168.110.13. 第一步查看服务器有哪些网口方法1ip命令推荐执行iplink示例1: lo 2: enp3s0 3: enp4s0 4: enp5s0其中lo是 Linux 回环接口不使用。真正网卡enp3s0 enp4s0 enp5s0方法2查看IP对应网卡执行ipaddr示例2: enp3s0: inet 192.168.110.50/24 3: enp4s0: state DOWN说明enp3s0 当前已经有IP enp4s0 没有连接方法3查看网卡状态推荐ip-braddr输出lo UNKNOWN 127.0.0.1 enp3s0 UP 192.168.110.50/24 enp4s0 DOWN更直观。4. 如何确认哪个物理网口对应哪个Linux网卡这是现场最常见的问题。例如服务器有LAN1 LAN2 LAN3 LAN4Linux显示enp3s0 enp4s0 enp5s0 enp6s0怎么对应方法1拔插网线测试执行watch-n1iplink然后插入某个物理网口看哪个接口状态变化。例如之前enp3s0 DOWN插入网线后enp3s0 UP说明物理网口 enp3s0方法2查看网卡MAC地址执行iplinkshow enp3s0输出link/ether 00:11:22:33:44:55然后查看交换机MAC地址表可以对应设备。方法3ethtool查看链路安装aptinstallethtool查看ethtoolenp3s0结果Link detected: yes Speed: 1000Mb/s Duplex: Full说明enp3s0已经插网线5. Ubuntu手动配置静态IPUbuntu 20.04以后通常使用Netplan配置文件/etc/netplan/5.1 查看当前netplan配置执行ls/etc/netplan/例如00-installer-config.yaml查看cat/etc/netplan/00-installer-config.yaml可能network:version:2ethernets:enp3s0:dhcp4:true表示当前enp3s0 使用DHCP6. 配置静态IP编辑nano/etc/netplan/00-installer-config.yaml修改network:version:2renderer:networkdethernets:enp3s0:dhcp4:falseaddresses:-192.168.110.101/24routes:-to:defaultvia:192.168.110.1nameservers:addresses:-223.5.5.5-8.8.8.8解释网卡enp3s0:表示配置哪个接口。禁用DHCPdhcp4:false关闭自动获取IP。设置IPaddresses:-192.168.110.101/24设置网关routes:-to:defaultvia:192.168.110.1设置DNSnameservers:addresses:-223.5.5.57. 应用配置推荐远程服务器使用netplan try它会应用配置 等待确认 失败自动恢复避免修改IP SSH断开 服务器失联确认netplan apply8. 验证静态IP查看ipaddr查看路由iproute应该default via 192.168.110.1测试网关ping192.168.110.1测试公网ping8.8.8.8测试DNSpingwww.baidu.com9. 恢复DHCP如果配置错误编辑nano/etc/netplan/*.yaml改dhcp4:true然后netplan apply10. 使用脚本自动配置静态IP现场大量服务器部署时可以使用脚本。目标查看网卡 输入参数 生成netplan 备份旧配置 应用 测试创建脚本nanoset_static_ip.sh内容#!/bin/bashif[$EUID-ne0];thenechoPlease run as rootexitfiechoNetwork interfaces:ip-brlinkread-pInterface: IFACEread-pIP Address: IPread-pCIDR: CIDRread-pGateway: GWread-pDNS: DNSFILE/etc/netplan/99-static-ip.yamlcp$FILE${FILE}.bak2/dev/null||truecat$FILEEOF network: version: 2 renderer: networkd ethernets:$IFACE: dhcp4: false addresses: -$IP/$CIDRroutes: - to: default via:$GWnameservers: addresses: -$DNSEOFechoGenerated configuration:cat$FILEread-pApply? yes/no:CONFIRMif[$CONFIRMyes];thennetplan tryfi添加执行权限chmodx set_static_ip.sh运行sudo./set_static_ip.sh示例假设服务器网口 enp3s0 需要 IP: 192.168.110.101 掩码: 24 网关: 192.168.110.1 DNS: 223.5.5.5输入Interface: enp3s0 Static IP: 192.168.110.101 CIDR: 24 Gateway: 192.168.110.1 DNS: 223.5.5.5生成network: version: 2 renderer: networkd ethernets: enp3s0: dhcp4: false addresses: - 192.168.110.101/24 routes: - to: default via: 192.168.110.1 nameservers: addresses: - 223.5.5.511. 工业现场推荐配置流程实际EMS项目建议第一次安装1. 查看网卡 ip -br addr 2. 插网线确认接口 3. 配置静态IP 4. 测试 ping网关 ping设备 ping云端 5. 保存网络记录网络记录表建议现场保存项目值设备名称EMS Controller网口enp3s0用途客户网络IP192.168.110.101Mask255.255.255.0Gateway192.168.110.1DNS223.5.5.5MACxx:xx:xx12. EMS设备建议对于工业EMS控制器建议至少LAN1: 客户网络 192.168.x.x LAN2: 设备网络 192.168.y.x LAN3: 调试维护 192.168.z.x不要所有设备混在一个网段。例如LAN1 | 客户交换机 | 云平台 LAN2 | PCS/BMS/电表 LAN3 | 工程调试电脑这样安全易维护故障定位简单。总结服务器配置静态IP的标准流程1. 查看网卡 | ↓ 2. 确认物理网口对应接口 | ↓ 3. 查看当前网络配置 | ↓ 4. 修改netplan | ↓ 5. netplan try测试 | ↓ 6. ping验证 | ↓ 7. 保存网络配置文档自动化脚本只是把查看 修改 备份 应用 验证流程标准化。对于EMS边缘控制器最终建议开发一个网络管理服务(Network Manager) 功能 - 网口扫描 - DHCP/静态切换 - IP配置 - DNS配置 - 网关配置 - 连通性测试 - HMI配置页面这样现场工程师无需SSH即可完成网络调试。