当前位置: 首页 > 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.rkmt.cn/news/13352.html

相关文章:

  • PDE和CFD的区别?
  • QCOW2: A Virtual Disk Format Designed for Modern Virtualization
  • 鸿蒙应用开发从入门到实战(十六):线性布局案例
  • Spring Boot 3.x + Security + OpenFeign:如何避免内部服务调用被重复拦截? - 详解
  • 物理笔记
  • GreenPlum - Get field types
  • 搭建环境
  • Easysearch 国产替代 Elasticsearch:8 大核心挑战解读
  • 9-28
  • Qt结合ffmpeg代码实现udp推流/组播推流/rtp推流/监控GB28181推流/onvif推流
  • AI提示词应用 - 详解
  • 很多大公司为什么禁止在SpringBoot项目中使用Tomcat?
  • PHP 开发者必须掌握的基本 Linux 命令
  • Timeplus Enterprise 3.0 (Linux, macOS) - 流处理平台
  • 【鸿蒙生态共建】一文说清基础类型数据的非预期输入转换与兜底-《精通HarmonyOS NEXT :鸿蒙App开发入门与项目化实战》读者福利 - 详解
  • Splunk Enterprise 10.0.1 (macOS, Linux, Windows) - 搜索、分析和可视化,数据全面洞察平台
  • Linux高级技巧之集群部署(七) - 详解
  • 实用指南:python+springboot+uniapp基于微信小程序的停车场管理系统 弹窗提示和车牌识别
  • 使用场景规则匹配模式代替复杂的if else条件判断
  • 【操作系统】函数调用
  • ABC425
  • 维生素D,毛姆,我,还有停滞的3年
  • cgroup 使用
  • US$34 PCAN Cable for ACDP Module3
  • US$39 CGPRO CAN V2.1 Adapter for CG Pro 9S12 Key Programmer
  • 使用 preact 渲染组件到任何元素
  • 《ZeroTier教程》03-客户端配置 zerotier-cli常用命令 桥接和路由配置示例
  • JAVA 语法基础课程动手动脑及课后实验问题整理文档
  • python垃圾回收
  • K8S部署Openwebui 服务(Nvidia版)