41 lines
4 KiB
Markdown
41 lines
4 KiB
Markdown
# B12R — Wi-Fi → LTE router inside Alpine (2026-10-04) — **RAM VALIDATED**
|
||
|
||
## Pieces
|
||
- Kernel `7.2.7-aurora-b12` (/home/q/aurora-kbuild/out-b12, Image 1e8837fc): b10b5 production config + NETFILTER/NF_TABLES/NFT_NAT/NFT_MASQ/CONNTRACK/
|
||
NFT_REJECT/NFT_FIB_IPV4/NFT_LOG/LIMIT (+NET_INGRESS/EGRESS/CRC32C pulled in); same tree src-b10b5 (LBC supervisor v4 unchanged). Fragment linux/aurora-b12.config.
|
||
- p27 (Alpine): nftables 1.1.6-r1, dnsmasq 2.92_p2-r0 (+ libnftnl, libmnl, jansson, readline) from a local repo; `/usr/sbin/aurora-router up|down|status`,
|
||
`/etc/aurora/router.conf`, OpenRC `aurora-router` (need aurora-modem aurora-wifi; waits for START OK + AP ENABLED). **Not in any runlevel yet.**
|
||
- RAM image `b12/b12r/out/aurora-b12r.img` 228ebdc3 = kernel b12 + DTB e47762d1 + B9C cmdline + B12Q initramfs.
|
||
|
||
## Design (runtime only, state in /run/aurora-router)
|
||
LAN wlan0 192.168.77.1/24, DHCP .100–.199 1h, dnsmasq bound to wlan0 only (upstream = bearer DNS); default route `dev wwan0` added only if absent and removed on down;
|
||
ip_forward=1; nft table `inet aurora_router`: input — mgmt usb0 + lo accepted, wlan0 only DHCP/DNS/ping to 192.168.77.1 (everything else incl. 172.16.42.1 dropped),
|
||
wwan0 only established/related + ICMP errors; forward policy drop — wlan0→wwan0 accept, wwan0→wlan0 established only, wlan0↔usb0 drop; postrouting masquerade LAN→wwan0.
|
||
|
||
## RAM test normal1 (2026-10-04)
|
||
- Alpine on p27, PID1 Alpine init, kernel 7.2.7-aurora-b12, modem START OK 74.7 s, AP 78 s, `nft list tables` OK.
|
||
- Bug found + fixed: busybox `ip route show default` prints all routes → default route not added; now `ip route | grep ^default`.
|
||
- Board itself: default via wwan0, `nslookup ya.ru 192.168.77.1` OK, **apk update via https://mirror.yandex.ru/mirrors/alpine/v3.24 OK** (28553 pkgs).
|
||
- Operator note: Beeline currently answers foreign hosts with RST (8.8.8.8, dl-cdn/Fastly, neverssl) **with and without** our nft table → operator-side
|
||
whitelisting, not the router. Russian hosts (ya.ru, mirror.yandex.ru) work.
|
||
- Phone client (<MAC>): DHCPACK 192.168.77.199, ya.ru opened; forward LAN→WAN 8941 pkts/4.7 MB, WAN→LAN 14149 pkts/16.2 MB, masquerade 147 flows.
|
||
- Isolation: phone → http://172.16.42.1 → 10 packets dropped by `ip daddr != 192.168.77.1` (lan_in); http://172.16.42.2 never reached the board
|
||
(forward wlan0→usb0 counter 0 — rule present but not exercised by traffic). LTE→LAN default-deny counter 0 (CGNAT; not testable from outside).
|
||
- eMMC writes only p27. RAM used 55 MB.
|
||
|
||
## Persistent candidate (NOT written)
|
||
`b12/b12r/cache/cache-extlinux-b12r.img` **e85d862e** (B12Q recipe, kernel b12, label b12r). Emulator: S14 boots (kernel 1e8837fc 25159688 B, dtb e47762d1,
|
||
ramdisk 9ade7cff), S13 = live B12Q identical, F1/F3 revert. Write `b12/b12r/B12R-write.sh` (expects live B12Q 59272cd3), rollback `b12/b12r/B12R-rollback.sh` → B12Q.
|
||
After the write + first boot: `rc-update add aurora-router default` (p27 only) to make the router start on boot.
|
||
|
||
## Open
|
||
- DONE: apk repositories → mirror.yandex.ru (see end of file).
|
||
- No IPv6 for LAN; no MSS clamp (NFT_RT off; MTU 1500 both sides); dnsmasq runs as root; DNS query logging off.
|
||
|
||
## Persistent (2026-10-04, GO)
|
||
- HW EDL `B12R-write.sh`: **B12R_CACHE_WRITE_VERIFIED** — cache e85d862e (readback match), backup W/pre-cache.bin = B12Q 59272cd3, all other partitions unchanged.
|
||
- cold1 (no RESET): kernel 7.2.7-aurora-b12 #7, stage0 fsck clean + switch_root (1/3), BOOT OK 5.5 s, / = p27, modem START OK 77.0 s, ping 4/4, AP 81.5 s,
|
||
DISPLAY READY, charger CHARGING fault none, RW only disk flag + p27, writes only p27.
|
||
- Then `rc-update add aurora-router default` (p27) + start → ROUTER UP OK, default dev wwan0, table inet aurora_router. Autostart on the next boot not yet observed.
|
||
- (driver cold message still printed the old hash label "B12R 59272cd3" — cosmetic.)
|
||
- 2026-10-04: /etc/apk/repositories on p27 switched to https://mirror.yandex.ru/mirrors/alpine/v3.24/{main,community} (old file kept as /etc/apk/repositories.dl-cdn); apk update OK (28553 pkgs).
|