telnet 8.8.8.8 8888
보여주다
노력하다...
원래는 이것이 완전히 거부될 것으로 예상했습니다.
배경: NGINX 리버스 프록시 서버가 있으면 백엔드가 없는지 직접 감지하므로 이는 매우 좋습니다.
답변1
원격 끝이 다시 보내는 내용에 따라 다릅니다.
어떤 프로세스도 수신 대기하지 않는 포트의 경우 원격 끝은 재설정(RST) 비트가 설정된 패킷을 보내며 이로 인해 클라이언트에 "연결이 거부됨" 오류가 발생합니다. 또 다른 가능성은 iptables -j REJECT
Linux에서 기본적으로 전송되는 것과 같은 ICMP "포트에 연결할 수 없음" 메시지입니다 . 이로 인해 "연결이 거부되었습니다"도 발생합니다.
반면에 리모콘이 다시 전송하면아무것도 없다, 그러면 클라이언트는 문제가 무엇인지 알 수 없으며 다시 시도하거나 오랜 시간 동안 기다릴 수 있습니다.
iptables
Linux의 예:
# iptables -I 입력 -p tcp --dport 3001 -j 거부 # iptables -I 입력 -p tcp --dport 3002 -j 삭제 $ NC -v 127.0.0.1 3000 nc: 127.0.0.1 포트 3000에 연결하지 못했습니다(tcp): 연결이 거부되었습니다. $NC -v 127.0.0.1 3001 nc: 127.0.0.1 포트 3001(tcp)에 연결하지 못했습니다: 연결이 거부되었습니다. $ NC -v 127.0.0.1 3002 (기다리다...)
따라서 백엔드가 다운되었는지 확인하려면 누군가 오류를 다시 보내도록 해야 합니다. 물론 전체 호스트가 다운되면 이 작업을 수행하기 어려울 수 있으므로 더 짧은 시간 초과를 예약해야 할 수도 있습니다.
답변2
TCP 스택은 일련의 규칙(아마도 방화벽 수준에서)을 기반으로 연결에 응답하는 방법을 결정합니다. 연결 패킷(SYN)을 거부할 수 있지만 삭제할 수도 있습니다. 예를 들어 포트 스캐닝으로 인해 삭제하는 것이 합리적입니다.