SSH 접속 없이 서버 상태를 점검하는 방법

SSH 접속 없이 서버 생존 여부를 확인하는 방법입니다. ping, nc, telnet, curl, DNS, traceroute/mtr 결과를 계층별로 해석하는 기준을 정리했습니다.

서버에 SSH로 접속하지 않고 살아 있는지 확인하려면 한 가지 명령만 보면 안 됩니다. ICMP 응답, TCP 포트, HTTP 응답, DNS, 라우팅 경로가 각각 다른 계층을 의미하기 때문입니다. ping이 실패해도 서버가 살아 있을 수 있고, 포트가 열려 있어도 애플리케이션이 정상이라는 뜻은 아닐 수 있습니다.

계층별 확인 기준

확인 도구 의미
ICMP 응답 ping 네트워크 경로와 ICMP 허용 여부
TCP 포트 nc, telnet 대상 포트가 열려 있고 연결 가능한지
HTTP 상태 curl 웹 애플리케이션 또는 프록시 응답
경로 traceroute, mtr 중간 라우팅/방화벽 구간 추정
DNS dig, nslookup 도메인이 올바른 IP로 해석되는지

ping으로 ICMP 확인

TARGET="192.168.10.10"
ping -c 4 "$TARGET"

응답이 오면 최소한 ICMP 왕복 경로는 열려 있다는 뜻입니다. 하지만 서버 방화벽이나 클라우드 보안그룹에서 ICMP를 막아두면 서버가 정상이어도 ping은 실패합니다.

TCP 포트 확인

TARGET="192.168.10.10"
nc -vz "$TARGET" 22
nc -vz "$TARGET" 80
nc -vz "$TARGET" 443

succeeded가 나오면 TCP 연결이 성립된 것입니다. refused는 대상까지 도달했지만 서비스가 listen하지 않거나 거부한 것이고, timeout은 중간 방화벽 drop이나 라우팅 문제일 가능성이 큽니다.

telnet도 포트 확인에 사용할 수 있지만, 자동화에는 nc가 더 적합합니다.

telnet 192.168.10.10 80

HTTP/HTTPS 서비스 확인

curl -I --connect-timeout 5 http://192.168.10.10/
curl -kI --connect-timeout 5 https://192.168.10.10/

웹 서비스는 포트가 열려 있어도 애플리케이션이 500, 502, 503을 반환할 수 있습니다. 이 경우 네트워크는 살아 있지만 웹서버, upstream, DB, 애플리케이션 장애일 수 있습니다.

도메인 기준 확인

DOMAIN="example.com"
dig +short "$DOMAIN"
nslookup "$DOMAIN"
curl -I --connect-timeout 5 "https://$DOMAIN/"

IP로는 접속되는데 도메인으로 안 되면 DNS 문제일 수 있습니다. 반대로 DNS는 맞는데 접속이 안 되면 방화벽, 라우팅, 서버 애플리케이션을 봐야 합니다.

경로 확인

traceroute 192.168.10.10
mtr -rw 192.168.10.10

중간 hop에서 응답이 없다고 무조건 장애는 아닙니다. 일부 라우터는 ICMP TTL exceeded 응답을 막습니다. 중요한 것은 마지막 목적지까지 도달하는지, 특정 구간 이후 손실이 지속되는지입니다.

간단 점검 스크립트

#!/usr/bin/env bash
set -euo pipefail

TARGET="${1:?usage: $0 <host-or-ip>}"

echo "## DNS"
dig +short "$TARGET" 2>/dev/null || true

echo "## ICMP"
ping -c 3 "$TARGET" || true

echo "## TCP ports"
for port in 22 80 443; do
  nc -vz -w 3 "$TARGET" "$port" || true
done

echo "## HTTP"
curl -I --connect-timeout 5 "http://$TARGET/" || true
curl -kI --connect-timeout 5 "https://$TARGET/" || true

판단 기준

  • ping 실패, TCP 성공: ICMP만 차단된 정상 서버일 수 있습니다.
  • ping 성공, TCP 실패: 서버는 살아 있지만 해당 서비스가 down이거나 방화벽에서 포트를 막았을 수 있습니다.
  • TCP 성공, HTTP 5xx: 네트워크보다 애플리케이션 또는 upstream 장애 가능성이 큽니다.
  • DNS 실패, IP 접속 성공: DNS 레코드나 resolver 문제를 확인합니다.
  • 모든 확인 실패: 대상 전원, 라우팅, 방화벽, 보안그룹, 회선 장애를 순서대로 확인합니다.
BGM EVER