Yananart
Yananart
Published on 2023-05-21 / 161 Visits
1

自用家庭局域网搭建方案 2023-05-21

本文记录个人自用家庭局域网搭建方案。主要包含以下内容:

  • 硬件 (软路由、无线路由、笔记本服务器、网线)
  • 网关 (OpenWRT、Dnsmasq、AdGuard Home、VPN)
  • 媒体服务 (Plex、Emby、客户端)
  • 内网服务 (互传、飞机场)
  • Docker

局域网网络拓补

〇、硬件

0.1. 软路由

软路由使用的是DIY工控机,同款机可查看三方博客介绍,自用主要配置:

  • CPU: Intel® Celeron® CPU N2930 @ 1.83GHz : 4C4T
  • RAM: 4GB
  • ROM: 32GB
  • 入网: 100Mb/s
  • 内网: 1000Mb/s

0.2. 无线路由

无线路由使用的为Redmi AX6 3000M,官方标WIFI6 5G双频。

在自用场景中,修改无线路由器使用模式为“中继模式”,仅作为AP使用,不使用无线路由器的DHCP。

红米有线中继

0.3. 笔记本服务器

两台退役笔记本长期开机作为服务器使用:

服务器1: Windows Server

  • CPU: Intel® Core™ i5-8250U CPU @ 1.60GHz : 4C8T
  • RAM: 8 GB
  • 系统: Windows 11 Pro
  • 网络: 手工分配固定IP,DNS重写域名pc.yananart.cn指向,网线连接
  • 本服务器主要做媒体服务器使用,安装Plex、Emby,长期运行下载工具下载媒体资源,外部挂载1TB磁盘做缓存盘(RAID0),挂载8TB磁盘做仓库盘。

WindowsServer

服务器2: Linux Server

  • CPU: Intel® Core™ i5-8350U CPU @ 1.70GHz : 4C8T
  • RAM: 24 GB
  • 系统: Deepin Desktop Community 20.9
  • 网络: 手工分配固定IP,DNS重写域名deepin.yananart.cn指向,网线连接
  • 本服务器主要做本地开发使用,启用了SSH服务。

LinuxServer

0.4. 网线

局域网内有线连接全部使用千兆网线。

有线网络

一、网关

1.1. OpenWRT

软路由的软件方案,使用的是网上整合插件的高大全方案的镜像。

手工分配静态IP为192.168.100.1,不启用IPv6。

OpenWRT作为局域网内的统一网关,同时作为DHCP服务器与DNS服务器,为局域网内其他所有网络接入设备提供网络服务。

openwrt1

openwrt2

本章节的其他服务均是使用整合在OpenWRT内的。

1.2. Dnsmasq

Dnsmasq是OpenWRT自带的子网管理服务。

在自用场景下,直接使用Dnsmasq的DHCP服务即可,可以在其中手工分配IP和租约。

DHCP

1.3. AdGuard Home

由于Dnsmasq的DNS功能较弱,选用AdGuard Home作为自用DNS服务器。

自定义DNS服务主要是为了两个目标:

  1. 防止运营商DNS污染;
  2. 将大多数广告屏蔽

DNS服务器需要监听53端口,但Dnsmasq默认就会监听53端口启动DNS服务,所以需要修改。

我的方案中建议不要修改Dnsmasq配置,让其继续监听53端口作为DNS服务。我们通过防火墙规则重定向外部53端口的流量到AdGuard,规则定义为(5053为AdGuard监听端口):

iptables -t nat -A PREROUTING -p udp --dport 53 -j REDIRECT --to-ports 5053
iptables -t nat -A PREROUTING -p tcp --dport 53 -j REDIRECT --to-ports 5053

上述理论上在OpenWRT中配置AdGuard时,将重定向配置为“重定向53端口到AdGuardHome”即可,如果OpenWRT配置不生效需要手工配置防火墙。

在AdGuard自定义上游DNS服务,个人推荐阿里或腾讯的DNS服务。

然后关键是配置DNS黑名单,推荐anti-AD v4

AdGuard黑名单

AdGuardInfo

可以见到拦截了很多DNS请求,在访问某些小网站时也可以发现广告大量减少。

1.4. VPN

使用ZeroTier建立私有网络,因为国内复杂的网络环境,我还在公网服务器上搭建了ZeroTier的卫星,防止在UDP打孔失败时,通过公网服务器转发流量。

