일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 |
- 14일 공부
- 티스토리챌린지
- 신혼 여행
- 논문 정리
- 생성 패턴
- 구조 패턴
- leetcode
- Playwright
- 지표
- terraform
- amazon ecs
- MAPF
- PostgreSQL
- AWS 비용 절감
- 실용주의 프로그래머
- Go-lang
- ssh
- DevOps
- Rust
- docker
- 도커 주의사항
- study
- 청첩장 모임
- 오블완
- AWS
- 경로 계획 알고리즘
- github
- Monthly Checklist
- Til
- 디자인 패턴
- Today
- Total
밤 늦게까지 여는 카페
네트워크 문제 있을 때는 일단 ping 부터!+ping이 안되면 어떡하죠? feat. curl, tcping 본문
안녕하세요. 날씨가 많이 선선해졌습니다만 낮에는 햇빛이 많이 뜨겁더라고요.
그래도 요즘처럼 날씨가 좋았던 적이 없어서 정말 행복합니다 ㅎㅎ
이번에는 네트워크 문제가 발생했을 때 1차적인 원인 파악에 사용되는 ping 도구의 사용법을 기록하려고 합니다.
정말 간단하지만 익혀두면 유용하게 사용할 수 있습니다!
0. ping 설치 방법
다음 명령어로 ping 소프트웨어를 설치합니다.
# Ubuntu
sudo apt update
sudo apt install iputils-ping
# Fedora
sudo dnf update
sudo dnf install iputils
1. ping 사용 방법
ping 도구는 네트워크 연결을 확인하고 싶은 대상에
ICMP echo request를 보내고 ICMP echo reply를 받는 것을 간단하게 구현한 소프트웨어 입니다.
다음과 같이 명령어를 입력해서 ping 도구를 사용할 수 있습니다.
ping [옵션] [대상 IP 주소 또는 도메인 이름]
사실 옵션 없이 대상 IP 주소만 입력해도 됩니다만

적절한 옵션 사용이 필요해지는 순간들이 있더라고요 ㅋㅋㅋ
예를 들어, ping 명령의 타임아웃을 5초로 설정하고 ping 요청을 3번만 보내고 싶을 수 있습니다.
그럴 때는 ping -W 5 -c 3 google.com 명령어를 사용하면 됩니다.
ping 명령어를 이용해서 네트워크 연결을 주기적으로 확인하고 있다면 시간을 기록하는 것이 중요하다면 -D 옵션을 사용할 수 있습니다.

- 다른 옵션들도 man ping 명령어를 통해서 확인해보세요!

2. ping을 사용할 수 없을 때는 어떡하죠?
ping을 사용할 수 없거나 특정 포트에 대해서 네트워크 연결에 문제가 없는지 확인해야 할 때가 있습니다.
- 네트워크 보안을 신경쓰는 곳에서는 내부의 ICMP 패킷 통신을 차단합니다.
- ICMP 패킷 통신을 허용하면 잠재적으로 보안, 네트워크 성능에 악영향을 끼칠 수 있기 때문입니다.
이럴 때는 어떻게 네트워크 연결을 확인할 수 있을까요?
저는 curl 도구와 tcping을 사용해서 확인할 수 있었습니다!
아무리 네트워크 정책이 제한되어 있더라도 최소한 특정 도메인/IP로의 HTTP 통신은 가능하게 설정해뒀을테니 이것을 이용해서 네트워크 연결을 확인했습니다.
각 도구들을 이용해서 네트워크 연결을 어떻게 확인했는지 간단하게 정리해보겠습니다.
3. curl을 이용한 네트워크 연결 확인 방법
혹시라도 curl이 설치되어 있지 않다면 다음 명령어를 이용해서 curl을 설치합니다.
# Ubuntu
sudo apt update
sudo apt install curl
# Fedora
sudo dnf update
sudo dnf install curl
curl도 ping과 유사하게 다음과 같은 명령어 형태로 사용할 수 있습니다.
curl [옵션] [대상 IP 주소 또는 도메인 이름]:[포트 번호]

하지만 네트워크 확인이 필요한 상황에서는 보다 많은 정보가 필요하겠죠?
제가 사용해봤던 옵션들은 연결 타임 아웃을 조절하는 --connect-timeout, 헤더를 보여주는 -D 정도였습니다.

- 다른 옵션들이 궁금하시다면 man curl 명령어를 통해서 확인해보세요!
4. tcping을 이용한 네트워크 연결 확인 방법
tcping은 tcp를 이용해서 ping을 구현한 것인데 다양한 구현체가 있습니다.
- ping이라고 설명드렸지만 대상으로 SYN을 보낸 순간부터, 대상으로부터 SYN ACK을 받기까지의 시간을 재는 것으로 TCP 3 handshake
저는 이번 글에서 https://github.com/cloverstd/tcping 를 이용해봤습니다.
- 혹시 괜찮은 tcping 구현체가 있다면 공유 부탁드립니다!


'유용한 툴 > 네트워크' 카테고리의 다른 글
네트워크 이슈들은 어떻게 재현할 수 있을까요? - Linux "tc" 간단 사용기 (0) | 2024.02.03 |
---|