当前位置:首页 > 互联网 > 正文内容

提升家庭网络稳定性:OpenWRT限制京东云连接数教程

cmc5个月前 (05-10)互联网252

连接数量对网速的影响

之前我并没有意识到连接数量对网络稳定性和网络速度存在影响,但是查阅部分资料后,发现活动连接数量过多

会影响网速的原因主要包括以下几个方面:

  1. 带宽消耗:每个连接都占用了网络带宽,活动连接数量增加时,带宽会被多个连接分摊,导致每个连接可用

    的带宽减少,最终导致整体网速下降。

  2. 路由器/网络设备的处理能力:路由器和其他网络设备在处理大量连接时会增加工作负荷。如果设备的处理能

    力有限,过多的连接会导致设备反应变慢,增加数据包的处理延迟,进而影响网速。

  3. 网络拥塞:过多的连接可能会导致网络拥塞,尤其是在家庭局域网中。网络拥塞会导致数据包丢失、重传等

    问题,进一步降低实际的传输速度。

  4. NAT表的限制:对于使用NAT(网络地址转换)的网络,每个连接需要在NAT表中建立一条记录。NAT表的

    容量有限,当连接数过多时,NAT表可能会溢出或处理速度变慢,导致网络性能下降。

  5. CPU和内存负载:如果你的设备(如计算机或服务器)处理大量的并发连接,CPU和内存负载会增加,可能

    导致设备性能下降,进而影响网速。例如我的Asus Acrh17,在12000活动连接数时,内存占用超过70%,

    此时局域网内其他设备明显可感觉到延迟。

  6. 运营商活动连接数量限制:大部分运营商会对每户入网的宽带进行活动连接数量限制,不同地区、不同运营商

    甚至所属不同片区均不相同,当达到一定量的活动连接数量时,更多的连接会进行丢包处理,所以会直接影响

    到使用者的体验。目前检索到的消息可以查看这里:

宽带连接数限制测试结果(来源):上海电信:公网不限制,私网 8000,云宽带 2800 上海移动:私网 2500 上海联通:公网 6000,私网 1500 江苏移动:公网不限制,私网 2500 浙江移动:公网 6000,私网 2000 江苏联通:公网 6000,私网 3000 江苏电信:公网不限制,私网 6000
 

本地网络环境介绍

简单介绍一下我本地的网络环境:


notion image


