树莓派5分配固定ip的问题

树莓派与电脑用网线直连。

之前用命令ip a add 192.168.3.22/24 dev eth0给树莓派有线网卡分配固定ip,可以正常使用,今天重装了下树莓派5的系统,并升级到最新的bookworm 12.6,上面的命令不再有效。

现象是,执行完命令以后,当时用ip a命令是可以看到dev0的ip地址已经分配成功,并且在另外的电脑上可以ping通,也能传文件,但几分钟后,树莓派dev0的ip地址就丢失了,用命令ip a查看dev0,变成没有ip地址的状态,另一台电脑与它的连接也断了。并且,这种现象可以稳定重现(分配ip几分钟后ip丢失)。

另外,树莓派5的状态栏上,有线连接的的图标一直闪烁,应该是提示有线连接异常:

20240630_12h27m43s_grim

我尝试把树莓派5用网线直接连接到路由器上,然后,就稳定到没有任何问题,状态栏上的图标也不闪,长时间下载文件也没有问题。(此状态时,树莓派的ip地址是自动分配,不是静态ip)。到这里,我认为树莓派有线网卡的硬件没有问题可以正常工作。

之后,我查到官方文档有提到,如果想给树莓派设置静态ip,需要从路由器端处理,不从树莓派端处理:

https://www.raspberrypi.com/documentation/computers/configuration.html#assign-a-static-ip-address

我的理解是,我也许不能只用ip a add 192.168.3.81/24 dev eth0命令来给树莓派分配ip。

但接下来,就是我的知识盲区了:

怎么实现稳定的网线直连?让电脑承担router的角色给树莓派分配ip地址,好像不容易。
必须买一个交换机?不能够吧?

连接电脑上网吗?
局域网一般是在路由器上分配静态IP。

树莓派与电脑直连,不是为了上网,是为了和电脑相互传输备份数据。

wifi传输一般在20MB左右 。
有线连接,传输速度可以稳定在110MB以上。

家里的router位置太远了,临时接个线测试可以,长期用,没法走线。

挺容易的,配个 dnsmasq 就行。

没用,分配 IP 是路由器的工作。

你去整一下你的树莓派的网络设置,让网络管理器不要理 eth0 应该行。

我研究研究。

肯定是网络被网络管理器接管了,比如NetworkManager/networkd
建议仔细研究一下系统的网络是被什么管的,然后用正确的方法设置静态ip

我试了一下,让network-manager 不管理eth0,然后 ip a add 192.168.3.81/24 dev eth0可以分配ip,也能从其它电脑连接,但就是不能重启系统。

系统一旦重启,ip a就又看不到地址了,其它电脑也无法连接(重启后的截图):

而且,这个情况可以重现,即ip a add 192.168.3.81/24 dev eth0后能连,但重启系统就会丢
(重启前的截图):

树莓派是不是还存在其它影响静态ip的地方,因为它的表现与台式机完全不一样,而台式机并没有做任何关于网线直连的设置。


下面是/etc/NetworkManager/conf.d/crosslink.conf文件的内容,用来让network-manger不要管理eth0:

[main]
plugins=ifcfg-rh,keyfile

[keyfile]
unmanaged-devices=interface-name:eth0

有没有可能,我给系统增加一个虚拟的eth0,两个eth0的话,一个给network-manager管理,另一个用来直连?

挺容易的,配个 dnsmasq 就行。

这个dnsmasq装在树莓派上还是台式电脑上?

电脑上啊。

如果你的网路里有多个 DHCP 服务器,要小心冲突

dnsmasq刚一装上什么都没做就提示错误,我是不是得先把本机设置改一改?

终于可以了,用下面这条命令:

sudo nmcli c mod "Wired connection 1" ipv4.addresses 192.168.3.81/24 ipv4.method manual

感谢诸位出谋划策 :beers: