如何纠正 wpa_supplicant Ubuntu 20:04 的错误自动 netplan 配置

如何纠正 wpa_supplicant Ubuntu 20:04 的错误自动 netplan 配置

我在 Raspberry Pi 4 上使用 Ubuntu 20.04 桌面,我正在尝试配置netplan。我见过如何在 Ubuntu 服务器 20.04 中配置 wpa_supplicant。我配置netplan为连接到wlan0并且它工作正常。我也/etc/default/crda通过输入进行了配置REGDOMAIN=IT
但在wpa_supplicant日志中我看到:

wpa_supplicant[910]: wlan0: CTRL-EVENT-REGDOM-CHANGE init=COUNTRY_IE type=COUNTRY alpha2=DE

所以Wi-Fi连接不稳定。

我使用NetworkManager,如果我在设置正确的值后重新启动它:

sudo iw reg set IT

wpa_supplicant将其设置回错误的DE值。

如何避免netplan设置错误的国家?

更新

我已经编写了一个服务:
sudo apt install iw
我选择root用户/etc/init.d/下的一个文件夹并写入一个名为wireless的文件:

/etc/init.d/无线

#!/bin/sh
# by Leonardo: workaround
iw wlan0 set power_save off
iw reg set IT
exit 0

然后: sudo chmod ugo+x /etc/init.d/wireless

写入另一个文件
/etc/systemd/system/wireless-on.service

[Unit]
Description=workaround for set wireless country and to no power management 
After=network-online.target

[Service]
Type=oneshot
ExecStart=/etc/init.d/wireless

[Install]
WantedBy=multi-user.target

然后:
sudo systemctl enable wireless-on.service

重新开始

这使得连接对我来说很稳定。
抱歉我的英语不好

答案1

唱片:#1951586有更多信息,特别是在评论 15 到 19(及以后)中,但我会尝试将其浓缩为这个答案。不过,我还是建议阅读该评论以获取更多背景信息...

WiFi AP 可以(可选)通告客户端可以应用的监管域(我不知道客户端是否被强制应用通告的监管域)。由于这是可选的,并非所有 AP(实际上,根据我的经验,只有少数 AP)都会这样做,但看起来,您通过身份验证的 AP 会通告客户端应使用“DE”监管域,并且您的客户端会遵守这一点。

我相当确定,在撰写本文时,netplan 的配置中没有办法覆盖 AP 的规范。我不太确定 wpa-supplicant(netplan 正在暗中使用)中是否有任何工具可以覆盖 AP 指定的监管域(换句话说,netplan 在这方面可能别无选择)。

补充一点slangasek 的回答-- netplan 0.105 添加了regulatory-domain密钥,因为/etc/default/crda在 Ubuntu 22.04 中已将其删除(更准确地说,用户空间 crda 数据库已在上游删除),因此,在 netplan 得到增强之前,唯一能够持久保存 wifi 监管域的方法就是修改 Linux 内核命令行(事实上,这是我之前链接的错误报告的主题)。如果您决定迁移到 22.04,请注意这一点。

答案2

https://netplan.readthedocs.io/en/latest/netplan-yaml.html文档中提到,可以使用regulatory-domainnetplan 中的密钥配置您的 wifi 监管域。但是,这仅在 Ubuntu 22.04 中可用,因为该功能是在 netplan 0.105 中引入的,而 20.04 包含 netplan 0.104。

如果这是一个新系统,那么没有什么理由去部署三年历史的 Ubuntu 20.04 而不是 Ubuntu 22.04。

答案3

我以前是这样使用 Netplan 的:

sudo nano /etc/netplan/$YOUR_NETPLAN_PROFILE_NAME.yaml

粘贴并更正XXXX此配置中的有效值:

network:
  wifis:
    wXXXXXXXX:
      addresses:
        - $YOUR_IP/24
      gateway4: 192.168.1.1
      nameservers:
        addresses: [1.1.1.1, 1.0.0.1]
      dhcp4: no
      dhcp6: no
      access-points:
        "$YOUR_NETWOK_WIFI_ID":
          password: "XXXXXXXXXXX"
  version: 2
  renderer: NetworkManager

然后运行:

sudo netplan apply /etc/netplan/$YOUR_NETPLAN_PROFILE_NAME.yaml

相关内容