Ubuntu 24.04 LTS 配置静态IP地址完全指南

问题背景

在日常的服务器运维中,我们经常会遇到服务器只有IPv6地址而没有IPv4地址的情况。最近在维护一台Ubuntu 24.04.2 LTS服务器时,就遇到了这个问题:服务器可以正常连接网络,但只分配了IPv6地址,缺少IPv4地址配置。

初始状态诊断

首先通过 ip a 命令查看网络接口状态:

$ ip a
2: enp5s0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP group default qlen 1000
    link/ether 22:14:6c:01:01:9b brd ff:ff:ff:ff:ff:ff
    inet6 240e:35f:bac:f000:2014:6cff:fe01:19b/64 scope global dynamic mngtmpaddr 
       valid_lft 259077sec preferred_lft 172677sec
    inet6 fe80::2014:6cff:fe01:19b/64 scope link 
       valid_lft forever preferred_lft forever

可以看到网络接口 enp5s0 只有IPv6地址,缺少IPv4地址配置。

系统环境分析

通过一系列命令确认系统的网络管理方式:

# 检查网络管理器状态
$ sudo systemctl status NetworkManager
Unit NetworkManager.service could not be found.

# 检查netplan配置文件
$ sudo cat /etc/netplan/*.yaml
cat: '/etc/netplan/*.yaml': No such file or directory

# 确认使用systemd-networkd
$ sudo systemctl status systemd-networkd
● systemd-networkd.service - Network Configuration
     Loaded: loaded (/usr/lib/systemd/system/systemd-networkd.service; enabled; preset: enabled)
     Active: active (running) since Tue 2025-08-26 23:52:20 UTC; 1h 17min ago

关键发现

  • 系统使用 systemd-networkd 而非 NetworkManager

  • /etc/netplan/ 目录存在但为空

  • /etc/systemd/network/ 目录也为空

  • 没有任何网络配置文件

这解释了为什么只能通过自动配置获取IPv6地址,而无法获取IPv4地址。

解决方案:配置netplan

步骤1:创建基础配置

创建netplan配置文件启用DHCP:

sudo nano /etc/netplan/01-netcfg.yaml

添加以下内容:

network:
  version: 2
  renderer: networkd
  ethernets:
    enp5s0:
      dhcp4: true
      dhcp6: true

步骤2:应用配置并修复权限

# 应用配置
sudo netplan apply

# 修复文件权限(重要的安全措施)
sudo chmod 600 /etc/netplan/01-netcfg.yaml

应用配置后,成功获取到IPv4地址:

$ ip addr show enp5s0
2: enp5s0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP group default qlen 1000
    link/ether 22:14:6c:01:01:9b brd ff:ff:ff:ff:ff:ff
    inet 192.168.1.163/24 metric 100 brd 192.168.1.255 scope global dynamic enp5s0
       valid_lft 86386sec preferred_lft 86386sec
    inet6 240e:35f:bac:f000:2014:6cff:fe01:19b/64 scope global dynamic mngtmpaddr noprefixroute 
       valid_lft 259187sec preferred_lft 172787sec

进阶配置:静态IP地址

对于服务器环境,静态IP地址更加稳定和可预测。

步骤1:收集网络环境信息

# 查看路由信息
$ ip route show
default via 192.168.1.1 dev enp5s0 proto dhcp src 192.168.1.163 metric 100 
192.168.1.0/24 dev enp5s0 proto kernel scope link src 192.168.1.163 metric 100 

# 查看DNS配置
$ resolvectl status
Link 2 (enp5s0)
    Current Scopes: DNS
         Protocols: +DefaultRoute -LLMNR -mDNS -DNSOverTLS DNSSEC=no/unsupported
Current DNS Server: fe80::1
       DNS Servers: 192.168.1.1 fe80::1

步骤2:配置静态IP

修改netplan配置文件:

network:
  version: 2
  renderer: networkd
  ethernets:
    enp5s0:
      addresses:
        - 192.168.1.163/24
      routes:
        - to: default
          via: 192.168.1.1
      nameservers:
        addresses:
          - 192.168.1.1
          - 8.8.8.8
          - 8.8.4.4
      dhcp6: true

步骤3:应用并验证配置

sudo netplan apply

# 验证IP地址(注意valid_lft变为forever)
$ ip addr show enp5s0
inet 192.168.1.163/24 brd 192.168.1.255 scope global enp5s0
   valid_lft forever preferred_lft forever

# 验证路由(注意proto变为static)
$ ip route show
default via 192.168.1.1 dev enp5s0 proto static 
192.168.1.0/24 dev enp5s0 proto kernel scope link src 192.168.1.163

# 测试网络连通性
$ ping -c 3 8.8.8.8
PING 8.8.8.8 (8.8.8.8) 56(84) bytes of data.
64 bytes from 8.8.8.8: icmp_seq=1 ttl=114 time=54.4 ms
--- 8.8.8.8 ping statistics ---
3 packets transmitted, 3 received, 0% packet loss, time 2003ms

配置要点总结

1. 系统识别

  • Ubuntu 24.04 LTS 默认使用 systemd-networkd + netplan

  • 检查 /etc/netplan/ 目录是否存在配置文件

  • 确认网络管理器类型:NetworkManager vs systemd-networkd

2. 安全注意事项

# netplan配置文件权限必须设置为600
sudo chmod 600 /etc/netplan/*.yaml

3. 配置文件结构

  • 版本声明version: 2

  • 渲染器renderer: networkd

  • 网络接口:使用实际的接口名称(如enp5s0)

4. 动态vs静态配置对比

配置类型

优点

缺点

适用场景

DHCP动态

配置简单、自动管理

IP可能变化、依赖DHCP服务器

开发环境、客户端设备

静态IP

IP固定、独立性强

需要手动管理、可能冲突

服务器环境、网络服务

常见问题排查

1. 权限警告

WARNING: Permissions for /etc/netplan/01-netcfg.yaml are too open

解决方案sudo chmod 600 /etc/netplan/01-netcfg.yaml

2. 配置不生效

  • 检查YAML语法缩进(使用空格,不要用Tab)

  • 确认网络接口名称正确

  • 重启网络服务:sudo systemctl restart systemd-networkd

3. DNS解析问题

  • 验证DNS服务器可达性

  • 检查 systemd-resolved 服务状态

  • 使用 resolvectl status 确认DNS配置

最终效果

配置完成后的网络状态:

  • IPv4地址:192.168.1.163/24(静态配置)

  • IPv6地址:240e:35f:bac:f000:2014:6cff:fe01:19b/64(动态配置)

  • 网关路由:192.168.1.1(静态路由)

  • DNS解析:多DNS服务器配置,提高可靠性

  • 网络连通性:IPv4和IPv6双栈正常工作

这种配置方式既保证了IPv4的稳定性(静态IP),又保持了IPv6的灵活性(自动配置),是现代服务器网络配置的最佳实践。

总结

通过本文的实践,我们成功解决了Ubuntu 24.04 LTS服务器缺少IPv4地址的问题,并进一步配置了稳定的静态IP地址。关键在于理解系统的网络管理架构,正确使用netplan配置工具,以及注意配置文件的安全权限设置。

对于生产环境的服务器,建议使用静态IP配置以确保网络的稳定性和可预测性。同时,保持IPv6的自动配置可以为未来的网络扩展提供更好的兼容性。