TCP over TUN:收到 SYN/ACK,但未生成 ACK,套接字仍处于 SYN_SENT 状态

TCP over TUN:收到 SYN/ACK,但未生成 ACK,套接字仍处于 SYN_SENT 状态

我正在通过我编写的程序设置的 TUN 接口建立传出 TCP 连接。 TUN 接口基本上只是将数据包中继到代理服务器或从代理服务器中继数据包,只需进行最少的修改(源/目标 IP/端口、TCP 校验和)。

在通过此 TUN 接口路由的 IP 上运行 wget,数据包似乎已正确发送和接收(请参阅跟踪),但不知何故,从服务器返回的 SYN/ACK 未在 TCP 堆栈中注册,并且套接字仍然存在在“netstat -t”中处于 SYN_SENT 状态。然后,在两个方向上不断生成虚假重传(直到超时)。

以下是我用来设置它的命令:

ip link set dev tun0 up
ip addr add 10.0.0.1/24 dev tun0 
ip route add 216.58.197.100/32 dev tun0

其次是

wget http://216.58.197.100

这是wireshark跟踪在这里

wget Wireshark 跟踪

答案1

我似乎发现了问题:在将传入数据包写入 TUN 接口之前,我需要计算它们的 IPv4 标头校验和,因为我修改了它们。

相关内容