ZeroTier私有网络

ZeroTier私有网络映射

ZeroTier互通

二、媒体服务

2.1. Plex

Plex管理了所有的电视剧、电影资源。

Plex

2.2. Emby

Emby管理了其他视频、照片等资源,包括个人摄影的照片、影片等。

不提供截图展示。

2.3. 客户端

2.3.1. Plex官方客户端

Plex官方客户端在登陆用户账号后,可以自动识别局域网内的Plex服务器。

Plex客户端除iOS端需要购买才能正常使用,其他各端均是免费的,总体推荐。

但据我观察,桌面端的Plex客户端是浏览器套壳,性能较差;XBox端的Plex客户端优化也有一定问题,在播放4K视频时容易闪退,此时可考虑使用其他客户端。

2.3.2. Kodi

Kodi是一款免费的开源播放器,性能也较好。

Kodi原生不支持识别Plex和Emby,但可以通过插件市场安装插件后使用。XBox端、Windows端在微软商城内就能下载,推荐。

Mac端存在UI缩放问题,不推荐。

2.3.3. Infuse

Infuse是苹果平台独占的一款播放器,数据也能通过iCloud同步,而且可以识别多种不同的视频服务器,性能也十分强劲,特别推荐。

但目前免费使用仅能播放1080p以下分辨率的片源,需要订阅会员后才能播放4K等片源。

三、内网服务

3.1. 互传

局域网内跨设备的文件传输较为麻烦,目前使用以下方案:

3.1.1. AirDrop

苹果设备间直接通过AirDrop即可。

3.1.2. LocalSend

LocalSend是一款开源的跨平台文件传输工具,需要每个终端上都安装后,在同一局域网下可以互传文件。

PC上该服务长期开启,移动设备上使用时两端都要打开。

LocalSend

3.1.3. 隔空传送

这是一款安卓系统上模拟AirDrop,将文件发送到Mac上的工具。场景较为固定,但此时就不用Mac端安装什么软件了。

3.2. 飞机场

具体机场不介绍。

3.2.1. Clash

使用Clash作为代理服务端。

由于我不想对局域网全局进行代理,全局代理会导致部分DNS失效,所以启用Clash服务后不设为全局代理。

OpenWRT也提供了Clash服务,但在其上管理界面没有UI终端好用,且会占用软路由一定资源,所以在Windows Server上使用Windows客户端进行管理。

Clash

启用Clash服务后,因为其实现了代理功能支持HTTP代理和Socks5代理,基本绝大多数代理场景均能支持,仅需在代理信息中填入Windows Server的主机名和Clash的端口号即可。

3.2.2. 浏览器起飞

浏览器中可以使用SwitchyOmega插件:

SwitchyOmega

Google

3.2.3. 全局代理

Windows、安卓设备上在接入局域网Wi-Fi后,可以在Wi-Fi设置内直接设置代理服务,这样可以在一个终端上全局实现代理。但需要注意,iOS设备由于安全性问题不支持如此操作,需要借助三方支持Socks5代理的软件(国区没有)。

AndroidProxy

AndroidTwitter

3.3. 共享盘

通过在WindowsServer上共享功能,走SMB协议共享文件。

iOS、Mac、Linux均能正常挂载。

目前使用较少,基本不太使用。文件目录还没修改分配好,仅基本使用。

SMB

四、Docker

Docker服务原本使用的OpenWRT上自带的Docker服务,由于本身软路由的机能较弱,且后期搭建了Linux Server,所以Docker目前运行在Linux Server上。

4.0. Docker概览

Docker

4.1. 内网测速

镜像名:adolfintel/speedtest

内网测速展示(仅供参考):

mode device Ping Jitter Download Upload
有线 Windows Server 1.00ms 0.23ms 656Mbps 997Mbps
5G Wi-Fi MacBook Air M1 4.00ms 3.01ms 501Mbps 335Mbps
5G Wi-Fi iPhone Xr 3.00ms 2.80ms 668Mbps 319Mbps
5G Wi-Fi iPad 8 2.00ms 1.56ms 356Mbps 269Mbps
5G Wi-Fi MiPad 5 Pro 5.00ms 2.52ms 868Mbps 662Mbps

测速

4.2. 开发中间件

目前主要启动了数据库:

Docker实例


以上 2023-05-21