docs(dns): correct gfw/.1 facts (W1N-56)
- hosts/gfw.windy.lan.md: 3 NICs (eth2/VLAN10 ubunt_upg live), mosdns is now OpenClash's nameserver (not idle), rewrite VLAN10 Wi-Fi section to live-verified state - docs/lan-dns-architecture.md: mosdns on gfw no longer 闲置; note the recommended AGH+.36 companion architecture is still pending review
This commit is contained in:
@@ -1,6 +1,9 @@
|
|||||||
# 内网 DNS 架构调研与优化建议
|
# 内网 DNS 架构调研与优化建议
|
||||||
|
|
||||||
> 状态:2026-08-12 调研,Linear **W1N-56**。基于网络工程师视角,方案待实施评审。
|
> 状态:2026-08-12 调研,Linear **W1N-56**。基于网络工程师视角,方案待实施评审。
|
||||||
|
> 2026-08-12 现场核查修正:gfw 上 mosdns 已并入 OpenClash DNS 链(作为 clash 的
|
||||||
|
> `nameserver`,DIRECT 规则真实 IP 解析用),**不再闲置**;推荐方案(AGH 前端 +
|
||||||
|
> `.36` 伴生 mosdns 后端)仍待评审落地。
|
||||||
> 相关:`docs/lan-overview.md`、`hosts/dns.windy.lan.md`、`hosts/gfw.windy.lan.md`。
|
> 相关:`docs/lan-overview.md`、`hosts/dns.windy.lan.md`、`hosts/gfw.windy.lan.md`。
|
||||||
|
|
||||||
## 1. 现状(实测)
|
## 1. 现状(实测)
|
||||||
@@ -8,10 +11,10 @@
|
|||||||
| 角色 | 部署 | 职责 | 是否在活动路径 |
|
| 角色 | 部署 | 职责 | 是否在活动路径 |
|
||||||
|------|------|------|----------------|
|
|------|------|------|----------------|
|
||||||
| **AdGuard Home** | `192.168.66.36`(PVE VM 120,Docker host 网络) | EdgeRouter DHCP 通告给 LAN55/66 客户端的 DNS;广告/过滤、查询统计、Web 面板 | ✅ **是** |
|
| **AdGuard Home** | `192.168.66.36`(PVE VM 120,Docker host 网络) | EdgeRouter DHCP 通告给 LAN55/66 客户端的 DNS;广告/过滤、查询统计、Web 面板 | ✅ **是** |
|
||||||
| **mosdns** | `192.168.66.1`(gfw OpenWrt)监听 `127.0.0.1:6052` | 无(DNS 分流器) | ❌ 闲置 |
|
| **mosdns** | `192.168.66.1`(gfw OpenWrt)监听 `127.0.0.1:6052` | OpenClash custom DNS 的 `nameserver`(DIRECT 规则真实 IP 分流:国内→AGH `.36`,国外→国内公网 DNS `223.5.5.5`/`119.29.29.29`) | ✅ 网关侧(clash 消费,不面向客户端) |
|
||||||
| **OpenClash / clash(meta)** | `192.168.66.1`(gfw) | gateway 自身/被劫持流量的 fake-ip + 代理,DNS 走 dnsmasq→clash `#7874` | 仅网关侧 |
|
| **OpenClash / clash(meta)** | `192.168.66.1`(gfw) | gateway 自身/被劫持流量的 fake-ip + 代理,DNS 走 dnsmasq→clash `#7874` | 仅网关侧 |
|
||||||
|
|
||||||
**关键事实:** LAN 客户端 DNS 直连 `66.36`,**不经过** gfw(EdgeRouter `service dns forwarding` cache 512,通告 `.36`)。所以 gfw/clash 的 fake-ip 分流对"直连 AGH 的客户端"不起作用;mosdns 目前完全闲置。
|
**关键事实:** LAN 客户端 DNS 直连 `66.36`,**不经过** gfw(EdgeRouter `service dns forwarding` cache 512,通告 `.36`)。所以 gfw/clash 的 fake-ip 分流对"直连 AGH 的客户端"不起作用;gfw 上 mosdns 作为 clash 的 `nameserver` 供 DIRECT 规则连接的真实 IP 解析用(国内→AGH,国外→国内公网 DNS),不面向 LAN 客户端。
|
||||||
|
|
||||||
**现状缺口:**
|
**现状缺口:**
|
||||||
1. AGH 上游是**固定 DoH**(alidns/doh.pub,兜底 adg.chans.xyz),**没有"国内/国外分流"能力** → 国外域名解析易受 DNS 污染/时延差,也无法为不同 region 选最优上游。
|
1. AGH 上游是**固定 DoH**(alidns/doh.pub,兜底 adg.chans.xyz),**没有"国内/国外分流"能力** → 国外域名解析易受 DNS 污染/时延差,也无法为不同 region 选最优上游。
|
||||||
|
|||||||
+20
-15
@@ -8,7 +8,7 @@
|
|||||||
| IPv4 | `192.168.66.1` |
|
| IPv4 | `192.168.66.1` |
|
||||||
| SSH | `ssh -4 root@192.168.66.1` (key-only, verified 2026-08-06) |
|
| SSH | `ssh -4 root@192.168.66.1` (key-only, verified 2026-08-06) |
|
||||||
| OS | ImmortalWrt 25.12.0 (r37854), Linux `6.12.87`, x86/64 |
|
| OS | ImmortalWrt 25.12.0 (r37854), Linux `6.12.87`, x86/64 |
|
||||||
| **Host** | **PVE VM 140 (`gfw`)** — dual NIC: `net0`→vmbr0(LAN66), `net1`→vmbr1(LAN55) (verified 2026-08-09) |
|
| **Host** | **PVE VM 140 (`gfw`)** — 3 NICs: `net0`→vmbr0(LAN66/eth0), `net1`→vmbr1(LAN55/eth1, up but unaddressed), `net2`→VLAN10/`ubunt_upg`(eth2, `192.168.10.1/24`) (topology 2026-08-09; eth2/VLAN10 live verified 2026-08-11) |
|
||||||
|
|
||||||
Do not store the root password in this repository.
|
Do not store the root password in this repository.
|
||||||
|
|
||||||
@@ -25,8 +25,11 @@ OpenClash runs `/etc/openclash/clash` (clash_meta core) with configuration
|
|||||||
- Mode: **fake-ip + TPROXY transparent proxy** (`operation_mode=fake-ip`,
|
- Mode: **fake-ip + TPROXY transparent proxy** (`operation_mode=fake-ip`,
|
||||||
`en_mode=fake-ip`, `proxy_mode=rule`); fake-ip network `198.18.0.0/16`
|
`en_mode=fake-ip`, `proxy_mode=rule`); fake-ip network `198.18.0.0/16`
|
||||||
- DNS path: dnsmasq → clash DNS `127.0.0.1#7874` (`server=127.0.0.1#7874` in
|
- DNS path: dnsmasq → clash DNS `127.0.0.1#7874` (`server=127.0.0.1#7874` in
|
||||||
dnsmasq config); `mosdns` also listens on `127.0.0.1:6052` but is not the
|
dnsmasq config); OpenClash custom DNS uses `mosdns` on `127.0.0.1:6052` as its
|
||||||
active resolver path
|
`nameserver`/`default-nameserver` for DIRECT-rule real-IP resolution
|
||||||
|
(`/etc/mosdns/config.yaml`): domestic domains → AGH `.36:53`, foreign →
|
||||||
|
`223.5.5.5`/`119.29.29.29` (Chinese public DNS). mosdns is **not** in the
|
||||||
|
client query path — LAN/VLAN10 clients receive fake-ip from clash :7874.
|
||||||
- nft: OpenClash injects TPROXY/redirect + DNS-hijack rules into
|
- nft: OpenClash injects TPROXY/redirect + DNS-hijack rules into
|
||||||
`table inet fw4`; a residual `table inet passwall` exists with 0 packets (unused)
|
`table inet fw4`; a residual `table inet passwall` exists with 0 packets (unused)
|
||||||
|
|
||||||
@@ -43,20 +46,22 @@ OpenClash runs `/etc/openclash/clash` (clash_meta core) with configuration
|
|||||||
`8443` is not an OpenClash listener and has no runtime nftables forwarding rule.
|
`8443` is not an OpenClash listener and has no runtime nftables forwarding rule.
|
||||||
It is included only in OpenClash's common TLS-sniffing port list.
|
It is included only in OpenClash's common TLS-sniffing port list.
|
||||||
|
|
||||||
## VLAN 10 Wi-Fi feasibility
|
## VLAN 10 Wi-Fi
|
||||||
|
|
||||||
`gfw` is a VM attached to untagged LAN 66, rather than a physical VLAN-trunk
|
`gfw`'s third NIC `eth2` hosts the `ubunt_upg` interface at `192.168.10.1/24`,
|
||||||
endpoint. The U6 Lite likewise reaches the ER-X over LAN 66, whose DHCP
|
serving the dedicated `ubnt-upg` SSID VLAN 10 (untagged access path from a
|
||||||
service supplies client addresses. Therefore `gfw` cannot currently receive an
|
VLAN-capable switch/trunk; AP management stays untagged on LAN66). The
|
||||||
SSID's VLAN 10 traffic merely by creating an `eth0.10` interface inside the VM.
|
`ubunt_upg` zone runs the **only** DHCP server for `192.168.10.0/24` (UDP/67),
|
||||||
|
allows DNS (53), and applies `192.168.10.0/24 → eth0 masquerade` (NAT) for
|
||||||
|
Internet egress. `forward_ubunt_upg` isolates VLAN10 from LAN66/55 and RFC1918
|
||||||
|
(deny counters 0, `accept_to_lan` passes).
|
||||||
|
|
||||||
Do not treat a local `eth0.10`/`192.168.10.1` configuration as a deployable
|
Live-verified 2026-08-11: an `ubnt-upg` client received `192.168.10.168` (lease
|
||||||
Wi-Fi gateway unless the hypervisor/vSwitch and the complete physical path to
|
in `/tmp/dhcp.leases`), the `192.168.10.0/24 masquerade` counter climbed
|
||||||
the AP have first been configured and verified to carry tagged VLAN 10. The
|
(215 pkts/42KB), and the LAN55/LAN66 deny counters stayed 0 → VLAN10→LAN
|
||||||
`ubnt-upg` test receiving a `192.168.66.x` lease was the expected consequence
|
isolation holds. See
|
||||||
of the available untagged path, not evidence that this host should compete
|
[docs/lan-se5420-deployment-guide.md](../docs/lan-se5420-deployment-guide.md),
|
||||||
with ER-X DHCP. See
|
[docs/unifi-openwrt-vlan10-implementation-examples.md](../docs/unifi-openwrt-vlan10-implementation-examples.md)
|
||||||
[UniFi Network: Dedicated Wi-Fi through a third-party gateway](../docs/unifi-network.md#dedicated-wi-fi-through-a-third-party-gateway).
|
|
||||||
|
|
||||||
## Operational note
|
## Operational note
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user