2022¶
VLAN 实现单网口软路由
起因是发现在原本的两个路由器间架设 wireguard 隧道,其中一个路由器 (小米 4A 千兆版) 遇到了 CPU 瓶颈,导致带宽只能达到 100-200 左右。后面研究了市面上的各种路由器的 CPU 型号,包括矿渣路由器。购买了一个 100 元的可以刷 openwrt 的竞斗云 2.0,带宽可以达到 200-300M,但仍远低于理想的千兆。目前即便是 500 元以上的高端路由器,其配置仍然只有 4 核 Cortex A53@2.0GHz 的水平。
偶然看到用旧笔记本做软路由的视频,遂萌生了折腾软路由的想法。仔细研究其方案后发现为 pppoe 拨号上网的方式,不适用于 dhcp 上网的情况。后偶然发现所购买路由器支持 vlan 功能(其实后面发现所有 openwrt 路由器都支持),于是自己独立构思了后面的架构图。并尝试成功 (11/5),最终在红米 AX6S+ 软路由的情况下,达到了 500M 的带宽,此时 AX6S 的双核 Cortex A53@1.2GHz CPU 占用率也达到了 100%。
之后再接再励,将 AX6S 也配置了 vlan,并在旧笔记本实现软路由。最终带宽达到了 880Mbps,scp 文件达到 98MB/s 的速率。并且之后还成功配置了 Guest WIFI,将其和主网络隔离开来,更加保证了安全性。
通过本次项目,学会了:
- linux 下,ip, netplan 创建 bridge 和 vlan
- lxc 容器的使用
- openwrt DSA 架构配置 vlan
linux 相关-系统运维
大纲
- how linux kernel boot
- kernel parameters
- grub
- how user space start
- init, systemd
- initial RAM filesystem
- Shell
- Disk and filesystem
- partitioning disk
- mount
- User identification, authentification, authorization
- identi
- user, group 定义
- PAM
- System configuration
- Logging
- Batch jobs
LXC 使用
1 说明
lxc vs docker
LXC 是一种轻量虚拟机,复用 host 内核。与 docker 尽可能每个容器只跑一个应用不同,lxc 的思路更接近虚拟机。
The key networking difference between Docker and LXC is that with LXC one can attach a container to any bridge on the Host. This includes a bridge on the outside interface. Via transparent bridging the container can have unfettered access to the existing IPv6 subnet, including picking up Global Unique Addresses (GUAs) without the host having to do router-like functions, such as adding routes, auto propagation of prefixes (with DHCPv6-PD), redistribution of routes, etc. Again, things which Docker doesn't support.
lxc vs lxd
LXD is actually two parts, the lxd
daemon, and the lxc
CLI client which makes calls to the lxd
daemon
尝试非官方 openwrt
说明
我的红米 ac2100 不知道怎么回事,使用自己编译的固件,无法开启 5G 无线。radio1 显示 not active,并且为 802.11n 协议。先后尝试编译 22.03-rc6, 21.02 稳定版都是如此。(官方稳定版是有的)(想到一些第三方的 openwrt 说针对国内进行了优化,因此想尝试下第三方的 openwrt
复古模拟器前端
retroarch
RetroArch Starter Guide – Retro Game Corps
retroarch 是一个模拟器前端,不同的模拟器以 core 的形式嵌入 retro。retroarch 相对于单独的模拟器来说好处如下
- 跨平台。retroarch 支持非常多的平台。由于 core 是动态链接库的形式嵌入 retroarch 的,相当于解决了不同 core 的跨平台问题。
- 支持全局的按键映射。不用为每个模拟器设置手柄,快捷键等等配置。
- shader and filters。可以实现一些特别的视觉效果,比如
Openwrt Mesh 和快速漫游配置
背景
家里原本有两个路由器,一个负责楼上,一个负责楼下。但是仍然有许多覆盖不到的地方,比如厨房。并且更影响体验的是楼上楼下的 WIFI 使用不同的 SSID,手机无法很好地自动切换。经常是楼上连接到楼下的网络导致信号很差。因此决定对家里的网络改造一番。
以前听过 mesh 这个技术,可以将很多台路由器通过无线连接起来,共同提供一个网络。于是去搜索了 openwrt 是否支持 mesh,发现是可以的。并且经过进一步的了解,纠正了自己之前对无线网络的一些错误认知。
- 首先,mesh 解决的并不是如何让设备自动切换网络,而是如何进行无线组网,可以避免布线的困难。mesh 节点通过同一个信道的的无线相互连接,而通过另一个无线提供 WIFI。
- 快速漫游(fast roaming) 协议,准确来说叫做 802.11r 协议,可以减少设备切换无线网络的耗时。
硬件设备上,我选择使用小米路由 3G 来搭建,主要是因为硬件配置上在 wifi5 的路由器中算是很不错的了,且某鱼上一个只需要 50 元。于是又买了两个,加上原本的,现在有 4 台 openwrt 路由器,一个红米 AC2100 作为主路由,3 个 R3G 作为 AP 节点。
为了方便配置还实现了一个自动配置脚本放在 github:TheRainstorm/my-openwrt-config (github.com)
使用 openwrt 路由器和 usb 摄像头进行延时摄影
作用
放在楼顶,拍摄一天 24h 的户外录像、延时摄影。像超级小桀每天的直播录屏 p1 那样。
- 可以远程通过网页实时查看摄像头直播画面
openwrt DNS 详解
openwrt DNS 说明
参考:
- openwrt DNS 和 DHCP 配置均位于/etc/config/dhcp
-
openwrt 使用 dnsmasq 和 odhcpd。它们功能如下:
- 总结来说:
- dnsmasq 将自己设置为 DHCP 客户端的 DNS
- dnsmasq 使用缓存来提升性能。到达的 dns 请求如果没有命中则转发给上游 DNS
Dnsmasq serves as a downstream caching DNS server advertising itself to DHCP clients. This allows better performance and management of DNS functionality on your local network. Every received DNS query not currently in cache is forwarded to the upstream DNS servers.