HOWTO · Raspberry Pi

为树莓派分配静态 IP

本文介绍如何为树莓派分配静态 IP 地址

本页内容

本文将介绍几种为 Raspberry Pi OS 分配静态 IP 地址的方法。

Raspberry Pi OS 上的网络配置基础知识

通常,在为网络接口配置静态 IP 地址之前,你需要找出系统中可用的接口及其名称。在这种情况下,我们将首先关注以太网接口和 IPv4 地址。

你可以使用 CLI 中的 ip a 命令列出所有可用接口。它将显示如下所示的输出,其中每个接口都有编号和名称,例如 loeth0 等。eth0 表示第一个以太网接口,当前具有 IP 地址 (192.168.0.24 ) 分配给它。

请注意,它还具有标准网络掩码 255.255.255.0。请记住,在以下步骤中,我们基本上需要此命令输出中的 eth0 部分来配置静态 IP 地址。

ip a

样本输出:

1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
       valid_lft forever preferred_lft forever
---
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
    link/ether 00:16:3e:e2:52:1c brd ff:ff:ff:ff:ff:ff
    inet 192.168.0.12/24 brd 192.168.0.255 scope global 
---

或者,你可以运行 ifconfig 命令来显示系统中当前活动的接口。输出包含与上一个命令类似的信息。请注意,我们在本文中压缩了输出文本,并且只关注与手头任务相关的部分。

ifconfig

样本输出:

eth0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet 192.168.0.12  netmask 255.255.255.0  broadcast 172.16.0.255
        inet6 fe80::7df4:d6b9:171:f302  prefixlen 64  scopeid 
---

lo: flags=73<UP,LOOPBACK,RUNNING>  mtu 65536
        inet 127.0.0.1  netmask 255.0.0.0
        inet6 ::1  prefixlen 128  scopeid 0x10<host>
---

使用 dhcpcd 命令为 Raspberry Pi 以太网接口分配静态 IP 地址

Raspberry Pi OS 利用 dhcpcd 客户端为其所有接口配置 TCP/IP。dhcpcd 是一个始终在后台运行的守护进程。尽管如此,它也表示可以与守护进程交互的命令行工具。

首先,我们需要取消配置 eth0 接口,因为它已经使用动态分配进行了配置,正如我们在前面的输出中看到的那样。但是,如果你没有将 Raspberry Pi 连接到路由运行 DHCP 服务器的网络,则情况可能并非如此。

在后一种情况下,你可以跳过此步骤,但请先使用前面的命令验证你的以太网接口是否未配置。

可以使用 dhcpcd -k [interface] 命令或使用 dhcpcd --release [interface] 取消配置给定的接口(例如 eth0)。

请注意,你必须为这些命令中的任何一个指定接口参数,否则 dhcpcd 将退出,因为没有接口在运行。

此外,如果你以默认的 pi 用户身份登录,你可能需要包含 sudo 前缀来提升所有 dhcpcd 命令的权限。

sudo dhcpcd -k eth0

接下来,你可以通过执行 ip aifconfig 命令确认 eth0 已被取消配置。如果前面的操作成功,我们可以在 /etc 目录下的 dhcpcd.conf 文件中指定静态 IP 配置。

此文件通常包含示例静态 IP 配置行,因此你可能需要取消注释这些并仅修改地址。否则,请在配置文件末尾插入以下行,并根据你的本地网络设置指定本地地址。

interface eth0
static ip_address=192.168.0.111/24
static routers=192.168.0.1
static domain_name_servers=192.168.0.1 8.8.8.8

请注意,命令 DHCP 配置除了静态 IP 地址/网络掩码外,还包括默认网关地址和 DNS 服务器。在前面的代码片段中,我们将 192.168.0.111 静态 IP 地址分配给 eth0 接口。现在,我们需要这些更改立即生效,因此我们运行以下命令。

sudo dhcpcd -n eth0

此命令将强制 dhcpcd 进程重新加载其配置文件并重新绑定 eth0 接口。如果你没有为上一个命令指定接口名称,它将重新绑定所有接口。

为 Raspberry PI 设置静态 IP 地址的另一种方案涉及修改 dhcpcd.conf 文件,然后重新启动系统,这将起作用。尽管如此,你还是会浪费一些时间等待重新启动。另外,请注意,如果你使用 SSH 或其他远程连接连接到 Raspberry Pi,dhcpcd -k 命令将使你的会话不可用。