“인터넷이 왜 느리지?”, “API 서버가 응답하지 않는데, 내 문제일까 서버 문제일까?” 네트워크 문제는 개발자나 파워 유저에게 피할 수 없는 숙제입니다. 브라우저의 ‘새로고침’만으로는 원인을 알 수 없을 때, 터미널은 강력한 네트워크 진단 도구가 됩니다.
이번 포스팅에서는 GUI 도구로는 알 수 없는 네트워크의 속사정을 파헤치는 고급 터미널 명령어들을 소개합니다.
## 내 Mac의 네트워크 현황판: netstat 과 lsof
이 명령어들은 현재 내 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와 같은 도구들은 문제의 실마리를 찾는 강력한 탐침 역할을 합니다. 이 명령어들에 익숙해지면, 네트워크 문제 앞에서 더 이상 막막함을 느끼지 않게 될 것입니다.