在学习和开发分布式系统时,通常需要搭建由多台虚拟机构成的模拟集群环境。为确保各节点之间通信稳定、可识别且能正常访问网络,必须对每台虚拟机进行以下基础网络配置:
设置唯一主机名(Hostname):便于识别不同节点;
配置静态 IP 地址:避免 DHCP 分配导致 IP 变动,影响服务发现与连接;
正确设置 DNS 解析:保证域名解析能力,支持访问外部资源或内部服务。
本文将指导你在 Ubuntu 22.04/24.04 系统中完成上述关键配置。
完成本课程后,你将能够:
理解主机名、IP 地址和 DNS 在分布式系统中的作用;
在 Linux 中永久修改主机名并防止重启后还原;
使用 Netplan 配置静态 IPv4 地址(适配 Ubuntu 22.x 与 24.x);
正确配置系统级 DNS 解析,确保网络连通性。
默认情况下,某些云镜像或安装方式(如使用 cloud-init)会在每次启动时重置主机名。需禁用此行为。
sudo vi /etc/cloud/cloud.cfg找到 preserve_hostname 项,将其设为 true:
preserve_hostname: true若文件不存在或未启用 cloud-init,可跳过此步。
sudo hostnamectl set-hostname deployment将
deployment替换为你希望的主机名(如node1,master,worker01等)。
/etc/hosts 文件确保本地能通过主机名解析自身 IP:
echo "192.168.60.135 deployment" | sudo tee -a /etc/hosts建议同时保留
127.0.0.1 localhost和127.0.1.1 <原主机名>行,避免某些服务异常。
Ubuntu 自 18.04 起使用 Netplan 作为默认网络配置工具。不同版本语法略有差异。
sudo vi /etc/netplan/00-installer-config.yaml可通过
ip a或nmcli device show查看网卡名称(如ens33,eth0,enp0s3)。
network:
version: 2
ethernets:
ens33: # 注意你的网卡名
addresses: [192.168.60.135/24]
gateway4: 192.168.60.2
nameservers:
addresses: [192.168.60.2, 8.8.8.8]network:
version: 2
renderer: networkd # 或 NetworkManager,根据系统选择
ethernets:
ens33: # 注意你的网卡名
dhcp4: false
dhcp6: false
addresses: [192.168.100.122/24]
routes:
- to: default
via: 192.168.100.1
nameservers:
addresses: [192.168.100.1, 114.114.114.114]
search: []注意:
子网掩码
/24表示 255.255.255.0;网关和 DNS 通常由你的虚拟网络环境决定(如 VMware NAT 网关常为
.2,VirtualBox 常为.1);可配置多个 DNS 服务器提高容错性。
sudo netplan apply若报错,可运行
sudo netplan generate+sudo netplan apply分步调试,或查看日志:journalctl -u systemd-networkd
虽然 Netplan 中可指定 DNS,但某些应用(如 systemd-resolved 管理的服务)可能仍需全局 DNS 设置。
sudo vi /etc/systemd/resolved.conf取消注释并设置 DNS:
[Resolve]
DNS=114.114.114.114 8.8.8.8
#FallbackDNS=1.1.1.1
#Domains=example.comsudo systemctl restart systemd-resolvedresolvectl status
nslookup baidu.com注意:
/etc/resolv.conf通常是符号链接,指向../run/systemd/resolve/stub-resolv.conf,不建议直接编辑。
为确保所有配置持久生效,建议重启系统:
sudo reboot重启后验证:
hostname # 应显示新主机名
ip a # 检查 IP 是否正确
ping -c 3 baidu.com # 测试外网连通性
nslookup github.com # 测试 DNS 解析完成配置后,你的虚拟机已具备稳定、可识别、可联网的分布式节点基础环境,可继续部署 Hadoop、Kubernetes、etcd 等分布式系统