睿诚科技协会

Ubuntu网络配置文件路径在哪?

Ubuntu 的网络配置方式在较新的版本(特别是 18.04 LTS 及以后)中发生了重大变化,传统的 interfaces 文件虽然仍然可用,但官方推荐使用 Netplan

Ubuntu网络配置文件路径在哪?-图1
(图片来源网络,侵删)

我们将从两个方面来讲解:

  1. 推荐方式:Netplan (Ubuntu 18.04, 20.04, 22.04 等)
  2. 传统方式:/etc/network/interfaces (适用于旧版 Ubuntu)

推荐方式:Netplan (Ubuntu 18.04 及以后版本)

Netplan 是一个命令行网络配置工具,它使用 YAML 文件来定义网络接口,这些 YAML 文件会由后端渲染成传统的配置文件(NetworkManagersystemd-networkd 的配置)。

配置文件位置

Netplan 的配置文件通常位于 /etc/netplan/ 目录下,文件名可以是任意形式,但常见的有 01-netcfg.yaml, 50-cloud-init.yaml 等。

在云环境中(如 AWS, Azure),云初始化(cloud-init)会自动生成一个配置文件,/etc/netplan/50-cloud-init.yaml,对于本地虚拟机或物理机,你可能需要手动创建或编辑这个文件。

Ubuntu网络配置文件路径在哪?-图2
(图片来源网络,侵删)

配置文件示例与解析

让我们来看一个典型的配置文件 /etc/netplan/01-netcfg.yaml

# This file is generated from information provided by the datasource. Changes
# to it will not persist across an instance reboot. To disable cloud-init's
# network configuration capabilities, write a file
# /etc/cloud/cloud.cfg.d/99-disable-network-config.cfg with the following:
# network: {config: disabled}
network:
  version: 2
  renderer: networkd  # 后端渲染器,可以是 networkd 或 NetworkManager
  ethernets:
    # "enp0s3" 是你的网卡名称,使用 `ip a` 命令可以查看到
    enp0s3:
      dhcp4: true      # 启用 IPv4 的 DHCP
      # dhcp4: no      # 如果不使用 DHCP,则手动配置 IP
      # addresses: [192.168.1.100/24]  # 静态 IP 地址和子网掩码
      # gateway4: 192.168.1.1         # 网关地址
      # nameservers:
      #   addresses: [8.8.8.8, 1.1.1.1] # DNS 服务器
      #   search: [mydomain.local]      # DNS 搜索域
    # 可以配置多个网卡
    enp0s8:
      dhcp4: false
      addresses: [10.0.0.50/24]
      gateway4: 10.0.0.1
      nameservers:
        addresses: [8.8.8.8]
  # 配置无线网络
  wifis:
    wlp3s0:
      access-points:
        "MyWiFiNetwork":
          password: "MyWiFiPassword"
      dhcp4: true

关键配置项解析

  • version: 2: 指定 Netplan 的版本,目前必须是 2。
  • renderer: networkdrenderer: NetworkManager:
    • networkd: 这是 Ubuntu Server 的默认后端,由 systemd 管理。
    • NetworkManager: 这是 Ubuntu Desktop 的默认后端,图形界面和 nmcli 命令行工具都依赖它。
  • ethernets:: 定义有线网络接口。
  • wifis:: 定义无线网络接口。
  • enp0s3: 网卡名称。如何找到你的网卡名?
    • 使用 ip aifconfig 命令查看,在现代 Linux 系统中,网卡名通常遵循 enp<bus>s<slot> (如 enp0s3) 或 eth<id> (如 eth0) 的命名规则。
  • dhcp4: true/false: 是否启用 IPv4 的 DHCP。
  • dhcp6: true/false: 是否启用 IPv6 的 DHCP。
  • addresses: [IP/MASK]: 配置静态 IP 地址。168.1.100/24 表示 IP 是 168.1.100,子网掩码是 255.255.0
  • gateway4: IP: 设置 IPv4 网关。
  • nameservers: 设置 DNS 服务器。
    • addresses: DNS 服务器 IP 列表。
    • search: DNS 搜索域。
  • wifis 下的 access-points: 定义要连接的 Wi-Fi 名称和密码。

应用配置

编辑完 Netplan 配置文件后,需要应用它才能生效。

  1. 检查配置文件语法(非常重要,可以避免配置错误导致网络断开):

    sudo netplan try

    这个命令会先验证语法,然后尝试应用新配置,60 秒内没有按 Ctrl+C,它会永久应用配置,如果出错,它会回滚到之前的配置。

    Ubuntu网络配置文件路径在哪?-图3
    (图片来源网络,侵删)
  2. 应用配置

    sudo netplan apply

传统方式:/etc/network/interfaces (适用于旧版 Ubuntu)

在 Ubuntu 16.04 及更早的版本中,网络配置主要通过 /etc/network/interfaces 文件完成,虽然在新版中不推荐,但如果你在使用旧系统或某些特殊场景,它仍然有效。

配置文件位置

  • /etc/network/interfaces: 主配置文件。
  • /etc/network/interfaces.d/: 可以将不同接口的配置拆分到这个目录下的独立文件中。

配置文件示例与解析

# /etc/network/interfaces
# The loopback network interface
auto lo
iface lo inet loopback
# The primary network interface
# auto eth0          # 系统启动时自动启用此接口
# iface eth0 inet dhcp # 使用 DHCP 获取 IP
# 手动配置静态 IP
auto eth0
iface eth0 inet static
    address 192.168.1.100
    netmask 255.255.255.0
    gateway 192.168.1.1
    # dns-nameservers 8.8.8.8 1.1.1.1
# 配置第二个接口
auto eth1
iface eth1 inet manual
    up ifconfig eth1 up
    down ifconfig eth1 down

关键配置项解析

  • auto <interface_name>: 在系统启动时自动激活(启动)指定的接口。
  • iface <interface_name> inet <method>: 定义接口的配置。
    • <interface_name>: 网卡名,如 eth0
    • <method>: 配置方法,常见有:
      • loopback: 用于回环接口 lo
      • dhcp: 通过 DHCP 自动获取 IP。
      • static: 手动配置静态 IP。
      • manual: 手动配置,通常用于桥接或 VLAN,updown 命令会在此接口激活/关闭时执行。
  • address: 静态 IP 地址。
  • netmask: 子网掩码。
  • gateway: 默认网关。
  • dns-nameservers: 指定 DNS 服务器,注意,这个指令在 interfaces 文件中有时需要配合 resolvconf 服务才能完全生效。

应用配置

编辑 /etc/network/interfaces 文件后,需要重启网络服务或重启系统来应用更改。

  • 重启网络服务
    sudo systemctl restart networking
    # 或者使用旧的命令
    sudo /etc/init.d/networking restart
  • 重启系统
    sudo reboot

其他重要的网络配置文件和工具

除了上述主要配置文件,还有一些其他文件和工具也用于网络管理。

/etc/hosts

这是一个静态的域名解析文件,当系统需要解析一个域名时,它会首先查询这个文件。

# /etc/hosts
127.0.0.1   localhost
127.0.1.1   myubuntu-server
192.168.1.100  fileserver.localdomain fileserver
# The following lines are desirable for IPv6 capable hosts
::1     ip6-localhost ip6-loopback
fe00::0 ip6-localnet
ff00::0 ip6-mcastprefix
ff02::1 ip6-allnodes
ff02::2 ip6-allrouters

/etc/resolv.conf

这个文件包含了 DNS 服务器的信息。注意:在 Netplan + systemd-resolvedNetworkManager 的环境中,这个文件通常是动态管理的(它可能是一个指向 /run/systemd/resolve/stub-resolv.conf 的符号链接),不建议直接手动编辑。

# /etc/resolv.conf
nameserver 8.8.8.8
nameserver 8.8.4.4
search mydomain.local

/etc/hostname

定义了系统的主机名,修改后需要重启或使用 hostnamectl 命令来使更改立即生效。

# /etc/hostname
myubuntu-server

命令行工具

  • ip a / ip link: 查看所有网络接口及其状态。
  • ip addr add <ip>/24 dev <interface>: 临时为接口添加一个 IP 地址。
  • ip route show: 查看路由表。
  • nmcli: NetworkManager 的命令行工具,在 Ubuntu Desktop 上非常强大,可以管理连接、配置 Wi-Fi 等。
  • netplan --debug try: 在 netplan try 的基础上提供更详细的调试信息。
特性 Netplan (新版) /etc/network/interfaces (旧版)
适用版本 Ubuntu 18.04 LTS 及以后 Ubuntu 16.04 及以前
配置文件 /etc/netplan/*.yaml /etc/network/interfaces
配置语言 YAML 简单的文本指令
后端 systemd-networkdNetworkManager ifupdown
管理方式 集中化、声明式 命令式
优点 现代、灵活、支持多种后端、易于自动化 简单直接、在旧系统上稳定
缺点 学习曲线稍陡(YAML语法) 功能相对有限,不适合复杂网络

对于新安装的 Ubuntu 系统,强烈建议学习和使用 Netplan,它代表了网络配置的未来方向,更加强大和灵活。

分享:
扫描分享到社交APP
上一篇
下一篇