只花不到 150 元,部署一套可能是最佳体验的家庭网络系统

标签: geek | 发表时间:2024-09-18 00:00 | 作者:
出处:https://itindex.net/relian

原文地址: https://yojigen.tech/30.html

前言

哪个男孩不想要一个可以自由驰骋互联网的网络呢?

关于家中的互联网建设这一块,已经不知道有多少博主聊过,自己也是来来回回折腾了很多种方案。

最近终于找到了我直到目前为止我认为可能是最完美的方案——PaoPaoDNS+PaoPaoGateWay 。然后就在自己家的软路由系统里部署了起来,目前也是稳定用了一个月感觉非常的舒适。

但是我家里面用的是软路由+虚拟机的方案,本身全套机器下载价格要 400 元左右了,而且机器也是做了一点点硬改,没有改机能力的人恐怕用起来也会比较麻烦。

于是我就在想,能不能用比较便宜的方案,和较低的功耗,用一些市面上常见的设备来实现这一套方案呢?

最终预期的结果

在尽可能保证正常网络不会受到影响的情况下,实现网内透明代理,以用于科学上网。

附赠功能: 去广告,虚拟局域网组网等

设备选择和采购

于是经过我的思考,最后做出了如下的设备方案:

  • 一台硬路由,要可以刷入支持设置静态路由,静态 DHCP 的系统(OpenWRT 、爱快、ROS 等)
  • 一台可以部署 Docker 容器的机器,例如一台小型 ARM 主机(玩客云,x905 电视盒子等)
  • 一台低功耗 x86 小主机(最好支持 AES 硬解)

以上设备各位读者可以根据自身的经济条件和现有的设备来决定如何选择,比如全放进虚拟机里之类。而我这次选择的设备是下面这几个。

硬路由-JCG Q30 Pro: 59 元

这个价格不算特别的大众,这是一台天线坏掉的机器,而我的家里面因为还有三个其他的无线路由器当做 AP 使用,所以我不需要无线网络功能。

这台机器的芯片是联发科的 mt7981 ,内存是 256m(也有 512m 的版本),性能较好,可以轻松跑满千兆。而且这款机器还是被 OpenWRT 和 immortalwrt 官方支持的型号,可以直接刷主线版的固件,这样也可以避免一些网上所谓的“大神”编译的固件中的各种坑。

机器怎么刷机我这里就不说了,网上有一些现成的资料,在这里说会导致教程太过于复杂,而且也许你的设备也不需要刷机,对吧。

其实我个人目前比较推荐的机器是爱快 IK-Q3000 ,不用刷机就能享受官方的爱快的系统固件,机身自己支持 AX3000 ,如果没有其他无线组网,一台机器就能解决大部分人家中的路由和 WiFI 了。现在这个机器京东售价 159 ,同样所谓 mt7981 芯片的机器,他也就比别的机器贵了 20-30 。30 块钱买个免刷机带售后的爱快系统我觉得还是挺香的。(不过不清楚这台机器有没有硬件转发,如果没有的话还是不要用了)

ARM 主机-玩客云: 28 元

玩客云算是我们垃圾佬应该非常熟悉的一个东西了,他本身是一个拿来做 PCDN 的所谓的“挖矿”设备,后续随着 PCDN 的收益越来越低,运营商对 PCDN 的打击等等原因,现在网上有着大量的机器在流通。而且由于存世量多,玩的人也多,这机器在价格便宜的同时,机器的玩法也开发的比较全面,很多系统都能刷入进去。

我们这里选择给它刷入 Armbian ,以用来部署 Docker 容器,刷机方法大家也可以参考网络资料。

X86 小主机-中兴 CT321G2: 本人购入 79 元,咸鱼现价 50 元

这个小机器是之前无意中发现的,机身外壳的做工还不错,虽然是塑料但是很厚实。这个机器由于只有一个千兆网口,不好做软路由,且只有一个无法更换 4g 硬盘,所以对于垃圾佬来说,可玩性就有点差了,导致价格一直不高。但是这台机器的 CPU 是小主机里面不太常见的 AMD GX-218GL ,这块 CPU 性能和 J1900 差不太多,功耗也都是在 10w 左右,但是他有一个 J1900 没有的优势: 支持 AES 硬解。

大家都知道 AES 硬解意味着什么,加上小尺寸,低功耗,所以这台机器非常适合拿来做我们的网关机。

注意: 这个机器只有 VGA 输出,需要你准备支持 VGA 的显示器和线,或者转换线。

系统搭建

