为树莓派分配静态 IP

Jinku Hu 2023年1月30日 2022年5月18日
  1. Raspberry Pi OS 上的网络配置基础知识
  2. 使用 dhcpcd 命令为 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 命令将使你的会话不可用。

Author: Jinku Hu
Jinku Hu avatar Jinku Hu avatar

Founder of DelftStack.com. Jinku has worked in the robotics and automotive industries for over 8 years. He sharpened his coding skills when he needed to do the automatic testing, data collection from remote servers and report creation from the endurance test. He is from an electrical/electronics engineering background but has expanded his interest to embedded electronics, embedded programming and front-/back-end programming.

LinkedIn

相关文章 - Raspberry Pi

相关文章 - Raspberry Pi IP