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

重新翻出来之前的问题,求大神给个思路!

  •  
  •   ety001 · 2017-08-01 16:56:17 +08:00 · 4564 次点击
    这是一个创建于 2676 天前的主题,其中的信息可能已经有所发展或是发生改变。
    30 条回复    2017-08-03 00:55:58 +08:00
    warcraft1236
        1
    warcraft1236  
       2017-08-01 18:36:15 +08:00
    重装系统
    linhua
        2
    linhua  
       2017-08-01 19:09:18 +08:00   ❤️ 1
    看看 Mac 防火墙设置,VirtualBox 联网不受防火墙影响

    具体的,可用 wireshark 抓包,不过 wireshark 不能对 VirtualBox 抓包(不能抓到从 virtualBox 出去的包,只能抓到进来的包)
    ety001
        3
    ety001  
    OP
       2017-08-01 19:53:22 +08:00
    @linhua #2 是不是 docker 也不受 Mac 防火墙限制?
    ety001
        4
    ety001  
    OP
       2017-08-01 19:55:17 +08:00
    @linhua #2 刚看了,防火墙是关闭的。印象中之前是安装过 Proxifier,这个软件会不会对系统的网络链路有影响?
    ety001
        5
    ety001  
    OP
       2017-08-01 20:28:12 +08:00
    ![12345.png]( https://i.loli.net/2017/08/01/59807247c6c56.png)

    wireshark 的抓包也是出现在那个卡主的位置,就收不到服务器回给的响应了。

    现在的情况总结下就是:

    1. MacPro 无法 ssh 到远程的服务器
    2. MacPro 可以 ssh 到同局域网下的服务器
    3. MacPro 里的 VirtualBox 在 NAT 网络下可以 ssh 连接到远程的服务器
    4. MacPro 里的 VirtualBox 在桥接模式下不能 ssh 连接到远程服务器
    5. MacPro 里的 Docker 容器可以走 NAT 模式连接到远程的服务器

    其他的情况:

    1. 主路由是 TP-Link 刷的 OpenWrt,已经重置过配置
    2. 网络是中国移动的网络,PPPoE 拨号后没有公网 IP
    3. 目前为止,我的 MacPro 只发现在这个家的网络有这个问题,回到另外一个家,或者在咖啡厅,或者用手机热点都可以正常 ssh 到远程服务器,另外一个家的网络是联通的
    4. 之前也是没有问题的,这个问题是突然出现的,且已经持续了有好几个月了
    Lpl
        6
    Lpl  
       2017-08-01 21:17:46 +08:00   ❤️ 1
    看一下 `~/.ssh/known_hosts` 文件,看日志是 ssh 找到 ~/.ssh/known_hosts 文件中的某一条对应的了。

    试一下这么做:
    - 清空 ~/.ssh/known_hosts 文件
    - ssh [email protected] ,看是否能出现信息

    另外,连不上的意思是:运行 ssh [email protected] 后卡着不动了,还是有一些出错信息?
    ety001
        7
    ety001  
    OP
       2017-08-01 21:41:00 +08:00
    @Lpl #6 看下我之前的那个帖子的 ssh -vvvvv 的信息,其实已经验证都通过了,就是不知道验证后的哪一步卡主了,表面现象像是服务器不再继续响应了一样。
    ety001
        8
    ety001  
    OP
       2017-08-01 21:41:37 +08:00
    @Lpl #6 known_hosts 之前最早的时候尝试过清空,没有用,因为不是在这里卡主的。
    Lpl
        9
    Lpl  
       2017-08-01 22:03:14 +08:00
    @ety001 抱歉,是我审题不清楚的缘故。麻烦看下你的 ssh 版本:ssh -V
    current
        10
    current  
       2017-08-01 22:20:06 +08:00
    建议抓一下包,看看卡住那之前发了什么包,断开之前又是收到了什么包
    Lpl
        11
    Lpl  
       2017-08-01 22:25:02 +08:00
    这样子,咱们重新考虑下解题思路,用排除法。

    首先,由于你链接很多目标机器都是不行的,可以先排除目标机器有问题。
    然后,你切换手机热点就能登录,可以发现问题是出在网络上,这个网络可能是你路由器的原因,也可能是网络运营商的原因。

    这时候,麻烦你随便找一台能 ssh 的机器,做一下如下的操作,贴上一些信息:
    - ping ip
    - traceroute ip
    - telnet ip 22

    做一下这三条命令把相关信息贴出来
    ety001
        12
    ety001  
    OP
       2017-08-02 00:33:24 +08:00
    @Lpl #9

    我这里手头就一台电脑。。。

    在我 mac 上执行结果

    ➜ ~ ssh -V
    OpenSSH_7.5p1, OpenSSL 1.0.2l 25 May 2017

    ➜ ~ traceroute cx.dev.aws
    traceroute to cx.dev.aws (52.36.88.202), 64 hops max, 52 byte packets
    1 openwrt (192.168.10.1) 1.162 ms 0.817 ms 3.183 ms
    2 10.202.128.1 (10.202.128.1) 2.279 ms 4.065 ms 2.137 ms
    3 10.253.53.1 (10.253.53.1) 2.093 ms 1.588 ms 2.280 ms
    4 * * 10.253.53.66 (10.253.53.66) 5.434 ms
    5 218.201.122.29 (218.201.122.29) 3.356 ms
    218.201.171.193 (218.201.171.193) 2.817 ms
    218.201.122.29 (218.201.122.29) 3.261 ms
    6 * * *
    7 221.183.12.205 (221.183.12.205) 4.331 ms
    221.183.26.121 (221.183.26.121) 6.540 ms
    221.183.12.205 (221.183.12.205) 3.874 ms
    8 221.183.10.26 (221.183.10.26) 43.694 ms 25.852 ms
    221.183.36.9 (221.183.36.9) 19.855 ms
    9 * * *
    10 * * *
    11 221.183.30.230 (221.183.30.230) 236.005 ms *
    221.183.30.242 (221.183.30.242) 195.771 ms
    12 223.118.10.154 (223.118.10.154) 202.130 ms
    223.118.10.18 (223.118.10.18) 204.819 ms 201.587 ms
    13 223.119.64.30 (223.119.64.30) 187.104 ms
    223.119.64.38 (223.119.64.38) 201.632 ms 201.745 ms
    14 54.239.102.56 (54.239.102.56) 199.599 ms * 210.335 ms
    15 54.239.103.61 (54.239.103.61) 207.729 ms
    54.239.102.223 (54.239.102.223) 206.440 ms 202.570 ms
    16 54.239.42.116 (54.239.42.116) 245.681 ms *
    54.239.42.118 (54.239.42.118) 296.105 ms
    17 52.93.14.48 (52.93.14.48) 242.277 ms
    52.93.13.2 (52.93.13.2) 220.075 ms
    52.93.13.40 (52.93.13.40) 342.491 ms
    18 52.93.12.33 (52.93.12.33) 405.642 ms
    52.93.12.73 (52.93.12.73) 231.978 ms
    52.93.14.251 (52.93.14.251) 233.059 ms
    19 52.93.12.36 (52.93.12.36) 246.425 ms
    52.93.15.30 (52.93.15.30) 232.340 ms
    52.93.14.38 (52.93.14.38) 234.581 ms
    20 52.93.14.57 (52.93.14.57) 231.434 ms
    52.93.12.207 (52.93.12.207) 222.136 ms
    52.93.15.53 (52.93.15.53) 224.676 ms
    21 52.93.15.215 (52.93.15.215) 215.976 ms
    54.239.48.183 (54.239.48.183) 227.565 ms
    52.93.15.213 (52.93.15.213) 295.120 ms
    22 * * *
    23 * * *
    24 * * *
    25 * * *
    26 * * *
    27 x.dev.aws.canior.com (52.36.88.202) 231.117 ms 230.676 ms *

    ➜ ~ telnet cx.dev.aws 22
    Trying 52.36.88.202...
    Connected to cx.dev.aws.
    Escape character is '^]'.
    SSH-2.0-OpenSSH_6.6.1p1 Ubuntu-2ubuntu2.4


    我在我的主路由上的执行结果如下:

    root@OpenWrt:~# ping 52.36.88.202
    PING 52.36.88.202 (52.36.88.202): 56 data bytes
    64 bytes from 52.36.88.202: seq=0 ttl=41 time=225.125 ms
    64 bytes from 52.36.88.202: seq=1 ttl=40 time=227.555 ms
    64 bytes from 52.36.88.202: seq=2 ttl=40 time=227.336 ms
    ^C
    --- 52.36.88.202 ping statistics ---
    3 packets transmitted, 3 packets received, 0% packet loss
    round-trip min/avg/max = 225.125/226.672/227.555 ms

    root@OpenWrt:~# traceroute 52.36.88.202
    traceroute to 52.36.88.202 (52.36.88.202), 30 hops max, 38 byte packets
    1 10.202.128.1 (10.202.128.1) 2.306 ms 2.553 ms 15.661 ms
    2 10.253.53.1 (10.253.53.1) 1.418 ms 1.194 ms 0.936 ms
    3 * * *
    4 223.96.95.153 (223.96.95.153) 2.317 ms 218.201.171.193 (218.201.171.193) 1.724 ms 218.201.122.29 (218.201.122.29) 1.724 ms
    5 * 120.192.97.101 (120.192.97.101) 9.342 ms *
    6 221.183.27.89 (221.183.27.89) 3.481 ms 221.183.12.193 (221.183.12.193) 23.044 ms 221.183.26.121 (221.183.26.121) 2.877 ms
    7 221.183.36.9 (221.183.36.9) 19.007 ms 14.025 ms 221.176.15.37 (221.176.15.37) 17.089 ms
    8 * 221.176.21.230 (221.176.21.230) 18.245 ms 27.960 ms
    9 * * *
    10 221.183.30.242 (221.183.30.242) 186.954 ms 221.183.30.246 (221.183.30.246) 188.862 ms 200.030 ms
    11 223.118.10.18 (223.118.10.18) 204.393 ms 223.118.10.86 (223.118.10.86) 195.973 ms 223.118.10.154 (223.118.10.154) 200.133 ms
    12 223.119.64.38 (223.119.64.38) 206.754 ms 202.524 ms 208.163 ms
    13 54.239.103.28 (54.239.103.28) 218.129 ms 54.239.102.104 (54.239.102.104) 196.180 ms 54.239.102.56 (54.239.102.56) 207.001 ms
    14 54.239.102.87 (54.239.102.87) 201.614 ms 54.239.102.109 (54.239.102.109) 189.092 ms 54.239.102.221 (54.239.102.221) 214.834 ms
    15 * * *
    16 52.93.12.112 (52.93.12.112) 215.291 ms * 52.93.12.42 (52.93.12.42) 226.266 ms
    17 52.93.14.219 (52.93.14.219) 227.360 ms 52.93.12.251 (52.93.12.251) 219.053 ms 52.93.14.39 (52.93.14.39) 225.515 ms
    18 * 52.93.15.28 (52.93.15.28) 240.180 ms *
    19 52.93.14.135 (52.93.14.135) 227.909 ms 52.93.15.59 (52.93.15.59) 226.461 ms *
    20 52.93.15.209 (52.93.15.209) 222.906 ms 205.251.232.63 (205.251.232.63) 228.408 ms 52.93.15.237 (52.93.15.237) 219.540 ms
    21 * * *
    22 * * *
    23 * * *
    24 * * *
    25 * * *
    26 52.36.88.202 (52.36.88.202) 223.111 ms 230.957 ms 225.518 ms

    root@OpenWrt:~# telnet 52.36.88.202 22
    SSH-2.0-OpenSSH_6.6.1p1 Ubuntu-2ubuntu2.4


    非常感谢你这么上心,不过按照我之前帖子,提出来的 ssh 的 debug 信息来看,我已经成功连接到服务器的端口上,并且完成了身份认证了,所以我觉得你给出的这三条命令,并不能看出来什么端倪。

    另外关于『然后,你切换手机热点就能登录,可以发现问题是出在网络上,这个网络可能是你路由器的原因,也可能是网络运营商的原因』,其实很奇怪,如果说我网络有问题的话,我电脑里的虚拟机通过 NAT 应该也登陆不上去。而实际上我电脑里的虚拟环境(vbox 和 docker 容器)只要用 NAT 联网,就很正常的登陆远程服务器。我在我主路由上也尝试过登陆远程服务器,也是登陆不上去,跟我在 mac 上的表现一致。
    ety001
        13
    ety001  
    OP
       2017-08-02 00:58:38 +08:00
    另外补充一点,我 Mac 挂 VPN 后,就可以正常的登陆远程服务器了。。。
    jiangzhuo
        14
    jiangzhuo  
       2017-08-02 02:02:57 +08:00
    大胆的猜测一下,中间有运营商劫持的设备程序写出 BUG 了,中间有什么地方触到墙的 G 点了
    Lpl
        15
    Lpl  
       2017-08-02 06:53:49 +08:00   ❤️ 1
    traceroute 和 telnet 后看起来跟网络确实没得什么关系,实在很抱歉。在网上查了下资料,发现可能跟 OS X 系统的版本有关系。

    附上两个可能有用的链接:
    - https://thecustomizewindows.com/2017/06/fix-write-failed-broken-pipe-packet_write_wait-connection-port-22-broken-pipe/
    - https://discussions.apple.com/thread/7369445?start=0&tstart=0

    另外附上我 Mac 的相关信息:
    - 系统版本:EI Caption 10.11.4 (15E65)
    - SSH 版本:OpenSSH_6.9p1, LibreSSL 2.1.8

    希望对你有帮助
    linhua
        16
    linhua  
       2017-08-02 08:37:28 +08:00
    https://discussions.apple.com/thread/3266583?start=30&tstart=0

    sudo sysctl -w net.inet.tcp.always_keepalive=9999
    Sh888
        17
    Sh888  
       2017-08-02 09:25:04 +08:00
    ssh 协议在 7 月 1 日以后已经被墙。
    ety001
        18
    ety001  
    OP
       2017-08-02 09:28:02 +08:00
    @jiangzhuo #14
    @Sh888 #17

    应该不是墙的原因,我连我国内的服务器也是连不上去的。。。

    目前为止,只发现在我这个家的网络下才出这种奇怪的现象。
    ety001
        19
    ety001  
    OP
       2017-08-02 09:33:03 +08:00
    @Lpl #15 再次感谢,看了下你给的文章,操作内容比较多,我觉得我还是不为了这个奇怪的问题冒险修改了,感觉风险有些大。
    Sh888
        20
    Sh888  
       2017-08-02 09:38:03 +08:00
    @ety001 在公司网络有没有这个问题?我用 SSH 也是家用网络有问题,公司的固定 IP 就没有问题。墙现在也是分布式的部署。而且最近都在查国内 IP 上的 VPN 服务,不知道对 SSH 是不是也有新的策略。
    ety001
        21
    ety001  
    OP
       2017-08-02 09:38:08 +08:00
    @linhua #16 这个方案我尝试过,不行,我觉得苹果售后论坛上那些报 broken pipes 错误的人,可能是所有的网络环境下都不行。
    ety001
        22
    ety001  
    OP
       2017-08-02 09:38:50 +08:00
    @Sh888 #20 我在我另一个家,用联通的网络就没有问题,包括外面的咖啡厅之类的公共 wifi 也是没有问题。
    ety001
        23
    ety001  
    OP
       2017-08-02 09:48:00 +08:00
    @Lpl #15
    @current #10
    抓包信息,我上传了一份,可以参考: http://u.to0l.cn 提取码:39797
    ety001
        24
    ety001  
    OP
       2017-08-02 09:51:31 +08:00
    @Sh888 #20
    @jiangzhuo #14

    其实我个人也是有猜测过,是不是移动的网络里加了什么流量审计的东西,对于直接访问的包都审计掉了,但是通过 NAT 的可能没考虑周全给漏过去了。。。没有深入了解过 TCP/IP,不确定有没有这种可能。
    ety001
        25
    ety001  
    OP
       2017-08-02 09:56:16 +08:00
    @linhua #2
    @Lpl #6
    @jiangzhuo #14
    @current #10
    @Sh888 #17

    对了,我刚想起来,跟我这个异常同时出现的另外一个异常就是,访问一些登陆要求严格的网站(比如不能异地同时登陆)的时候,登陆成功后,只要新点开这个登陆后网站的任意一个需要用户权限的页面,就会立马跳转到登陆页面,给人的感觉就像是你登陆后,IP 自动切换了一样。导致我现在访问这类网站都得先挂上 ss 全局。。。
    Lpl
        26
    Lpl  
       2017-08-02 09:57:37 +08:00
    @ety001 现在应该就剩下两方面的原因了:一个是你路由器的问题,一个就是运营商的问题。如果你能有一个 PC 机,可以通过直连网线不过路由器的方式测试下 ssh,再用 PC 通过路由器的方式测试下。基本就能找到问题出在哪了。。

    可惜的是,你现在手边只有一个 Mac,啊哈哈。我家里电信宽带,没公网 IP,ssh 境内境外的机器的时候有时候就会抽风,连的时候卡那不动,但是能 ping 通(最近一个月出现的事情)。
    ety001
        27
    ety001  
    OP
       2017-08-02 10:03:04 +08:00
    @Lpl #26 路由估计应该可以排除,因为我路由重置过了,应该没有什么配置会影响到。看你的情况,现在只能认为是运营商的问题了
    current
        28
    current  
       2017-08-02 20:54:24 +08:00   ❤️ 1
    @ety001 从 NAT 可以连接而 Bridged 无法连接这点来看,我不太倾向于是 ISP 的问题,理论上来说你的 NAT 设备( VMNET/路由器 /交换机)后面的东西对于 ISP 来说是不可见的,因此 ISP 应该不具备区分这种情况的能力。

    我个人倾向于认为是虚拟机在系统中插的 TAP/TUN 设备对系统造成了一些意料之外的影响,或是路由器对这种情况的处理有一些问题
    linhua
        29
    linhua  
       2017-08-02 21:43:42 +08:00   ❤️ 2
    移动 号称 墙中墙
    从抓包中可以看出 服务器没有向客户端返回包,导致客户端不断重发。 应该同时在服务端抓包,比较一下服务端和客户端的抓包数据,看看服务端是否收到客户端发来的包

    可能是 Mac 的 SSH 客户端发了什么 带有特征的数据 触发了移动的 RST,而虚拟机中 Linux 系统的 ssh 客户端没有发送这些特征数据

    你在 Mac 下可以换个 SSH 客户端试试,或自己编译一个
    https://github.com/mimecuvalo/firessh
    https://www.termius.com/
    https://github.com/Crystalnix/termius-cli
    https://superuser.com/questions/961349/building-openssh-for-os-x
    https://github.com/gravitational/teleport
    http://gravitational.com/teleport/docs/2.0/architecture/#teleport-cli-tools

    额外的可以测试一下,启动 U 盘内的 Ubuntu 系统,使用里面的 SSH 客户端,不用虚拟机
    https://tommy.net.cn/2016/07/20/create-a-bootable-ubuntu-usb-stick-on-mac-os-x/
    ety001
        30
    ety001  
    OP
       2017-08-03 00:55:58 +08:00
    @linhua #29 恩,等我再去那边的时候,多带一台笔记本过去测测。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2842 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 26ms · UTC 15:18 · PVG 23:18 · LAX 07:18 · JFK 10:18
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.