树莓派Ubuntu网络设置

树莓派4b运行64位Ubuntu ,设置有线网络静态IP地址以及无线网络。

有线网络(静态地址)

Ubuntu默认使用netplan结合systemd-networkd来完成网络设置,初始安装就激活了有线网卡的的DHCP配置,所以在 /etc/netplan/50-cloud-init.yaml 配置了:

network:
    ethernets:
        eth0:
            dhcp4: true
            optional: true
    version: 2

不过,我需要设置固定IP地址,以便部署服务,所以移除 50-cloud-init.yaml 并添加 01-netcfg.yaml

network:
    version: 2
    renderer: networkd
    ethernets:
        eth0:
            dhcp4: no
            dhcp6: no
            addresses: [192.168.6.8/24, ]
            #addresses: [192.168.6.8/24,192.168.1.8/24 ]
            #gateway4: 192.168.1.1
            nameservers:
                addresses: [202.96.209.133, ]

然后执行:

netplan apply

就激活有线网络的静态IP地址。

无线网络

备注

How to install Ubuntu on your Raspberry Pi - 3. Wi-Fi or Ethernet 提供了一个在安装过程中设置WiFi的步骤,即编辑SD卡的 system-boot 分区中的 network-config 文件,去除掉以下段落的注释符号 # 类似如下:

wifis:
  wlan0:
  dhcp4: true
  optional: true
  access-points:
    <wifi network name>:
      password: "<wifi password>"

然后保存。然后用这个SD卡首次启动树莓派,就会自动连接WiFi。

Ubuntu for Raspberry Pi默认已经识别了树莓派的无线网卡,之前在 MacBook Pro上运行UbuntuThinkPad X220上运行Ubuntu 都使用了NetworkManager 设置无线网络 。但是这种方式实际上多安装了组件,并且和默认netplan使用的 systemd-networkd 是完成相同工作,浪费系统内存资源。

所以,这里采用系统已经安装的 netplan + networkd 后端来完成无线设置。

  • 配置 /etc/netplan/02-wifi.yaml

    network:
      version: 2
      renderer: networkd
      wifis:
        wlan0:
          dhcp4: yes
          dhcp6: no
          #addresses: [192.168.1.21/24]
          #gateway4: 192.168.1.1
          #nameservers:
          #  addresses: [192.168.0.1, 8.8.8.8]
          access-points:
            "home_ssid_name":
              password: "**********"
    

然后再次执行:

netplan apply

激活无线网络。

企业网络链接

如果企业级网络采用了EAP认证,则修订上述配置:

network:
  version: 2
  renderer: networkd
  wifis:
    wlan0:
      dhcp4: yes
      dhcp6: no
      #addresses: [192.168.1.21/24]
      #gateway4: 192.168.1.1
      #nameservers:
      #  addresses: [192.168.0.1, 8.8.8.8]
      access-points:
        "home_ssid_name":
          password: "**********"
        "office_ssid_name":
          auth:
            key-management: eap
            identity: "user_name"
            password: "user_passwd"

然后再次执行:

netplan apply

5G Hz无线网络

在树莓派上运行Ubuntu Server,我曾经遇到一个非常诡异的无线网络问题:

  • 最初通过 netplan网络配置 配置了 PEAP 认证无线网络连接,发现偶尔有不能连接上无线AP的问题。但是最近一次升级重启以后,再也无法连接。可以确定账号密码正确,因为同样的配置,在ThinkPad上运行的Arch Linux完全工作正常。

  • 完全相同的 wpa_supplicant-office.conf 配置

报错排查

在执行 netplan apply 有时会遇到报错:

Warning: The unit file, source configuration file or drop-ins of
netplan-wpa-wlan0.service changed on disk.
Run 'systemctl daemon-reload' to reload units.

这个问题让我很困惑,因为系统重启有时候工作是正常的,有时候无线网络却没有正常运行,启动系统后手工执行命令 netplan apply 则报上述错误。

排查采用 netplan --debug apply

参考