为树莓派分配静态 IP
本文将介绍几种为 Raspberry Pi OS 分配静态 IP 地址的方法。
Raspberry Pi OS 上的网络配置基础知识
通常,在为网络接口配置静态 IP 地址之前,你需要找出系统中可用的接口及其名称。在这种情况下,我们将首先关注以太网接口和 IPv4 地址。
你可以使用 CLI 中的 ip a
命令列出所有可用接口。它将显示如下所示的输出,其中每个接口都有编号和名称,例如 lo
、eth0
等。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 a
或 ifconfig
命令确认 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
命令将使你的会话不可用。
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 OS 上的 Cron 作业和任务调度
- Raspberry Pi OS 上的自动启动程序和调度命令
- 保护你的 Raspberry Pi - SSH 协议安全
- 查找你的 Raspberry Pi 的 MAC 地址
- 查找你拥有的 Raspberry Pi OS 版本
- 查找树莓派的 IP 地址