Raspberry pi 有静态和 dhcp ip 地址

Raspberry pi 有静态和 dhcp ip 地址

我有一个运行 Raspbian 的 Raspberry Pi,通过以太网连接到我家的 LAN(在 ISP 的默认路由器上)。路由器配置为从192.168.0.10dhcp 开始提供地址。我想给 Pi 一个静态 IP,所以我通过如下192.168.0.9编辑分配给它:/etc/network/interfaces

auto lo
iface lo inet loopback

# auto eth0
# allow-hotplug eth0
# iface eth0 inet manual
iface eth0 inet static
address 192.168.0.9
netmask 255.255.255.0
network 192.168.0.0
broadcast 192.168.1.255
gateway 192.168.0.1

auto wlan0
allow-hotplug wlan0
iface wlan0 inet manual
wpa-conf /etc/wpa_supplicant/wpa_supplicant.conf

重新启动并运行 ifconfig 后,我可以正确看到我的 IP 为192.168.0.9

eth0      Link encap:Ethernet  HWaddr b8:27:eb:d2:e5:5b
          inet addr:192.168.0.9  Bcast:192.168.1.255  Mask:255.255.255.0
          inet6 addr: fe80::ba27:ebff:fed2:e55b/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:17019 errors:0 dropped:16 overruns:0 frame:0
          TX packets:1707 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000
          RX bytes:2183986 (2.0 MiB)  TX bytes:241230 (235.5 KiB)

lo        Link encap:Local Loopback
          inet addr:127.0.0.1  Mask:255.0.0.0
          inet6 addr: ::1/128 Scope:Host
          UP LOOPBACK RUNNING  MTU:65536  Metric:1
          RX packets:264 errors:0 dropped:0 overruns:0 frame:0
          TX packets:264 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:0
          RX bytes:21840 (21.3 KiB)  TX bytes:21840 (21.3 KiB)

但是,我的路由器显示树莓派的 IP 地址是从 dhcp ( 192.168.0.10) 获取的,最奇怪的是,我可以在 和192.168.0.10ips上使用 ssh 访问 Pi 192.168.0.9。知道为什么会发生这种情况吗?我如何将 Pi 设置为仅使用我为其提供的静态地址?

