1. 首页

杀鸡不用牛刀,家庭网络改造记_路由器

本文首发在文主的个人博客

结合热门的京东云产品,小米AX wifi6系列路由,单独的DNS以及macvlan的部署模式,希望对你有所帮助,如需转载,请注明原文地址,谢谢。

#### 背景:

每年春节是必回家过滴,由于前面装修都是父母+包工头弄的,结果把入户网弄到了鱼缸下面的柜子里,我回去住的次卧又隔了两堵墙,虽然K3的穿墙挺牛P的,但是结果就是次卧的信号很不好,今年回去打算把网络搞搞。另外之前联通小水管去年10月份到期,换了更实惠的移动600M宽带,平时2老就在家看看iptv刷刷小视频的那点操作,完全是闲置资源,于是又有了挖京豆的想法。

#### 目标:

1. 优化网络,AP扩展或者组MESH;

2. 闲置资源利用,部个挖京豆或者甜糖服务上去;

3. 现在并且以后也能的核心需求:科学上网环境;

4. 解决移动外网访问,只要不出大问题,远程异地可以简单管理下设备;

#### 一、计划

看了一些资料后,决定采用mesh方案;

挖京豆当然先考虑京东的亲儿子们,虽然设备还没wifi6,但是平台先搞个wifi6。本来打算买京东云的AX1800的,但是看论坛也问了下客服,包括Q群,功能优先,兼顾造型。要能挖豆,要能组mesh,跟光猫,软路由和在一起好看点,最后选择了小米AX5京东云版。也就是京东和小米一起生的,这种2儿子以后会不会小米和京东都不鸟呢...

另外一台设备买的AX6,近期的性价比产品。原计划是软路由拨号,布虚拟机,AX6做有线AP,AX5放在我的房间做MESH。在JD上采买了后就直接寄到家里了。

#### 二、准备工作

因为疫情,今年早几天回家,才有时间趁早折腾一下,回家前京东下单,正好人到家,东西也到了。

之前是用一台GK55的双网口小主机 + F迅K3做AP。

之前的网络拓扑结构

杀鸡不用牛刀,家庭网络改造记

按我在计划中的想法调试了下,发现情况有变化:

* 1. AX5京东云在MESH下无法挖豆(可能后期开放吧);

* 2. 小米设备在有线中继(也就是AP)模式下无法组MESH。

看了下油管上的视频,有个说小米AP兼容mesh的,发现并不是调整到有线中继模式下的AP。看来方案得调整...

拆改了2次,最后还是用的AX5做主路由,AX6放次卧做mesh,再配合旁路由方式满足我重度科学上网的需求。

另外我发现,GK55这台机器,放在父母这用,配置太奢华了(J4125+8G内存+1T 850EVO msata + 1T 850pro sata ssd),尤其是存储,简直就是豪配,必须优(简)化(配)下,又拿回了当初做单臂路由,后来做机顶盒罢工的N1。

调整后的网络拓扑图

杀鸡不用牛刀,家庭网络改造记

小插曲:其实并不是N1罢工,我回去后发现是电源没插 (没错,就是没插电源,我爸说之前找移动宽带的装维上门看看,也没搞明白,后来连机器都开不了了,我当时还以为N1寿终正寝了呢),我到家才发现是电源没插,插上后发现看电视的软件都需要升级...

我之前也准备了当贝B3pro做年货孝敬爸妈,N1还是退下来顶GK55的岗做旁路由。GK55打算挂小黄鱼,或者装系统拿来看奶(Net)妃(flix)。

#### 三、实施

本文不是教程,所以实施并未说的太细。主要步骤是:

##### * N1安装armbian

##### * armbian的软件配置

##### * 路由设备的配置

##### 3.1.1 N1安装armbian的原因

选择Armbian而不直接在N1上装openwrt的原因。

N1单装个openwrt太浪费,在armbian上装docker版的openwrt,还能布adguard home dns服务器,再布个nginx做外网-内网转发,布个甜糖,有空间的话再布Home Assistant和数据库,最大化的压榨N1 CPU和8G空间。

##### 3.1.2 步骤