主网络

首先要保证你的网络是正常的,你需要了解如何使用你的路由器正确的设置上网功能。 我这里以最常见的网络地址作为演示,你可以根据你的需求来设置自己的网段。

   路由器 IP: 192.168.1.1
DHCP 范围: 192.168.1.101-192.168.1.200
局域网段: 192.168.1.0/24
子网掩码: 255.255.255.0
网关机 IP: 192.168.1.2
Docker 容器机 IP: 192.168.1.3

网关机

首先要准备一下 PaoPaoGateWay 的系统镜像,由于是在物理机运行,所以需要全网卡驱动的支持。官方 Github 上的镜像是默认不带全网卡驱动的,需要我们用官方的 docker 来定制一下 ios 镜像。 定制方式非常简单,随便找一台 x86 的装有 docker 的机器(官方容器不支持 arm),运行下面两条命令,就能在当前目录获得一个具有全部网卡的 ios 镜像了。

   docker pull sliamb/ppgwiso:fullmod
docker run --rm -v .:/data sliamb/ppgwiso:fullmod

如果你不方便定制,也可以下载我定制好的镜像文件(记得解压)。

paopao-gateway-x86-64-custom-364b136.zip

准备一个写磁盘的工具,Rufus 、balenaEtcher 、UltraISO 之类的都可以,我这里使用 Rufus 。 准备一个 U 盘,将镜像文件写入到 U 盘里。

然后将 U 盘插入 x86 小主机,在 Bios 里设置为从 U 盘启动系统,通电自动启动系统,最后用网线将网口和路由器的 Lan 口进行连接。

这样网关机这里就算设置完成了。

注:

  • 如果有条件可以将网关机接上屏幕开机测试一下,看看能不能正常启动开机看到日志。
  • 系统测试稳定之后,可以尝试用 PE 将 ISO 镜像写入到系统内置磁盘里,这样就可以不插 U 盘启动了,不过这样后面更新会稍微麻烦点。

Docker 机

首先搭建好 Docker 环境,这里根据不同的设备和系统会有不同的方法,请根据网络上的教程自行操作。

创建目录 DNS ,并且在其中创建 docker-compose.yaml文件,用于配置容器。

docker-compose.yaml文件内容参考如下。

   services:
  paopaodns_china:
    image: sliamb/paopaodns:latest
    container_name: PaoPaoDNS-China
    restart: always
    volumes:
      - ./PaoPaoDNS-China:/data
    networks:
      dns:
        ipv4_address: 172.30.1.10 # IP 地址为 Docker 内网分配地址,用于内网访问
    environment:
      - TZ=Asia/Shanghai
      - UPDATE=weekly
      - DNS_SERVERNAME=PaoPaoDNS-China
      - DNSPORT=53
      - CNAUTO=no

  paopaodns _global:
    image: sliamb/paopaodns:latest
    container_name: PaoPaoDNS-Global
    restart: always
    volumes:
      - ./PaoPaoDNS-Global:/data
    networks:
      dns:
        ipu4_address: 172.30.1.20 # IP 地址为 Docker 内网分配地址,用于内网访问
    environment:
      - TZ=Asia/Shanghai
      - UPDATE=weekly
      - DNS_SERVERNAME=PaoPaoDNS-Global
      - DNSPORT=53
      - CNAUTO=yes
      - CNFALL=yes
      - CN_TRACKER=yes
      - USE_HOSTS=no
      - IPU6=no
      - SOCKS5=192.168.1.2:1080 # IP 地址为网关机的 IP 地址
      - SERVER_IP=192.168.1.3 # IP 地址为本台宿主机的 IP 地址
      - CUSTOM_FORWARD=192.168.1.2:53 # IP 地址为网关机的 IP 地址
      - AUTO_FORWARD=yes
      - AUTO_FORWARD_CHECK=yes
      - USE_MARK_DATA=yes
      - HTTP_FILE=yes
    ports:
      - "5304:5304/udp"
      - "5304:5304/tcp"
      - "7889:7889/tcp"

  adguard_home:
    image: adguard/adguardhome:latest
    container_name: AdGuardHome
    restart: always
    depends_on:
    - paopaodns_china
    - paopaodns_global
    volumes:
    - ./AdGuardHome:/opt/adguardhome/work
    - ./AdGuardHome:/opt/adguardhome/conf
    networks:
      dns:
        ipv4_address: 172.30.1.2 # IP 地址为 Docker 内网分配地址,用于内网访问
    environment:
      - TZ=Asia/Shanghai
    ports:
      - "53:53/udp"
      - "53:53/tcp"
      - "80:80/tcp" # 如果不是使用 80 端口作为网页端口则需要添加对应的端口映射
      - "3000:3000/tcp" # 安装成功后可以删除

