1Ckpwee

1Ckpwee

Swim in the edge of the map

20 Jul 2022

家庭网络改造小记

首先这篇文章不会专注于将安装过程,更多的可能是分享一些配置作为学习

硬件配置:

  • 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:

  1. 在光猫机身背面可以看到有 SN 码,记下来
  2. 插入网线在光猫 LAN 口,通过电脑登录光猫管理后台(一般是 192.168.1.1)然后在网络设置里面取 LOID,记下来
  3. 将猫棒插入光纤收发器中,将网线插入收发器中的电口,登录 Ponstick 的后台管理地址(我这里为 192.168.1.10, 不同的产品应该会不一样,这个可以找卖家确定),打开菜单 GPON–> 互操作兼容配置
  4. 填写以下信息即可
    1. GPON SN(这里为光猫的 SN 码)
    2. LOID
    3. VLAN ID(一般为41)
  5. 应用&保存之后重启 Ponstick,查看注册状态:为5的话即可(我这里有遇到一个坑:如果在修改配置信息,保证信息无误的情况下注册状态还是不为5,可以尝试插拔 Ponstick 再重新认证一下即可

届时,替换光猫的任务就完成了。

(PS:这里基本上去闲鱼,淘宝上买 Ponstick,卖家都会给你发送教程,按照教程一步一步来即可,只不过有些坑是我在教程里面没有看到的,作为前车之鉴)

软路由

  • CPU 这里选择 J4125,目的是做虚拟化装 EXSI,可以装双路由;(IKuai & Openwrt)IKuai 做主路由拨号、顺便为 NAS 实现流量控制,Openwrt 做旁路由完成「出国」查资料需求;之前打算做 All In BOOM One,还是网友们劝退了我,准备之后单独组装一台 NAS
  • 内存直接取大学时期笔记本里的 8g内存条(2666MHz)
  • 网卡是一个 I225 4口2.5G,选择2.5G的原因是不允许网速有「木桶效应」
  • 硬盘:三星 mSATA SSD 256g

此处省略一万字,安装 EXSI、IKuai 以及 Openwrt 的过程… 建议 Google 一下有很多可行的教程

重点讲一些双路由的配置以及「出国」配置

首先得明确为什么需要双路由:

  1. IKuai 作为商用产品很稳定,主要功能包含但不限于流控、多播等等,但也恰恰因为是商用,所以不会提供科学上网功能
  2. Openwrt 作为旁路由,由于其插件丰富所以可以用于各种需求,例如「出国」查资料,去广告等等

主路由设置(IKuai)

主路由主要功能负责宽带拨号以及 DHCP

关于 DHCP wikepedia

动态主机设置协议(英语:Dynamic Host Configuration Protocol,缩写:DHCP),又称动态主机组态协定,是一个用于IP网络的网络协议,位于OSI模型的应用层,使用UDP协议工作。其主要作用:用于内部网或网络服务供应商自动分配IP地址给用户

Steps:

  1. 在 IKuai 命令行界面,我在4个网口中(ETH3 设置为 WAN 口)其余为 LAN 口 IKuai-设置-WAN-口
  2. 在 WEB 控制台,设置 ETH0-2 为 LAN 口,并且设置账号密码拨号
  3. 设置 DHCP,DHCP 的功能是为内网设备分配 IP 地址,这里我将 192.168.1.1-192.168.1.10 的 IP 地址保留,将10以后的 IP 地址用于分发(这里需要在 DHCP 中设置网关为旁路由 IP 地址)

DHCP-设置

  1. 完成拨号和 DHCP 设置后,届时可以用一端连上电脑的网线插入任意 LAN0-3口(ETH0-3)即可完成上网

旁路由设置(Openwrt)

旁路由,目前我仅用上的功能是透明代理,但有很多支持的插件可以玩(待测)

  1. 在 Openwrt 命令行控制台里设置 IP,通过 vim /etc/config/network 进入 Vim 编辑,然后按 i 进入输入模式进行修改 IP,修改完成后按 esc 进入命令模式,随即输入 :wq 回车保存退出,然后 reboot 重启即可
  2. IP 设置成功后将上面提到的主路由 DHCP 网关 IP 设置为该地址

Openwrt-IP-设置

(原理: 通过主路由 DHCP 分配内网 IP 和网关地址的设备,都会先将流量路由到分配的网关,也就是旁路由先进行处理,再流向主路由)

透明代理(OpenClash)

现在国内的网络自由受到了限制,很多人都会去科学上网,但我观察后发现这批人中有一部分是有反gong心理的,出去后就一直诋毁、散播谣言之类的。虽然我对网络限制很厌恶,但是这不代表我的政治立场。

本插件是一个可运行在 OpenWrt 上的 Clash 客户端,兼容 Shadowsocks、ShadowsocksR、Vmess、Trojan、Snell 等协议,根据灵活的规则配置实现策略代理

OpenClash-配置文件 这里 OpenClash 的功能主要有两点

  • DNS Server
  • 旁网关透明代理
  1. 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
      

    解释配置:

    1. 当访问一个域名时,会同时对 nameserver 和 fallback 中的服务器并发请求,得到 IP 地址。然后会优先选择 nameserver 列表中解析最快的结果。如果 IP 属于国外会选择 fallback 列表中解析最快的结果。
    2. DoH: 以 https:// 开头的 DNS 服务器。拥有更好的伪装性,且几乎不可能被运营商或网络管理封锁,但查询效率和安全性可能略低。DoT: 以 tls:// 开头的 DNS 服务器。拥有更高的安全性和查询效率,但端口有可能被管制或封锁。
  2. 运行模式:

    正如上面提到,我这里选择的是兼容模式(Redir-Host),没有选择官方文档推荐的 Fake-IP 是因为在实际使用中,在某些情况有问题(梦幻西游连接失败、LOL 不能进入小队语音),网上搜索解决办法:抓包将涉及到的域名加入规则 Direct(但是我图麻烦就没有用) 这里可以看一下官方文档对于这两个模式的「通俗解释」

  3. 策略配置

    为了不让这篇文章成为教学,我只是分享我自己的配置以及原因

    • proxies: 这里定义订阅节点,我在这里单独设置的是我用 VPS 搭建的节点
    • proxy-providers: 这里因为我有多个不同订阅源,预期应用到不用使用场景(日常 Google、Github 加速,还有流媒体解锁),目的是动态加载不同源的配置到本地,然后在 proxy-groups 中引用
    • proxy-groups: 这里是订阅策略组,为后面不同规则配置不同的分流策略,正如前面提到我自己使用会有日常、流媒体等等策略,其次我还加入了主备防止某一个订阅源全部挂掉的情况
  4. 规则配置

    配置规则标识着什么站点(什么 IP)的流量应该走什么策略 例如:

    • DOMAIN,google.com,proxy 等域名直接走 proxy
    • DOMAIN-SUFFIX,netflix.com,streamingMedia 等域名通过后缀匹配 netflix 域名走 streamingMedia

    这里的 proxy、 streamingMedia 都是我们在上面策略配置中配置项。

    下面是我自己根据文档总结的一份 example config,可以进行参考。

路由器

这一部分不需要过多阐述,由于我们在软路由已经拨号+ DHCP,所以路由器的功能只需要做无线 AP,在小米 AX6000 控制台更改工作模式手动设置为有线中继模式即可。

届时网络改造完毕,通过 SpeedTest 测速外网,以及通过 Iperf3 测速内网

  1. SpeedTest 看到速度只能说有点尴尬,因为我替代光猫前是可以跑到930(虽然很少)但是替换光猫后还花了一笔钱购置 2.5G 光电转发器才提升这么一点感觉很亏~

  2. Iperf3 这里之前由于没有更新 PC 网卡驱动,导致出口速率永远限制在 1.03 Gbyte/s 后面查找资料找到解决办法更新驱动后速度正常(不然的话这个 2.5G 交换机和 4口2.5G网卡就白花了 哈哈哈哈)

    更新前:

    更新后:

Reference:

  1. https://sspai.com/post/66801
  2. https://post.smzdm.com/p/ammkrwod/
  3. *https://juejin.cn/post/7040812959425101855
  4. https://zhuanlan.zhihu.com/p/463834497
  5. https://github.com/aimuch/iAI/blob/main/src/softRoute/softroute.md
  6. http://lofter.me/2021/12/02/家庭网络改造计划:二、OpenWrt-OpenClash、AdGuard-Home、SmartDNS/
  7. https://blog.lv5.moe/p/use-dns-to-create-split-routing-for-different-domain-or-ip-ranges