ubantu配置网卡ip地址完整指南

引言:为什么需要手动配置IP

在Ubuntu日常使用中,网络连接通常由DHCP自动分配IP地址,这能满足大部分即插即用的场景。然而,当你在搭建服务器、配置虚拟机、连接嵌入式开发板,或者处于一个没有DHCP服务的局域网环境时,手动配置静态IP就变得不可或缺。静态IP能确保设备地址固定,便于远程SSH连接、端口转发以及服务发现。本文将基于Ubuntu 20.04及22.04 LTS版本,系统讲解使用netplan工具和传统ifupdown方式配置网卡IP的完整流程,并涵盖常见故障排查。

ubantu配置网卡ip地址完整指南
ubantu配置网卡ip地址完整指南

准备工作:确认网卡名称与当前状态

在修改任何配置之前,必须先准确识别系统的网卡接口名。现代Ubuntu使用可预测的网络接口命名规则,常见名称如ens33enp0s3eth0或无线网卡wlp2s0。打开终端,执行以下命令查看所有网络接口:

ip addr show

输出中会列出类似2: ens33: <BROADCAST,MULTICAST,UP,LOWER_UP>的内容,其中ens33就是接口名。同时注意state UP表示接口已启用。如果没有看到IP地址,说明该接口尚未获取到地址。另外,可以使用nmcli device status来查看NetworkManager管理的设备状态,这有助于判断网络服务是否正常。

方法一:使用Netplan配置静态IP(推荐)

自Ubuntu 17.10起,系统默认使用netplan作为网络配置前端,它通过YAML格式的配置文件来管理网络。

1. 定位配置文件

配置文件位于/etc/netplan/目录下,通常命名为01-network-manager-all.yaml50-cloud-init.yaml。使用ls /etc/netplan/查看现有文件。编辑前建议先备份:

sudo cp /etc/netplan/01-network-manager-all.yaml /etc/netplan/01-network-manager-all.yaml.bak

2. 编辑YAML文件

使用sudo nano /etc/netplan/01-network-manager-all.yaml打开文件。一个典型的静态IP配置示例如下:

network:
  version: 2
  renderer: networkd
  ethernets:
    ens33:
      dhcp4: no
      addresses:
        - 192.168.1.100/24
      routes:
        - to: default
          via: 192.168.1.1
      nameservers:
        addresses: [8.8.8.8, 114.114.114.114]

其中关键字段解释:dhcp4: no明确关闭DHCP;addresses列表填写IP地址和子网掩码(CIDR格式,/24对应255.255.255.0);routes定义默认网关;nameservers设置DNS服务器。注意缩进必须严格使用两个空格,不能使用Tab键。

3. 应用配置

保存文件后,先测试配置是否正确:

sudo netplan try

该命令会应用配置并等待用户确认(默认120秒)。如果配置有误,系统会自动回滚。确认无误后,按回车键接受,或者直接执行sudo netplan apply立即生效。验证IP是否配置成功:

ip addr show ens33

如果看到inet 192.168.1.100/24,说明配置成功。此时可以尝试ping 192.168.1.1测试网关连通性。

4. 多IP地址配置

有时一个网卡需要绑定多个IP,只需在addresses列表中增加条目:

addresses:
  - 192.168.1.100/24
  - 10.0.0.5/24

方法二:使用nmcli(NetworkManager命令行)

对于使用NetworkManager的桌面版Ubuntu,也可以直接用nmcli命令快速配置,无需编辑文件。

1. 查看连接

nmcli connection show

记下要修改的连接名称(如Wired connection 1)。

2. 修改为静态IP

假设将ens33的IP改为192.168.1.100,网关192.168.1.1,DNS为8.8.8.8,执行:

nmcli connection modify \"Wired connection 1\" ipv4.addresses 192.168.1.100/24 ipv4.gateway 192.168.1.1 ipv4.dns \"8.8.8.8 114.114.114.114\" ipv4.method manual

最后重新激活连接:

nmcli connection up \"Wired connection 1\"

这种方法适合临时修改,且不会破坏netplan配置(前提是netplan的renderer为NetworkManager)。

方法三:传统ifupdown方式(适用于旧系统)

如果你还在使用Ubuntu 16.04或更早版本,或者系统安装了ifupdown包,可以编辑/etc/network/interfaces文件:

auto ens33
iface ens33 inet static
    address 192.168.1.100
    netmask 255.255.255.0
    gateway 192.168.1.1
    dns-nameservers 8.8.8.8

然后重启网络服务sudo systemctl restart networking。但请注意,在Ubuntu 18.04以上版本中,此方式可能被netplan覆盖,不建议混用。

常见问题排查

1. 配置后无法上网

首先检查网关是否可达:ping -c 3 192.168.1.1。如果网关不通,确认IP和网关是否在同一网段,子网掩码是否正确。其次检查DNS:nslookup www.ubuntu.com,如果DNS解析失败,尝试修改nameservers为公共DNS如223.5.5.5

2. netplan apply报错

错误信息通常能指明问题,如Invalid YAMLunknown key。检查是否使用了Tab缩进,或者字段名拼写错误。可以使用sudo netplan generate来生成底层配置,帮助定位错误。

3. 接口名不对

如果ip addr看到的接口名是enp0s3而非ens33,只需将配置中的接口名替换即可。另外,某些云主机(如AWS)使用eth0,配置方法相同。

4. 重启后配置丢失

确认你修改的是netplan配置文件而非临时命令。另外,如果系统同时安装了cloud-init,它可能会覆盖网络配置。可以禁用cloud-init的网络管理功能:sudo touch /etc/cloud/cloud-init.disabled(慎用,仅适用于不需要云初始化的机器)。

动态IP与静态IP的切换

如果你需要临时恢复DHCP,只需修改netplan文件,将dhcp4: no改为dhcp4: yes,并删除addressesroutes中的静态配置项,然后sudo netplan apply。或者使用nmcli connection modifyipv4.method改为auto

结语

配置Ubuntu网卡IP并不复杂,关键在于理解网络配置文件的结构和命令的用法。推荐优先使用netplan,因为它简洁且是Ubuntu未来的方向。无论你是在物理机、虚拟机还是云服务器上,掌握上述方法都能游刃有余地管理网络。最后提醒,修改网络配置前务必备份原文件,并确保你有其他方式(如物理终端)能访问系统,以免配置错误导致失联。

发表评论