create_ap
create_ap 是一个开源的命令行工具,用于在 Linux 系统中创建一个临时的无线接入点(Access Point,AP),使得你的计算机可以作为一个 WiFi 热点来分享网络连接。
依赖库 hostapd、iproute2、iw、haveged 和 dnsmasq
内核支持修改
kernel/linux-5.4/arch/arm/configs/sun8iw20p1smp_t113_auto_defconfig
CONFIG_NETFILTER=y
CONFIG_NF_CONNTRACK=m
CONFIG_NF_CONNTRACK_EVENTS=y
CONFIG_NF_CONNTRACK_AMANDA=m
CONFIG_NF_CONNTRACK_FTP=m
CONFIG_NF_CONNTRACK_H323=m
CONFIG_NF_CONNTRACK_IRC=m
CONFIG_NF_CONNTRACK_NETBIOS_NS=m
CONFIG_NF_CONNTRACK_PPTP=m
CONFIG_NF_CONNTRACK_SANE=m
CONFIG_NF_CONNTRACK_SIP=m
CONFIG_NF_CONNTRACK_TFTP=m
CONFIG_NF_CT_NETLINK=m
CONFIG_NETFILTER_XT_TARGET_CLASSIFY=m
CONFIG_NETFILTER_XT_TARGET_CONNMARK=m
CONFIG_NETFILTER_XT_TARGET_LED=m
CONFIG_NETFILTER_XT_TARGET_LOG=m
CONFIG_NETFILTER_XT_TARGET_MARK=m
CONFIG_NETFILTER_XT_TARGET_NFLOG=m
CONFIG_NETFILTER_XT_TARGET_NFQUEUE=m
CONFIG_NETFILTER_XT_TARGET_TCPMSS=m
CONFIG_NETFILTER_XT_MATCH_CLUSTER=m
CONFIG_NETFILTER_XT_MATCH_COMMENT=m
CONFIG_NETFILTER_XT_MATCH_CONNBYTES=m
CONFIG_NETFILTER_XT_MATCH_CONNLIMIT=m
CONFIG_NETFILTER_XT_MATCH_CONNMARK=m
CONFIG_NETFILTER_XT_MATCH_CONNTRACK=m
CONFIG_NETFILTER_XT_MATCH_DCCP=m
CONFIG_NETFILTER_XT_MATCH_DSCP=m
CONFIG_NETFILTER_XT_MATCH_ESP=m
CONFIG_NETFILTER_XT_MATCH_HASHLIMIT=m
CONFIG_NETFILTER_XT_MATCH_HELPER=m
CONFIG_NETFILTER_XT_MATCH_IPRANGE=m
CONFIG_NETFILTER_XT_MATCH_LENGTH=m
CONFIG_NETFILTER_XT_MATCH_LIMIT=m
CONFIG_NETFILTER_XT_MATCH_MAC=m
CONFIG_NETFILTER_XT_MATCH_MARK=m
CONFIG_NETFILTER_XT_MATCH_MULTIPORT=m
CONFIG_NETFILTER_XT_MATCH_OWNER=m
CONFIG_NETFILTER_XT_MATCH_POLICY=m
CONFIG_NETFILTER_XT_MATCH_PKTTYPE=m
CONFIG_NETFILTER_XT_MATCH_QUOTA=m
CONFIG_NETFILTER_XT_MATCH_RATEEST=m
CONFIG_NETFILTER_XT_MATCH_REALM=m
CONFIG_NETFILTER_XT_MATCH_RECENT=m
CONFIG_NETFILTER_XT_MATCH_SCTP=m
CONFIG_NETFILTER_XT_MATCH_STATE=m
CONFIG_NETFILTER_XT_MATCH_STATISTIC=m
CONFIG_NETFILTER_XT_MATCH_STRING=m
CONFIG_NETFILTER_XT_MATCH_TCPMSS=m
CONFIG_NETFILTER_XT_MATCH_TIME=m
CONFIG_NETFILTER_XT_MATCH_U32=m
CONFIG_IP_VS=m
CONFIG_IP_NF_IPTABLES=m
CONFIG_IP_NF_MATCH_AH=m
CONFIG_IP_NF_MATCH_ECN=m
CONFIG_IP_NF_MATCH_TTL=m
CONFIG_IP_NF_FILTER=m
CONFIG_IP_NF_TARGET_REJECT=m
CONFIG_IP_NF_NAT=m
CONFIG_IP_NF_TARGET_MASQUERADE=m
CONFIG_IP_NF_TARGET_NETMAP=m
CONFIG_IP_NF_TARGET_REDIRECT=m
CONFIG_IP_NF_MANGLE=m
CONFIG_IP_NF_TARGET_CLUSTERIP=m
CONFIG_IP_NF_TARGET_ECN=m
CONFIG_IP_NF_TARGET_TTL=m
CONFIG_IP_NF_RAW=m
CONFIG_IP_NF_ARPTABLES=m
CONFIG_IP_NF_ARPFILTER=m
CONFIG_IP_NF_ARP_MANGLE=m
CONFIG_IP6_NF_IPTABLES=m
CONFIG_IP6_NF_MATCH_AH=m
CONFIG_IP6_NF_MATCH_EUI64=m
CONFIG_IP6_NF_MATCH_FRAG=m
CONFIG_IP6_NF_MATCH_OPTS=m
CONFIG_IP6_NF_MATCH_HL=m
CONFIG_IP6_NF_MATCH_IPV6HEADER=m
CONFIG_IP6_NF_MATCH_MH=m
CONFIG_IP6_NF_MATCH_RT=m
CONFIG_IP6_NF_TARGET_HL=m
CONFIG_IP6_NF_FILTER=m
CONFIG_IP6_NF_TARGET_REJECT=m
CONFIG_IP6_NF_MANGLE=m
CONFIG_IP6_NF_RAW=m
create_ap.conf
CHANNEL=default
GATEWAY=10.0.0.1
WPA_VERSION=2
ETC_HOSTS=0
DHCP_DNS=gateway
NO_DNS=0
NO_DNSMASQ=0
HIDDEN=0
MAC_FILTER=0
MAC_FILTER_ACCEPT=/etc/hostapd/hostapd.accept
ISOLATE_CLIENTS=0
SHARE_METHOD=nat
IEEE80211N=0
IEEE80211AC=0
HT_CAPAB=[HT40+]
VHT_CAPAB=
DRIVER=nl80211
NO_VIRT=0
COUNTRY=
FREQ_BAND=2.4
NEW_MACADDR=
DAEMONIZE=0
NO_HAVEGED=0
WIFI_IFACE=wlan0
INTERNET_IFACE=ppp0
SSID=WIF
PASSPHRASE=12345678
USE_PSK=0
DNS配置
platform/framework/auto/rootfs/etc/dnsmasq.conf
server=223.5.5.5
server=223.6.6.6
server=119.29.29.29
server=180.76.76.76
# 不修改etc/reslov.conf文件
no-resolv
指令解析
create_ap wlan0 ppp0 wif 12345678
将ppp0网卡的网络分享到wlan0, 热点接入名称是wif, 密码是12345678
create_ap –daemon wlan0 ppp0 wif 12345678
以守护进程(daemon)模式运行 create_ap,将ppp0网卡的网络分享到wlan0, 热点接入名称是wif, 密码是12345678,关闭终端不影响运行
pkill -f create_ap
通常能够有效地关闭通过 create_ap 创建的 Wi-Fi 热点及相关服务(如 hostapd 和 DHCP 服务器等)
create_ap –list-clients wlan0
查询当前热点连接了几个设备
查看当前正在运行的 create_ap 相关进程
sh-4.4# ps aux | grep create_ap
root 28177 0.0 1.9 2952 2152 ? Ss 15:28 0:00 /bin/bash /usr/bin/create_ap --daemon wlan0 ppp0 wif 12345678
nobody 28288 0.0 1.6 3628 1796 ? S 15:28 0:00 dnsmasq -C /tmp/create_ap.wlan0.conf.XXNx9MVN/dnsmasq.conf -x /tmp/create_ap.wlan0.conf.XXNx9MVN/dnsmasq.pid -l /tmp/create_ap.wlan0.conf.XXNx9MVN/dnsmasq.leases -p 5353
root 28289 0.6 1.5 2952 1728 ? S 15:28 0:02 /bin/bash /usr/bin/create_ap --daemon wlan0 ppp0 wif 12345678
root 28293 0.0 2.7 6540 3012 ? S 15:28 0:00 /usr/sbin/hostapd /tmp/create_ap.wlan0.conf.XXNx9MVN/hostapd.conf
基本工作原理
- WLAN 开启 AP 模式
- 创建一个虚拟网络接口: 配置无线网络参数,包括 SSID(Wi-Fi 名称)、频道(channel)、加密类型(如 WPA2)和密码
- DHCP 服务配置:create_ap 还会启动一个 DHCP 服务器(如 dnsmasq),自动为连接到热点的设备分配 IP 地址和其他必要的网络配置信息。
- create_ap 会持续监控无线网络的状态,确保其稳定性,并在遇到问题时尝试自动修复
dnsmasq 和 udhcpcd 的区别
dnsmasq侧重于在网络中提供DNS和DHCP服务,而udhcpcd则是用来接收DHCP服务的客户端组件,帮助设备自动获取网络配置。两者在功能上有一定的互补性,在很多情况下会一起部署,共同维护小型网络环境的稳定运行