创建热点
通过 create_ap 创建 WIFI 热点的方法
以下是官方用户手册给的方案,此脚本的GitHub地址为https://github.com/oblique/create_ap
香橙派官方给的ubuntu22镜像已安装此脚本
create_ap的基本命令格式如下所示:
create_ap [options] <wifi-interface> [<interface-with-internet>]
[<access-point-name> [<passphrase>]]
* options:可以通过该参数指定加密方式、WIFI热点的频段、频宽模式、网络共享
方式等,具体可以通过create_ap -h获取到有哪些option
* wifi-interface:无线网卡的名称
* interface-with-internet:可以联网的网卡名称,一般是eth0
* access-point-name:热点名称
* passphrase:热点的密码
使用以下命令开启热点
sudo create_ap --no-virt -m nat wlan0 eth0 热点名字 密码
使用该命令后在停止服务前我们就无法继续输入命令了,可以使用screen放后台去跑这个命令
如果报错请翻到文章最后查看是否是dnsmasq的问题
将热点设置为开机自启
创建一个服务
sudo vim /etc/systemd/system/create_ap.service
输入以下内容,记得改成自己的热点名字和密码
[Unit]
Description=Create AP Service
Wants=network.target
After=network.target
[Service]
Type=simple
ExecStart=/usr/local/bin/create_ap --no-virt -m nat wlan0 eth0 热点名字 密码
ExecStop=/usr/local/bin/create_ap --stop wlan0
Restart=on-failure
[Install]
WantedBy=multi-user.target
重新加载 systemd 配置以识别新的服务文件,并启用服务以在启动时运行
sudo systemctl daemon-reload
sudo systemctl enable create_ap.service
启动服务并检查是否成功
sudo systemctl start create_ap.service
sudo systemctl status create_ap.service
我在使用这个命令的时候遇到的一些问题
systemd-resolve和dnsmasq占用端口
开机的时候会报错dnsmasq启动失败,实际上是systemd-resolve和dnsmasq两个进程都在使用53端口。systemd-resolve服务通常用于处理系统的DNS解析,而dnsmasq是我们尝试启动的服务,但由于systemd-resolve已经占用了53端口,所以dnsmasq无法启动
解决这个问题的一个可能的方法是更改systemd-resolved的设置,使其不再监听53端口。你可以通过编辑/etc/systemd/resolved.conf文件来实现这一点。首先,你需要备份这个文件,以防你需要恢复到当前的设置:
sudo cp /etc/systemd/resolved.conf /etc/systemd/resolved.conf.bak
然后,你可以使用你喜欢的文本编辑器打开这个文件
sudo nano /etc/systemd/resolved.conf
在这个文件中,找到DNSStubListener行,如果这行前面有一个#,那么删除它,并将其后面的值改为no:
DNSStubListener=no
然后保存并关闭文件。最后,你需要重启systemd-resolved服务以应用这个更改:
sudo systemctl restart systemd-resolved
现在,你应该可以启动dnsmasq服务了。你可以使用下面的命令来尝试启动这个服务,并检查它的状态:
sudo systemctl start dnsmasq
sudo systemctl status dnsmasq
如果你看到dnsmasq服务已经在运行,那么问题应该已经解决了
dnsmasq已经被NetworkManager启动导致脚本无法正常运行
Config dir: /tmp/create_ap.wlan0.conf.ZomgofmD
PID: 30025
Network Manager found, set wlan0 as unmanaged device... DONE
Sharing Internet using method: nat
dnsmasq: failed to bind DHCP server socket: Address already in use
Doing cleanup.. done
使用以下命令检查是否已经有 dnsmasq 实例在运行
ps aux | grep dnsmasq
如果发现有 dnsmasq 实例在运行就停止它
sudo systemctl stop dnsmasq
dnsmasq 是由 NetworkManager 启动的,要在 NetworkManager 的配置中禁用它,使用命令编辑文件
sudo vim /etc/NetworkManager/NetworkManager.conf
修改配置
[main]
dns=none
重启 NetworkManager
sudo systemctl restart NetworkManager
再次尝试启动 create_ap
sudo create_ap --no-virt -m nat wlan0 eth0 热点名字 密码
标签:systemd,systemctl,create,sudo,香橙,ap,自启,dnsmasq,ubuntu22
From: https://www.cnblogs.com/ashenweb/p/17892569.html