家庭网络改造小记
首先这篇文章不会专注于将安装过程,更多的可能是分享一些配置作为学习
硬件配置:
- Ponstick: HUAWEI ma5671a
- 光纤收发器 2.5G电口
- CPU: Intel J4125
- 内存: 记忆科技 DDR4 2666 8G
- 网卡: i225 4口 2.5g
- 硬盘:三星 mSATA SSD 256g
- 2.5G 5口傻瓜交换机
- 小米 AX6000
网络拓扑图
替换光猫
为什么使用 Ponstick:安装宽带提供的是千兆光猫,性能有损失,「按常理来说」无法跑满约定的 1000M,「期望」用这个跑满千兆带宽。
坑: 因为在挑选软路由网卡的时候,没有光口,导致我如果要使用 ponstick 就需要额外买一个光电转换器(或者带光口的交换机)
这里使用 Ponstick 的话就需要刷上光猫的 LOID、用于上网的 VLAN ID 以及光猫 SN 码
以我使用的 ma5671a 为例,这里卖家已经刷好系统了,只需要刷上数据即可。
Steps:
- 在光猫机身背面可以看到有 SN 码,记下来
- 插入网线在光猫 LAN 口,通过电脑登录光猫管理后台(一般是 192.168.1.1)然后在网络设置里面取 LOID,记下来
- 将猫棒插入光纤收发器中,将网线插入收发器中的电口,登录 Ponstick 的后台管理地址(我这里为 192.168.1.10, 不同的产品应该会不一样,这个可以找卖家确定),打开菜单 GPON–> 互操作兼容配置
- 填写以下信息即可
- GPON SN(这里为光猫的 SN 码)
- LOID
- VLAN ID(一般为41)
- 应用&保存之后重启 Ponstick,查看注册状态:为5的话即可(我这里有遇到一个坑:如果在修改配置信息,保证信息无误的情况下注册状态还是不为5,可以尝试插拔 Ponstick 再重新认证一下即可)
届时,替换光猫的任务就完成了。
(PS:这里基本上去闲鱼,淘宝上买 Ponstick,卖家都会给你发送教程,按照教程一步一步来即可,只不过有些坑是我在教程里面没有看到的,作为前车之鉴)
软路由
- CPU 这里选择 J4125,目的是做虚拟化装 EXSI,可以装双路由;(IKuai & Openwrt)IKuai 做主路由拨号、顺便为 NAS 实现流量控制,Openwrt 做旁路由完成「出国」查资料需求;之前打算做 All In
BOOMOne,还是网友们劝退了我,准备之后单独组装一台 NAS - 内存直接取大学时期笔记本里的 8g内存条(2666MHz)
- 网卡是一个 I225 4口2.5G,选择2.5G的原因是不允许网速有「木桶效应」
- 硬盘:三星 mSATA SSD 256g
此处省略一万字,安装 EXSI、IKuai 以及 Openwrt 的过程… 建议 Google 一下有很多可行的教程
重点讲一些双路由的配置以及「出国」配置
首先得明确为什么需要双路由:
- IKuai 作为商用产品很稳定,主要功能包含但不限于流控、多播等等,但也恰恰因为是商用,所以不会提供科学上网功能
- Openwrt 作为旁路由,由于其插件丰富所以可以用于各种需求,例如「出国」查资料,去广告等等
主路由设置(IKuai)
主路由主要功能负责宽带拨号以及 DHCP
关于 DHCP wikepedia
动态主机设置协议(英语:Dynamic Host Configuration Protocol,缩写:DHCP),又称动态主机组态协定,是一个用于IP网络的网络协议,位于OSI模型的应用层,使用UDP协议工作。其主要作用:用于内部网或网络服务供应商自动分配IP地址给用户
Steps:
- 在 IKuai 命令行界面,我在4个网口中(ETH3 设置为 WAN 口)其余为 LAN 口
- 在 WEB 控制台,设置 ETH0-2 为 LAN 口,并且设置账号密码拨号
- 设置 DHCP,DHCP 的功能是为内网设备分配 IP 地址,这里我将 192.168.1.1-192.168.1.10 的 IP 地址保留,将10以后的 IP 地址用于分发(这里需要在 DHCP 中设置网关为旁路由 IP 地址)
- 完成拨号和 DHCP 设置后,届时可以用一端连上电脑的网线插入任意 LAN0-3口(ETH0-3)即可完成上网
旁路由设置(Openwrt)
旁路由,目前我仅用上的功能是透明代理,但有很多支持的插件可以玩(待测)
- 在 Openwrt 命令行控制台里设置 IP,通过
vim /etc/config/network
进入 Vim 编辑,然后按i
进入输入模式进行修改 IP,修改完成后按esc
进入命令模式,随即输入:wq
回车保存退出,然后 reboot 重启即可 - IP 设置成功后将上面提到的主路由 DHCP 网关 IP 设置为该地址
(原理: 通过主路由 DHCP 分配内网 IP 和网关地址的设备,都会先将流量路由到分配的网关,也就是旁路由先进行处理,再流向主路由)
透明代理(OpenClash)
现在国内的网络自由受到了限制,很多人都会去科学上网,但我观察后发现这批人中有一部分是有反gong心理的,出去后就一直诋毁、散播谣言之类的。虽然我对网络限制很厌恶,但是这不代表我的政治立场。
本插件是一个可运行在 OpenWrt 上的 Clash 客户端,兼容 Shadowsocks、ShadowsocksR、Vmess、Trojan、Snell 等协议,根据灵活的规则配置实现策略代理
这里 OpenClash 的功能主要有两点
- DNS Server
- 旁网关透明代理
DNS:
- 本地 DNS 劫持:需要使用到 Clash 内核自带的 DNS Server,所以需要将 Clash 作为 Dnsmasq 的唯一上游 DNS server (这里想用其他插件,例如:SmartDNS、MosDNS 等作为 ClashDNS 的下游做一个 DNS 分流,但是后来想了一想提升性不会很大毕竟 Clash 也有不错的 DNS 分流策略)
- 自定义上游 DNS 服务器:因为目前使用的 Redir-Host 模式,设置了两个 DNS Server 以及4个 fallback DNS Server
nameserver: - 114.114.114.114 - 119.29.29.29 fallback: - tls://1.1.1.1:853 - tcp://1.1.1.1:53 - tcp://208.67.222.222:443 - tls://dns.google
解释配置:
- 当访问一个域名时,会同时对 nameserver 和 fallback 中的服务器并发请求,得到 IP 地址。然后会优先选择 nameserver 列表中解析最快的结果。如果 IP 属于国外会选择 fallback 列表中解析最快的结果。
- DoH: 以 https:// 开头的 DNS 服务器。拥有更好的伪装性,且几乎不可能被运营商或网络管理封锁,但查询效率和安全性可能略低。DoT: 以 tls:// 开头的 DNS 服务器。拥有更高的安全性和查询效率,但端口有可能被管制或封锁。
运行模式:
正如上面提到,我这里选择的是兼容模式(Redir-Host),没有选择官方文档推荐的 Fake-IP 是因为在实际使用中,在某些情况有问题(梦幻西游连接失败、LOL 不能进入小队语音),网上搜索解决办法:抓包将涉及到的域名加入规则 Direct(但是我图麻烦就没有用) 这里可以看一下官方文档对于这两个模式的「通俗解释」
策略配置
为了不让这篇文章成为教学,我只是分享我自己的配置以及原因
- proxies: 这里定义订阅节点,我在这里单独设置的是我用 VPS 搭建的节点
- proxy-providers: 这里因为我有多个不同订阅源,预期应用到不用使用场景(日常 Google、Github 加速,还有流媒体解锁),目的是动态加载不同源的配置到本地,然后在 proxy-groups 中引用
- proxy-groups: 这里是订阅策略组,为后面不同规则配置不同的分流策略,正如前面提到我自己使用会有日常、流媒体等等策略,其次我还加入了主备防止某一个订阅源全部挂掉的情况
规则配置
配置规则标识着什么站点(什么 IP)的流量应该走什么策略 例如:
DOMAIN,google.com,proxy
等域名直接走 proxyDOMAIN-SUFFIX,netflix.com,streamingMedia
等域名通过后缀匹配 netflix 域名走 streamingMedia
这里的 proxy、 streamingMedia 都是我们在上面策略配置中配置项。
下面是我自己根据文档总结的一份 example config,可以进行参考。
路由器
这一部分不需要过多阐述,由于我们在软路由已经拨号+ DHCP,所以路由器的功能只需要做无线 AP,在小米 AX6000 控制台更改工作模式手动设置为有线中继模式即可。
届时网络改造完毕,通过 SpeedTest 测速外网,以及通过 Iperf3 测速内网
SpeedTest 看到速度只能说有点尴尬,因为我替代光猫前是可以跑到930(虽然很少)但是替换光猫后还花了一笔钱购置 2.5G 光电转发器才提升这么一点感觉很亏~
Iperf3 这里之前由于没有更新 PC 网卡驱动,导致出口速率永远限制在 1.03 Gbyte/s 后面查找资料找到解决办法更新驱动后速度正常(不然的话这个 2.5G 交换机和 4口2.5G网卡就白花了 哈哈哈哈)
更新前:
更新后:
Reference:
- https://sspai.com/post/66801
- https://post.smzdm.com/p/ammkrwod/
- *https://juejin.cn/post/7040812959425101855
- https://zhuanlan.zhihu.com/p/463834497
- https://github.com/aimuch/iAI/blob/main/src/softRoute/softroute.md
- http://lofter.me/2021/12/02/家庭网络改造计划:二、OpenWrt-OpenClash、AdGuard-Home、SmartDNS/
- https://blog.lv5.moe/p/use-dns-to-create-split-routing-for-different-domain-or-ip-ranges