编辑:以供将来参考:我发现该问题是 raspbian 上次更新的一个错误,其他人也遇到了这个问题(https://www.raspberrypi.org/forums/viewtopic.php?f=28&t=111709

答案1

如何在 Rasperry Pi Raspian 上设置静态 IP 地址

不要使用/etc/network/interfaces设置静态 IP。请/etc/dhcpcd.conf改用。

恢复/etc/network/interfaces原始文件,或撤消更改:

sudo nano /etc/network/interfaces

用手动设置替换您的更改/etc/network/interfaces

iface eth0 inet manual

配置 dhcpcd:

sudo cp /etc/dhcpcd.conf /etc/dhcpcd.conf.bak
sudo nano /etc/dhcpcd.conf

将静态配置文件选项添加到底部/etc/dhcpcd.conf

interface eth0
static ip_address=192.168.1.100/24
static routers=192.168.1.1
static domain_name_servers=192.168.1.1

删除租约:

sudo rm /var/lib/dhcp/*

重启:

reboot

另一个选项是禁用 dhcpcd。禁用 dhcpcd 后,您可以改为/etc/network/interfaces设置静态 IP。

配置/etc/network/interfaces

sudo cp /etc/network/interfaces /etc/network/interfaces.bak
sudo nano /etc/network/interfaces

将手动设置替换为静态设置/etc/network/interfaces

auto eth0
iface eth0 inet static
address 192.168.1.100
netmask 255.255.255.0
network 192.168.1.1
broadcast 192.168.1.255
gateway 192.168.1.1

配置 dhcpcd:

sudo cp /etc/dhcpcd.conf /etc/dhcpcd.conf.bak
sudo nano /etc/dhcpcd.conf

将选项添加到底部/etc/dhcpcd.conf

denyinterfaces eth0

或者你可以禁用 dhcpcd 服务:

systemctl disable dhcpcd.service

删除租约:

sudo rm /var/lib/dhcp/*

重启:

reboot

来源:

答案2

首先介绍一些背景知识。

Debian 和 Raspbian 有多种配置网络的方法。最常用的两种是。

  1. “ifupdown”,传统的解决方案,适用于台式机和服务器等静态网络设置,但对于漫游的设备效果并不好。
  2. 网络管理器,gnome 用户首选的工具,现在默认用于 Debian 桌面安装。可以很好地处理动态情况,但相当繁重,如果没有运行 GUI 且策略工具包无法正常工作,则很难使用。

树莓派基金会选择不使用这两种方式,而是在其树莓派镜像中使用 dhcpcd5 进行网络配置。dhcpcd5 打包在 Debian 中,但树莓派基金会树莓派镜像是我所知道的唯一默认使用它的基于 Debian 的系统。

我可以理解他们为什么想要放弃 ifupdown 而选择能够更好地处理漫游设备的程序,但我不太清楚他们为什么选择 dhcpcd 而不是网络管理器。也许他们觉得它更轻量或更容易集成到他们的桌面设置中,或者其他什么。


无论如何,由于 Raspberry pi 基金会做出的选择,如果您通过 /etc/network/interfaces 配置 IP 地址,则 ifupdown 会按照您的预期设置静态地址,然后 dhcpcd 会出现并添加 dhcp 地址。

对此有两种可能的解决方案。

  1. 使用 dhcpcd 配置来设置静态地址。
  2. 摆脱 dhcpcd5 并仅使用 ifupdown 配置您的网络。

哪个是更好的选择可能取决于您想使用 Pi 做什么。

答案3

您的配置存在三个问题:首先,DHCP 租约的到期时间通常设置为 1 小时,但也可能更长。由于 DHCP 服务器完全不知道静态地址,因此它不可能知道您的以太网 MAC 地址现在与两个 IP 地址相关联。

到目前为止,如果有人通过名称搜索您的 RPI,则会连接到老的IP 地址,无人回复。因此,从现在起,通过其名称连接到您的 RPI 将是不可能的,除非您在其上激活 SAMBA 或 Bonjour 服务。

这就是为什么我更喜欢reserved addresses,其中 DHCP 配置为始终为给定的 MAC 地址提供相同的 IP 地址,但会进行 DNS 服务器和机器名称的协商仿佛新的租约正在协商中。

其次,您没有在静态节中配置 DNS 服务器:添加以下行,

dns-nameservers 8.8.8.8 8.8.4.4

(注意复数,服务器,以及两个 IP 地址之间缺少标点符号)。如果您不喜欢 Google DNS,请将其替换为您喜欢的任何 DNS。

第三,考虑到您的网络和网络掩码,您的广播地址是错误的:在您的/etc/network/interfaces节中以及 ifconfig 的输出中(顺便说一句,它已经过时了,您应该ipiproute2套件中使用),都可以看到它是192.168.1.255。它应该是192.168.0.255当这些计算很复杂时,使用ipcalc

ipcalc 192.168.0.0/24
Address:   192.168.0.0          11000000.10101000.00000000. 00000000
Netmask:   255.255.255.0 = 24   11111111.11111111.11111111. 00000000
Wildcard:  0.0.0.255            00000000.00000000.00000000. 11111111
   =>
Network:   192.168.0.0/24       11000000.10101000.00000000. 00000000
HostMin:   192.168.0.1          11000000.10101000.00000000. 00000001
HostMax:   192.168.0.254        11000000.10101000.00000000. 11111110
Broadcast: 192.168.0.255        11000000.10101000.00000000. 11111111
Hosts/Net: 254                   Class C, Private Internet

我不确定这是否就是你的问题的根源,但在不久的将来它肯定会加剧你的问题,因为你的广播(包括 ARP 流量)将被 LAN 上的所有其他机器忽略。

答案4

正如 Narzan 指出的那样,您的路由器很可能仍拥有 192.168.0.10 的租约。

目前还不清楚重启路由器是否有用,请尝试登录路由器并

  1. 如果可能的话,清除 IP 关联b8:27:eb:d2:e5:5b
  2. 清除 DHCP 租用表(这当然会改变所有其他设备的 IP)。

相关内容