내 소프트웨어를 실행하기 위한 여러 노드가 있습니다. 시작 후 두 노드 간의 TCP 연결이 비정상적인 것으로 나타났습니다.
A가 리더이고 포트 1234에서 수신 대기 중이라고 가정하면 B는 A에 연결되어야 합니다.
노드 B에서 ss를 사용하면 다음을 볼 수 있습니다.
$ss |grep A
tcp ESTAB 0 0 B:50144 A:1234
하지만 노드 A에서는 실행할 때 아무것도 표시되지 않습니다 ss |grep B
.
예상한 대로 B는 이 연결에서 데이터를 읽을 수 없으며 이로 인해 내 소프트웨어가 실행되지 않습니다.
언급해야 할 두 가지 세부 사항이 더 있습니다.
- 소프트웨어 프로세스를 종료하는 동안 tcpdump를 실행하면 두 노드 모두에서 패킷 상호 작용을 볼 수 있습니다.
- eth0에 브리지되고 eth0과 동일한 IP를 갖는 b0이라는 브리지가 있습니다.
내 질문은 다음과 같습니다왜 이런 일이 발생하며 어떻게 해결할 수 있습니까?
업데이트 1:
tcpdump 실행
- 노드 B에서 프로세스를 종료하고 B는 A에 FIN을 보내고 A는 RESET으로 응답합니다.
- 노드 A에서 프로세스를 종료하면 A는 B로 아무 것도 보내지 않으며 그 반대의 경우도 마찬가지입니다. A가 더 이상 1234를 수신하지 않더라도 B에서는 연결을 계속 볼 수 있습니다.