最近需要在Ubuntu 22.04下配置 WIFI 热点,通过有线网络转发出去,将配置过程记录下来,用到的组合为hostapd、isc-dhcp-server、iptables,hostapd提供热点管理,isc-dhcp-server为热点提供 DHCP、iptables为有线网络和热点之间提供转发,网络关系如下图

由于 dhcp 服务只配置了 wlan0,对于有线网络只支持手工配置的固定IP,IP 段为192.168.1.x
注:安装之前先更下软件包
root@noka:~# apt-get update
一、hostapd 安装
为了支持最新的 wifi6,这里采用最新版本的源码安装,先在官网下载后编译安装,在这之前还需要安装编译依赖项
1、安装依赖项
root@noka:~# apt-get install libssl-dev libnl-3-dev
2、创建依赖项链接
root@noka:~# ln -s /usr/include/libnl3/netlink /usr/include/netlink
3、下载 hostapd源码,解压,如果没有 wget 需要先安装
root@noka:~# wget https://w1.fi/releases/hostapd-2.11.tar.gz
root@noka:~# tar xzvf hostapd-2.11.tar.gz
root@noka:~# cd hostapd-2.11/hostapd
4、复制默认配置文件,修改配置,根据需要进行选择,这里需要支持802.11ac 和802.11ax,对应的注释去掉即可,这里去掉了"CONFIG_IEEE80211AC=y","CONFIG_IEEE80211AX=y","CONFIG_IEEE80211BE=y"三个注释
root@noka:~# cp defconfig .config
root@noka:~# vim .config
5、编译并且安装
root@noka:~# make
root@noka:~# make install
6、创建配置文件,增加配置,这里配置文件放在了/etc/hostapd目录下
root@noka:~# mkdir /etc/hostapd
root@noka:~# vim /etc/hostapd/hostapd.conf
7、hostapd.conf 文件内容如下,其中 wlan0是 wifi 的接口名称
#wlan set
interface=wlan0
driver=nl80211
ctrl_interface=/var/run/hostapd
#wifi app
ssid=Noka_WIFI
hw_mode=a
channel=36
#wap
wpa=2
wpa_key_mgmt=WPA-PSK
wpa_passphrase=12345678
#[802.11n]
ieee80211n=1
ht_capab=[SHORT-GI-20][HT40+][SHORT-GI-40]
#[802.11ac]
ieee80211ac=1
#[802.11ax]
ieee80211ax=1
max_num_sta=64
ap_max_inactivity=300
#pasword
wpa_pairwise=CCMP
rsn_pairwise=CCMP
8、启动 hostapd,启动前,如果当前 WIFI 连接到网络,需要先断开,也可以所有的都配置完成一起启动
root@noka:~# rfkill unblock wlan
root@noka:~# hostapd /etc/hostapd/hostapd.conf -B
二、安装isc-dhcp-server
1、用软件管理包直接安装
root@noka:~# apt-get install isc-dhcp-server
2、配置网卡,指定 DHCP 服务监听的接口
root@noka:~# vim /etc/default/isc-dhcp-server
INTERFACESv4="wlan0" # 此处添加需要提供DHCP服务的网卡名



