ubuntu20在命令行配置无线网卡netplan
对于无图形界面的服务器版Server,我这里尝试使用的的树莓派3B,安装包ubuntu-20.04.2-preinstalled-server-arm64+raspi.img.xz。
使用wpa命令配置后还需要dhclient命令获取地址,而且重启后需要重新配置。
root@ubuntu:~# wpa_
wpa_action wpa_cli wpa_passphrase wpa_supplicant
下面介绍netplan可以在重启后仍然能够正常自动启动并获取IP地址。
只有2个步骤,修改配置文件/etc/netplan/50-cloud-init.yaml,并用netplan apply生效。难点在于配置文件的格式。
man netplan有很长的说明,功能强大,也有例子,但不好看懂。
配置wifi无线网卡之前
root@ubuntu:/etc/netplan# ip ad
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
inet 127.0.0.1/8 scope host lo
valid_lft forever preferred_lft forever
inet6 ::1/128 scope host
valid_lft forever preferred_lft forever
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP group default qlen 1000
link/ether b8:27:eb:a7:a1:cb brd ff:ff:ff:ff:ff:ff
inet 192.168.199.104/24 brd 192.168.199.255 scope global dynamic eth0
valid_lft 7191sec preferred_lft 7191sec
inet6 fe80::ba27:ebff:fea7:a1cb/64 scope link
valid_lft forever preferred_lft forever
3: wlan0: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc fq_codel state DOWN group default qlen 1000
link/ether b8:27:eb:f2:f4:9e brd ff:ff:ff:ff:ff:ff
尝试修改并测试配置文件,只是缩进不同,出现两种报错:
root@ubuntu:/etc/netplan# vi 50-cloud-init.yaml
root@ubuntu:/etc/netplan# netplan try --debug
/etc/netplan/50-cloud-init.yaml:11:15: Error in network definition: expected mapping (check indentation)
wifis:
^
An error occurred: the configuration could not be generated
Reverting.
Warning: Stopping systemd-networkd.service, but it can still be activated by:
systemd-networkd.socket
root@ubuntu:/etc/netplan#
root@ubuntu:/etc/netplan# netplan try --debug
Error while loading /etc/netplan/50-cloud-init.yaml, aborting.
正确配置
root@ubuntu:/etc/netplan# cat 50-cloud-init.yaml
network:
ethernets:
eth0:
dhcp4: true
optional: true
wifis:
wlan0:
dhcp4: true
optional: true
access-points:
"Your wifi name":
password: "Your wifi password"
version: 2
root@ubuntu:/etc/netplan# vi 50-cloud-init.yaml
root@ubuntu:/etc/netplan# netplan try --debug
Warning: Stopping systemd-networkd.service, but it can still be activated by:
systemd-networkd.socket
Do you want to keep these settings?
Press ENTER before the timeout to accept the new configuration
//这里按回车接受新的配置
Changes will revert in 117 seconds
Configuration accepted.
root@ubuntu:/etc/netplan#
配置好之后
root@ubuntu:/etc/netplan# ip ad
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
inet 127.0.0.1/8 scope host lo
valid_lft forever preferred_lft forever
inet6 ::1/128 scope host
valid_lft forever preferred_lft forever
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP group default qlen 1000
link/ether b8:27:eb:a7:a1:cb brd ff:ff:ff:ff:ff:ff
inet 192.168.199.104/24 brd 192.168.199.255 scope global dynamic eth0
valid_lft 7175sec preferred_lft 7175sec
inet6 fe80::ba27:ebff:fea7:a1cb/64 scope link
valid_lft forever preferred_lft forever
3: wlan0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP group default qlen 1000
link/ether b8:27:eb:f2:f4:9e brd ff:ff:ff:ff:ff:ff
inet 192.168.199.107/24 brd 192.168.199.255 scope global dynamic wlan0
valid_lft 7176sec preferred_lft 7176sec
inet6 fe80::ba27:ebff:fef2:f49e/64 scope link
valid_lft forever preferred_lft forever
root@ubuntu:/etc/netplan#
扒拉一下netplan
root@ubuntu:~# which netplan
/usr/sbin/netplan
root@ubuntu:~# ll /usr/sbin/netplan
lrwxrwxrwx 1 root root 31 Jan 8 22:17 /usr/sbin/netplan -> ../share/netplan/netplan.script*
root@ubuntu:~# file /usr/share/netplan/netplan.script
/usr/share/netplan/netplan.script: Python script, ASCII text executable
root@ubuntu:~# netplan -h
usage: /usr/sbin/netplan [-h] [--debug] ...
Network configuration in YAML
optional arguments:
-h, --help show this help message and exit
--debug Enable debug messages
Available commands:
help Show this help message
apply Apply current netplan config to running system
generate Generate backend specific configuration files from /etc/netplan/*.yaml
get Get a setting by specifying a nested key like "ethernets.eth0.addresses", or "all"
info Show available features
ip Retrieve IP information from the system
set Add new setting by specifying a dotted key=value pair like ethernets.eth0.dhcp4=true
try Try to apply a new netplan config to running system, with automatic rollback
root@ubuntu:~#
总结:
- ubuntu20.04服务器版(仅命令行shell)的网络服务是systemd-networkd 。
- 配置文件是/etc/netplan/50-cloud-init.yaml 该文件遵循yaml语法,之前没有接触过,必须用空格缩进,不能用tab。
- 桌面版(图形界面),可能是用NetworkManager服务。
- netplan命令是一个python脚本。