1. 为什么需要给树莓派配置静态IP?

如果你正在用树莓派搭建服务器、做智能家居中枢,或者跑一些需要长期稳定连接的服务,动态IP可能会让你头疼。想象一下,每次重启树莓派,IP地址都可能变,远程连接时得反复查IP,甚至服务中断。这时候,静态IP就是你的救星——它让树莓派始终用同一个地址,确保服务可靠、访问稳定。我在部署家庭媒体服务器时就深有体会:电视、手机等设备靠IP访问树莓派,IP一变全得重新配置,麻烦不说还容易出错。

Ubuntu系统(尤其是18.04及以后版本)用Netplan管理网络,它比传统的ifconfig或dhcpcd更现代,配置也更清晰。但不少朋友第一次接触Netplan会有点懵,比如配置文件格式、参数含义,或者应用配置后网络没反应。别担心,接下来我会用最直白的方式带你一步步搞定静态IP配置,顺便分享几个我踩过的坑和解决办法。

2. 配置前的准备工作

2.1 查看当前网络信息

配置静态IP前,你得先知道现在的网络状态——比如网关、DNS服务器,以及当前分配的IP地址。这样配置时才不会填错参数导致断网。打开终端,依次输入以下命令:

ip a

这个命令会列出所有网络接口。找到你的无线网卡(通常是wlan0),记下当前的IP地址和子网掩码。比如输出里有inet 192.168.1.105/24,就表示IP是192.168.1.105,子网掩码是255.255.255.0(/24代表前24位是网络号)。

接着查网关地址:

ip route | grep default

输出类似default via 192.168.1.1 dev wlan0,这里的192.168.1.1就是网关地址,也就是你的路由器IP。

最后确认DNS服务器:

resolvectl status wlan0

在输出里找DNS Servers,一般是网关地址或者公共DNS如8.8.8.8。记下这些信息,等下配置静态IP时要用。

2.2 选择并保留静态IP地址

选静态IP有个小技巧:最好用路由器DHCP范围外的地址,避免冲突。比如路由器通常分配192.168.1.100到192.168.1.200,你可以选192.168.1.50这种靠前的地址。更稳妥的方法是登录路由器后台,查看已分配IP列表,挑一个没人用的。

如果你打算用当前动态IP当静态地址(比如192.168.1.105),记得先去路由器设置里把这个地址绑定到树莓派的MAC地址,防止其他设备抢用。我当初没做这一步,结果偶尔IP冲突,树莓派莫名断网,排查了好久才想到是这原因。

3. 详解Netplan配置文件

3.1 配置文件和基本结构

Netplan的配置文件在/etc/netplan/目录下,文件名可能是50-cloud-init.yaml或者01-network-manager-all.yaml,取决于系统安装方式。用ls /etc/netplan/看看有哪些文件,通常只有一个YAML文件需要编辑。

用nano打开配置文件(以50-cloud-init.yaml为例):

sudo nano /etc/netplan/50-cloud-init.yaml

你会看到类似这样的内容:

network:
  version: 2
  renderer: networkd
  wifis:
    wlan0:
      dhcp4: yes
      access-points:
        "你的WiFi名":
          password: "你的WiFi密码"

Netplan用YAML格式,缩进必须用空格,不能用Tab键,否则会报错。version: 2表示用第二代配置语法,renderer可以是networkd(无图形界面系统)或NetworkManager(桌面版)。树莓派跑服务器通常用networkd,更轻量。

3.2 关键参数详解

配置静态IP时,这几个参数最重要:

  • dhcp4: no:关闭IPv4的DHCP,启用静态IP。
  • addresses:设置静态IP和子网掩码,格式是IP/掩码位数,比如192.168.1.105/24
  • gateway4:网关地址,一般是路由器IP。
  • nameservers:DNS服务器,可以填网关地址或者公共DNS。
  • access-points:WiFi名称和密码,注意密码要用引号包起来。

这里有个实际用例:假设你要把树莓派IP设为192.168.1.105,网关是192.168.1.1,DNS用网关和Google的8.8.8.8,WiFi名是MyHomeWiFi,密码是secret123。配置完的YAML文件长这样:

network:
  version: 2
  renderer: networkd
  wifis:
    wlan0:
      dhcp4: no
      addresses: [192.168.1.105/24]
      gateway4: 192.168.1.1
      nameservers:
        addresses: [192.168.1.1, 8.8.8.8]
      access-points:
        "MyHomeWiFi":
          password: "secret123"

注意YAML列表的写法:IP地址和DNS可以缩进加短横线,也可以用方括号括起来。我个人喜欢方括号,更紧凑不易缩进错误。

4. 应用配置和验证

4.1 应用配置并检查

