在Ubuntu 17.10及以上版本中,必须借助netplan来配置静态IP。首先,通过ip a和ip route命令来确认网卡名、网关以及DNS。接着,对/etc/netplan/目录下的YAML文件进行编辑,将dhcp4设置为false,addresses设定为CIDR格式的列表,使用routes替代gateway4,nameservers设置为地址列表。请注意,这里的空格缩进要严格遵守规范。完成这些操作后,执行sudo netplan apply命令来应用配置,若想更安全一些,也可以执行sudo netplan try命令。

确认网卡名和网络参数
别直接抄示例里的 ens33 或 eth0,先用 ip a 看真实网卡名——找状态是 UP 且有 IPv4 地址的那条(比如 enp0s3、ens33、eno1)。再跑 ip route | grep default 拿网关(via 后面那个 IP),DNS 可填 8.8.8.8 或本地路由器地址。
/etc/netplan/ 下改 YAML 配置
从Ubuntu 17.10这个版本开始,网络配置统一采用netplan,其配置文件存放在/etc/netplan/目录下,常见的文件名有00-installer-config.yaml或者50-cloud-init.yaml。在进行编辑操作之前,务必先做好备份工作,具体命令为:sudo cp /etc/netplan/xxx.yaml /etc/netplan/xxx.yaml.bak。
关键点:
dhcp4: false必须设为false,否则静态配置不生效addresses写成列表格式,如[192.168.1.50/24],斜杠后是 CIDR 掩码(不是255.255.255.0)gateway4已被弃用,必须用routes:写成- to: default via: 192.168.1.1nameservers下的addresses也必须是列表,哪怕只填一个 DNS:[8.8.8.8]- YAML 严格依赖空格缩进,绝对不能用 Tab 键
执行 netplan apply 并验证
sudo netplan apply 是最终生效命令,但出错会直接断网。更稳妥的是先用 sudo netplan try:它会应用配置并等待 120 秒,期间没手动确认就自动回滚。
验证步骤:
- 查 IP:
ip a show 你的网卡名,看inet行是否变成你设的地址 - 查路由:
ip route,确认有default via xxx项 - 测连通:
ping -c 3 192.168.1.1(网关),再ping -c 3 8.8.8.8(绕过 DNS),最后ping -c 3 google.com
Ubuntu 16.04 或旧系统要改 /etc/network/interfaces
如果你用的是 Ubuntu 16.04 或更老版本(或某些最小化安装未启用 netplan),配置文件是 /etc/network/interfaces。
典型写法:
auto eth0 iface eth0 inet static address 192.168.1.50 netmask 255.255.255.0 gateway 192.168.1.1 dns-nameservers 8.8.8.8
改完后必须重启网络服务:sudo systemctl restart networking(不是 /etc/init.d/networking restart,后者在新版 systemd 下已失效)。
注意:这种写法和 netplan 互斥,共存会导致冲突;若系统同时装了 NetworkManager,还得禁用它对对应网卡的管理,否则会抢配置权。
最常被忽略的是 routes 写法和缩进错误,YAML 里多一个空格或少一个都报错;另外,虚拟机用户容易忘调 NAT 模式下的子网匹配——静态 IP 必须和宿主机 VMware/VirtualBox 的 DHCP 范围错开,否则可能分配冲突。