Armbian 手动配置AP
Device:Phicomm N1
OS: Armbian jammy
前提条件:iw list | grep -A5 "Supported interface modes" 必须同时出现 managed和AP
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就可以了