networks:
  dns:
    driver: bridge
    ipam:
      driver: default
      config:
        - subnet: 172.30.1.0/24
          gateway: 172.30.1.1

解释一下这个配置文件。

这个配置文件定义了三个容器。

两个 PaoPaoDNS ,用来作为 AdguardHome 的上游 DNS ,其中一个容器没有做特殊的配置,仅当做本地递归 DNS 服务器使用。而另一台则添加了分流相关的设置,用于对需要出国的设备进行 DNS 分流处理。

AdguardHome ,用于提供本地 DNS 服务,给不同的客户端配置不同的上游 DNS ,以及去广告(虽然是他的本职,但是这里反而成了附赠的功能了)。

注: 爱快官方之前在论坛中提到,系统更新到 3.7.12 后,DHCP 设置将支持对不同的客户端配置不同的 DNS ,所以用爱快系统的可以根据需求不使用 AdguardHome 。

接下来启动容器。

   docker compose up -d

容器正常启动后,则可以使用 本机 IP:3000访问 AdguardHome 的安装页面了,设置一下用户名和密码,以及 WebUI 的端口(建议 80)即可。

网络配置

因为我文章里是使用的 OpenWRT 作为路由系统,所以这里也是用 OpenWRT 来演示。

启动网关机和 Docker 容器机,让他们的信息出现在你的路由器里面。

首先要固定一下 IP 。

打开 网络→DHCP/DNS→静态地址分配,将网关机的 IP 固定为 192.168.1.2,将 Docker 机的 IP 固定为 192.168.1.3

然后将 DHCP 默认的 DNS 设置为 192.168.1.3(如果需要输入两个地址就都填一样的)。

接下来要设置网内设备的 DNS 。

打开 网络→接口→lan→DHCP 服务器→高级设置,在 DHCP 选项中添加。

   6,192.168.1.3

这个值就是你的 Docker 机的 IP 。

然后重启一下网关机和 Docker 机,让他们可以获取到新的 IP 和 DNS 。

接下来网页打开 AdguardHome 的后台 http://192.168.1.3,在 DNS 设置中,将上游 DNS 设置为 172.30.1.10,并且关闭缓存。

这时我们可以试一下我们的 DNS 能否正常使用。

   nslookup whoami.03k.org 192.168.1.3
服务器:  Unknown
Address:  192.168.1.3

非权威应答:
名称:    whoami.03k.org
Address:  123.234.123.234 #连接权威 DNS 服务器的 IP=你的宽带 IP

返回的地址如果是你的公网 IP 网段,就说明递归 DNS 已经生效了。

接下来是设置静态路由,我们回到 OpenWRT 的界面。

打开 网络→路由→静态 IPv4 路由,添加一条新的静态路由,类型 unicast,目标 11.0.0.0/8,网关 192.168.1.2

最后要屏蔽掉对 FakeIP 的 NAT 。

打开 网络→防火墙→通信规则,添加一条新的规则,源区域为 lan,目标区域为 wan,目标地址为 11.0.0.0/8,操作为 丢弃

注:

如果有使用一些纯靠 IP 访问的软件(例如网飞、Telegram),还需要把他们的 IP 端也设置相同的静态路由和通信规则中,比较长这里我就不写了,有需求的可以自行添加。

到这里网络路由相关内容设置完毕。

网关配置

网关配置文件在 Docker 机器的 DNS/PaoPaoDNS-Global目录中的 ppgw.ini

   #paopao-gateway

# mode=socks5|ovpn|yaml|suburl|free
# default: free
# free: 直接出站不走代理
# socks5: 使用 socks5 代理出站
# ovpn: 使用 ovpn 代理出站
# yaml: 使用 yaml 配置文件,yaml 配置文件在同目录下,文件名参考下面的 yamlfile
# suburl: 使用订阅地址,最常见的应该就是这种了
mode=suburl

# Set fakeip's CIDR here
# default: fake_cidr=7.0.0.0/8
# FakeIP 的网段,如果要修改,请修改成看似是外网的空 IP 网段
fake_cidr=11.0.0.0/8

# Set your trusted DNS here
# default: dns_ip=1.0.0.1
# 这里需要和 Docker 机,也就是 DNS 的 IP 匹配
dns_ip=192.168.1.3
# default: dns_port=53
# If used with PaoPaoDNS, you can set the 5304 port
# 这是网关获取配置的端口,如果没有修改过端口映射,请使用默认值
dns_port=5304

# Clash's web dashboard
# 这是网页管理面板的端口和密码
clash_web_port="80"
clash_web_password="clashpass"

# default:openport=no
# socks+http mixed 1080
openport=no

# default: udp_enable=no
udp_enable=no

# default:30
sleeptime=30

# socks5 mode settting
# default: socks5_ip=gatewayIP
# 这里需要填入网关 IP ,用于开启局域网内的 socks5 代理
socks5_ip="192.168.1.2"
# default: socks5_port="7890"
socks5_port="7890"

# ovpn mode settting
# The ovpn file in the same directory as the ppgw.ini.
# default: ovpnfile=custom.ovpn
ovpnfile="custom.ovpn"
ovpn_username=""
ovpn_password=""

# yaml mode settting
# The yaml file in the same directory as the ppgw.ini.
# default: yamlfile=custom.yaml
# 这里是 yaml 模式时,网关获取的配置文件的文件名
yamlfile="custom.yaml"

# suburl mode settting
# 这里填入你的订阅地址
suburl="https://..."
# 这里是订阅自动更新时间
subtime=1d

# fast_node=check/yes/no
# check: 代表会自动检查下面的 URL 能否访问,如果不能访问则自动重启服务并重新拉取订阅
# yes: 代表会自动根据延迟切换到延迟最低的节点,同时具有 check 的功能
# no: 代表不检查延迟与连通性
fast_node=yes
test_node_url="https://www.youtube.com/generate_204"
ext_node="Traffic|Expire| GB|Days|Date"
cpudelay="3000"

# dns burn setting
# depend on fast_node=yes & mode=suburl/yaml
dns_burn=no
# If used with PaoPaoDNS, you can set the PaoPaoDNS:53
# 这里需要设置成 DNS 的 IP
ex_dns="192.168.1.3:53"

# Network traffic records
net_rec=no
max_rec=5000

更详细的参数解释,以及自定义规则等等,请参考 官方的文档,如果没有特殊需求,按本文的配置即可。

配置设备 DNS

我的教程中的方案,是建立在网内只有一部分设备出国,另一部分正常用网的场景,所以需要针对不同的设备,设置不同的上游 DNS 服务器。

如果你没有这种需求,可以直接在网络配置那一步中,将上游 DNS 设置为 172.30.1.20,就不用继续往下看了。

如果你也像我一样,只需要部分的设备走出国规则,那就还需要在多一步设置。

打开 AdguardHome 的后台 http://192.168.1.3

打开客户端设置,添加客户端。

添加需要出国的设备的 IP 或者 IP 段,然后在下面的自定义上游的地方,将上游 DNS 设置为 172.30.1.20,然后保存即可。

至此系统全部搭建完毕。

测试

可以使用 Speedtest ,分别选择国内和国外的测速节点,看一下带宽能否跑满。

可以在 https://ip111.cn或者 https://ip.skk.moe检查一下 IP 分流是否正常。

可以用 NatTypeTester 检查一下 Nat 等级。

总结

整套设备花费是 59+28+50=137 元,这里是没有计算 U 盘和交换机的价格。

U 盘作为一个搞机佬,我相信各位家里一定会有的,而交换机要看自己网内具体有多少需要网线的设备,所以我就没有算在内。

这里面路由器的价格可能会有一些上下波动,比如你需要一款可以跑满千兆的路由器,又不想刷机,所以可能买了我推荐的爱快 Q3000 ,那价格就一下多了 100 元了,但是你买了更好的路由器就算不玩这套系统,那也可以让网络体验变好,也是不亏。而如果你家的网络没有达到千兆,比如只有 500M 甚至 100M ,那你大可买一些 mt7621 的路由器,刷个 OP 或者爱快的固件,这种路由器咸鱼 50 以内可以随便买。

希望这篇文章可以帮助到一直想要一套舒适的网络的你。

相关 [体验 家庭 网络] 推荐:

只花不到 150 元,部署一套可能是最佳体验的家庭网络系统

- - IT瘾-geek
原文地址: https://yojigen.tech/30.html. 哪个男孩不想要一个可以自由驰骋互联网的网络呢. 关于家中的互联网建设这一块,已经不知道有多少博主聊过,自己也是来来回回折腾了很多种方案. 最近终于找到了我直到目前为止我认为可能是最完美的方案——PaoPaoDNS+PaoPaoGateWay.

基于「树莓派」的家庭网络服务

- - 無標題文檔
当初组建家庭网络的时候,就考虑到自己的需求:主要是网络存储、以及跑部分比较耗时的「定时任务」,例如爬虫和下载还有部分的数据处理等. 本来考虑部署一台性能相对比较好的服务器去处理,但这样子考虑到部署太过中心化不好管理,同时硬件的成本有些高而且占地的面积太大,因此就暂时被我搁置了. 后来想到 空帷 的朋友圈,使用「树莓派」这个方案相对比较轻量,同时多出来的「树莓派」还可以用来它用,因此考虑使用「树莓派」搭建自己的家庭网络服务.

现实增强AR的划时代意义项目,Wikitude 结合位置LBS并可通过手机浏览器在网络上体验现实

- - TF全部内容|科技源TechFrom
5.17日,现实增强类(Augmented Reality简称 AR)创业项目 Wikitude. 刚刚在黑莓智能手机 Blackberry 10发布会上曾演示过增强现实应用 Wikitude,可以通过手机浏览器让你通过网络体验现实,并且结合地图和位置LBS服务,只需要你用手机摄像头照一下现实地点,手机摄像头上就会出现相关的信息.

摄影:家庭价值

- s - PADMAG视觉杂志
美国现代摄影美术馆Michael Mazzeo Gallery策划了一次名为《Family Value》(家庭价值)的展览,邀请23位摄影师来诠释家庭的意义. 以上两张来自1981年出生的美国女摄影师Annabel Clark的作品《Carmen and Lupita》,大多数人看到第一张图,都会以为是两个躺在床上的女孩,而并没有注意到Carmen及Lupita其实是一对连体儿.

网络

- 火锅土豆 - 科学松鼠会
本文地址(转载请注明出处): 复制.

MapR初体验

- 呆瓜 - 淘宝数据平台与产品部官方博客 tbdata.org
MapR是MapR Technologies, Inc的一个产品,号称下一代Hadoop,使Hadoop变为一个速度更快、可靠性更高、更易于管理、使用更加方便的分布式计算服务和存储平台,同时性能也不断提高. 它将极大的扩大了Hadoop的使用范围和方式. 它包含了开源社区的许多流行的工具和功能,例如Hbase、Hive.

用户体验

- tal-rasha - 博客园-首页原创精华区
    用户体验是一个很大的话题,先从一个故事说起.     周末参加了两天的PMP培训,听课期间注意到老师的一个细节,在讲选择题的时候,选项A、C读音正常,而“B”老师读为Boy,“D”老师读为Dog.     刚听到的时候大家莞尔一笑,以为这是个善意的玩笑.     很快,我想明白了,B和D的发音类似,容易混淆;Boy和Dog是简单的单词,发音能够明确区分,也没有类似Bog和Doy的读音混淆.

VSCode 初体验

- - SegmentFault 最新的文章
Microsoft 今天在其 Build 开发者大会上正式宣布了 Visual Studio Code 项目:一个运行于 OS X,Windows 和 Linux 之上的,针对于编写现代web和云应用的跨平台编辑器. 作为编辑器控的我,得知消息后立马下载体验了一下. Windows上优秀的编辑器实在太多了, Sublime Text, EditPlus, Notepad++......还有诸如国产的 EverEdit等后起之秀.

diy 山寨投影家庭影院

- Charles - 老肥博客 » 非唠不可
这些天我在 Twitter, Flickr, Instagram 上贴了些我最近在折腾的照片,但比较零散,现在一切都妥当了,整理出来放到这个多年没更新的博客上,以说明我这里更新还是比天安门换头像要勤快些哟,cc @zhaoweitian.. 720p 山寨投影仪,¥1860, 购买的是散件自己组装,当然如果没这时间也可以买成品,淘宝上不同档次和外观的也有好些家,有兴趣请自己搜索 "diy 投影".

不到500刀打造家庭影院

- Pei - 东西
 几年前,我花了1200大刀装过一台跛脚的HTPC(家庭影院电脑). 它多数时候热的可以煎蛋,冷却风扇又翁翁作响,吵得跟直升飞机似的. 我的新欢,使用图形系列NVIDIA ION处理器,性能可秒杀前任,身材也瘦到了一个雪茄盒大小. 新东东内置了蓝光播放器并采用了静音散热片(取代聒噪的风扇)导释热量, 啃起高清来不花不卡,花费不到500刀(更可降到300刀,亲).