우분투 · 리눅스 입문 — 16편 (중급)

리눅스 네트워크 명령어 — ip·ping·curl·ss

"인터넷이 안 돼요" — 그게 와이파이 문제인지, DNS 문제인지, 그 서버가 죽은 건지. 한 줄씩 짚어 원인을 좁히는 명령어들.

2026년 5월 13일 · 약 8분 · 26편 입문 시리즈 16편

터미널에 ip·ping·curl·ss 명령으로 네트워크를 진단하는 화면 — 리눅스 네트워크 명령어를 상징하는 일러스트

3편에서 "온라인 계정 연결"·"와이파이 연결"을 GUI로 했죠. 12편에선 tail -f /var/log/syslog로 로그를 봤고요. 이번엔 네트워크가 안 될 때 명령어로 원인을 찾는 법입니다 — "인터넷 안 돼요"라는 막연한 증상을, "와이파이는 붙었나 → IP는 받았나 → 게이트웨이엔 닿나 → 인터넷엔 닿나 → DNS는 되나 → 그 사이트 서버가 죽었나"로 한 단계씩 좁히는 거예요.

핵심 도구 — ip(내 주소·경로), ping(닿나?), dig(DNS), curl·wget(가져오기), ss(열린 포트). 옛날 문서의 ifconfig·netstat는 요즘 ip·ss로 대체됐어요(없으면 sudo apt install net-tools로 옛것도 깔리지만, 새것을 익히세요). 26편 입문 시리즈 16편, "중급" 묶음. 다 보는 명령이라 안전합니다.

준비물 — 우분투 + 터미널 + 인터넷(이게 잘 돼야 진단 명령들이 의미 있겠죠 — 안 될 땐 더 의미 있고). 12편(파이프·로그)·14편(프로세스)을 봤다면 이어집니다.

내 네트워크 상태 — ip a · ip route

"나는 지금 어떤 IP를 갖고 있고, 어디로 나가나"를 봅니다.

$ ip a 2: wlp2s0: ... state UP ... inet 192.168.0.42/24 ... ← 내 IP 주소(이 와이파이 안에서). 192.168.x.x = 사설(집/사무실 망) ← ip a (= ip address) : 네트워크 인터페이스(랜카드·와이파이) 목록과 각자의 IP. 'state UP'이면 켜진 것 $ ip route default via 192.168.0.1 dev wlp2s0 ... ← '기본 경로' = 게이트웨이(공유기) 주소. 인터넷으로 나갈 때 거치는 문 $ hostname -I 192.168.0.42 ← 내 IP만 간단히 (여러 개면 다 나옴) $ cat /etc/resolv.conf nameserver 127.0.0.53 ← DNS 서버 (이름→IP 변환을 누구한테 물어보나). 우분투는 systemd-resolved 가 중계

여기서 보는 것: ① 인터페이스가 state UP인가(와이파이/랜이 켜졌나) → ② inet 줄에 192.168.x.x 같은 IP가 있나(공유기한테 주소를 받았나 — 없으면 와이파이 인증 문제) → ③ ip routedefault via가 있나(나갈 문을 아나). 이 셋이 멀쩡하면 "내 쪽 기본"은 OK고, 그다음은 "닿나"를 봅니다.

닿나? — ping · traceroute · dig

연결을 단계별로 테스트합니다. 가까운 데부터 → 먼 데로.

$ ping -c 4 192.168.0.1 ← 1) 공유기(게이트웨이)에 닿나? -c 4 = 4번만(안 하면 무한 — Ctrl+C). 응답 오면 내 망은 OK $ ping -c 4 8.8.8.8 ← 2) 인터넷(구글 DNS IP)에 닿나? 여기까지 되면 '연결'은 됨. 안 되면 회선/공유기 문제 $ ping -c 4 google.com ← 3) 이름으로도 닿나? IP(8.8.8.8)는 되는데 이건 안 되면 → DNS 문제 (이름→IP 변환 실패) $ dig google.com +short 142.250.x.x ← DNS 조회: 이 이름의 IP가 뭔지. 결과가 나오면 DNS OK. (옛 도구는 nslookup google.com) $ traceroute google.com ← 경로 추적: 어느 중간 지점(홉)에서 막히는지. 별표(* * *)가 줄줄이면 거기서 끊긴 것 (없으면 sudo apt install traceroute)
진단 사다리: ping 192.168.0.1(공유기) → ping 8.8.8.8(인터넷, IP로) → ping google.com(인터넷, 이름으로). 어디서 처음 실패하는지가 곧 문제 위치 — 공유기에서 실패=내 와이파이/케이블, 8.8.8.8에서 실패=회선/공유기 인터넷, 이름에서만 실패=DNS. DNS 문제면 임시로 resolvectl query google.com으로 확인하거나 설정에서 DNS를 8.8.8.8/1.1.1.1로 바꿔보면 됩니다.

뭔가 가져오기 — curl · wget

이 둘은 "URL에서 데이터를 받아오는" 도구. 명령줄에서 웹을 다루는 기본기예요.

