温馨提示×

如何在Ubuntu上配置DHCP客户端选项

小樊
36
2025-11-14 16:51:13
栏目: 智能运维

Ubuntu 配置 DHCP 客户端选项的实用指南

一、先确认你的 Ubuntu 使用哪种网络管理方式

  • 查看是否存在 /etc/netplan/ 目录及 .yaml 文件(如 01-netcfg.yaml、50-cloud-init.yaml):有则使用 Netplan(Ubuntu 18.04+ 默认)。
  • 查看 /etc/network/interfaces 是否包含 iface <iface> inet dhcp 等:有则使用 ifupdown(传统方式)。
  • 查看是否由 NetworkManager 管理:运行 nmcli con show 能看到连接名称,且桌面环境有网络图标。
  • 临时手动获取地址可用:sudo dhclient <接口名>(如 eth0ens33)。

二、按所用管理方式配置 DHCP 客户端选项

  • Netplan(Ubuntu 18.04+ 默认)

    1. 编辑配置(文件以实际为准):sudo nano /etc/netplan/01-netcfg.yaml
    2. 启用 DHCP 并同时下发 DNS(示例):
    network:
      version: 2
      renderer: networkd
      ethernets:
        eth0:
          dhcp4: true
          dhcp6: false
          nameservers:
            addresses: [8.8.8.8, 1.1.1.1]
    
    1. 应用:sudo netplan apply(远程环境可用 sudo netplan try 降低断连风险)。
      说明:Netplan 会生成底层配置并通过 systemd-networkdNetworkManager 生效;在 Netplan 中直接设置 nameservers 是最稳妥的下发 DNS 方式。
  • ifupdown(/etc/network/interfaces)

    1. 编辑:sudo nano /etc/network/interfaces
    2. 启用 DHCP 并设置 DNS(示例):
    auto lo
    iface lo inet loopback
    
    auto eth0
    iface eth0 inet dhcp
        dns-nameservers 8.8.8.8 1.1.1.1
    
    1. 使能:sudo systemctl restart networking(或 sudo ifdown eth0 && sudo ifup eth0)。
      说明:在接口配置中使用 dns-nameservers 可让 DHCP 客户端在获取租约后写入指定 DNS。
  • NetworkManager(nmcli / nmtui)

    1. 查看连接名:nmcli con show(记下有线或 Wi‑Fi 的 NAME)。
    2. 设置仅 DHCP 并下发 DNS(示例):
    nmcli con mod "Wired connection 1" ipv4.method auto ipv6.method ignore
    nmcli con mod "Wired connection 1" ipv4.dns "8.8.8.8 1.1.1.1"
    nmcli con up "Wired connection 1"
    
    1. 图形界面:sudo nmtui → Edit a connection → 选择连接 → IPv4 Configuration 选择 Automatic → 在 DNS servers 填入地址 → OK → 激活连接。
      说明:通过 ipv4.dns 可持久化下发 DNS;如需忽略 IPv6 可设 ipv6.method ignore
  • 使用 dhclient 细粒度控制(可选)

    1. 全局选项:编辑 /etc/dhcp/dhclient.conf(建议先备份),按需添加:
    send host-name "my-host";
    supersede domain-name-servers 8.8.8.8, 1.1.1.1;
    request subnet-mask, broadcast-address, routers,
            domain-name, domain-name-servers, host-name, ntp-servers;
    
    1. 使配置生效:
    • 若由 systemd-networkd 管理:sudo systemctl restart systemd-networkd
    • 若由 NetworkManager 管理:sudo systemctl restart NetworkManager
    • 临时手动获取/释放:sudo dhclient -r <iface>sudo dhclient -v <iface>
      说明:supersede 可强制覆盖服务器下发的选项;request 列出要请求的选项;修改后需重启相应网络栈或重取租约。

三、验证与常见问题排查

  • 验证地址与路由:ip addr show <iface>ip route(应看到 DHCP 分配的地址默认路由)。
  • 验证 DNS:
    • 若用 Netplanifupdowndns-nameservers,查看:cat /etc/resolv.conf(应含你配置的 DNS)。
    • 若用 NetworkManager,可用:nmcli con show "<NAME>" | grep ipv4.dns
  • 抓包定位(服务器未响应等):sudo tcpdump -i <iface> -nn port 67 or port 68
  • 常见问题:
    • 虚拟机/云主机未获取到地址:确认虚拟网络或云网络启用了 DHCP
    • 修改后未生效:确认修改了正确的管理方式(Netplan/ifupdown/NetworkManager),并执行了对应的 apply/restart;远程操作优先用 netplan try 或先准备控制台。

0