机器 A 的 ssh 服务可以接收新的连接,但是不能用 telnet 连接机器 B 的 ssh 服务?

2023-01-10 17:06:41 +08:00
 xing393939

机器 A 的 ssh 服务可以接收新的连接,但是不能用 telnet 连接机器 B 的 ssh 服务,会是什么原因呢?

当前环境是:
机器 A:172.31.15.148
机器 B:172.31.6.159
两机器在同一内网,linux 内核是 5.10.157 ,均有 ssh 服务
机器 A 已经有 102610 个连接了,此时 telnet 机器 B 不行:

[root@ip-172-31-15-148 ~]# ss -s
Total: 102810
TCP:   102635 (estab 102610, closed 1, orphaned 0, timewait 1)

[root@ip-172-31-15-148 ~]# telnet 172.31.6.159 22
Trying 172.31.6.159...

而机器 B 可以 telnet 机器 A:

[root@ip-172-31-6-159 ~]# telnet 172.31.15.148 22
Trying 172.31.15.148...
Connected to 172.31.15.148.
Escape character is '^]'.
SSH-2.0-OpenSSH_7.4

机器 A 释放了它的 102610 个连接后,telnet 机器 B 是 ok 的

[root@ip-172-31-15-148 ~]# telnet 172.31.6.159 22
Trying 172.31.6.159...
Connected to 172.31.6.159.
Escape character is '^]'.
SSH-2.0-OpenSSH_7.4

这会是什么原因呢?或者怎么排查呢?我用strace telnet 172.31.6.159 22查看是卡在 connect 系统调用上。

1439 次点击
所在节点    Linux
16 条回复
crystom
2023-01-10 17:40:04 +08:00
65536 并发警告
julyclyde
2023-01-10 17:46:52 +08:00
抓包看看?
在 A 上执行
sudo tcpdump -X host B 的 IP 地址 and tcp port 22
julyclyde
2023-01-10 17:47:18 +08:00
@crystom 并不存在你说的这个并发问题吧
xing393939
2023-01-10 18:05:07 +08:00
@julyclyde
这事抓包结果:
```
[root@ip-172-31-15-148 ~]# tcpdump -i any net 172.31.6.159 -nn
tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
listening on any, link-type LINUX_SLL (Linux cooked), capture size 262144 bytes
10:03:36.321501 IP 172.31.15.148.22116 > 172.31.6.159.22: Flags [S], seq 3335570490, win 2048, options [mss 8961,sackOK,TS val 557774307 ecr 0,nop,wscale 7], length 0
10:03:37.332029 IP 172.31.15.148.22116 > 172.31.6.159.22: Flags [S], seq 3335570490, win 2048, options [mss 8961,sackOK,TS val 557775318 ecr 0,nop,wscale 7], length 0
10:03:39.348030 IP 172.31.15.148.22116 > 172.31.6.159.22: Flags [S], seq 3335570490, win 2048, options [mss 8961,sackOK,TS val 557777334 ecr 0,nop,wscale 7], length 0
10:03:43.380028 IP 172.31.15.148.22116 > 172.31.6.159.22: Flags [S], seq 3335570490, win 2048, options [mss 8961,sackOK,TS val 557781366 ecr 0,nop,wscale 7], length 0
```
crystom
2023-01-11 09:24:04 +08:00
@julyclyde 这是一个梗,我这个是嘲讽一下
julyclyde
2023-01-11 09:25:02 +08:00
上述 A 抓包,看起来是发送了 SYN 但是没有收到 ACK 响应
倒是跟 strace 结果一致


那如果在 B 上抓包呢?
crystom
2023-01-11 09:33:20 +08:00
我认为是本地端口占满了,就无法做 tcp 客户端了
crystom
2023-01-11 09:33:40 +08:00
做服务端时,没有这个限制。
xing393939
2023-01-11 11:06:16 +08:00
@julyclyde 机器 B 收不到包
julyclyde
2023-01-11 13:01:52 +08:00
@xing393939 你给 tcpdump 更换几次-i 看看,到底是从哪个网卡发出去的 SYN
bulay
2023-01-11 14:41:17 +08:00
我记得看到过,每个 tcp 连接的信息都会占用一定的内存空间,可以看看内存的利用率
xuboying
2023-01-11 14:45:01 +08:00
那你试试 telnet 别的 ip ,别的端口呢?先锁定问题是机器 A 或者机器 B
xing393939
2023-01-11 15:28:13 +08:00
@julyclyde 用了 tcpdump -i eth0 ,确认是 eth0 网卡发的 syn


@bulay cpu2 个核使用率 1%,内存只用了 0.8G 吧,还有 3.2G
julyclyde
2023-01-11 17:46:30 +08:00
@xuboying 既然 B 都没收到,那我觉得应该是 A 或者网络问题了
julyclyde
2023-01-11 17:47:42 +08:00
@crystom 本地端口并没有满啊,这不是分配了 22116 号嘛
julyclyde
2023-01-11 17:48:14 +08:00
@xing393939 确认 eth0 是正确的吗?那你查查网络?

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/907966

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX