Linux에서 웹 서버에 연결할 수 있는지 확인하는 방법은 무엇입니까?

Linux에서 웹 서버에 연결할 수 있는지 확인하는 방법은 무엇입니까?

Linux 서버에서 외부 웹 서버에 액세스할 수 있는지 몇 분마다 폴링하고 싶습니다.

서버가 10.20.30.40이라고 가정합니다.

나는 이 가이드를 따르고 있습니다.

https://www.baeldung.com/linux/hosts-network-availability

서버에 연결할 수는 있지만 핑할 수는 없습니다.

핑이 성공하지 못한다는 의미입니다.

불행히도 netcat이 설치되어 있지 않습니다.

하지만 포트 443에서 원격으로 서버에 로그인할 수 있습니다.

답변1

일반적으로 서버의 엔드포인트(특정 URL)를 사용하여 이 작업을 수행합니다. 이렇게 하면 동일한 요청으로 네트워크 액세스와 서버 가용성을 테스트할 수 있습니다(IE는 충돌하지 않습니다).

간단한 curl요청만으로 확인이 가능합니다. 예를 들어:

curl -f -LI http://example.com/foo/bar

example.com이 2xx 성공으로 응답하면 0 종료 코드(성공)가 반환됩니다.HTTP 상태 코드. 간단한 if 문을 사용하여 이를 쉘 스크립트로 작성할 수 있습니다.

if curl -f -LI http://example.com/foo/bar ; then
  echo success
else
  echo failed
fi

엔드포인트를 선택하려면 실행 중인 특정 웹 서버를 확인해야 할 수도 있습니다. 일부는 이러한 특정 목적을 위해 "상태 확인" 엔드포인트를 제공합니다. 그렇지 않은 경우 /일반적으로 Home( )이 좋은 선택입니다.

답변2

서버에 연결할 수는 있지만 핑할 수는 없습니다.

그러니 가장 먼저 해야 할 일: 망할 ICMP를 고치세요! 핑을 억제할 이유가 없습니다. 그렇게 하면 많은 일이 불필요하게 어려워집니다. 경로 MTU 검색이 더욱 어려워지고, 네트워크 문제를 감지하기가 더욱 어려워지며, 무료입니다. 내 경험에 따르면 ICMP 패킷을 차단하여 핑을 불가능하게 만들고 외부에서 감지할 수 없는 TTL 제한으로 끝나고 "불가능한" TCP 연결을 설정할 수 있는 등 놀라운 MTU 문제가 발생하지만 실패하게 되는 네트워크입니다. 일하다.

연결에 문제가 있을 때 알림을 보낼 수 없는 호스트를 좋아하는 사람은 없습니다. ICMP를 수정하세요.

하지만 포트 443에서 원격으로 서버에 로그인할 수 있습니다.

Philip Couling이 위에 표시한 것처럼 전체 HTTPS 요청의 경우 curl.

TLS 연결 설정이 만족스러우면 openssl s_client다음 작업을 수행할 수 있습니다.

echo | openssl s_client yourhost:443 || printf 'FAAAAIL!\n'

일반적으로 서비스 모니터링 시스템을 구축하려면 다른 사람이 이미 작성한 시스템을 사용하세요. 여러 서버를 관찰하고 이메일이나 메시지를 통해 알림을 받아야 하는 경우 서버에 Grafana(Prometheus 및 센서 포함)를 설정하는 것이 시간을 투자할 가치가 있을 수 있습니다.

관련 정보