[Linux] 네트워크 연결 확인 실습

mommers·2026년 2월 2일

Linux

목록 보기
19/59

네트워크 연결 확인 (ping, ip, ifconfig)

  • IP 주소 확인, 인터넷 연결 상태 점검을 목표로
  • ip addr show로 내 IP(Private IP) 확인.

  • ping 8.8.8.8로 외부 인터넷 연결 확인.

  • 본인 IP

  • ping 8.8.8.8

결과

현재 사용 중인 네트워크의 공인 IP (Public IP) 주소 하나만 딱 출력됨.

예시:

Plaintext

210.123.45.67

동작 원리

  1. 요청: 내 컴퓨터(curl)가 ifconfig.me라는 외부 웹사이트에 접속함.
  2. 응답: 웹사이트가 "너는 지금 이 주소(IP)를 달고 들어왔어"라고 텍스트로 반송해줌.
  3. 의미: 공유기 내부 주소(192.168...)가 아니라, 전 세계 인터넷 망에서 식별되는 실제 우리 집(혹은 회사) 대문 주소임.

비교 (혼동 주의)

  • ifconfig / ip addr: 사설 IP (Private IP) 확인용. (공유기 안에서만 통하는 주소. 예: 192.168.0.50).
  • curl ifconfig.me: 공인 IP (Public IP) 확인용. (외부에서 내 서버로 접속할 때 필요한 주소).

꿀팁 (대체 명령어)

ifconfig.me가 느리거나 응답 없을 때 아래 것들도 많이 씀.

  • curl icanhazip.com (가장 빠르고 간결함)
  • curl ipinfo.io (IP뿐만 아니라 통신사, 국가, 도시 정보까지 JSON으로 줌)

curl?


  • *CURL (Client URL)은 서버와 통신하며 데이터를 보내거나 가져오는 명령어 도구이자 라이브러리입니다. 임베디드나 백엔드 개발자에게는 "망치"** 같은 필수 도구입니다.

브라우저 없이 터미널에서 웹페이지 소스를 보거나, 파일을 다운로드하거나, API를 테스트할 때 씁니다.


자주 사용하는 것 5가지

① 웹페이지 내용 가져오기 (GET)

그냥 주소만 치면 HTML 소스 코드를 화면에 뱉어냅니다.

Bash

curl https://www.google.com

② 파일 다운로드 (O / o)

대문자 O를 가장 많이 씁니다. (원본 파일명 그대로 저장)

Bash

# 원본 이름(firmware.bin)으로 저장
curl -O https://example.com/firmware.bin

# 내가 원하는 이름(new_fw.bin)으로 바꿔서 저장
curl -o new_fw.bin https://example.com/firmware.bin

③ API 테스트: 데이터 보내기 (d / POST)

IoT 장비가 서버로 센서 데이터를 보낼 때 잘 되는지 테스트할 때 씁니다.

Bash

curl -X POST -H "Content-Type: application/json" \
     -d '{"temp": 25, "humid": 60}' \
     http://my-api-server.com/sensor
  • X POST: 보내는 방식 지정 (생략하면 d 있을 시 자동 POST).
  • H: 헤더 설정 (JSON이라고 알려줌).
  • d: 실제 보낼 데이터(Body).

④ "서버가 죽었나?" 응답 헤더만 확인 (I)

내용(HTML)은 필요 없고, 서버가 살아있는지(200 OK)만 빠르게 볼 때.

Bash

curl -I https://www.google.com
# 결과: HTTP/2 200 ...

⑤ 리다이렉트 따라가기 (L)

사이트가 주소를 옮겼을 때(301, 302), -L이 없으면 "Moved" 메시지만 나오고 끝납니다. 최종 목적지까지 따라가려면 붙여야 합니다.

curl -L http://google.com
# http -> https로 자동 이동해서 결과 보여줌

wget과 뭐가 다른가?

  • curl: 통신(Data Transfer)에 집중. API 테스트, 복잡한 업로드/다운로드, 라이브러리(libcurl)로 개발에 활용 가능.
  • wget: 다운로드(Download)에 집중. 폴더째로 긁어오기(재귀 다운로드), 네트워크 끊기면 이어받기 등이 더 강력함.

한 줄 요약: 단순 파일 다운로드는 wget, API 테스트나 정교한 통신 디버깅은 curl.


client_loop: send disconnect: Broken pipe

SSH 접속이 끊어졌다는 뜻입니다.

가장 흔한 원인은 "너무 오랫동안 아무것도 안 쳐서" 중간에 있는 공유기나 방화벽이 연결을 끊어버린 것입니다. (Time out).

해결 방법은 "내가 살아있다는 신호(Heartbeat)"를 주기적으로 보내게 설정하는 것입니다.


1. 클라이언트에서 설정하기

내가 쓰는 PC(노트북)에서 설정을 한 번만 해두면, 어떤 서버(라즈베리 파이)에 접속하든 안 끊깁니다.

  1. 파일 열기 (내 PC 터미널에서):Bash

    nano ~/.ssh/config

    (파일이 없으면 빈 화면이 나옵니다.)

  2. 내용 추가:Plaintext

    Host *
        ServerAliveInterval 60
        ServerAliveCountMax 3
    • 의미: 60초마다 서버에 "나 살아있어?"라고 핑을 보냅니다. 이걸 설정하면 공유기가 연결을 안 끊습니다.

2. 서버에서 설정하기 (라즈베리 파이)

내 PC뿐만 아니라, 이 파이에 접속하는 모든 사람이 안 끊기게 하려면 서버 설정을 고칩니다.

  1. 파일 열기 (라즈베리 파이에서):Bash

    sudo nano /etc/ssh/sshd_config
  2. 내용 수정/추가:Plaintext

    ClientAliveInterval 60
    ClientAliveCountMax 3
  3. 재시작:Bash

    sudo systemctl restart ssh

3. 팁: tmux 사용

연결이 끊기면 컴파일하던 거나 코딩하던 게 다 날아가는 게 큰일입니다.

이걸 방지하기 위해 tmuxscreen을 사용하면 좋습니다.

  • Broken pipe로 접속이 끊겨도, 다시 로그인해서 tmux attach라고 치면 작업하던 화면이 그대로 복구되므로, 임베디드 개발 필수 툴이라고 합니다.
profile
임베디드 개발자가 되기 위해 공부중입니다!

0개의 댓글