為樹莓派分配靜態 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