惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

爱范儿
爱范儿
让小产品的独立变现更简单 - ezindie.com
让小产品的独立变现更简单 - ezindie.com
WordPress大学
WordPress大学
Y
Y Combinator Blog
I
InfoQ
美团技术团队
罗磊的独立博客
B
Blog RSS Feed
GbyAI
GbyAI
小众软件
小众软件
IT之家
IT之家
Engineering at Meta
Engineering at Meta
Blog — PlanetScale
Blog — PlanetScale
V
V2EX
Last Week in AI
Last Week in AI
酷 壳 – CoolShell
酷 壳 – CoolShell
Jina AI
Jina AI
MyScale Blog
MyScale Blog
博客园 - 聂微东
Microsoft Security Blog
Microsoft Security Blog
博客园 - 【当耐特】
Apple Machine Learning Research
Apple Machine Learning Research
The GitHub Blog
The GitHub Blog
T
The Blog of Author Tim Ferriss

Anyeの小站

PlayGuard,让你的播放器老实点! Peg - 命令行便签 · 把终端输出钉上布告板 2025 年终总结:折腾不止,热情常青 告别公网暴露风险:mTLS助你构建家里云安全边界 🚀 0 代码部署:Halo 博客与企业门户系统 B站跟随系统深色模式脚本——让你的B站体验更丝滑 【1024抽奖】EdgeOne下线源站防护?这个办法更简单! 全新!Edge 还是卸载不掉?来试试这个! 混元模型玩家必看:CNB API 不限量调用! 1Panel 应用商店如何上架应用 Next Terminal 实战:内网无密码安全登录 用了 EdgeOne 降本增效,源站却可能裸奔? 降本增效!上云真香! 在线重装 Proxmox VE SSL证书申请老出问题?这套组合直接帮你搞定! 🌐 森屿云:让数字化转型像呼吸一样自然 1Panel v2 首发体验(alpha) Vscode/Code-Server 安装中文包——CI/CD DockerHub Mirror 终极解决方案——零成本,速度超快! 本地跑不动 QwQ?快用 CNB,免费运行满血 QwQ! Docker Push 巨慢?Skopeo 来拯救 2024 年终总结:与 17170 位读者相遇的旅程 云厂 200Mbps 小鸡,家里云的希望 Halo 插件 thyuu-embed 主题样式注入模板 Windows 11 卸载 Edge 小破站 6 级萌新前来挑战硬核会员,答题分享 手机系统杂谈 1Panel 自建邮局 - Docker Mailserver 1Panel 推送 SSL 证书到阿里云、腾讯云 整了几个简洁的单页,欢迎来扒
一个花活玩法:随身站点
Anye · 2024-05-18 · via Anyeの小站

前言

这可能是一个小众需求。

作为社团社长,每次在纳新的时候总有一个难题:操场没有校园网 WIFI 覆盖,各大运营商信号覆盖也差,每次新成员需要扫码登记信息或者我们展示社团活动内容的时候,总是一群人围着,等网。。。

据此需求,我最近想到了一个花活儿玩法,使用各种派类开发板,开 AP 模式,部署成局域网站点,在 ARM 的低功耗和 Halo 的超易迁移的特性加持下,完美实现相关需求。

技术栈

Nmcli 启动 WIFI 热点

在这里我的需求是启动一个公开的热点,方便同学们扫码连接。

查看 WiFi 设备

在终端中通过命令获取 WiFi 网络接口的名称,命令如下:

ip link show

获取如下内容

1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN mode DEFAULT group default qlen 1000
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP mode DEFAULT group default qlen 1000
    link/ether 00:00:a4:b4:9f:bf brd ff:ff:ff:ff:ff:ff
3: wlan0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP mode DORMANT group default qlen 1000
    link/ether c8:8a:d8:1e:1f:1f brd ff:ff:ff:ff:ff:ff
4: docker0: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc noqueue state DOWN mode DEFAULT group default 
    link/ether 02:42:e2:d1:28:bf brd ff:ff:ff:ff:ff:ff
5: br-d77d4300a732: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc noqueue state DOWN mode DEFAULT group default 
    link/ether 02:42:3a:f9:45:a0 brd ff:ff:ff:ff:ff:ff

这里获取名称为:wlan0,因人而异。现在基本所有的无线网卡均支持 AP 模式,这里就不再检查了。

建立热点

在终端中输入以下内容,创建热点网络配置并启动。

IFNAME="wlan0"  # 设置无线网卡名称
CON_NAME="WIFI" # 设置连接名称

nmcli con add type wifi ifname $IFNAME con-name $CON_NAME autoconnect yes ssid $CON_NAME    # 添加连接,设置自动连接,设置SSID
nmcli con modify $CON_NAME 802-11-wireless.mode ap 802-11-wireless.band bg ipv4.method shared   # 修改连接模式:ap模式,802.11b/g,共享模式
nmcli con up $CON_NAME  # 启动连接

开启成功会有如下输出:

Connection 'WIFI' (9894adac-f246-4025-b05f-8ffe792cf4b8) successfully added.
Connection successfully activated (D-Bus active path: /org/freedesktop/NetworkManager/ActiveConnection/5)

查看热点信息

通过以下命令检查接口和IP信息。

ip ad show wlan0 # 这里改成你自己的网卡名

输出:

3: wlan0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP group default qlen 1000
    link/ether c8:8a:d8:1e:1f:1f brd ff:ff:ff:ff:ff:ff
    inet 10.42.0.1/24 brd 10.42.0.255 scope global noprefixroute wlan0
       valid_lft forever preferred_lft forever
    inet6 fe80::221f:e157:e636:8bb1/64 scope link noprefixroute 
       valid_lft forever preferred_lft forever

修改 DNS 解析到本机

为了实现在后续同学们访问同一个域名仍然可以访问到站点,我这里把局域网站点的域名与公网的站点域名设置成了一个,这就需要把局域网的 IP 解析改成开发板的 IP,在我这里是 10.42.0.1

在 1Panel 的进程中查到 Nmcli 开起来的 NetworkManager 为无线热点启动了一个 dnsmasq 子进程,检查启动命令:

/usr/sbin/dnsmasq --conf-file=/dev/null --no-hosts --keep-in-foreground --bind-interfaces --except-interface=lo --clear-on-reload --strict-order --listen-address=10.42.0.1 --dhcp-range=10.42.0.10,10.42.0.254,60m --dhcp-lease-max=50 --dhcp-leasefile=/var/lib/NetworkManager/dnsmasq-wlan0.leases --pid-file=/run/nm-dnsmasq-wlan0.pid --conf-dir=/etc/NetworkManager/dnsmasq-shared.d

找到了配置文件所在的文件夹:

/etc/NetworkManager/dnsmasq-shared.d

创建自定义配置文件:

nano /etc/NetworkManager/dnsmasq-shared.d/custom.conf

在配置文件中添加自定义解析规则:

address=/www.example.com/10.42.0.1

重启 NetworkManager 服务:

systemctl restart NetworkManager

参考资料

[1] https://linux265.com/news/3899.html