香橙派ubuntu22开启热点并设置成开机自启

发布时间 2023-12-10 13:46:09作者: 听风逐浪

创建热点

通过 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 热点名字 密码