草庐IT

软路由的正确组网姿势(上篇)

挨踢魔君 2023-04-21 原文

前言

相信很多小伙伴儿已经在自己的设备上刷好了 OpenWrt 系统,成功拥有了人生第一台软路由。那么接下来就要考虑如何将它连接到自己的家庭网络中,也就是组网的问题。只有正确组网,它才能实现你期望的那些功能。软路由可以作为主路由或旁路由使用,也就是对应两种不同的组网方案。挨踢魔君接下来详细分析一下这两种主流的组网方案,各位小伙伴儿可以根据自己的实际情况和需求选择使用。前方干货太多,怕大家噎着,特分上下两篇来分享。本篇(上篇)主要分享主路由组网方案,旁路由组网方案和总结将在下篇中分享,敬请关注。

主路由组网方案

主路由顾名思义就是将软路由连接到主干线路中,所有进出流量都必须经过它处理。参考网络拓扑图如下:

软路由做主路由拓扑图

光猫、软路由和交换机都可以放到弱电箱中,无线 AP 尽量放到房子中心无遮挡位置。如果你的软路由的 LAN 口够用的话,可以不要交换机,通往各房间的网线直接插到软路由 LAN 口上就行。无线 AP 换成普通无线路由器也行,此时建议将无线路由器配置为 AP 模式,可以减少一层 NAT 处理,通信效率略有提升,后面还可以通过软路由管理所有设备,更加方便。

进阶优化建议

如果用的是那种带路由功能的光猫,建议将它配置为桥接模式,由软路由负责拨号。因为软路由功能更强,可以实现光猫无法实现的很多有趣功能,还能减少一层 NAT 处理,略微提升通信效率。

本方案的优点:

  • 轻松实现全屋无痛透明代理上网,所有上网设备无需做任何网络配置和安装客户端。

  • 可以对所有联网设备和上网流量进行监管。

本方案的缺点在于一旦软路由出现任何问题,就会影响整个家庭网络,可能导致所有设备无法正常上网。对于折腾党而言,改配置或装插件经常要重启软路由,有时还会把软路由玩崩,这些行为都会导致全家间歇性断网,后果很严重。

采用本方案组网的软路由至少要有两个网口,即一个 WAN 口和一个 LAN 口,WAN 口连接光猫,LAN 口连接交换机。软路由一般都有 USB 接口,如果网口不够,可以通过 USB 接口扩展网口,但性能会差一点儿。建议直接上带有两个或多个物理网口的设备,家宽低于千兆就选择千兆网口,千兆及以上就选择 2.5G 网口。

软路由

小秘密

千兆网口通常跑不满千兆带宽(实测 960 Mbps 以下),所以千兆及以上带宽建议使用全 2.5G 网口的路由器,这样才能跑满甚至超出签约带宽(传说运营商一般都会附赠 20% 带宽),当然光猫、上网设备和网线等也都需要支持 2.5G 带宽。

还有一点,本方案中软路由的硬件配置( CPU / RAM / Flash )要尽量高一点,否则会运行不稳定,影响全屋网速。至于具体硬件配置,因人而异,可以自己测试评估,够用即可。

…… 未完待续,我们下篇再见!