在这个家庭网络的拓扑结构中:
  1. 光猫:桥接模式(中兴老款F450,已尝试修改了硬桥接,未使用软桥接方式,同时,未做光猫本身最大

    连接数修改)

  2. 主路由:ASUS-ACRH17,系统为OpenWRT,开启Fullcone NAT。

  3. 旁路由(旁路网关):X86虚拟机(Hyper-V虚拟化),系统为OpenWRT的衍生版本ImmortalWRT

    (本篇中并不重要)。

  4. 网心云:X86版本(Hyper-V虚拟化)并配置静态地址,网关直接指向主路由,避免流量经过旁路。

      配置文件限制方法

    主路由目前使用的OpenWRT版本为24.10,在这个OpenWRT版本中已经使用nftable取代了iptables,所以

    在网上找到的很多iptables无法使用或者会提示过老版本,配置后查看规则计数器数据为0,没有生效。同时

    nftable在OpenWRT上并没有提供luci app插件以及对应的UI操作界面,所以就需要我们自行编写nftable规

    则进行连接数的控制。


    notion image


    在另一方面,由于主路由器开启了Fullcone NAT模式,所以使得所有来自外部的连接请求都可以通过主路由访问

    内网的网心云,且不再使用UPNP。这意味着,如果在 nftables 中通过ip fileter添加了针对网心云的INPUT和

    OUTPUT限制规则,那这些规则就不能正确匹配外部流量,所以通过INPUT和OUTPUT规则进行过滤没有任何的

    效果,这也是我在尝试之后,发现匹配规则数量为什么一直都是0的原因。

    同时,使用 conntrack (conntrack需要安装,一般都没有预装)查看连接时,我发现连接信息已经包含NAT处

    理后的外部IP地址和端口,而nftables规则要考虑对NAT后的地址和端口进行限制,那么目标就来到了 forward

    链上。

    Plain text

    首先确保OpenWRT已经安装了以下内核,如果缺少的话,在使用nftable时候会提示报错:“Error: Could

    not process rule: No such file or directory”。

    modprobe nft_chain_nat
    modprobe nft_counter
    modprobe nft_ct
    modprobe nft_limit
    modprobe nft_reject

    Shell

    可以通过如下命令进行安装:

    opkg update
    opkg install kmod-nft-core kmod-nft-nat kmod-nft-connlimit

    Shell


    下面编辑文件限制udp连接数,(京东云如果限制所有连接数,会导致与云平台失联,虽然跑的很欢,但是积分很低)。编辑/etc/nftables.d/10-custom-filter-chains.nft 文件,取消注释并修改 user_post_forward 链,像这样:

    chain user_post_forward {
        type filter hook forward priority 1; policy accept;
        # 限制从 192.168.0.4 发出的 UDP 连接数
            ip protocol udp ip saddr 192.168.0.4 ct count over 5000 counter drop
    
            # 限制发往 192.168.0.4 的 UDP 连接数
            ip protocol udp ip daddr 192.168.0.4 ct count over 5000 counter drop
    }
    Plain text

    然后重启firewall/etc/init.d/firewall restart

    /etc/init.d/firewall restart
    Shell

    通过nft list进行查看规则是否已经添加成功

    nft -a list ruleset

    Shell

    如果看到
    chain FORMARD { # handle 1
        type filter hook input priority filter - 1; policy accept;
        ip saddr X.X.X.X ct count over 5000 counter packets 0 bytes 0 drop # handle 36
        ip daddr X.X.X.X ct count over 5000 counter packets 0 bytes 0 drop # handle 37
     }


    Plain text
    则表示添加规则成功。
     

    OpenWRT查看端口占用

    1. 查看单独端口占用情况及对应程序,例如8080为要进行查看的端口

    netstat -tulnp | grep 8080


    Shell

    Shell

     

    2.查看客户端IP地址端口占用情况

    netstat -tulnp | grep <客户端IP>
    最终,通过Grafana查看效果(需要单独配置):



    总结归纳

    整体所需的软件包为:
    • kmod-nft-core(核心)

    • kmod-nft-nat(nat相关规则配置参数支持)

    • kmod-nft-connlimit(计数相关规则配置参数支持)

    • conntrack(查看连接,可选)

    以上软件包均可通过OPKG进行直接安装。

    目前配置完成之后(我配置的来源和目的地活动连接数量均为4000),主路由显示的活动连接数量大概在5000

    左右浮动,至于为什么没有完全和规则匹配上,我的猜想可能是因为有一些长连接还没有释放的原因,后续会进

    行持续观察。

    限制活动连接数量之后,对网心云的跑量影响需要等待几天才能看到,之后我也会更新到这里。目前来看,在上

    传带宽方面没有任何的变化,依旧可以跑满限制带宽,理论上延迟应该也可以降下来,但存在一个副作用,就是

    丢包也会上涨,这部分会影响多少的收益暂时还不清楚,同时具体连接数限制的数值的设定,也需要持续的观察

    才能确认最优配置。

    同时上述规则中没有配置IPV6的相关nftable规则,因为目前我的环境和观察下,IPV6的量只占很少的一部分,

    如果之后量起来了,对本地的网络环境已经有了体感的影响,我也会进行研究相关配置。

    这篇文章也不仅仅能应用于网心云,当你需要对局域网内的任何客户端,或者说是局域网内任何IP进行活动连

    接数量的限制时,都可以根据上面的内容进行操作,尤其是对于抖音、快手、爱奇艺这种活动连接请求大户。


    扫描二维码推送至手机访问。

    版权声明:本文由陈茂春的博客发布,如需转载请注明出处。

    本文链接:https://www.0817cmc.com/post/790.html

    分享给朋友:

    相关文章

    短信黄段子出炉流程调查 写手多是学生白领

    收到*情、黄色暧昧短信,很多手机用户都有这样的经历,那么黄色短信的源头在哪里?在“业内人士”的帮助下,记者揭开了这黄色短信的生产链条。“现在SP(内容服务提供商)这个行业被人痛恨,我也因此不干了。”何畏(化名),一名短信写手,毕业于计算机专...

    祝大家新年快乐

    日:给你温暖;月:给你温馨;星:给你浪漫;风:给你清爽;雨:给你滋润;雪:给你完美;霜,给你无暇;冰,给你晶莹;我:给你祝福;送一份美丽让你欢笑,送一份祝福让你骄傲,送一份开心让你不老,送一份梦想让你逍遥,送一份真情不要回报,再送你平安才算...

    2万元的笔记本卖6千 一个奸商的忏悔录

    我的低价陷井  这世界,什么样的人不爱占小便宜?   即然有“低价”需求,自然要有“低价”的供应,所谓供求平衡嘛!   眼见各网站电子商务开展的如火如茶,若不趋势捞得一笔,怎对得起生我养育我的父老乡亲!   那就开个网站吧?简单!稍稍懂点简...

    脱吧,都脱光了,还能脱什么

    脱吧,都脱光了,还能脱什么

        只要环顾四周,舆论与报道,一夜情与从妓如流现象,从眼睛到耳朵,我们都可以深刻的感到这个时代已经不知不觉的进入了生殖器的时代。我毫不保守的预测,一场崭新的生殖器崇拜复兴时期正在来临,我们伟大的祖先那辉煌的...

    系统敏感端口真正的关闭大法

    大致的敏感端口有:23、135、137-139、445、1433、3389等等。   23端口关闭大法:开始-运行-CMD.net stop telnet;   135端口关闭大法:控制面版-管理工具-服务-找到 remote proced...

    怎样避免被搜索引擎视为作弊

    一个网站要想成功注册,它起码应具备两个条件,一是网站本身要有较好的内容和设计,二是网站没有作弊行为。这里所谓的“作弊”,是指采用一些特殊的、有悖常规的网页设计手法,以期提高网站排名的行为。如何设计好网站,相关的资料很多,本文就不废话了。这里...

    发表评论

    访客

    ◎欢迎参与讨论,请在这里发表您的看法和观点。