매일 업데이트
2022-11-18 02:25 7 min

6 네트워크 연결을 테스트하는 Linux 유틸리티

네트워크 연결 문제를 겪고 계신가요? 두 네트워크 끝점 간의 연결 상태를 확인하는 방법을 알아보고 싶으신가요?

시스템 관리자로서 네트워크 문제를 해결하는 데 있어 연결 확인은 매우 중요한 단계입니다. 애플리케이션이 백엔드 서비스에 접속하지 못하거나, 외부 URL에서 데이터를 가져오지 못하거나, 특정 흐름이 열려 있는지 확인해야 할 때, 이 모든 상황에서 연결 확인이 필요합니다.

이러한 문제 해결을 위해 다음과 같은 유용한 명령들을 소개합니다. 이 명령들은 CentOS 환경에서 테스트되었으며, 대부분의 Linux 배포판에서도 문제없이 작동할 것입니다.

자, 함께 살펴보시죠!

텔넷(Telnet)

텔넷은 서버와 다른 네트워크 장치 사이의 기본적인 연결을 테스트하는 데 널리 사용되는 명령어입니다. 사용법은 매우 간단합니다.

telnet $대상IP $포트

예를 들어, 10.0.0.1 IP 주소의 8080 포트에 연결이 가능한지 확인하려면 다음과 같이 명령을 입력합니다.

telnet 10.0.0.1 8080

연결에 문제가 없다면, "Connected to 10.0.0.1"과 같은 메시지가 나타날 것입니다.

Trying 10.0.0.1...
Connected to 10.0.0.1.
Escape character is '^]'.

참고: 텔넷 명령을 실행할 때 "command not found" 오류가 발생하면, 텔넷을 설치해야 합니다. 설치 방법은 여기에서 확인할 수 있습니다.

텔넷은 대부분의 상황에서 유용하지만, 다른 대안이 필요한 경우도 있습니다. 다음은 텔넷의 몇 가지 대안입니다.

ncat 또는 nc

Ncat(nc라고도 함)은 다양한 기능을 제공하는 강력한 네트워크 유틸리티입니다. 바인딩, 연결 수락, 원격 명령 실행, 데이터 읽기 및 쓰기 등 다양한 작업을 수행할 수 있으며, IPv4 및 IPv6를 모두 지원합니다.

특정 포트가 열려 있는지 간단하게 테스트하려면 다음 명령을 사용합니다.

nc -vz $호스트이름 $포트

예를 들어, koreantech.org.com의 443 포트를 테스트하는 경우:

