前言:写于 2018.03,分成三篇blog,介绍为了在家里使用 Google Home Mini 而进行的一系列努力;
本文为第三部分,进阶路由配置,github 官方页面上相应的 iptables 配置已经介绍的很全面了;本文只描述几个特定的坑
第一部分:树莓派做路由器 2018.03 (Part 1) 最基础的Hotspot配置知识
第二部分:树莓派做路由器 2018.03 (Part 2) hostapd 和 RTL8188CUS 网卡,如何在 Raspbian Stretch/Kernel 4.9.x 下工作?
从源码编译 https://github.com/shadowsocks/shadowsocks-libev#linux 和 https://github.com/shadowsocks/simple-obfs 非常简单,毕竟树莓派系统是一个很完整的 Debian Stretch 变种,首先安装依赖的包,然后从源码 clone 下来按说明编译和配置即可
- sudo apt install --no-install-recommends gettext build-essential autoconf libtool libpcre3-dev asciidoc xmlto libev-dev libc-ares-dev automake libmbedtls-dev libsodium-dev
- 。。。略去官网里的 iptables 以及 ss-redir 配置 https://github.com/shadowsocks/shadowsocks-libev#transparent-proxy
因为这个树莓派目的很简单,只是为了服务 Google Home Mini,不需要复杂的国内国际流量区分,所有流量统统全局路由出去;为了避免投毒只是简单的自己搭了一个 DNS 转发
- ss-tunnel -c /etc/shadowsocks-libev/crown2.json -l 5353 -L 8.8.8.8:53 -u -f /var/run/ss-tunnel.pid
- 如果是在 rc.local 里启动 ss-tunnel 可能出现启动不了的情况。参考 https://www.v2ex.com/t/348171 加上 "sleep 15 && " 解决问题
使用 dig www.youtube.com @127.0.0.1 -p 5353 测试一下
最后把 dnsmasq 作为真实 dns server,ss-tunnel 做 upstream,让 dnsmasq 做一层缓存;这样最终 /etc/dnsmasq.conf 配置如下
-
port=53
no-resolv
no-poll
server=127.0.0.1#5353
interface=wlan0
dhcp-range=
dhcp-option=option:router,192.168.x.1
dhcp-option=option:dns-server,192.168.x.1
注意 dnsmasq 启动 DNS Server 之后,resolvconf 会自动将 /etc/resolv.conf 中的 nameserver 更改为 127.0.0.1
现在对于接入的其它设备比如 Amazon Echo dot 已经能成功接收来自 CNN/BBC 的新闻了;但对 Google 家族的硬件还不够。它不理会 DHCP 的 DNS-Server 配置,固执的使用自己的 DNS Server 进行解析
- 参考 https://github.com/qiwihui/hiwifi-ss/issues/106 和 https://gist.github.com/willwhui/28e8896b6e4560f1cf0d32a5acf501f3 搞定
- Google Home Mini 联网之后,我的 LG Watch Style 现在也正常通过该路由器连上 Play 并更新到 8.0 了!!
附录:在解决问题中发现的其它可能有帮助的链接
- https://github.com/shadowsocks/shadowsocks-libev/issues/1252
- http://blog.csdn.net/lvshaorong/article/details/53203674 【推荐】
又附:本系列的后继 关于路由器配置海内外流量分发
评论
在搭 NAS 的时候,usb 口默认带不起来移动硬盘
在搭 NAS 的时候,usb 口默认带不起来移动硬盘,http://tassedecafe.org/how-to-power-an-external-hard-drive-with-a-raspbe... 这里有解决方案