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

求解锐捷断开连接后仍可上网的 bug

  •  
  •   BingoXuan · 2016-11-06 22:18:26 +08:00 · 3037 次点击
    这是一个创建于 2974 天前的主题,其中的信息可能已经有所发展或是发生改变。
    事件经过:
    情况 1:学校网络需要锐捷认证,今天打开虚拟机发现断开链接后依旧能上网。手动在 dock 上选择退出锐捷后依旧可以上网。但是设置共享网络后,无法上网。
    情况 2:重启后,连接锐捷并在 Activity Monitor 中选择强制退出,发现依旧可以上网

    可连接网络情况:
    1.浏览器关闭 ss 后,国内网站和 google 服务( YouTube 可看)依旧可以使用
    2.aria2c 可以下载百度网盘文件, you-get 也可以使用
    3.可以分享给 parallels 里的 android 虚拟机使用

    软硬件情况:
    设备: MacBook Air 2015 early
    OS : macOS 10.12.1
    网卡:未知厂家的 AX88x72A USB 网卡
    锐捷终端: RG_SU_For_MAC_1_30 (万年不更新(=゚ω゚)ノ)

    猜测:
    我的猜测是锐捷认证后,主进程负责检测到 ip ,另外开启心跳包进程。当主进程发现新 ip 时候才会自动终结心跳包进程。由于强行退出主程序,但是心跳包进程并没有结束,所以维持认证。
    但是要怎么确认我的猜测是对的呢?并不熟悉网络配置,希望熟悉的 v 友能分析一下。
    12 条回复    2016-11-09 16:42:04 +08:00
    Roboo
        1
    Roboo  
       2016-11-06 22:31:49 +08:00 via Android
    也许是没配置心跳
    认证成功后除非手动下线否则一直在线
    但是不应该有这么低级的错误 23333
    BingoXuan
        2
    BingoXuan  
    OP
       2016-11-06 22:42:03 +08:00
    @Roboo 我在舍友的 windows 上故技重施,同样的 bug 也出现了。就差 Linux 了
    geekrainy
        3
    geekrainy  
       2016-11-06 22:44:32 +08:00 via Android
    之前我们学校也有这个问题,然后,火速修复了
    BingoXuan
        4
    BingoXuan  
    OP
       2016-11-06 22:53:54 +08:00
    @geekrainy

    感觉自己太作死了,竟然把这个 bug 发在全球工单系统上 2333333
    czkwg8
        5
    czkwg8  
       2016-11-06 23:09:37 +08:00   ❤️ 1
    无所谓的啦,完全替代 Linux1.31 版本的 mentohust 前段时间已经写好了,客户端验证什么的完全没问题,可过所有保护措施
    dream7758521
        6
    dream7758521  
       2016-11-07 04:23:01 +08:00 via Android
    这样不好吗
    vsyf
        7
    vsyf  
       2016-11-07 08:50:29 +08:00
    之前在学校用锐捷也是这样,不过过一会儿就断了,好像要将这一次扣费的时长用完才断。
    我们是 3 毛一个小时 -0-
    BingoXuan
        8
    BingoXuan  
    OP
       2016-11-07 10:24:40 +08:00
    @dream7758521
    这是最吼的, android 调试方便很多


    @vsyf
    只要账户不欠费,可以不断开连接的。现在就算休眠再唤醒,还是能保持连接。我们学校是包月的,同学的包半年到现在还没欠费
    smileawei
        9
    smileawei  
       2016-11-07 13:31:21 +08:00
    竟然没有心跳检测。话说 很感谢 mentohust 大学的时候 就行为了用路由器开 wifi 接触到了 mentohust 和 openwrt 然后开始接触 linux 现在靠 Linux 吃饭。
    zjqzxc
        10
    zjqzxc  
       2016-11-07 17:51:59 +08:00   ❤️ 1
    锐捷没用过,以前学校用的深澜估计机制上跟这个差不多

    深澜的验证思路是:每 2 分钟左右向服务器发送一个内容为 uuid 的 UDP 包作为心跳包,因为 UDP 并不保证送达,大约 20~30 分钟连续没有接到这个 UDP 包时才认为客户端下线。
    所以,如果不手动下线而是直接关客户端的话,需要等待一段时间才能下线。

    这个也不能算是 bug ,网络流量大的时候 udp 包丢的一塌糊涂的时候这个机制还是很有用的。而且这东西也不是太重要的包,深澜在设计上可能认为没必要用 tcp 来传输或者是深澜为了减小认证服务器的开销,毕竟大几千上万的客户端在 2 分钟内都和服务器进行一次 tcp 通讯还是挺大的开销。

    另外并不认为负责心跳包的是一个独立的进程,更倾向于认为只是一个线程。这么简单的事儿再开个进程开销太大了。
    实验方法:开机并等待启动项都启动后记下进程数,开启认证客户端后再看看进程数,强杀主进程后再看看进程数
    flyfishcn
        11
    flyfishcn  
       2016-11-08 20:10:38 +08:00
    @zjqzxc 深澜的后台是可以设置超时时间的。不是写死的。他的网关和 radius 可以分开。性能不是问题。甚至可以做到一段时间内没有流量自动下线。
    qwvy2g
        12
    qwvy2g  
       2016-11-09 16:42:04 +08:00
    以前的学校就是锐捷,上了 4 年,锐捷版本一直在 4.8.5 。大一下学期的时候发现把网线拔掉之后退掉锐捷,账号依然不掉线。再后来测试了不掉线的因素。当时学校寝室的接口不够,于是大家用普通交换机来扩展接口。我当时试了一下断开自己接的交换机的电,账号居然需要重新认证,而且如果笔记本用网卡开 wifi ,还是能阻断网络,但是停掉 wifi 之后,账号还是没有掉线。如果寝室接口不接自己的交换机,能立刻检测到账号已经下线。到这的时候我知道了账号不掉线的条件:寝室接口下面要先接自己的交换机,通上电,账号先认证,然后拔掉网线,退掉锐捷,插回网线到路由器或者电脑。最终我用了 3 年半的 wifi 。虽然后来学校买了 h3c 的 ap 挂在寝室外面,可是白天全部协议限速。寝室白天有线端口只是限制下载的协议封杀 p2p 之类的。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2639 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 26ms · UTC 06:51 · PVG 14:51 · LAX 22:51 · JFK 01:51
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.