去恩山N1版块找个现成的armbian系统,我选了Armbian_20.11_Arm-64_focal_current_5.9.0相对新的版本(家用软件,有新的不用旧的);

先写到U盘上,引导成功后,运行

./install-aml.sh

把系统写到EMMC(N1的内置存储空间)中,当然也可以不写到emmc,个人习惯。

##### 3.2.1 Armbian的软件配置

N1单网口,做旁路由,里面的docker跑各种服务,N1就是宿主机,都需要内置的macvlan和docker建立的macvlan通信,docker里面的服务要访问外网,也要通过端口,所以打开网卡的混杂模式是必须的。

我的方案是用了macvlan和家庭网并在一个网域内,习惯用桥接和docker通信 应该也可以,个人习惯,我个人认为macvlan更清楚些,也少层nat。

调试阶段可以运行

ip link set eth0 promisc on

打开网卡混杂模式,后面都调通了可以按照下面2种方式开机就自动打开混杂模式:

方式1(简单):

运行

nano /etc/rc.local

加入下列代码

ip link set eth0 promisc on

方式2(完善但需要小心操作):

nano /etc/network/interfaces

加入下列代码:

auto eth0

iface eth0 inet manual

up ip link set eth0 promisc on

auto macvlan

iface macvlan inet static

address x.x.x.16 # 修改成你需要的N1盒子宿主机ip

netmask 255.255.255.0

gateway x.x.x.1 # 需改成你的主路由ip或旁路由的ip

dns-nameservers x.x.x.5 # 需改成你的主路由ip或旁路由或ADG DNS服务器或114.114.114.144国内公共dns

pre-up ip link add macvlan link eth0 type macvlan mode bridge

post-down ip link del macvlan link eth0 type macvlan mode bridge

改完后重启网络

systemctl restart networking

或者重启系统查看效果

##### 3.2.1 Docker创建macvlan

docker容器,在macvlan模式下,是访问不到宿主机和外网的,刚才已经把宿主机的macvlan建立了,还需要建立docker的macvlan,让这2个macvlan互通,实现macvlan模式下的docker互联互通,运行

docker network create -d macvlan --subnet=x.x.x.0/24 --gateway=x.x.x.2 -o parent=eth0 macnet

这里x.x.x.2一定是你的主路由地址。

##### 3.2.2 拉取Portainer (非必要)

docker的图形化管理界面,很方便,能省去不少命令操作。

先创建个volume,方便数据持久化

docker volume create portainer_data

运行下面命令部署下去

docker run -d --name=portainer --net=host --restart always -p 9000:9000 -v /var/run/docker.sock:/var/run/docker.sock -v portainer_data:/data portainer/portainer-ce:linux-arm64

创建macvlan:docker network create -d macvlan --subnet=192.168.x.0/24{主路由网域} --gateway={旁路由地址} --opt com.docker.network.driver.mtu=1450 -o parent=eth0 macnet

##### 3.2.3 拉取ADGuard Home (非必要)

AX5的固件好像有bug,开启DHCP,指定默认网关貌似不工作,openwrt的DHCP又很烂,对中文支持极度不友好,所以本地DNS服务器和DHCP的工作都交给ADGuard Home来完成,如果你不需要本地dns,可以不用ADG。

先创建个volume,方便数据持久化

docker volume create adg_data

运行下面命令部署下去

docker run --name adguardhome --restart always --network macnet --ip x.x.x.5 -p 53:53/tcp -p 53:53/udp -p 67:67/udp -p 68:68/tcp -p 68:68/udp -p 80:80/tcp -p 443:443/tcp -p 853:853/tcp -p 3000:3000/tcp -v adg_data:/opt/adguardhome/conf -v adg_data:/opt/adguardhome/work -d adguard/adguardhome:arm64-latest

ip x.x.x.5是ADG的管理地址,我手动指定了,如果不指定,会由docker的macvlan自动分配。

致于DNS的配置,可以看下这篇帖子,把国内和外面的DNS配上去,个人觉得国内配个阿里,国外配个谷歌就够了。

https://sspai.com/post/63088

##### 3.2.4 拉取OpenWrt (必要)

运行下面命令部署下去

docker run --name openwrt --restart always -d --network macnet --ip x.x.x.1 --privileged unifreq/openwrt-aarch64:latest

进到openwrt容器内,运行

vi /etc/config/network

修改OpenWrt的地址。关闭DHCP,并且把DHCP服务和DNS指向.5的ADG服务器

防火墙策略添加:

iptables -t nat -I POSTROUTING -j MASQUERADE

##### 3.2.5 拉取甜糖 (非必要)

先挂个128G的U盘玩玩,如果可以,再换个外接硬盘。依次运行下列命令:

lsblk

mkdir /ttnode01

mount /dev/sda1 /ttnode01

mount -a

加入自启动

nano /etc/rc.local

加入下列代码:

mount /dev/sda1 /mnts

拉取甜糖镜像,运行

docker run -itd

-v /ttnode01:/mnts

--name ttnode01

--hostname ttnode01

--net=macnet

--ip=x.x.x.18

--privileged=true

--restart=always

zhang0510/ttnode-arm64

上面一套下来,软环境基本搞定,硬环境上,提前把AX5(主路由)和AX6(MESH)组 好。然后

光猫改桥接(LAN) <-----> AX5(WAN)

AX5(LAN) <-----> N1(LAN)

AX6和AX5组无线mesh。

AX5只拨号,京东云内置的挖豆不用管,多少随缘,佛系。AX5关闭DHCP。

OPENWRT关闭DHCP,ADG打开DHCP。

#### 四、运行情况的观察和调试

期间也测试了下宽带情况,N1的小身板带移动家宽600M,有损耗,对我来说损耗能接受。毕竟旁路由模式,也是过流量然后各种转抛。

纯用户折腾上,不是各种up主那种方法论实践,以实现我的目的即可:

##### 4.1 单AX5环境下,测速情况

杀鸡不用牛刀,家庭网络改造记

##### 4.2 AX5 + N1旁路由,测速情况

杀鸡不用牛刀,家庭网络改造记

##### 4.3 AX5 + N1旁路由 + AX6 mesh,测速情况

杀鸡不用牛刀,家庭网络改造记

#### 五、总结

* ##### 网络覆盖满意

单挑,K3真的是信号王,K3在我的次卧,手机信号还有1个格-3格,但是单AX5或者单AX6的情况下,手机信号1格甚至频繁断连。组成mesh后,信号都满了。

* ##### N1替代GK55,物尽其能

AX5单跑的情况下,好像比N1旁路由测速数据上快一点点,但是我感觉实际使用没 差别。不知道N1的极限能到多少,测速数据能接受,最后的测速图,猜测应该是京东云和甜糖的服务影响了些上传测试。

* ##### 有了边缘收益

昨晚正式调整好网络结构,也部署一台甜糖docker上去,京东云还是在7天的锁定期,10豆/天,等7天后看看什么状况吧...

甜糖目前也是刚部署下去,目前网络层面是OK的,看下图。

杀鸡不用牛刀,家庭网络改造记

* ##### 颜值都还挺能打

看几个小家伙在一起,还挺搭配

杀鸡不用牛刀,家庭网络改造记

藏在鱼缸下的柜子里,刚运行1天,稳定尚未得知,不过自从上次GK55调整完后 ,3个多月下来非常ok。

#### 六、待补的坑。

##### 5.1 mesh下,科学上网网速稍低

卧室的信号改善了,回屋就是满格,但是科学网速不如在客厅,反应在看4k油管开始需要缓冲下,客厅可以秒开。不知道是不是ax6 mesh为无线mesh模式的原因。

##### 5.2 Nginx或者caddy做反代

接下来如果有时间还可以再调试下,我在北京的家试过ipv6,但是总感觉延迟特厉害,且跟科学插件貌似存在冲突,并且docker版的ADG DHCP竟然没有IPV6?

##### 5.3 Home Assistant部署

目前的磁盘利用率,内置的8g空间应该还可以部署HA和postgress数据库上去,再弄个tower服务做docker的自动更新。

杀鸡不用牛刀,家庭网络改造记

原创文章,作者:夜风博客,如若转载,请注明出处:https://www.homedt.net/37405.html