找回密码
 立即注册
img_loading
智能检测中

QQ登录

只需一步,快速开始

搜索
广告投放联系QQ68610888广告投放联系QQ68610888
楼主: easyteacher

分享一个不到60行但是非常智能的QoS脚本

[复制链接]
发表于 2020-4-8 11:58 | 显示全部楼层
dato 发表于 2020-4-7 22:23
讨论了这么多天,真是走向深渊,迷途不知返。

在没有cake之前,测试SQM一遍,这次测试导致再也对SQM提不 ...

经我测试,sqm的确没什么用。基本上没有成功分类。
只谈技术、莫论政事!(点击见详情) | 互相尊重、友善交流、切勿过度反应。胡乱输入灌水等操作将会被封禁ID。
回复 支持 反对

使用道具 举报

发表于 2020-4-8 12:14 | 显示全部楼层
easyteacher 发表于 2020-4-7 23:27
  • fq_codel确实会造成游戏里面移动漂移,换成cake就好了。
  • 用connmark给连接中所有的包打标,容易 ...

  • 再仔细观察,的确ingress识别不太好。能识别一部分,大部分不能识别。可能是jump出的链的问题。不像connmark,上下行都可以识别。

    点评

    op论坛上有用veth的,我试了一下,不知道为什么容易上不了网,体现在刚连上wifi的时候可以上网,过一段时间就上不了。。  详情 回复 发表于 2020-4-8 12:27
    op论坛上有用veth的,我试了一下,不知道为什么容易上不了网,体现在刚连上wifi的时候可以上网,过一段时间就上不了。。  详情 回复 发表于 2020-4-8 12:27
    只谈技术、莫论政事!(点击见详情) | 互相尊重、友善交流、切勿过度反应。胡乱输入灌水等操作将会被封禁ID。
    回复 支持 反对

    使用道具 举报

     楼主| 发表于 2020-4-8 12:27 | 显示全部楼层
    wulishui 发表于 2020-4-8 12:14
    再仔细观察,的确ingress识别不太好。能识别一部分,大部分不能识别。可能是jump出的链的问题。不像connm ...

    op论坛上有用veth的,我试了一下,不知道为什么容易上不了网,体现在刚连上wifi的时候可以上网,过一段时间就上不了。。

    点评

    应该是jump出的主链的问题,没处理好。有无脚本?放上来我看看。  详情 回复 发表于 2020-4-8 12:39
    只谈技术、莫论政事!(点击见详情) | 互相尊重、友善交流、切勿过度反应。胡乱输入灌水等操作将会被封禁ID。
    回复 支持 反对

    使用道具 举报

     楼主| 发表于 2020-4-8 12:27 | 显示全部楼层
    wulishui 发表于 2020-4-8 12:14
    再仔细观察,的确ingress识别不太好。能识别一部分,大部分不能识别。可能是jump出的链的问题。不像connm ...

    op论坛上有用veth的,我试了一下,不知道为什么容易上不了网,体现在刚连上wifi的时候可以上网,过一段时间就上不了。。
    只谈技术、莫论政事!(点击见详情) | 互相尊重、友善交流、切勿过度反应。胡乱输入灌水等操作将会被封禁ID。
    回复 支持 反对

    使用道具 举报

    发表于 2020-4-8 12:39 | 显示全部楼层
    easyteacher 发表于 2020-4-8 12:27
    op论坛上有用veth的,我试了一下,不知道为什么容易上不了网,体现在刚连上wifi的时候可以上网,过一段时 ...

    应该是jump出的主链的问题,没处理好。有无脚本?放上来我看看。

    点评

    https://forum.openwrt.org/t/ultimate-sqm-settings-layer-cake-dscp-marks-new-script/53209  详情 回复 发表于 2020-4-8 17:35
    只谈技术、莫论政事!(点击见详情) | 互相尊重、友善交流、切勿过度反应。胡乱输入灌水等操作将会被封禁ID。
    回复 支持 反对

    使用道具 举报

    发表于 2020-4-8 14:10 | 显示全部楼层
    当时在采用并发抑制时,只研究过limit和connect limit?首先这种软件的抑制作用有效果,但是比较难以理解。limit比较平台不像connlimit直接就是断线提示。一旦应用limit这这种并发数抑制,既然达到了它的上限,下一个并发就无法建立连接,自然就断网了
    在Preventing Brute Force Attacks搜索 rate_limit那段提供了一种很好的保障高优先级端口的iptables顺序。
    https://wiki.dd-wrt.com/wiki/ind ... Brute_Force_Attacks

    当然这种方法如今是不会再采用了,虽然端口qos无法精确的分辨游戏流量,但仍然可以类似L7一样更进一步的设定srcIP/dstIP来进一步缩小范围解决延迟问题。而在办公环境没有延迟要求,qos已经是无视任何p2p的存在。p2p流量只有避让的份,没有抢夺的能力。
    SQM这种声称公平的针对流/针对ip的算法。爱好了精确的优先级控制,这种东西反而不知道怎么玩。另外一个可能的问题是不是带宽不够大,硬件性能不足。
    只谈技术、莫论政事!(点击见详情) | 互相尊重、友善交流、切勿过度反应。胡乱输入灌水等操作将会被封禁ID。
    回复 支持 反对

    使用道具 举报

     楼主| 发表于 2020-4-8 17:35 | 显示全部楼层
    wulishui 发表于 2020-4-8 12:39
    应该是jump出的主链的问题,没处理好。有无脚本?放上来我看看。
    1. #!/bin/bash -x
    2. IPT="iptables"
    3. ##########
    4. #Veth start
    5. ##########
    6. WANIF="pppoe-wan" #wan interface

    7. tc qdisc add dev wlan0 root mq #setup multi queue for wifi device
    8. ## set up veth devices to handle inbound and outbound traffic
    9. ip link show | grep veth0 || ip link add type veth

    10. ## get new veth interfaces up
    11. ip link set veth0 up
    12. ip link set veth1 up

    13. ## trun on promisc mode,sometimes it's needed to make bridge work
    14. ip link set veth1 promisc on

    15. ## add veth1 to bridge
    16. brctl addif br-lan veth1

    17. ## just to make sure there's nothing inside this table
    18. ip rule del priority 100
    19. ip route flush table 100

    20. ## add routing for veth0 this will handle all traffic
    21. ip route add default dev veth0 table 100
    22. ip rule add iif $WANIF table 100 priority 100
    23. #########
    24. #Veth end
    25. #########
    26. ##ipset for streaming sites.they are being filled by dnsmasq
    27. ipset create streaming hash:ip
    28. ipset create usrcdn hash:ip
    29. ipset create bulk hash:ip
    30. ipset create latsens hash:ip

    31. $IPT -t mangle -N dscp_mark > /dev/null 2>&1
    32. $IPT -t mangle -F dscp_mark
    33. ## check if POSTROUTING already exits then jumps to our tables if not, add them

    34. $IPT -t mangle -L POSTROUTING -n | grep dscp_mark || $IPT -t mangle -A POSTROUTING -j dscp_mark

    35. iptmark(){
    36.     $IPT -t mangle -A dscp_mark "$@"
    37. }

    38. ## start by washing the dscp to CS0

    39. iptmark -j DSCP --set-dscp 0

    40. #A robust 2 rules to detect realtime traffic

    41. # mark connections that go over 115 packets per second, not prioritized
    42. iptmark -p udp -m hashlimit --hashlimit-name udp_high_prio --hashlimit-above 115/sec --hashlimit-burst 50 --hashlimit-mode srcip,srcport,dstip,dstport -j CONNMARK --set-mark 0x55 -m comment --comment "connmark for udp"

    43. # unmarked UDP streams with small packets get CS6
    44. iptmark -p udp -m connmark ! --mark 0x55 -m multiport ! --ports 22,25,53,67,68,123,143,161,162,514,5353,80,443,8080,60001 -m connbytes --connbytes 0:940 --connbytes-dir both --connbytes-mode avgpkt -j DSCP --set-dscp-class CS6 -m comment --comment "small udp connection gets CS6"

    45. #large udp streams like video call get AF41
    46. iptmark -p udp -m connmark ! --mark 0x55 -m multiport ! --ports 22,25,53,67,68,123,143,161,162,514,5353,80,443,8080,60001 -m connbytes --connbytes 940:1500 --connbytes-dir both --connbytes-mode avgpkt -j DSCP --set-dscp-class AF41 -m comment --comment "large udp connection gets AF41"

    47. ########################################
    48. # Latency Sensitive (gaming/voip)
    49. ########################################
    50. ##ICMP, to prioritize pings
    51. iptmark -p icmp -j DSCP --set-dscp-class CS5 -m comment --comment "ICMP-pings"

    52. #DNS traffic both udp and tcp
    53. iptmark -p udp -m multiport --port 53,5353,8888 -j DSCP --set-dscp-class CS5 -m comment --comment "DNS udp"
    54. iptmark -p tcp -m multiport --port 53,5353,8888 -j DSCP --set-dscp-class CS5 -m comment --comment "DNS tcp"

    55. #NTP
    56. iptmark -p udp -m multiport --port 123 -j DSCP --set-dscp-class CS6 -m comment --comment "NTP udp"

    57. #High priority ipset, i use for pubgM
    58. iptmark ! -p tcp -m set --match-set latsens src,dst -j DSCP --set-dscp-class CS6 -m comment --comment "latency sensitive ipset" ## set dscp tag for Latency Sensitive (latsens) ipset,udp

    59. iptmark -p tcp -m set --match-set latsens src,dst -j DSCP --set-dscp-class CS5 -m comment --comment "latency sensitive ipset" ## set dscp tag for Latency Sensitive (latsens) ipset

    60. ########
    61. ##Browsing
    62. ########
    63. ## medium priority for browsing
    64. iptmark -p tcp -m multiport --ports 80,443,8080 -j DSCP --set-dscp-class CS3 -m comment --comment "Browsing at CS3"

    65. ##################
    66. #TCP SYN,ACK flows
    67. ##################
    68. #Make sure ACK,SYN packets get priority (to avoid upload speed limiting our download speed)
    69. iptmark -p tcp --tcp-flags ALL ACK -m length --length :128 -j DSCP --set-dscp-class CS3
    70. iptmark -p tcp --tcp-flags ALL SYN -m length --length :666 -j DSCP --set-dscp-class CS3

    71. #Small packet is probably interactive or flow control
    72. iptmark -m dscp ! --dscp  24 -m dscp ! --dscp  18 -m dscp ! --dscp  34 -m dscp ! --dscp  40 -m dscp ! --dscp  48 -m length --length 0:500 -j DSCP --set-dscp-class CS3

    73. #Small packet connections: multi purpose (don't harm since not maxed out)
    74. iptmark -m dscp ! --dscp  24 -m dscp ! --dscp  18 -m dscp ! --dscp  34 -m dscp ! --dscp  40 -m dscp ! --dscp  48 -m connbytes --connbytes 0:250 --connbytes-dir both --connbytes-mode avgpkt -j DSCP --set-dscp-class CS3


    75. ########################################
    76. # Streaming Media (videos/audios)
    77. ########################################
    78. #Known video streams sites like netflix
    79. iptmark -m set --match-set streaming src,dst -j DSCP --set-dscp-class AF41 -m comment --comment "video audio stream ipset"

    80. # some iptv provider's use this port
    81. iptmark -p tcp -m multiport --ports 1935,9982 -j DSCP --set-dscp-class AF41 -m comment --comment "some iptv streaming service"

    82. #known usrcdn like google or akamai

    83. iptmark -m set --match-set usrcdn src,dst -j DSCP --set-dscp-class AF21 -m comment --comment "usrcdn ipset"

    84. #########################################
    85. # Background Traffic (Bulk/file transfer)
    86. #########################################
    87. #bulk traffic ipset, like windows udates and steam updates/downloads
    88. iptmark -p tcp -m set --match-set bulk src,dst -j DSCP --set-dscp-class CS1 -m comment --comment "bulk traffic ipset"
    89. iptmark -p udp -m set --match-set bulk src,dst -j DSCP --set-dscp-class CS1 -m comment --comment "bulk traffic ipset"
    90. iptmark -p tcp -m connbytes --connbytes 350000: --connbytes-dir both --connbytes-mode bytes -m dscp --dscp-class CS0 -j DSCP --set-dscp-class CS1 -m comment --comment "Downgrade CS0 to CS1 for bulk tcp traffic"
    91. iptmark -p tcp -m connbytes --connbytes 350000: --connbytes-dir both --connbytes-mode bytes -m dscp --dscp-class CS3 -j DSCP --set-dscp-class CS1 -m comment --comment "Downgrade CS3 to CS1 for bulk tcp traffic"
    92. iptmark -p udp -m multiport --port 60001 -j DSCP --set-dscp-class CS1 -m comment --comment "bulk torrent port UDP"


    93. #tcpdump rule, copy and paste this rule into terminal, this rule is used to capture realtime traffic, you can change ip to what you like
    94. #tcpdump -i br-lan host 192.168.1.126 and udp and portrange 1-65535 and !port 53 and ! port 80 and ! port 443 -vv -X -w /root/cap-name.pcap
    复制代码

    https://forum.openwrt.org/t/ulti ... ks-new-script/53209

    点评

    测试时这两条发现有些奇怪: 65598 5612K MARK tcp -- * * 0.0.0.0/0 0.0.0.0/0 limit: up to 2kb/s burst 100kb mode srcip-dstip htable-max 1000000 htable-gcinterva  详情 回复 发表于 2020-4-11 13:04
    说到底还是建立在br-lan上。  详情 回复 发表于 2020-4-8 18:34
    只谈技术、莫论政事!(点击见详情) | 互相尊重、友善交流、切勿过度反应。胡乱输入灌水等操作将会被封禁ID。
    回复 支持 反对

    使用道具 举报

    发表于 2020-4-8 18:34 | 显示全部楼层
    easyteacher 发表于 2020-4-8 17:35
    https://forum.openwrt.org/t/ultimate-sqm-settings-layer-cake-dscp-marks-new-script/53209

    说到底还是建立在br-lan上。
    只谈技术、莫论政事!(点击见详情) | 互相尊重、友善交流、切勿过度反应。胡乱输入灌水等操作将会被封禁ID。
    回复 支持 反对

    使用道具 举报

    发表于 2020-4-11 13:04 | 显示全部楼层

    测试时这两条发现有些奇怪:
    65598 5612K MARK       tcp  --  *      *       0.0.0.0/0            0.0.0.0/0            limit: up to 2kb/s burst 100kb mode srcip-dstip htable-max 1000000 htable-gcinterval 10000 htable-expire 10000 MARK xset 0xc/0xff
    73667 4902K MARK       tcp  --  *      *       0.0.0.0/0            0.0.0.0/0            limit: above 20002kb/s burst 39mb mode srcip-dstip htable-max 1000000 htable-gcinterval 10000 htable-expire 10000 MARK xset 0xe/0xff

    前面一条是upto,没什么奇怪,后面一条是above,这就奇怪了,你看我已经设了非常大的值,而实际上网速只有一百几十k,无论如何都达不到设定的值的,可是依然有流量。这用法应该是不严谨。
    只谈技术、莫论政事!(点击见详情) | 互相尊重、友善交流、切勿过度反应。胡乱输入灌水等操作将会被封禁ID。
    回复 支持 反对

    使用道具 举报

    发表于 2020-4-11 15:14 | 显示全部楼层
    感谢分享!!!!
    只谈技术、莫论政事!(点击见详情) | 互相尊重、友善交流、切勿过度反应。胡乱输入灌水等操作将会被封禁ID。
    回复 支持 反对

    使用道具 举报

    发表于 2020-4-12 11:07 | 显示全部楼层
    本帖最后由 wulishui 于 2020-4-13 09:45 编辑

    回去看以往他们做过的qos,发现很多人都犯了两个白痴一般的错误,包括某些屌炸天,吹得牛屄哄哄的人:
    1,分类至设定10,20,30,40几个,但是default(未归类)值却设为255、9999甚至65535到一个完全不存在的分类上,以为这只是“随便”设的,用不到。在用HTB还好,虽然效果差了,起码还能用,在HFCS上会直接断网,因为未归类数据不知道往哪走,直接被丢弃了。而在HTB中,未归类无规则指定的话,将使用总流量,也就是未归类根本无流控能力。
    2,在iptables打mark上,一些“被希望”有高权端口比如53,一些高权限IP,比如192.168.1.2,在子链直接RETURN,以为不处理它,它就至高无上了。产生这个白痴做法的原因来源于第1条:完全不懂未归类是什么。不打标的数据归入未归类,HTB默认未归类的权限处在最低,也就是它只能蹲着仰望前面有归类的数据走完才轮得到它。可以假设认为未归类的优先权最高,那么寥寥几条规则能归类多少数据?其它所有未归类数据都走最高优先级,那qos还有卵用?
    甚至还有人在主链上RETURN啊。。。
    只谈技术、莫论政事!(点击见详情) | 互相尊重、友善交流、切勿过度反应。胡乱输入灌水等操作将会被封禁ID。
    回复 支持 反对

    使用道具 举报

    发表于 2020-4-12 15:48 来自手机 | 显示全部楼层
    本来想搜索一下default的解释,在一篇hfsc文档确实提到如果不设定default这些未标记的包将被drop。至于htb在linux man手册的解释看不懂。做为一个有经验的用户理解tc的class,书写出有先后优先级的脚本,甚至理解default的用法应该还是基本要求。非标标记置于最低优先级也是基本常识。至于iptables return,这也就适合那些不存在connmark的qos,像ros的包到链接的过程就用return,一旦匹配不再匹配剩下的规则加快效率。新手还是建议先了解tomato的/etc/qos。
    Qos要解决的延迟和流量两大问题,2012年看到人家在adsl线路的心得。根据自己在4m adsl线路最终得到了一个60/80的htb。线路承载60%的流量时,可以获得极好的延迟。承载80%时延迟还可以接受。超过80%时延迟开始波动,甚至下行带宽都变窄。也就是当线路流量低于80%时是不需要qos的存在,而qos往往是要抑制流量超过80%的情况。
    在这个框架下,把流量分组拆成10/20/30/40 4组,比例1:1:3:5,实际3组就够了。只是想在10组的游戏获得绝对的低延迟通过htb prio优先级仍然优先20这组,占用20%的上行。让30的web浏览+40的p2p抑制在80%的上限。这么多年过去了,已经跳不出这个框架。我甚至认为这个框架是绝对正确的。
    神秘的80%,很多qos教程都会说要有好效果要设定在总带宽80%。其实不管是总带宽还是里面的class流量分组,都需要注意这个80%饱和流量问题。现实是残酷的,实际上行就那么点,那个奉为真理的80%设定法又会变成80%*80%。所以采用1:2分组抑制80%的30+40,并互相借用可以有效的提高带宽利用率。实际在光纤可以提高到95%。至于sqm上次跟人争论时只有75%吧。
    其它的标记问题,如果无法理解80%的饱和流量导致的延迟变化,再怎么标也无济于事,因为在低于80%的流量时,不需要qos也有极好的延迟,当然有了qos它能导致19ms和接近600ms的两种延迟极端。
    至于sqm在高饱和的线路是否能达到普遍的19ms,至今仍然是个疑问。

    点评

    官方tomato无/etc/qos的喔,只有layer7。无论正在运行的tomato系统中还是源码中,都没有。我是直接翻看qos的C语言源码来研究,“窃”了些它的u32 filter来用。 default还有个问题,使用一个不存在的值,那么未归类  详情 回复 发表于 2020-4-13 10:10
    只谈技术、莫论政事!(点击见详情) | 互相尊重、友善交流、切勿过度反应。胡乱输入灌水等操作将会被封禁ID。
    回复 支持 反对

    使用道具 举报

    发表于 2020-4-13 10:10 | 显示全部楼层
    本帖最后由 wulishui 于 2020-4-13 10:29 编辑
    dato 发表于 2020-4-12 15:48
    本来想搜索一下default的解释,在一篇hfsc文档确实提到如果不设定default这些未标记的包将被drop。至于htb ...

    官方tomato无/etc/qos的喔,只有layer7。无论正在运行的tomato系统中还是源码中,都没有。我是直接翻看qos的C语言源码来研究,“窃”了些它的u32 filter来用。
    default还有个问题,使用一个不存在的值,那么未归类将使用总流量,也就是无带宽限制,所有优先级高的数据都给它关笼子了,而流氓却完全不受控,这真是天大的笑话。
    CONNMARK --restore-mark之后就不要再RETURN了,因为最后还要 CONNMARK --save-mark的。
    你不理解我说的RETURN,是不打mark直接RETURN(正常做法是先set-mark,再RETURN)。某“想要”获得优先权的端口(原文是这么说的),不打mark直接RETURN。跟上面说的那样,不打mark就走default,优先级最低,那么能获得“想要”的结果么?
    来看一下这个当年很(吹)牛屄(指的是人,不是代码)的代码,是不是很熟悉啊(因为qos这块你也是前辈,当年你都在场):
    tc qdisc add dev imq0 root handle 1: htb default 9999
    tc qdisc add dev imq1 root handle 1: htb default 9999

    tc class add dev imq1 parent 1: classid 1:1 htb rate $((UP))kbps
    tc class add dev imq0 parent 1: classid 1:1 htb rate $((DOWN))kbps

    tc class add dev imq0 parent 1:1 classid 1:a255 htb rate $((DOWN/4))kbps quantum 15000 prio 1
    tc filter add dev imq0 parent 1:0 protocol ip prio 5 handle 255 fw flowid 1:a255
    tc class add dev imq1 parent 1:1 classid 1:a255 htb rate $((UP))kbps quantum 15000 prio 1
    tc filter add dev imq1 parent 1:0 protocol ip prio 5 handle 255 fw flowid 1:a255

    tc class add dev imq0 parent 1:1 classid 1:a254 htb rate $((DOWN/10))kbps ceil $((DOWN*7/10))kbps quantum 8000 prio 3
    tc qdisc add dev imq0 parent 1:a254 handle a254 sfq perturb 12
    tc filter add dev imq0 parent 1:0 protocol ip prio 10 handle 254 fw flowid 1:a254
    tc class add dev imq1 parent 1:1 classid 1:a254 htb rate $((UP/8))kbps ceil $((UP/2))kbps quantum 1500 prio 3
    tc qdisc add dev imq1 parent 1:a254 handle a254 sfq perturb 12
    tc filter add dev imq1 parent 1:0 protocol ip prio 10 handle 254 fw flowid 1:a254

    -----default值9999喔(后面并没有相应的class和filter限制)。。。。。。。。。。。。。这不够夸张,csdn上有设65535的喔,而且明确说明“只是设个值,反正用不到”。。。。。。
    再看iptables:
    $IPM -A x -p udp --sport 53 -j RETURN
    $IPM -A x -p udp --dport 53 -j RETURN
    $IPM -A x -p tcp ! --syn -m length --length :100 -j RETURN
    $IPM -A x -p tcp ! --syn -m length --length :80 -j RETURN

    -----子链不打mark,直接RETURN的喔。。。。。。。

    上面造成的后果就是,明明你想要降低优先权的数据比如BT数据,指定的是“以为”最低的999分类。而又“想要”最高优先权的53端口数据,走的是default的9999分类。。。“降低”优先权的反而权限比“最高”优先权的权限还高。。。
    所以我都怀疑,这么多年来,qos产生的心理作用比物理作用更大。
    只谈技术、莫论政事!(点击见详情) | 互相尊重、友善交流、切勿过度反应。胡乱输入灌水等操作将会被封禁ID。
    回复 支持 反对

    使用道具 举报

    发表于 2020-4-13 21:58 | 显示全部楼层
    大佬萌新请教几个问题:
    1.TC是啥IPK啊?
    2.为啥后边3个IPK缺少内核啊?如图
    3.那个代码是不是用putty输入进路由的啊??
    今晚试着做遇到那么多问题

    本帖子中包含更多资源

    您需要 登录 才可以下载或查看,没有账号?立即注册

    ×
    只谈技术、莫论政事!(点击见详情) | 互相尊重、友善交流、切勿过度反应。胡乱输入灌水等操作将会被封禁ID。
    回复 支持 反对

    使用道具 举报

    发表于 2020-6-12 16:50 | 显示全部楼层
    来个详细教程给小白用,就更好了。。。。
    只谈技术、莫论政事!(点击见详情) | 互相尊重、友善交流、切勿过度反应。胡乱输入灌水等操作将会被封禁ID。
    回复 支持 反对

    使用道具 举报

    您需要登录后才可以回帖 登录 | 立即注册

    本版积分规则

    关闭

    欢迎大家光临恩山无线论坛

    只谈技术、莫论政事!切勿转播谣言!为了你也为了他人。
    只谈技术、莫论政事!(点击见详情) 切记不要随意传播谣言,把自己的日子过安稳了就行,为了自己好也为了大家好。 恩山无线论坛欢迎您的来访,请互相尊重、友善交流,建议保持一颗平常心看待网友的评论,切勿过度反应。

    查看 »

    有疑问请添加管理员QQ86788181|手机版|小黑屋|Archiver|恩山无线论坛(常州市恩山计算机开发有限公司版权所有) ( 苏ICP备05084872号 )

    GMT+8, 2025-7-20 12:21

    Powered by Discuz! X3.5

    © 2001-2025 Discuz! Team.

    | 江苏省互联网有害信息举报中心 举报信箱:js12377 | @jischina.com.cn 举报电话:025-88802724 本站不良内容举报信箱:68610888@qq.com

    快速回复 返回顶部 返回列表