Featured image of post Armbian使用netplan配置AP

Armbian使用netplan配置AP

N1盒子刷了Armbian的系统,自己动手配置一下AP

Armbian 手动配置AP

Device:Phicomm N1

OS: Armbian jammy

前提条件:iw list | grep -A5 "Supported interface modes" 必须同时出现 managedAP

1
2
3
4
5
6
Supported interface modes:
        * IBSS
        * managed
        * AP
        * P2P-client
        * P2P-GO

~我个人是2.4G连接无线网,然后创建5G的AP(我的随身WiFi只支持2.4G)。~~

实践出真知,我连接的2.4G的WiFi,AP也会被降级到2.4Ghz。

安装 hostapd、dnsmasq

1
sudo apt install hostapd dnsmasq

配置虚拟网卡

1
2
sudo iw dev wlan0 interface add ap0 type __ap
#wlan0 是根据实际物理网卡选择的,先看一下能不能创建名为:ap0的虚拟网卡。
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
vi /etc/systemd/network/20-ap0.network
------
[Match]
Name=ap0

[Network]
Address=192.168.88.1/24
DHCPServer=no #专业的事情交给dnsmasq去做

#我需要独立网段,这个ap0就不会被NAT和转发

配置hostapd

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
vi /etc/hostapd/hostapd.conf
------
interface=ap0
driver=nl80211

ssid=Armbian_5G
ignore_broadcast_ssid=0   # 1=隐藏,0=可见

# 5GHz 关键
hw_mode=a               # 'a' = 5GHz, 'g' = 2.4GHz
channel=36              # 可选 36,40,44,48 等
ieee80211n=1
ieee80211ac=1           # 5G 必须打开 ac

wpa=2
wpa_passphrase=StrongPass123
wpa_key_mgmt=WPA-PSK
rsn_pairwise=CCMP

只要你连接2.4Ghz的WiFi,那你AP也的是同频率和频段的,上不了5Ghz。

让dnsmasq只对ap0提供DHCP

1
2
3
4
5
vi /etc/dnsmasq.d/ap0.conf
------
interface=ap0
bind-interfaces
dhcp-range=192.168.88.100,192.168.88.150,12h

开机自启动AP

开机自动创建 ap0

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
[Unit]
Description=Create AP
After=network-pre.target
Before=hostapd.service

[Service]
Type=oneshot
ExecStart=/sbin/iw dev wlan0 interface add ap0 type __ap
ExecStartPost=/sbin/ip link set ap0 up
RemainAfterExit=yes

[Install]
WantedBy=multi-user.target

除此之外,还需要修改一下/lib/systemd/system/hostapd.service/lib/systemd/system/dnsmasq.service,让hostapd和dnsmasq等ap0启动成功之后在创建AP,开始DHCP,要不然开机后,AP必然创建失败,你还要手动重启一遍hostapd和dnsmasq。

1
2
3
4
5
6
7
[Unit]
Description=...
After=network.target
After=ap0.service
Requires=ap0.service

... ...
1
sudo systemctl enable systemd-networkd hostapd dnsmasq ap0.service

注意!

如果你一直在用netplan管理网络的话,那你需要注意一个地方!你需要把netplan的底层从NetworkManager换成networkd

1
2
3
network:
  version: 2
  renderer: networkd

大部分不能创建AP的问题就是没有用networkd,可以用networkctl status ap0查看ap状态,如果看到State: routable (configured)那就基本上没有问题了,

然后sudo reboot,或者sudo systemctl restart systemd-networkd hostapd dnsmasq ap0.service就可以了