我有一个使用 nginx 托管一个简单网站的 Raspberry Pi。RPi 充当无线接入点 - 用户可以连接到其无线网络,RPi 为他们提供一个 IP(它运行 DHCP 服务器),他们可以访问该站点。
因为 RPi 实际上并不为用户提供互联网(只有这一个站点),所以我让用户更容易找到该站点。我没有知道该站点的确切 URL,而是告诉我的 dns 服务器 (dnsmasq),DHCP 服务器告诉客户端使用它来解析对我的 RPi (192.168.30.1) 的 LAN IP 的所有查询。
此时,我的 nginx 在其配置中有一个条目,内容为:
这很棒。
我想更进一步。当 Android 连接到无线网络时,它会尝试连接到http://connectivitycheck.gstatic.com/generate_204(或其他类似的谷歌页面之一),专门检查请求是否被重定向。如果它得到 204 代码,则假定一切正常。如果没有,则假定它位于强制门户后面,并弹出一个浏览器窗口,打开强制门户登录。
出于某种原因,当我告诉 nginx 使用 302 重定向或什至 200(带有一些文本)响应对 generate_204 页面的请求时,Android 不会弹出浏览器。
我有一个带有内置热点功能的 mikrotik 路由器,它确实让 android 使用强制门户登录(在同一个测试手机上)弹出浏览器。当我查看它发送给我的客户端的流量时,它是一个简单的 HTTP 200,带有一些文本,就像我的一样。
似乎可行的一件事是,如果我禁用 DNS 服务器将所有内容解析为 192.168.30.1,并使用 iptables 将端口 80 重定向到我的 RPi 上的 localhost。
有谁知道为什么在 Android 的 Captive Portal 检测中重定向端口 80 有效,但配置 DNS 服务器以将所有内容解析为 …
L7 过滤器项目似乎已有 15 年历史,需要内核补丁,不支持 2.6 版以上的内核,而且它的大部分模式文件似乎是在 2003 年编写的。
通常,当有一个旧的、流行的项目时,会有新的项目来取代它,但我找不到任何更新的 Linux 进行第 7 层过滤的项目。
我是不是找对地方了?是否出于某种原因完全放弃了第 7 层过滤的想法?我认为现在有了更强大的硬件,这将比以前更实用。
我打算尽快尝试一下 btrfs,我想知道但似乎在网上找不到的是:
如果快照不仅是某个小目录的快照,而是整个系统的快照(/var、/usr、/bin、/sbin 等等),您是否可以在正在运行的系统上执行 btrfs 快照,或者您是否需要启动在系统离线时放入 Live CD 以进行 btrfs 快照?
如果技术上可以对正在运行的系统进行快照,我假设您仍然需要关闭系统才能使用该快照。启动快照时正在运行的系统的快照(子卷)是否与硬启动非常相似,因为软件不知道快照何时将发生,因此程序可能会向 / var 当时,然后他们知道,由于系统重新启动,程序再次启动,数据写入一半?
我有一张 64GB 的 MicroSD 卡。我向其中写入了一个大小为 16GB 的图像:
$ sudo dd if=my_image.img of=/dev/sdb bs=4M
3798+1 records in
3798+1 records out
15931539456 bytes (16 GB, 15 GiB) copied, 657.848 s, 24.2 MB/s
Run Code Online (Sandbox Code Playgroud)
现在,我想使用 dd 拍摄同一张 64GB SD 卡的前 15931539456 字节 (16GB) 的图像,最终得到一个与我开始使用的图像具有相同校验和的图像。
据我了解,上面 dd 的结果(3798+1)表明,从源图像中有 3798 个完整读取,以及 1 个部分读取,因为源图像的大小没有均匀地分割成 4M 块。那么我如何告诉 dd 现在将 15931539456 字节从 SD 卡复制到一个新文件中,一次 4M?
我假设我可以做类似的事情:
sudo dd if=/dev/sdb of=new_image.img bs=1 count=15931539456
Run Code Online (Sandbox Code Playgroud)
但缓冲区这么小会使操作永远持续下去。有没有办法告诉它使用 4M 的缓冲区,但只复制 X 个字节,即使这会导致最后的读取很短?