上周从ビックカメラ带回来一台 Google Home Mini,在中国正常使用还需要额外的设置,在此记录之。
先介绍当前网络环境,所有系统均为虚拟机运行在一台物理机上:
- 路由器系统为 OpenWrt(1C128M),使用 Dnsmasq 负责 DHCP
- 旁路由系统为 Ubuntu(2C4G),运行 clash,使用 enhanced mode 作为代理。
需要代理的设备可以通过 DHCP 指定 Ubuntu 作为网关。
clash 部分配置如下:
redir-port: 7892
allow-lan: true
dns:
enable: true
enhanced-mode: fake-ip
ipv6: false
listen: 0.0.0.0:53
nameserver:
- 114.114.115.115
- 119.28.28.28
- 223.6.6.6
由于 Google Home Mini 系统 hard code 了 Google DNS 作为 DNS server,这里需要把 Google DNS 路由黑洞,Google Home Mini 会回落到 DHCP 分配的 DNS server。
iptables-save
的输出如下:
# Generated by iptables-save v1.8.4 on Sat May 23 08:41:28 2020
*filter
:INPUT ACCEPT [47793:31331168]
:FORWARD ACCEPT [9:648]
:OUTPUT ACCEPT [44805:33229205]
COMMIT
# Completed on Sat May 23 08:41:28 2020
# Generated by iptables-save v1.8.4 on Sat May 23 08:41:28 2020
*nat
:PREROUTING ACCEPT [1090:214165]
:INPUT ACCEPT [1266:80006]
:OUTPUT ACCEPT [1985:120818]
:POSTROUTING ACCEPT [1993:121426]
:clash - [0:0]
-A PREROUTING -d 8.8.8.8/32 -j DNAT --to-destination 10.0.0.100
-A PREROUTING -d 8.8.4.4/32 -j DNAT --to-destination 10.0.0.100
-A PREROUTING -p tcp -j clash
-A clash -d 10.0.0.0/16 -j RETURN
-A clash -p tcp -j REDIRECT --to-ports 7892
COMMIT
# Completed on Sat May 23 08:41:28 2020
8.8.8.8
为 Google DNS 地址10.0.0.100:7892
为 clash 监听地址10.0.0.0/16
为内网地址