配置保存后,用以下命令让新设置生效:

sudo netplan apply

如果配置有语法错误,Netplan会提示具体哪行有问题。比如缩进不对或漏了冒号,它会报Invalid YAML。这时要重新编辑文件修正错误。成功应用后,用ip a查看wlan0接口,应该显示你设置的静态IP。

验证DNS配置:

resolvectl status wlan0

输出中的DNS Servers应该变成你配置的地址。还可以用ping测试网络连通性:

ping -c 4 192.168.1.1  # ping网关
ping -c 4 google.com    # 测试DNS解析

如果ping网关通但ping域名不通,可能是DNS设置错了;如果全不通,可能是IP或网关填错。

4.2 常见问题排查

有时候netplan apply后IP没变,或者网络断开。别慌,按这几步排查: 首先,用sudo netplan --debug apply查看详细应用过程,debug输出会告诉你Netplan在执行什么操作,哪里可能出问题。

如果网络断了,优先检查网关和子网掩码对不对。比如网关填成192.168.0.1但实际是192.168.1.1,或者掩码/24写成了/16,树莓派就和路由器不在同一网段,自然无法连通。

WiFi连接问题通常和access-points有关:密码错误、SSID大小写不对,或者特殊字符没加引号,都会导致连不上热点。建议先用dhcp4: yes测试动态IP能否联网,再改静态IP,排除WiFi本身的问题。

最后,如果重启后配置失效,可能是其他服务干扰。Ubuntu有时会cloud-init重置网络配置,可以禁用它的网络管理功能:

sudo echo "network: {config: disabled}" > /etc/cloud/cloud.cfg.d/99-disable-network-config.cfg

这样Cloud-init就不会覆盖你的静态IP设置了。

5. 其他配置方案对比

5.1 DHCPCD方案(传统方法)

除了Netplan,树莓派传统上用dhcpcd服务配置静态IP。编辑/etc/dhcpcd.conf文件,在末尾添加:

interface wlan0
static ip_address=192.168.1.105/24
static routers=192.168.1.1
static domain_name_servers=192.168.1.1 8.8.8.8

然后重启dhcpcd服务:

sudo service dhcpcd restart

dhcpcd的优点是配置简单直观,适合老派用户。但缺点是新版Ubuntu逐渐转向Netplan,dhcpcd可能未来不被主流支持。而且Netplan统一管理有线和无线网络,配置更规范。

5.2 NetworkManager方案(桌面用户)

如果你用Ubuntu桌面版,可以用图形界面或nmtui工具设置静态IP。图形界面操作:点击网络图标 → 设置 → 网络,选择连接,点齿轮图标,在IPv4标签选手动,填IP、网关、DNS即可。

命令行用nmtui:

sudo nmtui

选Edit a connection,找到你的WiFi连接,编辑IPv4配置为Manual,填地址和网关。nmtui适合喜欢交互操作的用户,但服务器版通常没装NetworkManager。

三种方案对比,Netplan是Ubuntu官方推荐的方式,尤其对无界面服务器最合适。dhcpcd更兼容树莓派传统,而NetworkManager适合桌面环境。根据你的系统和个人喜好选就行。

6. 实际应用场景和技巧

6.1 服务器部署优化

用树莓派建网站或跑服务时,静态IP只是第一步。如果想通过域名访问(比如homepi.local),还得设置本地DNS或动态DNS。不过静态IP让端口转发更简单:在路由器把特定端口(比如80或443)指向树莓派的静态IP,外部就能访问服务了。

另外,建议把静态IP和MAC绑定,防止地址冲突。登录路由器管理页,找DHCP保留或静态ARP表,添加树莓派的MAC地址和你设的静态IP。这样即使其他设备手动配置相同IP,路由器也会拒绝分配。

6.2 多网络环境处理

如果树莓派经常切换网络(比如在家和公司用),硬编码静态IP可能导致在外无法联网。这时候可以用Netplan的多个配置文件,或者写脚本检测网络环境自动切换配置。

比如,在家用静态IP192.168.1.105,在公司用DHCP。可以创建两个Netplan文件:01-home.yaml02-work.yaml,分别设置静态和动态IP。需要切换时,用sudo netplan apply指定文件:

sudo netplan apply --config-file /etc/netplan/01-home.yaml

更高级的做法是写个脚本,用iwconfig扫描可用WiFi,自动选择配置文件。不过对大多数用户,固定环境下手动配置一次静态IP就够了。

Logo

智能硬件社区聚焦AI智能硬件技术生态,汇聚嵌入式AI、物联网硬件开发者,打造交流分享平台,同步全国赛事资讯、开展 OPC 核心人才招募,助力技术落地与开发者成长。

更多推荐