请教一个 tcp 的网络问题

2023-03-14 15:16:59 +08:00
 proxychains
主机 `10.1.1.179` 上使用 nginx 监听 `80` , 其他主机都可以请求 `10.1.1.112:80` 正常返回.

但是主机 `10.1.1.112` 使用 `curl` 发送请求到 `10.1.1.179:80`.
期间 `112` 主机一直显示为 `SYN_SENT` 状态, `179` 为 `SYN_RECV`状态, 一直到 `112` 显示 `timeout`

抓包显示

[from_179_80_pcap.png]( https://s2.loli.net/2023/03/14/6SrxBDLQ4IvaqPU.png)


看起来 `112` 第三次握手的包丢失了, 导致一直重传.

主机 `179` 和 `112`
内核版本: 3.10.0-1160.el7.x86_64

主机 `179` iptables INPUT 链:

```bash
-A INPUT -p tcp -m tcp --dport 80 -j ACCEPT
```
576 次点击
所在节点    问与答
4 条回复
proxychains
2023-03-14 15:34:21 +08:00
从其他主机连接 `112` 的 `ssh` 又是可达的. 想不到如何排查了
garychenlin
2023-03-15 01:41:29 +08:00
抓包数据有两端抓包嘛? 10.1.1.112 和 10.1.1.179 都抓

traceroute 对比看下路由表?

或者 iptables -t filter 看下有没有拦截?
proxychains
2023-03-15 09:03:42 +08:00
@garychenlin 都抓了, 表现就是三次握手的时候第三个 ack 没发出去, 一直重联.
路由表没问题的, 这两台主机 icmp 报文可达.
proxychains
2023-03-15 15:42:11 +08:00
解决了.
iptables -I INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT

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

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

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

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

© 2021 V2EX