| 2026-07-14 |

xlab-gw: punch v6 CERNET holes in the WireGuard table (fix AAAA-preferred CERNET sites)
...
The freedom-wgnet policy table (1002) had IPv4 throw routes for the Tsinghua/
CERNET ranges (101.6/16, 166.111/16, ...) so LAN clients reach them direct via
the campus uplink (wan99.0), but had NO IPv6 equivalent -> every v6 destination,
including CERNET, was default-routed through the wg tunnel to skyw-gw. Since
mirrors.tuna.tsinghua.edu.cn is AAAA-preferred, LAN clients hit the tunnel path
for v6 and timed out (TCP handshake started, cert/data flight black-holed),
while v4 worked -- looking like a "TLS downgrade" but actually a routing detour.
Add v6 throw routes for the CERNET blocks (2402:f000::/32 Tsinghua/tuna,
2001:da8::/32 CERNET2, 2001:250::/35 CERNET), mirroring the v4 throws and
skyw-gw's cn_net_v6 direct set. Verified live on xlab-gw: LAN v6 client -> tuna
now egresses wan99.0 direct (http 200), was timeout.
Co-Authored-By: Claude Opus 4.8 <[email protected]>
Dixiao-L
committed
9 days ago
|
| 2026-05-06 |
xlab-gw: fix MSS clamp — match SYN-ACK too, use rt mtu
...
Old rule `tcp flags & (syn|ack) == syn` only matched plain SYN.
SYN-ACK from the server has SYN+ACK both set, so masking with
syn|ack and comparing == syn FAILED for SYN-ACK. Result: server
responses came back unclamped, full-MTU TCP segments overflowed
the WG path's effective MTU (1420 inner), large pages silently
stalled — YouTube didn't load, Microsoft pages partial-loaded,
Google was slow. Browsers retried indefinitely, looked like
"the network is broken" from a user perspective.
Replaced with `& (syn|rst) == syn` which matches both plain SYN
and SYN-ACK (only excludes RST, which carries no data). Combined
with `set rt mtu` instead of the hard 1280 — lets the kernel
pick the right MSS per egress interface (wg-to-wgnet → 1380 v4 /
1360 v6) instead of pessimistically clamping everything.
User's commented-out line had the right idea (rt mtu) but wrong
flag mask; fixed both at once.
ldx
committed
on 6 May
|
xlab-gateway: route DNS via local mosdns at 10.0.0.1
...
Adds services.resolved with primary DNS 10.0.0.1 (network-local mosdns)
and Cloudflare as fallback. Removes the hardcoded DNS=166.111.8.28/29
on the wan99.0 link — those Tsinghua resolvers are subject to GFW
poisoning, and per-link DNS overrode the global resolved policy.
When 10.0.0.1 is reachable, this host inherits CN-aware split routing
and the network analytics-blocking policy. When 10.0.0.1 is down,
resolved transparently falls back to Cloudflare so internet keeps
working; queries return to 10.0.0.1 once it responds again.
ldx
authored
on 6 May
Dixiao-L
committed
on 6 May
|
| 2026-03-25 |
seems only mtu 1280 works for rdp
|
|
|
| 2026-03-24 |
harden and fix: nftables input chain, sudo, agenix, ZFS, NAT priority
...
- Add inet input_filter table to xlab-gateway (policy drop on WAN)
- Restrict NOPASSWD sudo to ldx only; ylw uses password sudo via wheel
- Restructure secrets.nix with admins list, prepare for ylw ed25519 key
- Add ye-lw21 to trusted-users in common.nix
- Remove contradictory relatime=on when atime=off on rpool
- Fix NAT postrouting priority: filter → srcnat
- Remove duplicate nixpkgs.hostPlatform from xlab-gateway hardware-configuration
Co-Authored-By: Claude Opus 4.6 (1M context) <[email protected]>
|
| 2026-03-23 |
|
|
|
|
|
add route from subnet to phicomm mgmt
|
| 2026-03-21 |
|
| 2026-03-09 |
xlab-gateway: add ULA route for internal IPv6 reachability
...
Route fd99:23eb:1682::/48 via wg-to-wgnet in main table so
xlab-gateway and LAN clients can reach 10.0.0.1's IPv6
(fd99:23eb:1682::1). Without this, ULA traffic went through
the WAN default route and got dropped.
Co-Authored-By: Claude Opus 4.6 <[email protected]>
|
refactor xlab-gateway IPv6: /64 SLAAC, scoped policy routing, no NAT66
...
- Change LAN prefix from fd99:23eb:1682:fd:df::/80 to fd99:23eb:1682:1::/64
- Switch from DHCPv6 stateful to SLAAC (AdvAutonomous on, AdvManagedFlag off)
- Add RDNSS in radvd pointing to fd99:23eb:1682::1
- Scope policy routing rules to LAN sources only (fixes gateway IPv6 breakage)
- Remove NAT66 masquerade on wg-to-wgnet (10.0.0.1 routes fd99:23eb:1682:1::/64 natively)
Co-Authored-By: Claude Opus 4.6 <[email protected]>
|
| 2026-03-08 |
fix nftables syntax: use meta nfproto ipv6 in inet table
...
Co-Authored-By: Claude Opus 4.6 <[email protected]>
|
xlab-gateway: route client IPv6 through wg-to-wgnet
...
- Re-add IPv6 default route (::/0) via wg-to-wgnet in table 1002
- Add NAT66 masquerade on wg-to-wgnet for client ULA→tunnel translation
- Campus WAN has no IPv6 transit; wgnet provides it
Co-Authored-By: Claude Opus 4.6 <[email protected]>
|
| 2026-03-07 |
xlab-gateway: fix IPv6 routing, clean up table names
...
- Remove IPv6 default route from freedom table (1002) — wgnet peer
doesn't forward IPv6, causing TLS resets on outbound connections
- Remove Tsinghua IPv6 throw route (unnecessary without IPv6 default)
- IPv6 now uses native WAN path instead of WireGuard tunnel
- Rename table 1002 from typo 'wg-to-skywme' to 'freedom-wgnet'
Co-Authored-By: Claude Opus 4.6 <[email protected]>
|
Initial skyworks infrastructure flake
...
Unified NixOS configuration for skydick (storage server) and
xlab-gateway (lab router). Flat module structure with shared
common/users/ssh modules, agenix secrets, disko, and deploy-rs.
Co-Authored-By: Claude Opus 4.6 <[email protected]>
|