有关软路由的正确组网姿势(上篇)的更多相关文章

  1. ruby-on-rails - Rails 3 中的多个路由文件 - 2

    Rails2.3可以选择随时使用RouteSet#add_configuration_file添加更多路由。是否可以在Rails3项目中做同样的事情? 最佳答案 在config/application.rb中:config.paths.config.routes在Rails3.2(也可能是Rails3.1)中,使用:config.paths["config/routes"] 关于ruby-on-rails-Rails3中的多个路由文件,我们在StackOverflow上找到一个类似的问题

  2. ruby-on-rails - 如何使用 instance_variable_set 正确设置实例变量? - 2

    我正在查看instance_variable_set的文档并看到给出的示例代码是这样做的:obj.instance_variable_set(:@instnc_var,"valuefortheinstancevariable")然后允许您在类的任何实例方法中以@instnc_var的形式访问该变量。我想知道为什么在@instnc_var之前需要一个冒号:。冒号有什么作用? 最佳答案 我的第一直觉是告诉你不要使用instance_variable_set除非你真的知道你用它做什么。它本质上是一种元编程工具或绕过实例变量可见性的黑客攻击

  3. ruby-on-rails - 正确的 Rails 2.1 做事方式 - 2

    question的一些答案关于redirect_to让我想到了其他一些问题。基本上,我正在使用Rails2.1编写博客应用程序。我一直在尝试自己完成大部分工作(因为我对Rails有所了解),但在需要时会引用Internet上的教程和引用资料。我设法让一个简单的博客正常运行,然后我尝试添加评论。靠我自己,我设法让它进入了可以从script/console添加评论的阶段,但我无法让表单正常工作。我遵循的其中一个教程建议在帖子Controller中创建一个“评论”操作,以添加评论。我的问题是:这是“标准”方式吗?我的另一个问题的答案之一似乎暗示应该有一个CommentsController参

  4. ruby - 我可以将我的 README.textile 以正确的格式放入我的 RDoc 中吗? - 2

    我喜欢使用Textile或Markdown为我的项目编写自述文件,但是当我生成RDoc时,自述文件被解释为RDoc并且看起来非常糟糕。有没有办法让RDoc通过RedCloth或BlueCloth而不是它自己的格式化程序运行文件?它可以配置为自动检测文件后缀的格式吗?(例如README.textile通过RedCloth运行,但README.mdown通过BlueCloth运行) 最佳答案 使用YARD直接代替RDoc将允许您包含Textile或Markdown文件,只要它们的文件后缀是合理的。我经常使用类似于以下Rake任务的东西:

  5. ruby-on-rails - 使用 config.threadsafe 时从 lib/加载模块/类的正确方法是什么!选项? - 2

    我一直致力于让我们的Rails2.3.8应用程序在JRuby下正确运行。一切正常,直到我启用config.threadsafe!以实现JRuby提供的并发性。这导致lib/中的模块和类不再自动加载。使用config.threadsafe!启用:$rubyscript/runner-eproduction'pSim::Sim200Provisioner'/Users/amchale/.rvm/gems/jruby-1.5.1@web-services/gems/activesupport-2.3.8/lib/active_support/dependencies.rb:105:in`co

  6. ruby - rails 3 redirect_to 将参数传递给命名路由 - 2

    我没有找到太多关于如何执行此操作的信息,尽管有很多关于如何使用像这样的redirect_to将参数传递给重定向的建议:action=>'something',:controller=>'something'在我的应用程序中,我在路由文件中有以下内容match'profile'=>'User#show'我的表演Action是这样的defshow@user=User.find(params[:user])@title=@user.first_nameend重定向发生在同一个用户Controller中,就像这样defregister@title="Registration"@user=Use

  7. ruby - 调用其他方法的 TDD 方法的正确方法 - 2

    我需要一些关于TDD概念的帮助。假设我有以下代码defexecute(command)casecommandwhen"c"create_new_characterwhen"i"display_inventoryendenddefcreate_new_character#dostufftocreatenewcharacterenddefdisplay_inventory#dostufftodisplayinventoryend现在我不确定要为什么编写单元测试。如果我为execute方法编写单元测试,那不是几乎涵盖了我对create_new_character和display_invent

  8. ruby-on-rails - Rails 3,嵌套资源,没有路由匹配 [PUT] - 2

    我真的为这个而疯狂。我一直在搜索答案并尝试我找到的所有内容,包括相关问题和stackoverflow上的答案,但仍然无法正常工作。我正在使用嵌套资源,但无法使表单正常工作。我总是遇到错误,例如没有路线匹配[PUT]"/galleries/1/photos"表格在这里:/galleries/1/photos/1/edit路线.rbresources:galleriesdoresources:photosendresources:galleriesresources:photos照片Controller.rbdefnew@gallery=Gallery.find(params[:galle

  9. ruby-on-rails - Rails - 从命名路由中提取 HTTP 动词 - 2

    Rails中有没有一种方法可以提取与路由关联的HTTP动词?例如,给定这样的路线:将“users”匹配到:“users#show”,通过:[:get,:post]我能实现这样的目标吗?users_path.respond_to?(:get)(显然#respond_to不是正确的方法)我最接近的是通过执行以下操作,但它似乎并不令人满意。Rails.application.routes.routes.named_routes["users"].constraints[:request_method]#=>/^GET$/对于上下文,我有一个设置cookie然后执行redirect_to:ba

  10. ruby-on-rails - 如何在 Rails 中设置路由的默认格式? - 2

    路由有如下代码:resources:orders,only:[:create],defaults:{format:'json'}resources:users,only:[:create,:update],defaults:{format:'json'}resources:delivery_types,only:[:index],defaults:{format:'json'}resources:time_corrections,only:[:index],defaults:{format:'json'}是否可以使用1个字符串为所有资源设置默认格式,每行不带“默认值”散列?谢谢。

随机推荐