네트워크 문제를 해결하는 일은 생각보다 어렵고 답답할 수 있습니다. Windows의 네트워크 진단 도구를 이용하면 인터넷 연결 상태를 간단히 확인할 수 있지만, 대부분의 문제를 해결하기에는 역부족입니다. 때로는 가장 근본적인 방법, 즉 명령줄(커맨드 라인)을 통해 직접 문제를 진단해야 할 때가 있습니다.
시각적인 인터페이스 대신 명령줄을 사용하면 다음과 같은 장점이 있습니다.
- 개별 항목을 하나씩 점검하여 문제의 원인을 정확히 분리해낼 수 있습니다.
- 명령줄 도구는 더 다양한 옵션을 제공하므로 시스템을 더 깊이 있게 테스트할 수 있습니다.
- 스크립트를 활용해 진단 과정을 자동화할 수 있습니다.
이 글에서는 명령줄을 사용해 네트워크 문제를 진단하고 해결하는 방법을 단계별로 소개합니다. 시작하기 전에 먼저 관리자 권한으로 명령 프롬프트를 실행했는지 확인하세요.
1. 케이블 연결 상태 확인하기
ipconfig 도구를 사용하면 케이블에 문제가 있는지 확인할 수 있습니다. 이 명령을 입력하면 Windows가 네트워크 인터페이스 목록과 각 인터페이스의 연결 여부를 보여줍니다. '미디어 연결 끊김'으로 표시된 항목이 있다면 케이블이 제대로 연결되지 않았거나 물리적인 문제가 있을 가능성이 높습니다.
2. 게이트웨이 작동 여부 확인하기
게이트웨이는 일반적으로 공유기(라우터)를 의미하며, 컴퓨터를 다른 네트워크 및 인터넷에 연결해 주는 장치입니다. 이 장치와 통신할 수 없다면 인터넷 연결도 불가능합니다.
먼저 ipconfig 명령으로 기본 게이트웨이(Default Gateway)의 IP 주소를 확인합니다.
그다음 ping 명령으로 게이트웨이가 응답하는지 테스트합니다. ping은 특정 IP 주소를 가진 장치가 응답하는지 알려주는 도구로, 이 테스트를 통해 네트워크 어댑터, 케이블, 공유기까지 올바르게 연결되어 있는지 확인할 수 있습니다.
3. DNS 작동 여부 확인하기
DNS 서버는 www.maketecheasier.com 같은 사이트 이름을 해당 IP 주소로 변환해 주는 역할을 합니다. 인터넷상의 컴퓨터에 접속하려면 Windows가 반드시 이 숫자(IP 주소)를 알아야 하므로, DNS에 연결할 수 없다면 인터넷 사용은 사실상 불가능합니다.
참고로 많은 가정용 환경에서는 공유기가 DNS 서버 역할을 겸하기 때문에 라우터 IP와 DNS IP가 동일하게 표시되는 경우가 많습니다.
DNS를 테스트하려면 nslookup 명령을 사용하세요. 이 명령은 해당 서버에 도메인 조회 요청을 보냅니다. 아래 예시에서는 DNS 서버가 사이트 주소를 어떻게 IP로 변환하는지 확인할 수 있습니다.
4. 과도한 연결을 생성하는 프로세스 찾기
프로그램이 인터넷이나 다른 컴퓨터에 접속할 때마다 새로운 연결이 열립니다. 그런데 공유기가 처리할 수 있는 동시 연결 수에는 한계가 있습니다. 어떤 프로그램이 비정상적으로 많은 연결을 열면 인터넷 전체가 차단될 수도 있습니다.
이 경우 netstat 명령에 '-a'와 '-b' 매개변수를 붙여 사용하면 됩니다.
netstat -a -b
이 명령을 실행하면 어떤 프로그램이 어떤 연결을 사용하고 있는지 확인할 수 있습니다. 예를 들어 'Filezilla Server'라는 프로그램이 21번 포트에서 대기 중인 것처럼 말입니다.
5. 방화벽 규칙 점검하기
방화벽 설정 오류도 인터넷이 작동하지 않는 원인이 될 수 있습니다. 방화벽 구성이란 특정 응용 프로그램의 인터넷 접근을 허용할지 차단할지 결정하는 규칙들의 집합입니다. 기본적으로 이러한 규칙은 매우 많아서 한 화면에 모두 표시되지 않습니다. 이럴 때는 다음 명령으로 정보를 텍스트 파일로 내보내 확인하는 것이 편리합니다.
netsh advfirewall firewall show rule name=all > firewallrules.txt
notepad firewallrules.txt
첫 번째 명령은 방화벽 구성을 읽어 텍스트 파일로 저장하고, 두 번째 명령은 메모장으로 해당 파일을 열어줍니다.
또한 netsh 유틸리티를 간단히 활용하면 차단(Block) 규칙이 있는지 빠르게 확인할 수 있습니다.
netsh advfirewall firewall show rule name | find "Block"
아쉽게도 이 방법으로는 해당 규칙에 의해 차단된 프로그램이 무엇인지까지는 표시되지 않습니다.
여러분은 인터넷 연결 상태를 점검할 때 어떤 방법을 사용하시나요? 유용한 팁이 있다면 댓글로 공유해 주세요.