大学宿舍网络改造计划分享 - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
moyichuxin
V2EX    路由器

大学宿舍网络改造计划分享

  •  2
     
  •   moyichuxin 2024-05-02 19:45:17 +08:00 2377 次点击
    这是一个创建于 540 天前的主题,其中的信息可能已经有所发展或是发生改变。

    在这篇博客中,我将分享大学生涯中最引以为傲的项目宿舍网络改造计划。从最初的灵感到最终实现一个高度智能化和连接化的生活环境。这个项目始于对小米 10 发布会的一次偶然观看,那时我被 AIoT 的未来愿景深深吸引。随着我在自动化专业的学习深入,我开始着手改善我的宿舍网络,使之不仅满足基本需求,还能突破校园网的限制,提升日常生活的舒适度和便捷性。这个过程充满了挑战和学习,也让我深刻体到技术带来的无限可能。跟随我的步伐,一探宿舍智能化改造的每一个细节。

    从小米到智能化宿舍

    高三时,我在观看小米 10 发布会后开始逐步了解并接触小米及其生态系统米家。我十分认同小米所描绘的 AIoT 的未来,也希望自己以后能拥有一个更智能化的住宿环境。于是我开始尝试逐步改善宿舍的网络环境,企图为自己提供一个更加舒适的环境。

    到了大学因为博主本人学习的是自动化专业,和计算机属于是沾点边但没沾太多,很多关于计算机网络的知识都是在自己一点一点的摸索中进行。在即将毕业的现在看来,我的宿舍的智能化程度也确实是校内数一数二的了。所以在即将毕业之际,写下这篇帖子,做一个小小的总结。

    宿舍网络设备概览

    • 主路由器:J4125 软路由
      • 操作系统:PVE (包括 Openwrt 、Synology 、Ubuntu )
      • 网络扩展设备:8 口交换机
        • 连接设备
          • 游戏设备
            • Xbox
            • PS5
          • 智能设备
            • 小米网关
              • 人体传感器(连接至小米网关)
            • 小米路由器(作为 AP )
              • 米家屏幕挂灯
              • 米家台灯
              • 空调伴侣
          • 移动设备
            • iPhone
            • mi10
            • iPad
          • 个人电脑
            • 笔记本

    网络改造第一阶段

    最开始想要优化网络还是要从游戏说起,高考后,由于我对电脑知识了解不深,便盲目冲了一台搭载 RTX1650 的笔记本。到了大二发现很多想玩的游戏都没有办法流畅运行了,这时候想换电脑但是又不好意思找父母开口要太多钱,于是买了 Xbox Series S 来临时解决游戏问题。但是回到宿舍发现 Xbox 的游戏加速是个令人头痛的问题,加之校园网的设备登录限制每个账号最多允许两个设备同时在线,这对于我这种同时使用手机、平板、笔记本及游戏主机的用户来说非常不便。

    因为学校同学大部分都是用手机、电脑玩游戏,最多也就是有小部分同学会使用 Switch 进行游戏,而这些都可以在手机端/电脑端实现简单的游戏加速。而如果想要实现 Xbox/PS5 的加速则比较困难,我经过查阅材料发现主要有以下几个途径:

    1. 使用电脑进行网络加速。
    2. 购买专用的游戏加速盒子。
    3. 使用路由器插件进行加速。

    这些解决方案的难度依次递增。由于我的笔记本配置限制,无法启用自带热点,因此无法为 Xbox 实现联网,更不用说网络加速了。考虑到这一点,我尝试用 UU 游戏加速盒子,但由于校园网每次联网都需要登录认证,而加速盒子无法显示登录页面(这似乎与 DNS 重定向有关),导致我无法通过它联网。因此,使用路由器插件成为了我唯一的选择。正是这些挑战推动了我开始进行宿舍网络改造的第一步。

    在网上查找了许多资料后,我知道了自己需要一个叫做软路由的硬件,来实现网络的代理以及游戏的加速。经过多番查询我决定先满足自己最基础的需求:也就是 Xbox 的游戏加速。我购买了 R2S 这个很经典的软路由,刷入了 Openwrt 。但是在软路由联网的时候,我遇到了不小的问题。我发现 R2S 在有的 Openwrt 版本中可以跳出来校园网认证界面但是有的则一直跳不出来导致无法联网。在经过系统选项的对比,以及身边多位同学的帮助后,我意识到问题出在 DNS 重定向上。校园网通过 DNS 重定向引导未认证的设备至登录页面,关闭 Openwrt 系统设置中的 DNS 重定向后,恢复了校园网的 DNS 控制,从而正确加载并显示了登录界面。

    就这样,我成功在宿舍部署了软路由,并在 Openwrt 中安装了 UU 加速器和师夷长技以制夷插件,极大地改善了我的宿舍网络环境。这一改动也巧妙地突破了校园网设备登录的限制每人最多只能同时在线两个设备,这一限制对于多设备用户来说确实很不便。现在,我的软路由只占用一个设备名额,并通过它连接了一个作为 AP (同时充当四口交换机)的小米路由器。此外,我还引入了米家空调伴侣,实现了宿舍空调的定时自动化操作,进一步提升了宿舍舒适度。

    由于我一直在使用米家的台灯和屏幕挂灯,到了大三,我开始考虑是否可以通过人体传感器来实现灯光的自动控制,以满足我(懒狗)想要“坐下自动开灯,离开后自动关灯”的需求。正巧那时小米商城推出了新款的人体传感器 2 ,价格也相当亲民,我便一时上头下单购买了。

    收到产品后,我意外发现这款人体传感器并不支持直接的蓝牙连接,而是需要连接到一个蓝牙 mesh 网关。虽然这出乎我的预料,但秉着买都买了的原则,又购入了小米多模网关 2 以兼容这个传感器。安装后,我发现现有的路由器 AP 的网口数量不足以支持新增的设备,真是一个郁闷的事情。为了彻底解决这一问题,并遵循“既然已经开始就做到最好”的原则,我购买了一个 Tp-Link 的 8 口交换机。通过这些增加和调整,完善了宿舍的智能灯光控制系统,还彻底解决了网络基础设施的限制问题。现在,每当我坐到座位,灯光会自动开启,离开时则关闭,极大地增强了宿舍的便利性和舒适度。

    至此,宿舍网络改造的第一阶段已顺利完成。目前,我已经实现了以下功能:

    1. 网络代理全覆盖:成功突破了校园网设备登录数量的限制,实现了网络环境的全域代理。
    2. 游戏加速:通过安装 UU 游戏加速插件,有效提升了 Xbox 的网络游戏体验,实现了游戏过程中的流畅连接。
    3. 智能照明:桌面台灯和屏幕挂灯现在能够根据人体存在自动开启或关闭,离开后 5 分钟自动关闭,并且在凌晨 1 点后自动切换到夜间模式,对亮度和色温进行了优化。
    4. 空调自动化:宿舍的空调系统已实现自动化控制,可以在冬季起床前 20 分钟自动开启暖风,夏季则在返回宿舍前远程启动,吹送冷风。

    尽管已取得显著进展,但仍有一些需要改进的地方:

    1. 校园网认证:目前,校园网每 3 至 5 天需要重新认证一次,这一过程仍需手动操作,如果不及时登录,将导致网络中断。
    2. 智能设备控制:从小米切换到 iPhone 后,宿舍的智能设备控制必须通过米家 APP 进行,无法使用小爱同学的语音控制功能,使得控制过程较为繁琐。

    网络改造第二阶段

    在浏览各种技术论坛的过程中,我逐渐发现软路由的应用远比我预想的广泛,尤其是基于 X86 架构的软路由,它们提供了更多的定制和扩展可能性。尽管 R2S 软路由在初期满足了我的基本需求,但它的性能和稳定性仍有限。特别是 R2S 偶尔会出现死机的问题,尝试更换不同版本的 OpenWrt 操作系统和 TF 卡都未能根本解决问题。

    因此,在大四的时候,我决定启动网络改造计划的第二阶段升级我的软路由。这次升级的目的是选择一个更稳定、更强大的硬件平台,以适应更高的性能需求和未来可能的扩展。

    在软路由升级的前期,我在 N100 和 J4125 两款产品之间进行了激烈的比较。最初我本打算采用更高性能的 N100 ,希望一次性满足所有未来可能的需求,但宿舍环境中的散热问题让我担忧。考虑到实际情况,我选择了 J4125 裸机,这是一个性能和散热之间较好的妥协选择。随后为这台机器配备了 2×8GB 的 DDR4 内存和一块三星 120GB 的 MSATA 存储,以期提高系统的响应速度和存储能力。

    然而,当设备到手后,我发现其发热问题仍然相当严重,这迫使我不得不另外购买了散热风扇来解决过热问题(同时发现风扇声音真的很小),早知如此当初就上 N100 了。

    接下来,我进行了常规的系统安装环节。首先在网上查找相关资料和教程,然后在我的新软路由上安装了 PVE 系统。基于这个平台,我进一步安装了 OpenWrt 、Synology 和 Ubuntu 三个操作系统,以满足不同的网络和存储需求。

    为了增强数据存储和共享能力,我将之前用于 Xbox Series S 的 2TB 希捷机械硬盘挂载到了 PVE 系统上,主要空间分配给了 Synology ,实现了宿舍内文件的高效传输和共享。这一设置特别符合我们专业的需求,因为我们大多数人的电脑都配置了 Windows 和 Ubuntu 的双系统。在 Synology 的 Docker 环境中,我部署了 Nastools 、Transmission 、Jackett 、Jellyfin 和 ChineseSubFinder 等多个容器,整合了影视内容的下载和观看功能。通过在 iOS 设备上使用 Infuse 应用,我们能够享受到便捷的影视观看体验。

    在自学计算机网络课程的过程中,我对校园网的认证机制进行了深入研究。我发现校园网的登录过程仅仅是向特定的 URL 发送一个包含用户名和密码的明文 POST 请求,这种方式暴露了一定的安全风险,因为信息以未加密形式传输,容易被截取。

    为了优化这一登录过程并提升使用便捷性,我设计并编写了一个自动化脚本,部署在我的 OpenWrt 系统上。脚本的工作原理是每隔一分钟利用ping命令检测与百度的网络连接是否正常,以此作为网络连通性的简单测试。如果ping测试失败,表明校园网认证可能已失效,脚本会自动重新发送登录的 POST 请求。通过这种方式,我成功实现了校园网的无感知自动登录,显著提高了宿舍网络的稳定性和访问便捷性。

    在宿舍网络和智能家居系统的后续改进中,我在 Ubuntu 的 Docker 环境下尝试了更多的应用。部署了 Home Assistant 和 HomeBridge 这两个容器,以便将米家的智能设备直接集成到 iOS 的 HomeKit 中。这一集成简化了对宿舍内智能设备的控制,使得日常操作更为便捷。

    此外,考虑到我有一个阿里云服务器(大学生白嫖),我还尝试搭建了内网穿透功能。这使得即便在校外,我也能远程访问和管理宿舍中的设备,无论是安全监控还是环境控制,都变得更加灵活和高效。

    最终效果

    至此,宿舍网络改造计划终于圆满完成。在这个过程中,我通过不断地学习、尝试和修正,逐步优化了宿舍的网络环境。虽然某些功能对于我这个大学生来说可能稍显过剩,但出于对技术的热情,我仍然投入了大量时间去探索和实践。这个项目是我大学生涯中最引以为傲的项目,极大地锻炼了我的信息搜集、学习和实际操作能力。

    15 条回复    2024-05-04 13:22:09 +08:00
    nothing2
        1
    nothing2  
       2024-05-02 19:52:05 +08:00 via iPad   1
    适合发 sspai
    CRipple
        2
    CRipple  
       2024-05-02 20:06:26 +08:00
    我住宿舍那时候也喜欢搞这些,最后发现出去租房提升是最大的
    moyichuxin
        3
    moyichuxin  
    OP
       2024-05-02 20:24:32 +08:00
    @nothing2 sspai 平台也会发的: )
    moyichuxin
        4
    moyichuxin  
    OP
       2024-05-02 20:25:35 +08:00
    @CRipple 确实是自己租房会好很多,主要大学确实没这条件 T_T
    cccat0
        5
    cccat0  
       2024-05-02 20:53:22 +08:00   1
    哈哈哈,给楼主的折腾精神好评。以前读书时也是各种折腾,乐在其中
    kkk9
        6
    kkk9  
       2024-05-03 02:53:41 +08:00
    建议整一个大号 UPS ,夏天学校意外断电检修的时候,你的舍友会感谢你的。
    AlphaTauriHonda
        7
    AlphaTauriHonda  
       2024-05-03 03:05:06 +08:00 via iPhone
    Top Notch Engineer!
    这些项目你可以考虑花更多预算,因为学到的多,很值。可以买点 12v 电池,自己做个 UPS 。

    你们学校出口 IP 是教育网的吗?
    steveway
        8
    steveway  
       2024-05-03 07:40:13 +08:00
    不容易,我们学校被发现软路由和交换机,要求写情况说明书,折腾得要死。。
    luciferlulu
        9
    luciferlulu  
       2024-05-03 07:45:25 +08:00 via Android
    校园认证的话抓个包就行 写入 crontab
    moyichuxin
        10
    moyichuxin  
    OP
       2024-05-03 10:37:28 +08:00
    @kkk9 谢谢建议!不过因为我们学校电网还算稳定(印象里大学期间只突然断过一次电),所以没有再考虑去上 UPS 。而且断电的话宿舍楼的网络大概率会直接挂掉,我的网络是直接从我们宿舍这层的交换机单独拉了一根网线接到软路由的。
    moyichuxin
        11
    moyichuxin  
    OP
       2024-05-03 10:41:18 +08:00
    @AlphaTauriHonda 谢谢回复。我们的出口是教育网,所以在学校网络后台对于远程连接、内网穿透等还是有一定的限制的。
    moyichuxin
        12
    moyichuxin  
    OP
       2024-05-03 10:43:52 +08:00
    @steveway 那这样确实就会麻烦很多,我们学校倒是对于宿舍电器审查不是很严,也没有功率限制。
    moyichuxin
        13
    moyichuxin  
    OP
       2024-05-03 10:46:16 +08:00
    @luciferlulu 谢谢!因为 Openwrt 本身是 Linux 基础上搭建,sh 脚本其实寥寥几行就可以实现对应功能。最后我确实也是用的这个思路。
    <img src="https://blog-zyp.oss-cn-hangzhou.aliyuncs.com/posts/lifestyles/writing/autointer.png" alt="https://blog-zyp.oss-cn-hangzhou.aliyuncs.com/posts/lifestyles/writing/autointer.png" />
    kkk9
        14
    kkk9  
       2024-05-03 12:39:13 +08:00
    @moyichuxin #10 你折腾软路由和 NAS ,也有 Xbox 和 PS5 ,你猜猜为啥让你弄个 UPS ,不单纯只是为了上网而上网,单机游戏和 NAS 里存储的资源加上手机热点,应该可以很好的度过停电时光。想一想大家都停电的时候,你宿舍就是爹
    ztmzzz
        15
    ztmzzz  
       2024-05-04 13:22:09 +08:00 via iPhone
    @kkk9 别在宿舍弄 ups ,能支撑游戏机的吵死。
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     2679 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 28ms UTC 08:39 PVG 16:39 LAX 01:39 JFK 04:39
    Do have faith in what you're doing.
    ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86