当前位置: 首页 > news >正文

Ubuntu STA+AP 开机自启完整方案

Ubuntu STA+AP 开机自启完整方案

1. rfkill 自动解锁 WLAN

文件:/etc/systemd/system/unblock-wifi.service

[Unit]
Description=Unblock WiFi
Before=wlan-ap.service[Service]
Type=oneshot
ExecStart=/usr/sbin/rfkill unblock all
RemainAfterExit=yes[Install]
WantedBy=multi-user.target

启用:

sudo systemctl daemon-reload
sudo systemctl enable unblock-wifi.service

2. 创建虚拟 AP 接口

文件:/etc/systemd/system/wlan-ap.service

[Unit]
Description=Create virtual AP interface
After=unblock-wifi.service
Requires=unblock-wifi.service[Service]
Type=oneshot
# 创建虚拟接口
ExecStart=/sbin/iw dev wlp3s0 interface add wlp3s0_ap type __ap
# 给接口分配静态 IP
ExecStartPost=/sbin/ip addr add 192.168.50.1/24 dev wlp3s0_ap
ExecStartPost=/sbin/ip link set dev wlp3s0_ap up
RemainAfterExit=yes[Install]
WantedBy=multi-user.target

启用:

sudo systemctl daemon-reload
sudo systemctl enable wlan-ap.service

3. hostapd AP 服务

文件:/etc/systemd/system/hostapd-ap.service

[Unit]
Description=Start hostapd for AP
After=wlan-ap.service
Requires=wlan-ap.service[Service]
ExecStartPre=/bin/sleep 3
ExecStart=/usr/sbin/hostapd /etc/hostapd/hostapd.conf
Restart=always[Install]
WantedBy=multi-user.target

hostapd 配置 /etc/hostapd/hostapd.conf

interface=wlp3s0_ap
driver=nl80211
ssid=MyHotspot
hw_mode=g
channel=6
wmm_enabled=1
auth_algs=1
ignore_broadcast_ssid=0
wpa=2
wpa_passphrase=12345678
wpa_key_mgmt=WPA-PSK
rsn_pairwise=CCMP

4. dnsmasq DHCP 服务

  1. 备份默认配置:
sudo mv /etc/dnsmasq.conf /etc/dnsmasq.conf.bak
  1. 新建 /etc/dnsmasq.conf
interface=wlp3s0_ap
bind-interfaces
dhcp-range=192.168.50.10,192.168.50.100,12h
  1. 修改 dnsmasq systemd 依赖:
sudo systemctl edit dnsmasq

输入:

[Unit]
After=hostapd-ap.service
Requires=hostapd-ap.service[Service]
ExecStartPre=/bin/sleep 3

保存退出。

  1. 启用并重载:
sudo systemctl daemon-reload
sudo systemctl enable dnsmasq

5. 设置 NAT 转发

  1. 启用 IP 转发:
sudo sysctl -w net.ipv4.ip_forward=1
echo "net.ipv4.ip_forward=1" | sudo tee -a /etc/sysctl.conf
sudo sysctl -p
  1. 配置 iptables:
sudo iptables -t nat -A POSTROUTING -o wlp3s0 -j MASQUERADE
sudo iptables -A FORWARD -i wlp3s0_ap -o wlp3s0 -j ACCEPT
sudo iptables -A FORWARD -i wlp3s0 -o wlp3s0_ap -m state --state RELATED,ESTABLISHED -j ACCEPT
  1. 保存规则:
sudo apt install iptables-persistent
sudo netfilter-persistent save

6. STA 自动连接 Wi-Fi

nmcli dev wifi connect "YourWiFiSSID" password "YourWiFiPassword" ifname wlp3s0
nmcli connection modify "YourWiFiSSID" connection.autoconnect yes

7. NetworkManager 忽略虚拟 AP 接口

编辑 /etc/NetworkManager/NetworkManager.conf

[keyfile]
unmanaged-devices=interface-name:wlp3s0_ap

重启 NetworkManager:

sudo systemctl restart NetworkManager

8. 开机启动顺序

  1. unblock-wifi.service → 解锁 WLAN

  2. wlan-ap.service → 创建虚拟接口 + 分配静态 IP

  3. hostapd-ap.service → 启动 AP

  4. dnsmasq.service → DHCP

  5. NAT 转发 → 设备可上网

  6. STA 自动连 Wi-Fi


http://www.jsqmd.com/news/5322/

相关文章:

  • PDE和CFD的区别?
  • MCU的闪存(FLASH)按机制结构划分区域
  • T2
  • 负载均衡式在线OJ工程复盘
  • 题解:CF1930I Counting Is Fun
  • AI百炼大模型接入钉钉,实现在群中免@交互式新闻推送
  • K8S-Service 学习
  • 第05周 预习、实验与作业:继承与多态
  • 深入解析:ShardingSphere 与分库分表:分布式数据库中间件实战指南
  • 纸浆2511
  • electron38-admin桌面端后台|Electron38+Vue3+ElementPlus管理系统
  • 长江中游干流河道崩岸特征与机理研究综述
  • 漫谈《数字图像处理》之最大稳定极值区域(MSER) - 实践
  • 基于 Python Keras 建立 猫狗图像的精准分类
  • 【变量与数据类型】让自动化拥有“记忆”
  • 《ESP32-S3使用指南—IDF版 V1.6》第四十章 图片显示实验
  • QCOW2: A Virtual Disk Format Designed for Modern Virtualization
  • 鸿蒙应用开发从入门到实战(十六):线性布局案例
  • SQL注入流程
  • Spring Boot 3.x + Security + OpenFeign:如何避免内部服务调用被重复拦截? - 详解
  • 完整的GLFW应用程序示例
  • 物理笔记
  • 基于Python+Vue开发的商城管理系统源码+运行步骤
  • HTML5-和-CSS3-迁移即时入门-全-
  • HTML5-多人游戏开发-全-
  • HTML5-地理位置即时操作指南-全-
  • [Kernel] - Heterogeneous Memory Management (HMM)
  • GreenPlum - Get field types
  • 搭建环境
  • 20250928