Ubuntu18.04系统树莓派通过netplan连接wifi以及频繁断网解决方案

发布于 2024-08-03  588 次阅读


前言

场景是我在开发一款机械臂时,商家已经在树莓派4B的开发板上预装了ubuntu18.04系统。

先前我使用过的树莓派板卡安装的系统都是Raspberry,通过wpa_supplicant或者raspi-config即可配置wifi网络连接。但是在ubuntu系统上的树莓派使用raspi-berry提示命令不存在,并且通过wpa-supplicant也无法连接网络。

于是我使用Ubuntu18.04及其更高版本中发行的netplan工具进行网络管理。

关于netplan

Ubuntu 18.04开始,Ubuntu和Debian移除了以前的ifup/ifdown命令和/etc/network/interfaces配置文件,转而使用ip link set或者/etc/netplan/01-netcfg.yaml模板和sudo netplan apply命令实现网络管理。
Netplan 是抽象网络配置描述器,用于配置Linux网络。 通过netplan命令,你只需用一个 YAML文件描述每个网络接口所需配置。netplan并不关心底层管理工具是NetworkManager还是networkd。
netplan的使用可能导致新版本Ubuntu重启后网络无法连通。

netplan/etc/netplan/文件夹中读取YAML配置文件,配置可以是管理员或者系统安装人员配置,可以参考该目录中的模板文件。 在系统启动阶段早期,netplan/run目录生成好配置文件并将设备控制权交给相关后台程序。

Netplan目前支持以下两种网络管理工具 :

  • NetworkManager
  • Systemd-networkd

Netplan使用ymal来进行配置管理,因此需要注意:

  1. 配置项之间的缩进关系应当明确,不要使用tab缩进!
  2. yaml配置项与配置值的冒号之间还要有一个空格

使用Netplan管理网络很简单,只需要修改配置文件即可。

连接网络

我的步骤是:

查看并修改配置文件

netplan的配置文件位于:

/etc/netplan/*

netplan的配置文件名称可能不同,但是其后缀都是yaml。

我的配置文件名称是:50-cloud-init.yaml

因此通过vim编辑:

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

原先的内容:

# This file is generated from information provided by the datasource.  Changes
# to it will not persist across an instance reboot.  To disable cloud-init's
# network configuration capabilities, write a file
# /etc/cloud/cloud.cfg.d/99-disable-network-config.cfg with the following:
# network: {config: disabled}
network:
    ethernets:
        eth0:
            dhcp4: true
            optional: true
    version: 2

在随后写入:

wifis:
        wlan0:
                optional: true
                access-points:
                    "ProkingDu":
                        password: "88888888"
                dhcp4: true

注意wifis字段和verison字段需要对齐,最后的文件内容应该是:

network:
    ethernets:
        eth0:
            dhcp4: true
            optional: true
    version: 2
    wifis:
        wlan0:
                optional: true
                access-points:
                    "ProkingDu":
                        password: "88888888"
                dhcp4: true

然后执行:

sudo netplan apply

随后即可连接到网络,并且在开机时也会自动连接wifi。

注意事项

同时注意:
由于我的树莓派只有wlan0一张网卡支持AP,因此在我配置了wlan0使用wifi之后,便无法再作为发送点使用,所以需要确保wifi能够连接上才保存,否则板子就寄了!

扩展

netplan操作命令提供常用子命令如下:

netplan generate :生成后端管理工具对应的配置;
netplan apply :应用配置,必要时重启管理工具;
netplan try :在配置得到确认之后才应用,如果配置存在错误,则回滚,类似test;
netplan get:获取当前netplan配置;
netplan set:修改当前netplan配置。
netplan --debug apply 返回错误信息。

网络异常解决

首先解决方案很简单,编辑:

/etc/ppp/options

这个文件,在这个文件中找到:

# 设置 PPPD 发送 LCP Echo 请求的时间间隔(以秒为单位)
lcp-echo-interval 30

# 设置在没有收到 LCP Echo 回复时允许的最大失败次数
lcp-echo-failure 5

将这两个值改大一些即可,我将他们都改为60之后就没有断网的问题了。

当然光解决问题还是不够的,还要知道问题从哪里发生。

这里的配置文件是默认的PPP(点对点连接)配置文件,在PPP的LCP(链路控制协议)中,支持 Echo 请求和回复机制(类似于 ICMP Echo 请求),用于检测 PPP 链路的状态。操作系统会周期性地发送 LCP Echo 请求,以确保 PPP 链路保持活动状态。

这里就是由于ubuntu周期性的向ASDL(非对称数字用户线路)发送LCP Echo请求时,没有及时得到回应,系统认为网络已经断开了,随后尝试重新连接网络,但是没有成功连接上。

这里我思考了一下是否还有另一种方式解决这个问题,例如修改默认的ASDL,改用能够快速响应的ASDL,但是这个东西不像DNS那样有很多公用的,我在网络没有找到对应的资源。

另一个问题是,为什么在采取处理措施的时候无线网络就断开了,而没有重新连接上?

在线蹲大佬!~

Mail : admin@xdu.fyi

届ける言葉を今は育ててる
最后更新于 2024-08-03