睿诚科技协会

Ubuntu Server网络配置如何操作?

Ubuntu Server 18.04 及更高版本默认使用 netplan 作为网络配置工具,本指南将重点介绍 netplan,同时也会提及旧版系统使用的 ifupdown 工具。

ubuntu server网络配置
(图片来源网络,侵删)

核心概念:网络配置文件的位置

在 Ubuntu Server 中,网络配置文件通常位于 /etc/netplan/ 目录下,当你第一次安装服务器时,这里会有一个默认的配置文件,01-netcfg.yaml50-cloud-init.yaml

重要提示:

  • YAML 文件对空格和缩进极其敏感,切勿使用 Tab 键,必须使用空格
  • 修改配置后,必须运行命令使更改生效。

使用 Netplan (Ubuntu 18.04 及更高版本推荐)

netplan 通过 YAML 文件定义网络,然后使用 networkdNetworkManager 来应用配置,服务器环境中通常使用 networkd

场景 1:配置静态 IP 地址

这是最常见的服务器场景,假设你的网络信息如下:

ubuntu server网络配置
(图片来源网络,侵删)
  • 网卡名称:ens33 (你可以使用 ip a 命令查看)
  • IP 地址:168.1.100
  • 子网掩码:255.255.0 (在 netplan 中写成 /24)
  • 网关:168.1.1
  • DNS 服务器:8.8.81.1.1

步骤 1:找到并编辑配置文件

# 进入配置目录
cd /etc/netplan/
# 列出文件,找到你的配置文件,50-cloud-init.yaml
ls -l
# 使用你喜欢的编辑器打开文件,nano
sudo nano 50-cloud-init.yaml

步骤 2:修改配置文件内容 修改为如下格式(务必根据你的实际情况修改网卡名称、IP、网关和DNS):

# 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  # 指定使用 systemd-networkd 来渲染配置
  ethernets:
    ens33:  # 替换成你的网卡名称
      dhcp4: no  # 禁用 DHCP
      addresses:
        - 192.168.1.100/24  # 设置你的静态IP地址和子网掩码
      routes:
        - to: default
          via: 192.168.1.1  # 设置你的网关
      nameservers:
          addresses: [8.8.8.8, 1.1.1.1]  # 设置你的DNS服务器
          search: [] # 可选,搜索域

字段解释:

  • version: 2:表示使用 netplan v2 格式。
  • renderer: networkd:指定后端渲染器,服务器环境推荐使用 networkd
  • ethernets:定义以太网设备。
  • ens33:你的网卡名称。
  • dhcp4: no:禁用 IPv4 的 DHCP。
  • addresses:设置一个或多个静态 IP 地址。
  • routes:设置静态路由。to: default 指的是默认网关。
  • nameservers:设置 DNS 服务器。

步骤 3:应用并测试配置

ubuntu server网络配置
(图片来源网络,侵删)

保存并关闭编辑器(在 nano 中是 Ctrl+XYEnter)。

# 应用 netplan 配置
sudo netplan apply
# 检查配置是否成功应用
ip a show ens33
ping 8.8.8.8
ping google.com

ping 通,说明配置成功,如果遇到问题,可以使用以下命令查看 systemd-networkd 的日志进行排错:

journalctl -u systemd-networkd -f

场景 2:配置 DHCP (自动获取 IP)

如果你希望服务器自动从路由器获取 IP 地址,配置非常简单。

编辑 /etc/netplan/ 下的配置文件:

network:
  version: 2
  renderer: networkd
  ethernets:
    ens33:  # 替换成你的网卡名称
      dhcp4: yes  # 启用 DHCP
      # 可选:设置一个可选的静态主机名
      # optional: true

然后应用配置:

sudo netplan apply

重启后,服务器也会自动获取 IP。


使用 /etc/network/interfaces (传统方法,适用于 Ubuntu 16.04 及更早版本)

在旧版 Ubuntu 中,网络配置文件是 /etc/network/interfaces,虽然新系统不推荐,但了解它仍然有用,尤其是在维护旧服务器时。

步骤 1:编辑配置文件

sudo nano /etc/network/interfaces

步骤 2:配置静态 IP 可能如下:

# The primary network interface
auto ens33  # 开机时自动启用此网卡
iface ens33 inet static  # 使用静态 IP 配置
        address 192.168.1.100  # IP 地址
        netmask 255.255.255.0  # 子网掩码
        gateway 192.168.1.1    # 网关
        dns-nameservers 8.8.8.8 1.1.1.1 # DNS 服务器

步骤 3:重启网络服务

# 重启整个网络服务
sudo systemctl restart networking
# 或者只重启特定网卡
sudo ifdown ens33 && sudo ifup ens33

配置 DHCP:iface 行改为 iface ens33 inet dhcp 即可。


高级场景:配置多网卡 (Bonding)

服务器常使用多网卡来实现负载均衡或冗余,这可以通过 netplanethernetsbonds 配置来实现。

假设有两块网卡 ens33ens37,要将它们绑定成一个名为 bond0 的逻辑网卡,模式为 balance-rr (轮询)。

/etc/netplan/50-cloud-init.yaml 配置示例:

network:
  version: 2
  renderer: networkd
  ethernets:
    ens33:
      dhcp4: no
    ens37:
      dhcp4: no
  bonds:
    bond0:
      interfaces: [ens33, ens37]  # 指定要绑定的物理网卡
      parameters:
        mode: balance-rr  # 绑定模式,可选:balance-rr, active-backup, lacp, etc.
        mii-monitor-interval: 100
      addresses:
        - 192.168.1.101/24
      routes:
        - to: default
          via: 192.168.1.1
      nameservers:
          addresses: [8.8.8.8, 1.1.1.1]

应用配置:

sudo netplan apply

你可以使用 ip a show bond0 来查看绑定后的网卡状态。


常用网络命令

无论使用哪种配置方法,以下命令都是日常管理和排错的关键:

命令 功能
ip aip addr show 显示所有网络接口的 IP 地址信息
ip rip route 显示路由表信息
ping <hostname_or_ip> 测试与另一台主机的网络连通性
ss -tulnpnetstat -tulnp 显示当前监听的 TCP/UDP 端口
systemctl restart networking 重启网络服务 (Netplan)
ifdown <interface> & ifup <interface> 关闭/启动指定网卡 (传统方法)
journalctl -u systemd-networkd 查看 systemd-networkd 的日志,用于 Netplan 排错

故障排查

如果网络配置不生效,请按以下步骤检查:

  1. 检查 YAML 语法:这是最常见的问题,确保缩进正确(用空格),没有拼写错误,可以使用 yamllint 工具检查。
    sudo apt install yamllint
    yamllint /etc/netplan/50-cloud-init.yaml
  2. 检查网卡名称ip a 查看到的名称是否和配置文件中的一致。
  3. 检查服务状态:确保 `
分享:
扫描分享到社交APP