Я сталкиваюсь с проблемой, когда мой сервер получает данные от другого интерфейса, чем он использует для присоединения к другому серверу.
У меня один сервер (10.55.0.5). Этот сервер имеет несколько сетевых адаптеров, и я не могу быть уверен, что ответ будет приходить каждый раз через один и тот же интерфейс (из-за нашей реализации 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).
Но когда этот удаленный сервер пытается отправить мне данные, мой сервер не принимает их и отправляет Reset TCP.
Кто-то знает, как запретить моей системе принимать ответ на другом интерфейсе, кроме первого, который использовался для связи с удаленным сервером?
заранее спасибо