V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
dhuzbb
V2EX  ›  宽带症候群

个人家庭网络布局分享

  •  3
     
  •   dhuzbb · 42 天前 · 3988 次点击
    这是一个创建于 42 天前的主题,其中的信息可能已经有所发展或是发生改变。

    个人家庭网络布局分享

    整体网络架构图

    整个家庭网络的架构如下:

    家庭网络架构

    整体的网络架构非常的扁平化和简单:

    • 弱电箱 3 根网线和+3 根光纤分别通往主卧、次卧和客厅。
    • 弱电箱中的入户光猫接主路由。
    • 主路由、旁路由、无线 AP 、NAS 、PVE 服务器、黑苹果、Apple TV 等设备都通过有线接入交换机。
    • 手机、笔记本等其他无线设备以及智能家居等设备都通过无线 AP 接入。
    • 各个设备各司其职,避免了 All in Boom 。

    物理设备图如下:

    家庭网络设备

    网络架构说明

    入户光猫改桥接

    坐标上海嘉定。我是直接微信询问的宽带运维小哥,很爽快的就帮我在后台查询了超级密码,自己进入光猫后台修改桥接即可。

    如果运维小哥不肯帮忙查询,也可以闲鱼搜索"地名+运营商+光猫"等关键字,花一点小钱即可解决。

    光猫修改桥接的目的是为了搭配后面的主路由进行拨号上网和获取公网 IP 来使用的。

    获取公网 IP

    直接打运营商客服电话说需要开通公网 IP 即可,上海联通宽同时分配有公网 IPv4 和 IPv6 的地址。

    当然各个地方运营商可能存在差别,据了解联通和电信都会给公网 IPV4 ,移动不会给公网 IPV4 地址,但是 IPV6 的地址应该会给的。

    主路由负责拨号上网

    主路由上正常的设置好拨号上网,这样主路由上获取的 IP 就是公网 IP ,这个 IP 是互联网上其它设备可以直接进行访问的。

    公网 IP

    很多人都存在一个误解,认为这个公网 IP 是固定的。实际上每次重启主路由,或者一段时间后,分配的这个公网 IP 都会变更的。IP 每次都发生变化很难记忆,所以后面需要搭配 DDNS 服务进行动态域名解析。

    其次,运营商为了阻止个人用户在家里架设网站等服务,家庭宽带一般都会封禁了 80 、443 等重要的低位端口。

    主路由设置好后,基本无需各种折腾,能正常的上网即可。虽然 iStoreOS 支持非常丰富的插件,能够实现各种功能,但是为了整个家庭网络的稳定性,建议尽可能少在主路由上面安装各种插件。

    旁路由负责科学上网

    使用旁路由模式一般都是为了科学上网服务的。

    iStoreOS 的网络设置向导中就带有拨号上网、旁路由设置等入口。界面清爽简洁,对小白用户来说非常友好。

    旁路由设置

    在旁路由上搭建好了科学上网的服务之后,需要科学上网的设备,只需要将网关和 DNS 修改为旁路由的 IP 地址,即可享受科学上网的服务。例如个人使用的手机、黑苹果、AppleTV 等设备都可以非常方便的修改网关和 DNS 指向旁路由的地址。

    推荐一个 iStoreOS 的插件包: https://github.com/AUK9527/Are-u-ok

    无线 AP

    无线 AP 采用的是一台红米 AX6000+小米 AX6000 组的有线 mash 。

    小米 AX6000

    红米 AX6000 在无线信号覆盖、散热以及稳定性等方面都极其出色,理论上一台红米 AX6000 即可覆盖,无需 2 台路由器。缺点就是红米 AX6000 不带 2.5G 网口,小米 AX6000 带有一个 2.5G 网口。

    如果不在意 2.5G 网口的话,个人还是非常推荐红米 AX6000 的。体积比小米 AX6000 小巧,300 元左右,性价比极高。设置好 Wi-Fi 之后,基本上就会忽略它的存在。

    由于主路由是软路由,负责 DHCP 和路由相关的功能。所以不需要硬路由器的路由等功能,只需硬路由器的无线信号发射功能,所以将硬路由设置为有线中继模式即可。

    核心交换机

    由于有线设备较多,交换机我选择的是磊科 GS10 ( 8 个 2.5G + 2 个万兆 SFP+),618 入手不到 300 块,性价比极高。

    该交换机外壳为金属外壳,体积非常小巧。8 个 2.5G 网口可以满足绝大多数家庭用户的需求,额外的 2 个万兆光口适合连接 NAS 和台式机等设备。

    磊科交换机

    旁路由架构带来的好处

    该架构带来的好处非常多:

    • 除了光猫外,家庭内所有设备处于同一个局域网段内,都由主路由分配 IP 地址,非常容易管理。
    • 整个家庭网络只有一个 DHCP 服务器,一层 NAT 转换。
    • 主路由可以采用性能强大的 X86 软路由,也可以替换为性价比较高的硬路由器。
    • 旁路由模式只需单网口即可,单口的 J1900 的小主机就能跑满千兆,且价格在 200 块左右,性价比极高。
    • 旁路由的接入对于整个家庭网络几乎没有任何侵入性,可以在现有的家庭网络下,完美接入交换机即可。
    • 整个网络非常的稳定,只要主路由不坏,整个家庭网络就不会崩掉。所以尽量别折腾主路由。
    • 旁路由可以随意折腾,假设旁路由挂了,家庭的主要网络还是好的,不用面对媳妇的怒火。

    后续

    后面会基于上述的物理网络架构,继续分享《家庭内网服务》、《在外访问家庭内网服务的最佳姿势》等更多内容。

    46 条回复    2024-10-29 12:52:46 +08:00
    StrongNoodles
        1
    StrongNoodles  
       42 天前
    家里当初没有预置弱电线路,又不想大动,最后只搞了三个无线路由器搞了个有线 MESH ,大佬这个留以后装修参考了。另外,问一句,放 NAS 和网络设备的置物架看着挺不错的,大佬有空的话可以回复下厂家或购买链接参考下,感谢!
    Kinnice
        2
    Kinnice  
       42 天前 via Android
    差不多,区别点是
    把所有设备网关/DNS 都切到了虚拟 IP 上
    然后主路由和旁路网关 装了 Keepalived ,旁路为 Master
    旁路网关绕过中国大陆 IP

    效果是旁路由随便拔掉,对家庭网络没影响,国内服务不会断.
    Kinnice
        3
    Kinnice  
       42 天前 via Android
    @Kinnice 手动修改网关和绑定 dhcp 网关都感觉太麻烦,还是全走一个 VIP 网关 比较舒服.
    Kinnice
        4
    Kinnice  
       42 天前 via Android
    10.0.0.1 主路由
    10.0.0.10 VIP 谁是 Master ,谁持有这个 IP ,dhcp 默认下发这个 网关和 dns
    10.0.0.100 旁路由
    fenghuang
        5
    fenghuang  
       42 天前 via Android
    经过旁路由的设备要两次 nat 吧
    x86
        6
    x86  
       42 天前
    省流:光猫->主路由->交换机->其它
    0xD800
        7
    0xD800  
       42 天前 via Android
    现在新开的宽带都没有公网了,老的有
    povsister
        8
    povsister  
       42 天前   ❤️ 1
    给提个这种配置下的一个小问题,可以思考一下。

    假设在 PVE 上有一个 web 服务,而且此 PVE 中,提供 web 服务的容器或虚拟机的默认网关是旁路由。
    此时有需求从外网访问,通过公网 IP 的端口映射,直接访问 PVE 上的 web 服务,而且 web 服务要能看见访问者的真实 IP (而不是主路由的 IP )
    请问,这种情况你的拓扑配置可以支持吗
    Jiceburger
        9
    Jiceburger  
       42 天前
    为啥不把主路由当唯一网关然后把科学数据包/DNS 请求分到旁路由上去?这样就不用去按设备改网关了(当然所有设备都具备了魔法能力也许不是一个好事...)。我家负责拨号的主路由是 PVE 下的一个爱快,我发现这玩意简单粗暴而且特别好分流...
    dhuzbb
        10
    dhuzbb  
    OP
       42 天前   ❤️ 1
    @StrongNoodles 我是淘宝购买的 80X35cm ,到手 92 。我的弱电箱在柜子中,最后安装好之后,尺寸刚刚好,一点不多不少。特别提醒一下,需要事先注意量好尺寸。购买地址: [淘宝] http://e.tb.cn/h.grAYnlhiNItchZT?tk=4eOi3i7zkod HU9046 「厨房置物架微波炉收纳架家用钢制货架地下室杂物储物架夹缝铁架子」
    点击链接直接打开 或者 淘宝搜索直接打开
    dhuzbb
        11
    dhuzbb  
    OP
       42 天前
    @Jiceburger 修改主路由的网关和 DNS 指向旁路由并不是一个好的选择。当你旁路由挂了之后,整个家庭网络都会瘫痪。上面的做法保证了无论如何家里网络都会有一条正常的线路。
    dhuzbb
        12
    dhuzbb  
    OP
       42 天前
    @0xD800 ipv6 应该有的。
    dhuzbb
        13
    dhuzbb  
    OP
       42 天前
    @povsister 应该无法看到访问者的真实 IP
    povsister
        14
    povsister  
       42 天前
    @dhuzbb
    但看到访问者的真实 IP 是一个很常见的需求,假设你暴露的不是 web 服务而是 ssh 服务,那么为了防爆破肯定要 fail2ban ,那么如果无法看到真实 IP ,确实有诸多不便。。

    这也是所有”同网段改网关走旁路由科学“方案的一个无法解决的痛点问题。
    chenbin36255
        15
    chenbin36255  
       42 天前
    @dhuzbb #11 用 paopaogateway+paopaodns dns 实现分流
    dhuzbb
        16
    dhuzbb  
    OP
       42 天前
    @povsister #14 后续会专门写一篇来介绍如何安全的对外暴露内网服务。不会存在你说的上述问题。
    zhywang
        17
    zhywang  
       42 天前
    @Kinnice 你是我自从上网冲浪以来看到的第一个在家庭网络中用 keepalived 和 vip 的人。。。。
    maybeonly
        18
    maybeonly  
       42 天前
    @povsister
    你知道的我很讨厌旁路由
    但是确定的内网 ip 和端口的话只要匹配来自这个 ip:port 的数据包直接转发给主路由
    还是做得出来的
    不过如果能做这个,大概也就不会用旁路由了

    搞好的主路由其实没那么脆弱
    很多时候被弄坏了都是因为把调度整个搞坏了

    只需要访问墙内的设备,方案有
    1) 采用不同的 ssid/vlan
    2) 在入口网关上根据 mac/ip 打 tag ,走不同的路由表
    yeh
        19
    yeh  
       42 天前
    楼主这个图挺好,简洁明了。

    需要换设备的直接换设备就行。

    我是搞了 adguard+modns+旁路由,改了局域网设备的默认 dns 为 adguard ,把 fakeip 拦截到旁路由。 旁路由挂了不影响主要的上网。
    WhatTheBridgeSay
        20
    WhatTheBridgeSay  
       42 天前
    楼主有没有发现你所谓的这种“旁路由”模式,即通过 DHCPv4 方式修改 IPV4 默认网关到单独的网关的方式会导致 IPV4 和 IPV6 的网关不一致。会有包括但不限于以下问题:
    1. UPnP 需要在 NAT 设备上自动打洞的协议会失效,因为你的默认网关并不负责 NAT
    2. 如果不在 DNS 层面 drop AAAA 就会导致你在所谓“旁路由”上部署的透明代理等 trick 通过 IPV6 逃逸
    3. 除非像楼主一样愿意不厌其烦地给每一台局域网设备手动设置网关,否则也不存在所谓“旁路由”挂了而你使用此作为默认网关的设备不受影响

    关于第三点目前 openwrt 有个很好的实践,可以通过在 DHCP 的“静态地址分配”里给客户端打“标签”,再在接口的 DHCP 服务器设置里使用 DHCP option 给不同 tag 分配不同的默认网关。

    例如下列给打了 trans_gateway 标签的指定 192.168.1.2 作为默认网关和 DNS

    tag:trans_gateway,3,192.168.1.2
    tag:trans_gateway,6,192.168.1.2
    dhuzbb
        21
    dhuzbb  
    OP
       42 天前
    @fenghuang 你说的没错。
    dhuzbb
        22
    dhuzbb  
    OP
       42 天前
    @x86 你就是课代表,挺会总结的。
    povsister
        23
    povsister  
       42 天前
    @maybeonly
    害,你没细看我给的问题。op 这种部署,主路由 DNAT 做端口映射,对于默认网关是旁路由的设备无论怎么改都只有不通一个结果。。因为设备会把回复的包通过默认网关发给旁路由,旁路由只会满脑子问号这是什么东西然后直接丢了。

    #20 说的 UPnP 还有 ipv6 逃逸问题也确实存在。anyway ,我是真不建议这种同一个网段里有俩网关设备的操作,不但和网络部署最佳实践背道而驰,而且出问题很多人甚至不知道如何排查。
    frankilla
        24
    frankilla  
       42 天前
    刷到了
    dhuzbb
        25
    dhuzbb  
    OP
       41 天前
    @WhatTheBridgeSay 我的技术水平没有达到你这样的深度,可能会出现你说的问题。但是我个人使用方面没有什么影响。需要科学上网的设备毕竟是少数,我确实是手动设置的,目的主要是尽可能少的改动主路由的设置。
    bluaze
        26
    bluaze  
       41 天前
    @dhuzbb #21 绕过大陆 ip 就好了,这样国内的流量是直接转发,不会 NAT ,海外流量反正会被代理,不影响
    bluaze
        27
    bluaze  
       41 天前
    @povsister #23 端口映射只在主路由上做,旁路由上只根据新建连接( tcp syn, udp ctstate NEW )来决定整个连接是否转发至代理端口,同时防火墙关掉 SYN-flood 防御(其实旁路由用普通 linux 发行版手搓而不是 openwrt 那么防火墙默认就没这规则)
    bluaze
        28
    bluaze  
       41 天前
    @povsister #23 ipv6 逃逸好解决,dns 关掉海外的 AAAA 解析就好,至于同一个网段里有多个网关再正常不过,简单举个例子,一个大点的公司或组织,用了一个 B 类地址比如 192.168.0.0/16 建设内网,每个 C 类地址如 192.168.x.0/24 为子网为一个部门服务,那么所有子网网关和总网关所在的那个子网里个个都是网关
    bluaze
        29
    bluaze  
       41 天前
    @WhatTheBridgeSay #20 关于 upnp ,我本来也以为是要失效的,但我家的情况却是自动找上了主路由并配置成功,当然这个成功可能并不能复制,可能跟我使用的主路由以及配置 upnp 使用的 miniupnp 相关
    maybeonly
        30
    maybeonly  
       41 天前
    @maybeonly #18 勘误,最后应该是打 mark

    @povsister #23 这个真的能做出来,在 mangle/PREROUTING 直接打 mark 走某个路由过掉,并且自己配置好防火墙,不要因为 status 不对之类的原因丢掉就好了。或者更骚的,可以在防火墙丢弃原来的数据包之前在 mangle/PREROUTING 直接 TEE 过去(谨慎使用,小心爆炸)。而且虽然我是自己搓的主路由,但是里边也是存在一些不对称路由的,比如梯子选出口,dns 分流。

    @bluaze #29 upnp 发现用的组播( ssdp ),如果是二层直通的话基本上是可以到达的。如果旁路网关做 nat 的话,还要看旁路网关实现的是 nat 几。

    所以从几个地方看,他的旁路至少在没过墙的时候没有 nat ,如果是直接走路由表或者 dae 那种基于包的转发的话,普通回包是可以到达的(不过墙)。
    不过我自己是有海外站从家里的 git 上拉代码,所以嘛。

    最后就是说,设计良好、运维得当的主路由是没那么容易挂的。旁路由要么是条件所限没办法用主路由,要么就是个过度的学习阶段。旁路由结构反而复杂,如果旁路由都真的搞明白了,也就有能力上主路由了才对。

    除了 ipv6 ,还有一些事情是旁路由无论如何做不出来的,比如我家有两条宽带。
    另一个想到的场景,就是隔壁帖子的家里一大堆 docker ,既然在自己家起了那么多 docker ,难道还用端口映射嘛?就算 docker 的 v6 稀烂,至少把 v4 宣告出来/主路由静态指下去吧,然后到边界处统一做 nat 就好了。毕竟好多 docker 也是需要墙外资源/镜像的。
    yjsdaniel
        31
    yjsdaniel  
       41 天前
    NAS 上不能跑个软路由吗?节约一个旁路由的硬件
    dhuzbb
        32
    dhuzbb  
    OP
       41 天前
    @yjsdaniel 你说的对,旁路由有 Docker 版本的形式。或者连旁路由都可以去掉,回到只用客户端软件的形式。 甚至只需 1 台机器,虚拟化出来主路由、旁路由、window 、nas 等等所有的设备。其实都看个人喜好的,有的人觉得 All in one 好,有的人觉得设备分开会比较好一些。
    bluaze
        33
    bluaze  
       41 天前
    @yjsdaniel 当然可以,只要 NAS 性能不是太差,还能不用折腾/替换现有主路由
    WhatTheBridgeSay
        34
    WhatTheBridgeSay  
       41 天前
    @bluaze #29 查了一下,UPnP 似乎是通过广播来通信的,看起来可以成功映射,具体行为我还没有尝试过,上述第一条可能不正确
    smg
        35
    smg  
       41 天前
    和你唯一的区别是你的主路由器 旁路由和 2 个无线 AP 我是用一个小米万兆 刷了 openwrt 代替。
    weicools
        36
    weicools  
       40 天前
    旁路由需要改网关和 dns 好麻烦
    TYTheKing
        37
    TYTheKing  
       40 天前
    OP 这是什么软件画的,还有图形这么丰富的嘛
    dhuzbb
        38
    dhuzbb  
    OP
       40 天前 via Android
    @TYTheKing 用的是开源的 drawio ,付费应用 processon 的替代品,自己 docker 部署的,后面的文章有提到过。默认的图标不是那么好看,图标网站上找的。
    c9792536451
        39
    c9792536451  
       21 天前
    请问图标在哪找的呀
    dhuzbb
        40
    dhuzbb  
    OP
       19 天前
    @c9792536451 后续的文章中 https://www.v2ex.com/t/1074688 有写到。主要是 2 个网站:
    https://icons8.com
    https://www.iconfont.cn
    c9792536451
        41
    c9792536451  
       9 天前
    @dhuzbb #40 谢谢
    huangya
        42
    huangya  
       4 天前
    @WhatTheBridgeSay 请问你举的打 tag 的例子,配置出来的 config 是类似于下列这样子( config dhcp 'wan'和 config host )吗?
    root@OpenWrt:/# cat /etc/config/dhcp

    config dnsmasq
    option domainneeded '1'
    option localise_queries '1'
    option rebind_protection '1'
    option rebind_localhost '1'
    option local '/lan/'
    option domain 'lan'
    option expandhosts '1'
    option authoritative '1'
    option readethers '1'
    option leasefile '/tmp/dhcp.leases'
    option resolvfile '/tmp/resolv.conf.d/resolv.conf.auto'
    option localservice '1'
    option ednspacket_max '1232'

    config dhcp 'lan'
    option interface 'lan'
    option start '100'
    option limit '150'
    option leasetime '12h'
    option dhcpv4 'server'
    option dhcpv6 'server'
    option ra 'server'
    option ra_slaac '1'
    list ra_flags 'managed-config'
    list ra_flags 'other-config'

    config dhcp 'wan'
    option interface 'wan'
    option ignore '1'
    option start '100'
    option limit '150'
    option leasetime '12h'
    list dhcp_option 'tag:trans_gateway,6,192.168.1.2'

    config odhcpd 'odhcpd'
    option maindhcp '0'
    option leasefile '/tmp/hosts/odhcpd'
    option leasetrigger '/usr/sbin/odhcpd-update'
    option loglevel '4'

    config host
    option name 'tonydt'
    option dns '1'
    option mac '00:E0:4D:71:BB:2B'
    option ip '192.168.1.100'
    option tag 'trans_gateway'
    WhatTheBridgeSay
        43
    WhatTheBridgeSay  
       4 天前
    @huangya #42
    # uci show dhcp.@host[0]
    dhcp.cfg05fe63=host
    dhcp.cfg05fe63.ip='192.168.1.100'
    dhcp.cfg05fe63.dns='1'
    dhcp.cfg05fe63.mac='AA:AA:AA:AA:AA:AA'
    dhcp.cfg05fe63.tag='gwtp'
    WhatTheBridgeSay
        44
    WhatTheBridgeSay  
       4 天前
    @huangya #42
    # uci show dhcp.lan
    dhcp.lan=dhcp
    dhcp.lan.interface='lan'
    dhcp.lan.start='100'
    dhcp.lan.limit='150'
    dhcp.lan.leasetime='24h'
    dhcp.lan.dhcpv4='server'
    dhcp.lan.ra='server'
    dhcp.lan.ra_flags='none'
    dhcp.lan.dhcp_option='6,192.168.1.120,192.168.1.120'
    dhcp.lan.dhcp_option='tag:trans_gateway,3,192.168.1.2'
    dhcp.lan.dhcp_option='tag:trans_gateway,6,192.168.1.2'
    WhatTheBridgeSay
        45
    WhatTheBridgeSay  
       4 天前
    @huangya #42 忽略掉两边的 tag 名字对不上,因为我目前用的不是这套方案,只是为了给你演示正确的配置
    huangya
        46
    huangya  
       4 天前
    @WhatTheBridgeSay 感谢,犯了个低级错误。我的 dhcp_option 是配置在 wan 这边,而不是 LAN 这边。LAN 这边已经成功。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2731 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 28ms · UTC 12:36 · PVG 20:36 · LAX 05:36 · JFK 08:36
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.