背景
原来家里有一只群晖,20 年 4 月份的时候入了 1618+,本来想当服务器+存储使的。跟联通申请了个公网 IP,就一直这么用着。直到有一天群晖开始发邮件,要实名认证。再然后跑数据,发现群晖的 atom 根本跟不上速度。因此遇到了一些问题:
实现
因此,在 leader 大神的帮助下,我大概规划了自己家里的网络结构图。
硬件部分
其中实线使用网线连接,虚线是无线。 里面有几个比较特殊,就是 PC 和树莓派和群晖,乍一看像一个环形结构,其实是有特殊原因的。先说这种布局的理由:
软件部分
首先,断掉公网(也可以不断),使用树莓派做内网穿透,只穿透下面要作为代理的服务端口。 由于迁移改造工作尚未完成,因此现在用的是群晖作为代理服务。也就是,不暴露公网,只有自己在外可以访问的这个内网的工作,本应由树莓派去做。
具体的配置可以看 [这里](https://github.com/rxrw/bridge) ,其中:
如此,在群晖上起 server :`docker-compose up -d`
在要用的客户端上起 client : `docker-compose up -d`
没有意外的话,现在内网和你所在的外网就是通的了。
主机上肯定是要跑服务的,而我们又不可能每一个服务写一个 host 或者每一个服务开一个端口。因此,群晖和主机上都起了一个 [Traefik](https://traefik.io/) 进行集中反向代理。为了识别方便,群晖叫 `dsm.io` , 主机叫 `opti.io`。具体 traefik 相关的配置不展开。 在一级路由上,由于是 `openwrt` 的环境,因此使用自带的 smartdns 即可,将对应的域名映射到 IP 上去。这里会遇到下一个问题,就是提供 https 服务。 使用 [mkcert](https://github.com/FiloSottile/mkcert) 实现证书自签,将根证书导入到 iCloud 钥匙串,iOS 系统根证书,android 证书,windows 受信任凭据中去。具体用法参见作者文档。这样家里的服务都可以通过 ssl 进行访问了。
不多说,`openwrt` 自带。
最初使用的是 `openwrt`上自带的 `AdGuardHome` 。用了之后发现比较占用运行速度。虽说可以使用它做一些额外的功能,但是路由器的核心还是转发,因此使用树莓派做这个功能。简单说就是将 `smartdns` 的上游 dns 服务器设置为树莓派上 `adguard home` 的 IP 即可。
客户端部分
家中网络基本配置好了。从外网访问,需要将相关的服务启动。此时 `docker` 会起一个 14280 端口的 http 代理(依客户端 `docker-compose.yaml` 的配置)。 Chrome 上推荐 [Proxy SwitchOmega](https://chrome.google.com/webstore/detail/proxy-switchyomega/padekgcemlokbadohgkifijomclgjgif) 插件,可以实现不同域名访问不同代理。使用自动切换模式,将自己的代理配置好。
总结
目前,家中使用 `Emby` + `Infuse Pro` 看电影,通过`媒体中心` + `PT` 进行媒体管理,域名解析到 `dsm.io` 。内网跑一个 `gitlab` 和其他服务。通过外网可以拉代码,部署。一切运行正常
刚才说的比较怪的配置
大部分都解释完了,主要是 PC 为什么会连到光猫呢?打英雄联盟的时候突然发现网络不稳定,以为是 DNS 配置导致的,因此直接连到光猫上了。但是后来发现,似乎不是这么回事儿,貌似是光猫不太稳定。
优化
接下来的优化点: