家庭网络配置
19年的时候搞了块J3455的板子自己拼了个NAS,可能机箱空间太小,硬盘数据线有时接触不佳,老掉盘。搞了2个2T,1个3T的SATA硬盘,当时图便宜都是SMR的盘,硬盘数据老真的是老慢慢,现在准备是用来搞冷备使用了。系统盘当时用的一个Thinkpad T400淘汰下来2.5寸的机械硬盘,老盘时常出问题,一出问题就只能把机箱搬到电视机前(家里没有HDMI显示器),然后再调试。搞过几次吧,很烦,于是搞了个HPE Microserver Gen8,主要是有iLO,解决显示器的问题。然后后面又搞了一些二手的东西,把家里的网络终于搞得可用了。
硬件
GPON: Nokia G-010S-A
,原来用的是运营商光猫桥接,然后有个Buffalo WZR-HP-AG300H
刷了OpenWrt来拨号。后来买了个弱三层的交换机,就全部网络设备动了动。
主路由:EdgeRouter X-SFP
,当时在小黄鱼蹲守的时候,主要看中的是这个和Mirotik hEX S
,两个价格差不多,但前者存储比后者大,所以就入了X-SFP。入手后发现还是X-SFP比较适合我吧,系统基于Debian,配置相对ROS也简单。但确实ROS要配置更丰富一些。
核心交换机:Huarong S5735S-L8T4S-QA2
,当时某项目现场用到了这个型号,PDD入了一个,感觉应该是弱三层里非常非常便宜的了。
接入交换机:Linksys SLM2008
,简单网管交换机,最早为了测试链路聚合,二手入的。
无线AP:Huawei AX6
,刚开始用的是Tenda AC6
。两个都是纯AP模式,后面新买的效果真的是秒杀。
配置
目的
以前用的是OpenWrt通过MAC配合防火墙来实现设备是否可以上网,解决未经许可连接WIFI的人蹭网,主要是常常有人用Android的什么万能钥匙,具体设置。
现在用弱三层交换机当核心,实现DHCP Server,ACL控制,路由器与交换机通过OSPF动态路由,这样交换机及路由器功能分开,坏一个,其他能正常工作。不同网段通过ACL进行限速。
然后用GPON可以省掉光猫。用AX6无线路由器当AP,再配合交换机的MAC-VLAN功能,实现无线设备的网络隔离。
具体现有的大致网络示意图如下。
GPON
最初想直接把GPON插在交换机上使用,发现可以识别,但无法使用,后面才买的X-SFP路由器。但GPON最开始的时候LAN IP是192.168.1.10
,和现有的网络冲突,记得好像是用fwsetenv
的命令改了IP地址,只修改配置文件不行,稍微研究了下,应该是配置文件写到变量里面去了,启动的时候读取mtd分区来设置环境变量,所以单纯修改配置文件无效。
主路由
路由器用的是X-SFP,基本满足了我的需求,但是IPv6这块有点小问题,好像无法用DHCPv6 Server来分配从ISP获得的IPv6 PD进行网络划分,但Mikrotik可以实现。OSPF动态路由,主网10.0.0.0/24(路由器LAN),子网192.168.100.0/24(GPON LAN)。
现在主路由的功能主要是:
- PPPoE拨号
- FRP内网穿透(IPv4 SSH)
- Wireguard,外网可连接路由器
- 脚本实现IPv6 DDNS,DigitalOcean可以通过curl来更新DNS记录,方便用IPv6的时候进行连接SSH控制内网。
- DNS查询转至内网
Pihole
,解决部分流氓软件或广告,以及实现内外网同一域名访问服务。同时运行一个小脚本,当内网Pihole
无法正常提供服务器,放行外网DNS查询。
其他上Github上找了一个自动备份的脚本,原本是可以在commit
的时候自动进行备份,后面发现在频繁,于是改动每天自动备份。
其中各接口用途:
- Eth0: 之前用于接光猫桥接进行PPPoE拨号的,后空着,后续如果ISP禁了GPON的话,可以直接连光猫使用。
- Eth1、Eth2: Switch0(10.0.0.1/24),VIF 1000(IPv6),接内网。
- Eth3: 192.168.200.1,PoE 24v供电给Mikrotik 750Gr3,开启DHCP Server,主要是测试Ros使用,不测试的时候PoE取消。
- Eth4: VIF 8(192.168.8.x),连接交换机管理VLAN,可通过路由器直接管理交换机。
- Eth5: 192.168.100.1,PPPoE拨号。
路由器具体配置,其中部分就是防火墙部分需要开启对应的规则,LOCAL、IN等端口。
路由器IPv6设置
最开始向导设置的时候就启用IPv6,这样系统会自动创建IPv6的防火墙规则,省不少事。IPv6我主要是用来外网直接访问内网服务和SSH,以及PT下载。AKA:之前是可以直接访问443端口的,后来封掉,只改用其他端口了。
1 | firewall { |
核心交换机
当时想搞个三层交换机的原因就是想家里用VLAN进行网络隔离,并对不同网段进行上网限制,但内网访问速度不进行限。最早的时候用X-SFP
当单臂路由进行VLAN隔离的,网间流量需要经过路由器,且路由器firewall规则多了之后会影响速度,最后买了个弱三层交换机。
有线部分的网段划分比较简单,然后AX6不支持WIFI VLAN隔离,最后查文档的时候想到VLAN划分还有MAC划分,然后想着就WIFI过来靠MAC进行VLAN划分。
VLAN划分如下:
- 8: 管理VLAN
- 100: 用于上行链路,连路由器
- 200: 服务器及需要大带宽的设备,不限速,其他网段无法访问此网段,除NAS,Pihole
- 210: 一般设备接入,默认WIFI接入VLAN,下行限100,上行限20
- 220: 用于IoT,摄像头、天猫精灵、火火兔等,下行限10,上行限10
- 230: 用于不让连外网的设备,电视机、无线路由器AX6、空调、天猫精灵(不让小孩听的时候)等
- 1000: 用于IPv6接入
每VLAN配置:
1 | vlan 8 |
各接口设置:
G0/0/2: 上行链接
1
2
3
4
5
6
7
8
9
10interface GigabitEthernet0/0/2
port link-type hybrid
port hybrid pvid vlan 100
undo port hybrid vlan 1
port hybrid tagged vlan 1000
port hybrid untagged vlan 100
loopback-detect enable
traffic-policy tp_dest-vlan210 inbound
traffic-policy tp_source-vlan210 outbound
dhcp snooping enableG0/0/6,G0/0/8: Eth-Trunk,连NAS链路聚合
1
2
3
4
5
6
7
8
9
10
11interface GigabitEthernet0/0/6
eth-trunk 1
interface GigabitEthernet0/0/8
eth-trunk 1
interface Eth-Trunk1
port link-type trunk
undo port trunk allow-pass vlan 1
port trunk allow-pass vlan 8 200 210 220 230 1000
loopback-detect enable
stp edged-port enable
dhcp snooping enableG0/0/1,G0/0/3,G0/0/4,G0/0/5,G0/0/7,G0/0/9-G0/0/12: 下行链接
1
2
3
4
5
6
7
8
9
10
11
12interface G0/0/x
energy-efficient-ethernet enable #SFP无
port-auto-sleep enable #SFP无
port link-type hybrid
port hybrid pvid vlan 210
undo port hybrid vlan 1
port hybrid tagged vlan 8
port hybrid untagged vlan 200 210 220 230
loopback-detect enable
stp edged-port enable
mac-vlan enable
dhcp snooping enable
OSPF及ACL策略:
1 | ospf 1 router-id 10.0.0.2 |
SLM2008
交换机没有华为系的Hybrid接口,把连AP的口和上链口都设成同一个untagged vlan ID,这样可以靠上链交换机的MAC-VLAN功能进行VLAN划分。其他口我也没再划分其他VLAN的想法,都设成同一个untagged,只是上链口还有一个tagged vlan 8,这样可对其进行简单管理。
Gen8
哈,刚买Gen8的时候,少几个螺丝,跟客服沟通,我说买的G8(J8)少几个螺丝,那边哥们狂笑,连忙说Gen8(根8),哈哈哈。
硬件稍微升级了下,CPU/E3-1265L V2,内存/HPE SmartMemory 8Gx2,RAID卡/Smart Array P222 Controller,硬盘/SAS 4Tx4/SSD 512G/SD 8G。P222卡的温度还有点高,买了个4cm风扇,接主板里面的USB供电,从原来的70度降到47度左右,不知道夏天温度会怎样。
Host OS: HPE-ESXi-6.7.0-Update3-19195723-iso-Gen9plus-670.U3.10.9.0.8 (Hewlett Packard Enterprise)
,安装在内置的8G SD卡,为了减少SD卡的写操作,将系统的log日志改写到其他Datasource里。
最开始的时候买了个PCIe转NVMe的卡,然后Datasource就放在这个盘里面。后来看到小黄鱼上面有4个4T的SAS盘,买回来后感觉还是超值的,2021年产,通电时间2年,写入只有30多G。为了这4个盘,所以买了P222卡(改成HBA模式),然后PCIe转NVMe的卡只能下岗。后面把SATA 5位置(ODD)升级为512G的SSD盘了,之前是一个12年买的Intel 40G :(,虽然接口速度只有SATA1,但用来安装Guest OS影响不大。然后Guest OS备份的话,可以直接挂载Guest OS的NFS成Datasource,将备份文件存到NFS里。
Guest OS
- Alpine: Docker Image里经常看到的OS。这里最主要的作用是用来跑Docker aList,用来挂载中国移动的网盘,然后Debian挂载,备份文件存到网盘。最开始的时候是在Debian里面直接容器跑的,但是不能一启动就挂载,所以改到Alpine里面跑,然后把Alpine设置成随Host OS第一个启动,Debian延迟启动,这样就不用去搞脚本在Debian里延迟挂载,总感觉优雅,所以单独用Alpine提供aList网盘服务,Debian启动直接WebDav挂载。
- Debian: 主力NAS系统。直通P222卡,挂载4个SAS盘。三张网卡,分别对应VLAN 200/8/1000,不限速网段/管理网段/IPv6网段。
2.1 提供SMB服务,TV Kodi给小孩看影片,通过Siri可远程开关服务。
2.2 提供NFS服务,TV Kodi给大人看影片,呵呵,Kodi可设置多个profile,这样小孩默认profile默认是用SMB,而切换profile后默认是用NFS。 :)
2.3 Nextcloud容器,方便手机照片备份以及其他一些小资料存储
2.4 Navidrome容器,提供音频服务,硬盘里有一直存放的音乐,可以用手机播放,还能用CarPlay,很不错,解决了车上听歌的问题,不用再烦各种音乐播放软件
2.5 Pihole容器,提供内网DNS服务,解决部分广告及隐私收集问题,还有内网域名解析。
2.6 qBittorrent容器,主要用于PT下载。之前用的Transmission,几个CUI停更后,换成qBittorrent了。
2.7 其他,FRP内网穿透,Netty-Protobuf内网穿透(自己写的),Wireguard内网穿透,CURL脚本更新域名DNS IPv6地址,Nginx反代各二级域名访问内网以上各服务及iLO、ESXi等(同步VPS的SSL证书,并加简单认证),BorgBackup备份Debian系统、Nextcloud及个人资料并定时上传到网盘。 - Win7: QQ或Wechat使用,远程给小孩打印作业 :),并增加各网段网卡测试使用。
- DSM7: 当时本来打印用作主力NAS的,因无法使用现有硬盘资料,且挂载的NFS无法使用各服务(当时主要想用Audio Station)。现在主要用来下载一些其他网盘的资料,比如OneDrive,GoogleDrive等。
- FreeBSD: 想着用ZFS,但没法用Docker,又不想再去折腾Jail,放弃作主力NAS,当作测试使用。
- Gentoo: 一直非常喜欢的一个发行版本,当时在上家单独,一直用它当主力开发系统。留着测试使用。
- pfSense: 尝尝其他系统 :)
访问内网服务
域名DNS设置:
- A Record: 设置成VPS的IPv4地址,然后NAS里设置FRP将Nginx端口映射到VPS,再在VPS的Nginx设置反代到FRP映射的端口,NAS里的Nginx通过二级域名访问各服务。
Internet --> VPS Nginx --> FRP --> NAS Nginx --> 各服务
。 - AAAA Record: 因某国内最轻的VPS没有IPv6地址,NAS脚本每隔1小时更新此记录。这样可以直接SSH连到内网,或访问各服务。
Internet --> NAS Nginx --> 各服务
。 - CNAME Record: 设置各服务的二级域名alias到前面A和AAAA记录上,这样只需改A和AAAA记录,服务的二级域名无需修改。
主要参考:
- Host Your Own Music Streaming Server with Navidrome
- Convert HP Smart Array Controller to HBA Mode
- MTU and TCP MSS when using PPPoE
- Use Aussie Broadband’s Framed Route on a Mikrotik Router
- 使用 Mikrotik RouterOS 和 Openwrt 在 ISP 获得的 IPv6 Prefix 上配置二级 PD
- RouterOS 入门与最佳实践
- FS.com GPON ONU Stick with MAC (GPON-ONU-34-20BI)
- Nokia G-010S-A