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

大家探讨一下路由器通过手机上网的方案吧

  •  
  •   s82kd92l · 2018-04-30 18:49:04 +08:00 · 9428 次点击
    这是一个创建于 2159 天前的主题,其中的信息可能已经有所发展或是发生改变。

    原来是上海联通宽带,新住所因为小区宽带只有电信垄断,而我平时宽带利用率并不高,所以想用日租卡+手机代替宽带。想探讨下方案:

    • 手机直接开热点(貌似延迟严重,第一跳就有 30-50ms 延迟,而且手机并不适合带很多设备)
    • 手机网线连路由器 wan 口(没用过也没听说其他人用过,手机通常是 usb2.0 也有延迟,而且手机只有一个 micro-usb 口,连网线就不好充电了。是否有带充电功能的 usb 网卡呢?)
    • 专门用 4G 路由器(好点的可能比手机还贵,而性能应该比已有的路由差远了)

    大家说说那种比较好,还有没有其他解决方案呢?

    第 1 条附言  ·  2018-04-30 19:46:29 +08:00
    大家有没有了解过 WiFi-TDLS? 貌似可以让设备绕开热点直连,现在的电脑和手机默认支持吗?
    第 2 条附言  ·  2018-05-02 22:20:28 +08:00

    目前能做到手机以普通模式连路由器的情况下tether,也就是不需要路由器支持wds。下一步是同时做到usb直连电脑时的tether:

    • 当手机用usb连电脑时数据走usb
    • 拔了之后数据自动改走wifi

    最好是无缝切换,不会断开已有tcp连接。

    第 3 条附言  ·  2018-05-04 20:27:36 +08:00
    已经做到无缝切换,不会影响已有的 tcp 连接,但并不是自动的,也就是说每次 usb 插拔后都需要在手机和电脑上运行一个修改路由表的脚本。电脑上能通过 udev 做到自动化,但我不知道 android 里面是否有类似的东西。

    其实最简单门槛最低的方式是在手机上架个 socks/http 代理服务器,然后 pc 直接用这个代理上网。无需 root/折腾路由表 /包转发,缺点是仅限 tcp,而且更耗电。

    至于 socks 服务器,可以装 termux 然后会有一些编译好的代理,比如 privoxy/squid。其实纸飞机也有内置一个 socks 服务器,但只监听 127.0.0.1,大家可以建 issue 骚扰他们,然他们加上允许局域网访问的功能( https://github.com/shadowsocks/shadowsocks-android/issues/1331
    51 条回复    2018-05-05 14:23:22 +08:00
    chunyec
        1
    chunyec  
       2018-04-30 19:13:05 +08:00 via Android   ❤️ 1
    手机开个热点,然后路由器桥接这个热点,其他要上网终端再通过路由器上网,这个应该是最简单最便宜的方案,市面上的路由器基本上都支持桥接功能,基本上不需要投入资金。
    huangtao728
        2
    huangtao728  
       2018-04-30 19:16:59 +08:00 via Android
    买个 CPE,并不贵
    ixiaoyui
        3
    ixiaoyui  
       2018-04-30 19:26:12 +08:00
    k2p 或者 k2,加上个 usb,然后刷老毛子固件,手机插数据线连到路由器,设置一下即可共享上网。
    s82kd92l
        4
    s82kd92l  
    OP
       2018-04-30 19:31:38 +08:00
    @chunyec 可是路由器桥接也不会改善延迟问题啊。

    @ixiaoyui 手头有个 k2 并刷好了 padavan,怎么加 usb 口呢?这个比买个 microusb-rj45 线有什么好处呢?
    crysislinux
        5
    crysislinux  
       2018-04-30 19:34:15 +08:00 via Android
    不打游戏那点延迟完全没问题,有时候宽带故障了我就路由器连的手机,感觉工作用起来没啥差别
    fhbyljj
        6
    fhbyljj  
       2018-04-30 19:34:50 +08:00 via Android
    手机连接 WIFI,然后其他设备的网关设定为手机
    fhbyljj
        7
    fhbyljj  
       2018-04-30 19:41:07 +08:00 via Android
    我的电脑插 USB 网卡连接 WIFI,其他电脑网关设定为我这台电脑的 IP,其他电脑就能上网了以前学校电脑课我都是这么干的,手机不知道可以不
    s82kd92l
        8
    s82kd92l  
    OP
       2018-04-30 19:41:32 +08:00
    @fhbyljj 这个我知道,更简单的方式是直接在路由器上用静态路由的方式转发到手机。可是还是会有延迟。
    s82kd92l
        9
    s82kd92l  
    OP
       2018-04-30 19:42:33 +08:00
    @crysislinux 我用经常要 ssh/rdp 到公司,延迟很不爽。
    fhbyljj
        10
    fhbyljj  
       2018-04-30 19:46:49 +08:00 via Android
    对惹,手机连接 WIFI 怎么走移动网络呢😓😓
    s82kd92l
        11
    s82kd92l  
    OP
       2018-04-30 19:49:34 +08:00
    @fhbyljj 我没实践过,但脑补应该可以这样做:在 android 开发者模式里设置始终开启移动数据,然后用 root 命令行 iptables 做 masquerade
    fhefh
        12
    fhefh  
       2018-04-30 19:50:59 +08:00
    chunyec
        13
    chunyec  
       2018-04-30 20:36:29 +08:00 via Android
    @s82kd92l 我手机开热点能玩 dota2,基本上没啥延迟
    zli
        14
    zli  
       2018-04-30 22:45:51 +08:00   ❤️ 1
    华硕路由器

    USB Modem / USB 网络共享 USB 相关应用

    切换到 USB 模式以使用 3G/4G USB 无线网络卡或 Android 电话作为 USB 调制解调器。
    loukky
        15
    loukky  
       2018-05-01 00:28:26 +08:00 via Android
    我的是直接插电脑上面的,直接开热点似乎延迟挺高。
    jonechenug
        16
    jonechenug  
       2018-05-01 00:46:54 +08:00 via Android
    紫米移动 WiFI 了解一下
    chinafeng
        17
    chinafeng  
       2018-05-01 01:05:39 +08:00
    RBM33G 了解一下
    jy00566722
        18
    jy00566722  
       2018-05-01 01:16:45 +08:00
    此时此刻,我正在用小米无限流量 3 元日租卡+K2 (无线扩展)来上网,回来你这问题。
    不要那么麻烦,真的够了。
    手机直接开 WiFI 热线,然后 K2 的无线扩展功能,直接连上手机的热点,同时把无线发出来给别的手机用,或是有线接电脑上网。
    不用刷固件,不用 USB,一切都是那么的完美。游戏没有试过,我是感觉没啥问题。
    zhengzhou518
        19
    zhengzhou518  
       2018-05-01 01:54:05 +08:00
    我就是用的 iPhone 的 4G 熱點給 Mac 來上網,感覺速度真心快,而且我發現這樣就不需要路由器了,所有都是用 4G 網路啊
    sola97
        20
    sola97  
       2018-05-01 02:41:09 +08:00 via Android
    USB 共享上网呢
    kslr
        21
    kslr  
       2018-05-01 04:32:12 +08:00 via Android
    那些延迟根本不算什么 SSH 什么的
    cdkey51
        22
    cdkey51  
       2018-05-01 06:38:39 +08:00 via iPhone
    @kslr 是的,远程没多少影响的 够用,延迟能接受
    hlz0812
        23
    hlz0812  
       2018-05-01 09:26:39 +08:00 via iPhone
    北京电信的无线宽带配的 CPE,但是那个速度是真的渣,没双频 wifi
    qwvy2g
        24
    qwvy2g  
       2018-05-01 09:32:59 +08:00 via Android
    有那种 4g 上网卡托插到华硕的路由器上,然后华硕路由 wan 来源选择 usb 接口的设备。
    ixiaoyui
        25
    ixiaoyui  
       2018-05-01 10:15:53 +08:00
    @s82kd92l usb 供电,手机不用充电了
    ixiaoyui
        26
    ixiaoyui  
       2018-05-01 10:16:55 +08:00
    @s82kd92l usb 得自己用电烙铁加,可以收一个已经改好了的,也不贵
    swulling
        27
    swulling  
       2018-05-01 10:36:49 +08:00 via iPhone
    买一个 4G 路由器。然后把你现在的路由器接上去
    yingfengi
        28
    yingfengi  
       2018-05-01 11:04:35 +08:00 via Android
    @ixiaoyui K2 和 K2P 本身是都没有 usb 口的,有的都是改造出来的。
    @fhefh 没这么简单吧,首先要解决手机连接 WIFI 后怎么让他走移动数据。然后还要开转发吧。

    最简单还是开热点中继,但是延迟确实会增加。可以考虑 4G 路由,下面再接一个路由,自己的路由器再 NAT 一层。
    CN2
        29
    CN2  
       2018-05-01 11:16:55 +08:00
    紫米 4G WIFI+无限流量卡
    s82kd92l
        30
    s82kd92l  
    OP
       2018-05-01 12:28:47 +08:00 via Android
    @ixiaoyui @zli 自己主路由是网件 r6400 带 usb 口原厂固件,听说可以刷梅林,刷了之后能直接 usb 连手机上网么?
    hst001
        31
    hst001  
       2018-05-01 14:52:56 +08:00 via Android
    我是手机直连 PC,同时开启 USB 网络共享 和 便携式热点,延迟比以前的电信有线高二三十毫秒,这个是移动网络的延迟,跟有线没得比的。
    updateing
        32
    updateing  
       2018-05-01 15:36:42 +08:00 via Android
    一个疯狂的想法:手机同时连接 WiFi 和 4G (保持 portal 检测一直失败就行),然后加 iptables 规则做 NAT,路由上把默认网关指向手机,这样一来延迟应该就很低了,手机同时还能充电……
    s82kd92l
        33
    s82kd92l  
    OP
       2018-05-01 16:34:38 +08:00
    @updateing 正在尝试这样做,之前与 @fhbyljj 讨论的就是这个方案。可是 android 的策略路由表极其复杂,在 portal 检测失败的情况下 192.168.0.0/24 网段都不走 wlan0 口,直接跑到流量 rmnet_data 去了... 正在研究修改路由表。
    updateing
        34
    updateing  
       2018-05-01 16:43:19 +08:00 via Android
    @s82kd92l 只需要一条命令就好了,我原来用的记录在这里: https://gist.github.com/updateing/c12e2702b9c5909cf92d9fc606e8ca8e
    s82kd92l
        35
    s82kd92l  
    OP
       2018-05-01 17:15:20 +08:00
    @updateing 嗯,这条命令果然 quick&dirty 直捣黄龙... 成功了

    不过还有个电源管理导致延迟的问题。目前从手机 ping 路由延迟平均 3ms,从路由器(telnet 命令行)ping 手机 50ms。可能是手机 wifi 省电功能在作怪,是否有办法解除呢?
    updateing
        36
    updateing  
       2018-05-01 17:59:14 +08:00
    @s82kd92l 这个没有研究过,可以考虑下会不会跟 WCNSS_qcom_cfg.ini 有关…… 一般是在 /etc 或者 /persist 下面。
    aru
        37
    aru  
       2018-05-01 18:10:54 +08:00
    直接买个 cpe 就行,要求不高直接用,如果还要在路由器上部署科学应用那就在 cpe 后面挂一个路由器
    s82kd92l
        38
    s82kd92l  
    OP
       2018-05-01 19:21:55 +08:00
    @updateing 几个小时用下来,还是很不稳定。rmnet_data0 的路由表会经常被重置(应该是被运营商上游变动触发)。还是需要用策略路由把"ip route add table rmnet_data1 192.168.1.0/24 dev wlan0"这条逻辑加入到更稳定的地方并生效。
    s82kd92l
        39
    s82kd92l  
    OP
       2018-05-01 21:34:57 +08:00 via Android
    @updateing 找到策略路由添加方式了。现在很稳定了。
    theworldsong
        40
    theworldsong  
       2018-05-01 22:26:58 +08:00
    做一个教程,写个播客啊。很多人需要的。写了播客跪求 @我
    s82kd92l
        41
    s82kd92l  
    OP
       2018-05-02 12:18:11 +08:00 via Android
    @theworldsong 这个需要 root,而且手机在非热点模式下随便打开包转发可能会被同一局域网其他节点滥用,比如你上公共 WiFi 忘了取消转发的话,别人也 可能用你流量上网。所以不推荐普通用户使用。
    theworldsong
        42
    theworldsong  
       2018-05-02 13:38:21 +08:00
    我觉得,能折腾到这个地步的,应该都不是普通用户了……写个播客吧
    yksoft1
        43
    yksoft1  
       2018-05-02 21:55:04 +08:00
    直接买一个非 USB 接口的 LTE MODEM。
    s82kd92l
        44
    s82kd92l  
    OP
       2018-05-02 22:24:48 +08:00
    @updateing @fhbyljj @ixiaoyui
    目前能做到手机以普通模式连路由器的情况下 tether,也就是不需要路由器支持 wds。下一步是同时做到 usb 直连电脑时的 tether:

    - 当手机用 usb 连电脑时数据走 usb,这样能做到最小延迟。
    - 拔了之后数据自动改走 wifi,不至于拔了手机电脑就断网

    最好是无缝切换,不会断开已有 tcp 连接。
    ixiaoyui
        45
    ixiaoyui  
       2018-05-03 09:30:16 +08:00
    @s82kd92l 无缝切换很难实现,从 usb 切到 wifi,手机网关原有的 nat 表就对不起来了,tcp 连接肯定会重新建立。
    s82kd92l
        46
    s82kd92l  
    OP
       2018-05-03 10:44:45 +08:00
    @ixiaoyui 可以让 pc 上 wlan0 和 usb0 两个接口使用同一个 ip,就没有 nat 表问题
    fly9i
        47
    fly9i  
       2018-05-03 10:59:50 +08:00
    @fhbyljj 应该不行吧,收集 wifi 模式和蜂窝网络模式好像不能同时使用?
    fly9i
        48
    fly9i  
       2018-05-03 11:00:08 +08:00
    @fly9i 手机的。。
    fly9i
        49
    fly9i  
       2018-05-03 11:22:52 +08:00
    @fly9i 看了下面讨论发现实现了😂,需要 root 比较麻烦
    s82kd92l
        50
    s82kd92l  
    OP
       2018-05-04 20:27:05 +08:00
    @updateing @fhbyljj @ixiaoyui 已经做到无缝切换,不会影响已有的 tcp 连接,但并不是自动的,也就是说每次 usb 插拔后都需要在手机和电脑上运行一个修改路由表的脚本。电脑上能通过 udev 做到自动化,但我不知道 android 里面是否有类似的东西。

    其实最简单门槛最低的方式是在手机上架个 socks/http 代理服务器,然后 pc 直接用这个代理上网。无需 root/折腾路由表 /包转发,缺点是仅限 tcp,而且更耗电。

    至于 socks 服务器,可以装 termux 然后会有一些编译好的代理,比如 privoxy/squid。其实纸飞机也有内置一个 socks 服务器,但只监听 127.0.0.1,大家可以建 issue 骚扰他们,然他们加上允许局域网访问的功能( https://github.com/shadowsocks/shadowsocks-android/issues/1331

    @theworldsong 没写过 blog,推荐个简单好用的吧
    fhbyljj
        51
    fhbyljj  
       2018-05-05 14:23:22 +08:00 via Android
    @s82kd92l 这么能折腾....
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   3212 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 28ms · UTC 14:19 · PVG 22:19 · LAX 07:19 · JFK 10:19
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.