当另一个接口接收到数据时,内核发送 RST

当另一个接口接收到数据时,内核发送 RST

当我的服务器从另一个接口接收数据而不是用于加入另一个服务器时,我遇到一个问题。

我有一台服务器 (10.55.0.5)。该服务器有多个 NIC,我无法确保响应每次都来自同一接口(由于我们的 BGP 实施)。

我需要与另一个(172.16.97.2)通信

我在所有接口上执行 tcpdump:

19:35:09.344629 IP 10.5.0.5.36048 > 172.16.0.2.8140: Flags [S], seq 447986449, win 27160, options [mss 1358,nop,nop,TS val 2672739474 ecr 0,nop,wscale 7], length 0
19:35:09.359357 IP 172.16.0.2.8140 > 10.5.0.5.36048: Flags [S.], seq 288319191, ack 447986450, win 28960, options [mss 1460,nop,nop,TS val 2802329434 ecr 2672739474,nop,wscale 7], length 0
19:35:09.359409 IP 10.5.0.5.36048 > 172.16.0.2.8140: Flags [.], ack 1, win 213, options [nop,nop,TS val 2672739488 ecr 2802329434], length 0
19:35:09.362763 IP 10.5.0.5.36048 > 172.16.0.2.8140: Flags [P.], seq 1:196, ack 1, win 213, options [nop,nop,TS val 2672739492 ecr 2802329434], length 195
19:35:09.376590 IP 172.16.0.2.8140 > 10.5.0.5.36048: Flags [.], ack 196, win 235, options [nop,nop,TS val 2802329438 ecr 2672739492], length 0
19:35:09.390571 IP 172.16.0.2.8140 > 10.5.0.5.36048: Flags [P.], seq 1:2330, ack 196, win 235, options [nop,nop,TS val 2802329442 ecr 2672739492], length 2329
19:35:09.390631 IP 10.5.0.5.36048 > 172.16.0.2.8140: Flags [R], seq 447986645, win 0, length 0

捕获后,我们可以看到 TCP 握手正常。

然后,我的服务器将数据推送到 172.16.97.2,远程服务器发送确认(长度 = 0)。

但是当这个远程服务器尝试向我发送数据时,我的服务器不接受它并发送重置 TCP。

有人知道如何防止我的系统在除了第一个用于联系远程服务器的接口之外的其他接口上接受响应吗?

提前致谢

相关内容