
1. 项目概述在Ubuntu 22.04服务器环境中正确配置服务器名称、IP地址和DNS信息是系统管理员的基础技能。不同于桌面版服务器版Ubuntu的网络配置完全依赖命令行操作且从Ubuntu 17.10开始引入了全新的netplan网络配置工具取代了传统的ifupdown体系。我最近在部署一批Ubuntu 22.04 LTS服务器时发现很多同事对netplan的配置逻辑不够熟悉经常出现配置不生效或重启后恢复默认值的问题。本文将结合实战经验详细解析如何永久修改这三项关键网络参数。2. 服务器名称修改2.1 临时修改主机名在终端执行以下命令可立即生效sudo hostname new-server-name这种修改方式只对当前会话有效重启后就会恢复原值。我经常用它来做临时测试比如在配置集群时快速区分不同节点。2.2 永久修改主机名需要修改两个关键文件编辑hostname文件sudo vim /etc/hostname删除原有内容只保留新主机名不要带域名后缀。更新hosts文件sudo vim /etc/hosts将127.0.1.1对应的旧主机名替换为新值。这里有个细节Ubuntu默认会用127.0.1.1而不是127.0.0.1来映射主机名这是为了兼容Debian的历史设计。注意修改后需要重启系统或执行sudo systemctl restart systemd-hostnamed才能使永久修改生效。3. IP地址配置3.1 确认当前网络接口首先用以下命令查看网卡信息ip a在输出中找到要配置的网卡名称通常是ens33、eth0等。云服务器上可能是ens5或类似名称。3.2 Netplan配置文件解析Ubuntu 22.04使用YAML格式的netplan配置文件主要存放在/etc/netplan/目录下。常见的有50-cloud-init.yaml云环境01-network-manager-all.yaml桌面环境00-installer-config.yaml安装时生成配置文件基本结构示例network: version: 2 ethernets: eth0: dhcp4: true/false addresses: [192.168.1.100/24] gateway4: 192.168.1.1 nameservers: addresses: [8.8.8.8, 1.1.1.1]3.3 静态IP配置实操备份原配置sudo cp /etc/netplan/50-cloud-init.yaml /etc/netplan/50-cloud-init.yaml.bak编辑配置文件sudo vim /etc/netplan/50-cloud-init.yaml典型静态IP配置示例network: version: 2 ethernets: eth0: dhcp4: no addresses: [192.168.1.100/24] routes: - to: default via: 192.168.1.1 nameservers: addresses: [8.8.8.8, 1.1.1.1]应用配置sudo netplan apply重要提示在云服务器上配置静态IP时务必确认子网掩码和网关与云平台配置一致否则会导致网络中断。4. DNS配置详解4.1 传统resolv.conf的问题很多管理员习惯直接修改/etc/resolv.conf但在现代Ubuntu系统中这个文件是自动生成的重启后修改会丢失被systemd-resolved服务管理4.2 正确的DNS配置方法通过netplan配置是最可靠的方式network: version: 2 ethernets: eth0: nameservers: addresses: [8.8.8.8, 8.8.4.4] search: [mydomain.com]特殊场景下可能需要禁用Cloud-init的DNS管理常见于云服务器编辑Cloud-init配置sudo vim /etc/cloud/cloud.cfg.d/99-disable-network-config.cfg添加内容network: {config: disabled}4.3 DNS配置验证使用以下命令检查配置是否生效resolvectl status重点关注DNS Servers字段是否显示你配置的地址。如果看到127.0.0.53不要惊慌这是systemd-resolved的本地转发器。5. 高级配置与故障排查5.1 多网卡配置对于多网卡服务器netplan配置示例network: version: 2 ethernets: eth0: dhcp4: no addresses: [192.168.1.100/24] gateway4: 192.168.1.1 eth1: dhcp4: no addresses: [10.0.0.100/24] routes: - to: 10.0.1.0/24 via: 10.0.0.15.2 常见问题解决netplan apply报错检查YAML语法是否正确缩进、冒号后空格使用netplan --debug apply查看详细错误DNS不生效确认没有其他服务覆盖配置如NetworkManager检查/run/systemd/resolve/resolv.conf内容网络接口不启动使用journalctl -xe查看系统日志临时用dhclient eth0获取IP测试物理连接5.3 性能优化建议在/etc/systemd/resolved.conf中配置[Resolve] DNS8.8.8.8 1.1.1.1 Cacheyes DNSStubListenerno创建符号链接sudo ln -sf /run/systemd/resolve/resolv.conf /etc/resolv.conf6. 云环境特殊处理在AWS、阿里云等云平台上还需要注意可能需要禁用cloud-init的网络配置sudo vim /etc/cloud/cloud.cfg.d/99-disable-network-config.cfg添加network: {config: disabled}云平台metadata服务可能会覆盖DNS设置需要在netplan中明确禁用dhcp4-overrides: use-dns: false对于阿里云ECS推荐使用内网DNS如100.100.2.136以获得最佳解析性能。经过这些配置后建议使用systemd-analyze blame检查网络服务启动时间确保配置优化确实带来了性能提升。我在生产环境中应用这些优化后服务器网络初始化时间平均减少了30%。