[[email protected] ~]# nc -vz koreantech.org.com 443
Ncat: Version 7.50 ( https://nmap.org/ncat )
Ncat: Connected to 104.25.133.107:443.
Ncat: 0 bytes sent, 0 bytes received in 0.02 seconds.
[[email protected]ekflare-lab ~]#

ncat은 특정 포트에서 수신 대기하도록 연결을 바인딩하는 기능도 제공합니다. 실제 서비스가 실행되고 있지 않더라도 연결 가능 여부를 확인할 때 유용할 수 있습니다.

특정 포트에서 수신을 시작하려면 다음 명령을 실행합니다:

nc -l $포트번호

ncat이 설치되어 있지 않다면, CentOS/RHEL 서버에서는 `yum install nc` 명령으로 설치할 수 있습니다.

wget

wget은 HTTP, HTTPS 및 FTP를 통해 데이터를 다운로드하거나 연결을 테스트하는 데 유용한 명령입니다. 웹 엔지니어 또는 웹 관련 문제를 자주 다루는 사용자에게 필수적인 도구입니다. wget을 사용한 테스트는 다음과 같이 간단합니다.

wget $URL

tools.koreantech.org.com을 테스트하는 예시는 다음과 같습니다.

[[email protected] ~]# wget tools.koreantech.org.com
--2019-05-09 20:40:01--  http://tools.koreantech.org.com/
Resolving tools.koreantech.org.com (tools.koreantech.org.com)... 104.25.134.107, 104.25.133.107, 2606:4700:20::6819:866b, ...
Connecting to tools.koreantech.org.com (tools.koreantech.org.com)|104.25.134.107|:80... connected.
HTTP request sent, awaiting response... 301 Moved Permanently
Location: https://tools.koreantech.org.com/ [following]
--2019-05-09 20:40:01--  https://tools.koreantech.org.com/
Connecting to tools.koreantech.org.com (tools.koreantech.org.com)|104.25.134.107|:443... connected.
HTTP request sent, awaiting response... 200 OK
Length: unspecified [text/html]
Saving to: 'index.html.2'

    [ <=>                                                                                                                                  ] 15,139      --.-K/s   in 0.001s

2019-05-09 20:40:02 (12.8 MB/s) - 'index.html.2' saved [15139]

[[email protected] ~]#

연결되었다는 메시지가 표시되면 연결에 문제가 없다는 의미입니다.

자주 사용되는 wget 명령에 대한 자세한 내용은 여기에서 확인할 수 있습니다.

curl

curl은 다양한 기능을 제공하는 다목적 도구입니다.

curl을 사용하여 특정 포트에 텔넷과 유사한 방식으로 연결을 시도할 수 있다는 것을 알고 계셨나요?

다음은 그 방법입니다:

curl -v telnet://$IP:$PORT

예시:

[[email protected] ~]# curl -v telnet://chandan.io:443
* About to connect() to chandan.io port 443 (#0)
*   Trying 104.31.68.106...
* Connected to chandan.io (104.31.68.106) port 443 (#0)

수신 포트나 방화벽에 문제가 없다면 "Trying" 메시지가 표시됩니다.

[[email protected] ~]# curl -v telnet://chandan.io:4434
* About to connect() to chandan.io port 4434 (#0)
*   Trying 104.31.68.106...

curl은 또한 HTTP, HTTPS, FTP, IMAP, LDAP, POP3, SCP, SFTP, GOPHER 등 다양한 프로토콜을 사용하여 데이터를 다운로드할 수 있습니다.

nmap

nmap은 수많은 기능을 제공하는 강력한 도구이며, 주로 보안 관련 작업에 사용됩니다. nmap을 사용하면 단일 IP/포트 또는 IP 범위에 대한 스캔을 수행할 수 있습니다. nmap 학습 자료를 참고하세요.

단일 포트를 테스트하려면 다음과 같이 명령을 입력합니다:

nmap -p $포트 $IP

예를 들어, siterelic.com의 443 포트를 테스트하는 경우:

[[email protected] ~]# nmap -p 443 siterelic.com
Starting Nmap 7.70 ( https://nmap.org ) at 2019-05-10 06:55 UTC
Nmap scan report for siterelic.com (104.27.174.50)
Host is up (0.0079s latency).
Other addresses for siterelic.com (not scanned): 104.27.175.50 2606:4700:30::681b:ae32 2606:4700:30::681b:af32

PORT    STATE SERVICE
443/tcp open  https

Nmap done: 1 IP address (1 host up) scanned in 0.13 seconds
[[email protected] ~]#

결과에서 "STATE" 열을 확인하십시오. "open"이라고 표시되면 해당 포트가 열려 있고 연결이 가능함을 의미합니다. "filtered"라고 표시되면 연결이 존재하지 않거나 방화벽에 의해 차단되었음을 의미합니다.

ping

ping은 원격 호스트가 ICMP ECHO_REQUEST에 응답하는지 여부를 확인하는 데 널리 사용되는 명령입니다. 하지만 원격 네트워크의 방화벽에서 ICMP가 차단된 경우 정확한 결과를 얻지 못할 수 있습니다. 일반적인 상황에서는 다음과 같이 IPv4 또는 IPv6 네트워크 끝점에 ping을 실행할 수 있습니다.

ping $ip주소
ping $url

예를 들어, koreantech.org.com에 대한 ping 성공 결과:

[email protected] ~ % ping koreantech.org.com
PING koreantech.org.com (104.27.119.115): 56 data bytes
64 bytes from 104.27.119.115: icmp_seq=0 ttl=53 time=7.944 ms
64 bytes from 104.27.119.115: icmp_seq=1 ttl=53 time=8.870 ms

내부 IP 주소에 대한 ping 실패 결과:

[email protected] ~ % ping 192.168.0.1
PING 192.168.0.1 (192.168.0.1): 56 data bytes
Request timeout for icmp_seq 0
Request timeout for icmp_seq 1

엔드포인트가 IPv6를 지원하는 경우, `ping6` 명령을 사용할 수 있습니다.

[email protected] ~ % ping6 koreantech.org.com
PING6(56=40+8+8 bytes) 2a01:4b00:88e4:8700:d8ca:bf50:159c:2a1d --> 2606:4700:20::681b:7673
16 bytes from 2606:4700:20::681b:7673, icmp_seq=0 hlim=250 time=8.650 ms
16 bytes from 2606:4700:20::681b:7673, icmp_seq=1 hlim=250 time=8.738 ms

인터넷을 통해 원격 ping을 수행해야 하는 경우, 온라인 ping 도구를 이용할 수도 있습니다.

결론

텔넷은 최신 Linux 버전에서 점차 사용이 줄어들고 있습니다. 위에 소개된 텔넷 대안들을 활용하면 충분히 연결 상태를 확인할 수 있습니다.

Linux를 처음 접하고 배우는 데 관심이 있으시다면, 다음 Udemy 강좌를 참고해 보세요. Udemy 리눅스 강좌.

저자
Korea

기술 트렌드와 실용적인 팁을 전하는 लेखक입니다.