[macOS] 네트워크 문제 해결사: netstat, curl, dig 활용법

“인터넷이 왜 느리지?”, “API 서버가 응답하지 않는데, 내 문제일까 서버 문제일까?” 네트워크 문제는 개발자나 파워 유저에게 피할 수 없는 숙제입니다. 브라우저의 ‘새로고침’만으로는 원인을 알 수 없을 때, 터미널은 강력한 네트워크 진단 도구가 됩니다.

이번 포스팅에서는 GUI 도구로는 알 수 없는 네트워크의 속사정을 파헤치는 고급 터미널 명령어들을 소개합니다.


## 내 Mac의 네트워크 현황판: netstatlsof

이 명령어들은 현재 내 Mac에서 어떤 네트워크 연결이 이루어지고 있는지 상세하게 보여줍니다.

  • netstat -an | grep LISTEN: 현재 어떤 프로그램들이 외부 연결을 기다리고 있는지(LISTEN 상태) 모든 포트를 보여줍니다. 로컬 개발 서버가 정상적으로 실행되었는지 확인할 때 유용합니다.
  • lsof -i :[포트번호]: 특정 포트(예: :3000)를 어떤 프로세스가 사용하고 있는지 역으로 추적합니다. “Port already in use” 에러가 발생했을 때, 범인을 찾는 데 필수적인 명령어입니다.
# 3000번 포트를 사용 중인 프로세스 찾기
lsof -i :3000

## 웹 서비스와 대화하기: curl

curl은 터미널에서 HTTP 요청을 보내고 응답을 확인할 수 있는 만능 도구입니다. 웹 브라우저 없이도 API를 테스트하거나 웹사이트의 상태를 점검할 수 있습니다.

  • 기본 사용법 (웹사이트 HTML 가져오기):
curl https://www.apple.com
  • API 테스트 (헤더 정보 확인): -I 옵션을 사용하면 HTTP 헤더 정보만 가져와 서버의 상태 코드(200 OK, 404 Not Found 등)를 빠르게 확인할 수 있습니다.
# API 서버가 살아있는지 확인
curl -I https://api.myproject.com/v1/status
  • POST 요청 보내기: -X POST 옵션과 -d 옵션을 이용해 API에 데이터를 전송하고 응답을 테스트할 수 있습니다.
curl -X POST -H "Content-Type: application/json" -d '{"name":"Gildong", "level":99}' https://api.myproject.com/v1/users

## 도메인의 비밀을 파헤치기: dig

dig (Domain Information Groper)는 특정 도메인 이름(예: google.com)에 대한 DNS 정보를 상세하게 조회하는 명령어입니다. 웹사이트 접속이 안 될 때, DNS 문제인지 아닌지 진단하는 데 사용됩니다.

dig google.com

위 명령어를 실행하면 해당 도메인에 연결된 IP 주소(A 레코드), 메일 서버 정보(MX 레코드) 등 전문가 수준의 DNS 정보를 얻을 수 있습니다.


## 결론

네트워크 문제는 복잡하고 원인이 다양하지만, 오늘 소개한 netstat, curl, dig와 같은 도구들은 문제의 실마리를 찾는 강력한 탐침 역할을 합니다. 이 명령어들에 익숙해지면, 네트워크 문제 앞에서 더 이상 막막함을 느끼지 않게 될 것입니다.