$ curl https://example.com ← 그 페이지의 HTML 을 그대로 받아 화면에. API 응답 확인·웹 살아있나 테스트에 자주 $ curl -I https://example.com HTTP/2 200 ... ← -I = 헤더만. 'HTTP/2 200' 이면 정상. 301/302=리다이렉트, 403=거부, 404=없음, 500=서버 에러 $ curl -s https://api.github.com/users/torvalds | head ← -s = 진행바 숨김. API 의 JSON 응답을 받아 파이프로 (7편). 뒤에 | jq 붙이면 보기 좋게(jq 설치 시) $ wget https://example.com/file.zip ← wget = 파일 다운로드 특화. 진행바 보이고, -c 로 이어받기, 큰 파일에 좋음 $ curl -L -o saved.html https://example.com ← curl 로 파일 저장: -L=리다이렉트 따라가기, -o=저장할 이름. wget 대신 curl 로도 받을 수 있음

요약: 빠르게 "이 URL 살아있나/뭐 응답하나" = curl -I 주소(헤더만). API 응답 보기 = curl -s 주소 | jq. 파일 다운 = wget 주소 또는 curl -LO 주소. (curl은 옵션이 어마어마하게 많은데, -I·-s·-L·-o 넷이면 일상은 됩니다.)

누가 듣고 있나 — ss, 그리고 진단 순서

"내 컴퓨터의 어떤 프로그램이 어느 포트를 열어놓고 연결을 기다리나(LISTEN)" — 서버를 돌릴 때나 "이 포트 이미 쓰는 중" 에러가 날 때 봅니다.

$ ss -tlnp State ... Local Address:Port ... Process LISTEN ... 127.0.0.1:631 ... cupsd ← 포트 631 을 cups(인쇄)가 듣고 있음. 127.0.0.1=내부만 LISTEN ... 0.0.0.0:22 ... sshd ← 포트 22 를 ssh 가, 모든 주소에서(0.0.0.0) — 외부에서도 접속 가능 ← ss -tlnp : -t TCP, -l LISTEN(듣는 것만), -n 숫자로, -p 프로세스 이름까지. 옛 도구는 netstat -tlnp $ ss -tnp | grep firefox ← 지금 맺어진 연결 중 firefox 것만 (어디에 붙어있나)
"인터넷 안 돼요" 진단 순서 (위에서 아래로):ip a — 와이파이 인터페이스 UP이고 192.168.x.x IP 받았나? (아니면 와이파이 재연결) → ② ip routedefault via 있나? → ③ ping -c4 192.168.0.1(또는 ②의 게이트웨이) — 공유기 닿나? (아니면 케이블/와이파이/공유기) → ④ ping -c4 8.8.8.8 — 인터넷 닿나? (아니면 회선/ISP) → ⑤ ping -c4 google.com — 이름도 되나? (8.8.8.8만 되고 이건 안 되면 DNS — 설정에서 DNS 바꿔보기) → ⑥ 그 사이트만 안 되면 → curl -I 그URL로 그쪽 서버 응답 확인 (그쪽이 죽었을 수도). 이 사다리만 따라가면 "그냥 안 돼요"가 "DNS 문제네"로 좁혀집니다.
오늘의 정리: 내 상태: ip a(IP)·ip route(게이트웨이)·hostname -I. 닿나: ping -c4 대상(가까운→먼 순)·traceroute 대상·dig 이름 +short(DNS). 가져오기: curl -I 주소(헤더)·curl -s 주소 | jq(API)·wget 주소(파일). 듣는 포트: ss -tlnp. 옛것↔새것: ifconfigip a, netstatss, nslookupdig. 진단은 항상 "가까운 데부터 먼 데로" 사다리.

시리즈 흐름

  1. 1~13편 입문·기초·vim ✔   14편 프로세스 ✔   15편 디스크 ✔
  2. 16편 — 네트워크 명령어 (이 글) ✔
  3. 17편 — 우분투 방화벽 ufw (어느 포트를 열고 닫나 — 서버 보안의 기본)
  4. 18편~ — SSH 키 / systemd 서비스 / cron / 셸 스크립트 …

오늘 할 일: ip a·ip route로 내 IP와 게이트웨이를 확인하고, ping -c4 8.8.8.8ping -c4 google.comdig google.com +short 순서로 쳐보세요. (다 잘 되면 다행 — 안 될 때 이 사다리가 진가를 발휘합니다.) 그리고 curl -I https://junai.ai 한 번 — HTTP/2 200이 떠야 정상. ss -tlnp로 내 컴퓨터가 어떤 포트를 열어놨는지도 한 번 보고요. 17편에서 만나요. (네트워크 명령 전체는 man ip·man ss·man curl, 또는 우분투 서버 문서.)

우분투·리눅스 입문 시리즈

이제 "인터넷 안 돼요"를 한 줄씩 좁힙니다. 17편 "우분투 방화벽 ufw"로 이어집니다.

다음 편은 JUNAI 블로그에서 이어 보세요.

© 2026 JUNAI · 우분투·리눅스 입문 시리즈 16편 · 본 글은 2026년 5월 13일 기준으로 작성되었습니다.

© 2026 주나이테크(주) @JUNAITECH