시스템이 가끔 문제를 만나게 되면, 문제를 해결하고 정상적이고 작동 중인 상태로 복구하기 위해 문제 해결 방법을 알아야 합니다. 이 섹션에서는 모든 리눅스 시스템 관리자가 가져야 할 기본 네트워크 문제 해결 기술에 초점을 맞춥니다.
네트워크 문제 해결의 기본적인 이해
대부분의 경우, 네트워크 관리자와 시스템 관리자 사이에는 큰 격차가 있습니다. 네트워크 시각성이 부족한 시스템 관리자는 보통 네트워크 관리자를 장애와 다운타임의 책임자로 지목하고, 서버 지식이 부족한 네트워크 관리자는 종단 장치 장애의 책임자로 시스템 관리자를 비난하기도 합니다. 그러나 책임 놀음은 문제를 해결하는 데 도움이 되지 않으며, 업무 환경에서는 동료 간의 관계를 악화시킬 수 있습니다.
시스템 관리자로서 네트워크 문제 해결의 기본적인 이해는 문제를 빠르게 해결하고 협조적인 작업 환경을 조성하는 데 도움이 될 것입니다. 이러한 이유로 네트워크 관련 문제를 진단할 때 유용한 기본 네트워크 문제 해결 팁 중 일부를 강조하기 위해 이 섹션을 마련했습니다.
A Recap of the TCP / IP Model
이전의 LFCA 시리즈 주제에서는 컴퓨터에서 데이터 전송을 보여주는 TCP/IP 개념 모델과 각 계층에 있는 프로토콜을 살펴보았습니다.

또 다른 중요한 개념 모델은 OSI 모델 (Open Systems Interconnection) 모델입니다. 네트워킹 시스템 및 컴퓨팅 기능을 모든 계층으로 분해하는 7계층 TCP/IP 프레임워크입니다.
OSI 모델에서 이러한 기능은 아래에서부터 다음 계층으로 분할됩니다. 물리 계층, 데이터 링크 계층, 네트워크 계층, 전송 계층, 세션 계층, 표현 계층 및 최상위에 위치한 응용 계층입니다.

OSI 모델에 대해 이야기할 때 OSI 모델을 언급하지 않고 네트워크 문제 해결에 대해 이야기하는 것은 불가능합니다. 이러한 이유로 각 계층을 안내하고 각 계층에서 사용되는 다양한 네트워크 프로토콜과 각 계층과 관련된 결함을 해결하는 방법을 알아보겠습니다.
계층 1: 물리 계층
이것은 아마도 가장 간과되는 계층 중 하나이지만, 어떤 통신이든 이루어지기 위해 가장 필수적인 계층 중 하나입니다. 물리 계층은 네트워크 카드, 이더넷 케이블, 광섬유 등과 같은 물리적 PC 네트워킹 구성 요소를 포함합니다. 대부분의 문제는 여기에서 시작되며 주로 다음과 같은 이유로 발생합니다:
- 네트워크/이더넷 케이블을 분리함
- 손상된 네트워크/이더넷 케이블
- 누락되거나 손상된 네트워크 카드
이 층에서 떠오르는 질문은 다음과 같습니다:
- “네트워크 케이블이 연결되어 있나요?”
- “물리적 네트워크 링크가 활성화되어 있나요?”
- “IP 주소가 있나요?”
- “기본 게이트웨이 IP를 핑할 수 있나요?”
- “DNS 서버를 핑할 수 있나요?”
네트워크 인터페이스의 상태를 확인하려면 ip 명령어를 실행하십시오:
$ ip link show

위의 출력에서, 우리는 2개의 인터페이스가 있습니다. 첫 번째 인터페이스인 lo
는 루프백 주소로 일반적으로 사용되지 않습니다. 네트워크 및 인터넷에 연결을 제공하는 활성 네트워크 인터페이스는 enp0s3
인터페이스입니다. 출력에서 인터페이스의 상태가 UP임을 볼 수 있습니다.
네트워크 인터페이스가 다운된 경우, 상태 DOWN 출력이 표시됩니다.

그런 경우, 다음 명령어를 사용하여 인터페이스를 활성화시킬 수 있습니다:
$ sudo ip link set enp0s3 up

또는 아래에 표시된 ifconfig 명령어를 실행할 수 있습니다.
$ sudo ifconfig enp0s3 up $ ip link show

단지 PC가 라우터 또는 DHCP 서버에서 IP 주소를 받았는지 확인하려면 ifconfig 명령어를 실행하십시오.
$ ifconfig

IPv4 주소는 표시된대로 inet 매개변수로 접두사가 붙습니다. 예를 들어, 이 시스템의 IP 주소는 192.168.2.104이며 서브넷 또는 넷마스크는 255.255.255.0입니다.
$ ifconfig

또는 시스템의 IP 주소를 확인하려면 다음과 같이 ip address 명령어를 실행할 수 있습니다.
$ ip address
기본 게이트웨이의 IP 주소를 확인하려면 다음 명령어를 실행하십시오:
$ ip route | grep default
기본 게이트웨이의 IP 주소는 대부분 DHCP 서버 또는 라우터인 경우가 많으며 아래와 같이 표시됩니다. IP 네트워크에서 기본 게이트웨이에 핑을 보낼 수 있어야 합니다.

사용 중인 DNS 서버를 확인하려면 systemd 시스템에서 다음 명령어를 실행하십시오.
$ systemd-resolve --status

A better way to check the DNS servers in use is to run the nmcli command shown
$ ( nmcli dev list || nmcli dev show ) 2>/dev/null | grep DNS

관찰하신 대로, 네트워크 문제 해결의 상당 부분이 여기서 발생합니다.
계층 2: 데이터 링크 계층
기본적으로 데이터 링크 계층은 네트워크의 데이터 형식을 결정합니다. 호스트 간의 데이터 프레임 통신이 이루어지는 곳입니다. 이 계층에서 주요 프로토콜은 ARP ( 주소 해결 프로토콜)입니다.
ARP는 링크 계층 주소를 발견하고 IPv4 주소를 MAC 주소로 매핑하는 역할을 합니다. 일반적으로 호스트가 기본 게이트웨이에 연락할 때, 호스트의 IP는 이미 가지고 있지만 MAC 주소는 가지고 있지 않을 수 있습니다.
ARP 프로토콜은 레이어 3과 레이어 2 사이의 간극을 메우는데, 레이어 3의 32비트 IPv4 주소를 레이어 2의 48비트 MAC 주소로 변환하고 그 반대로 합니다.
PC가 LAN 네트워크에 가입하면 라우터(기본 게이트웨이)가 식별을 위해 IP 주소를 할당합니다. 다른 호스트가 PC로 전송된 데이터 패킷을 기본 게이트웨이로 전송하면 라우터가 ARP에 MAC 주소를 찾도록 요청합니다.
모든 시스템은 자체 ARP 테이블을 가지고 있습니다. ARP 테이블을 확인하려면 다음 명령을 실행하세요:
$ ip neighbor show

라우터의 MAC 주소가 채워져 있는 것을 알 수 있습니다. 해결 문제가 있는 경우 명령이 출력되지 않습니다.
레이어 3: 네트워크 / 인터넷 레이어
시스템 관리자에게 친숙한 IPv4 주소를 전용으로 사용하는 레이어입니다. ICMP 및 ARP과 같은 여러 프로토콜을 제공합니다. 이외에도 RIP(Routing Information Protocol)과 같은 프로토콜이 있습니다.
장치 구성 오류나 라우터 및 스위치와 같은 네트워크 장치의 문제와 같은 공통 문제 중 일부가 있습니다. 문제 해결을 시작하는 좋은 방법은 시스템이 IP 주소를 선택했는지 확인하는 것입니다:
$ ifconfig

이제 ping 명령을 사용하여 Google의 DNS로 ICMP 에코 패킷을 보내 인터넷 연결 상태를 확인할 수 있습니다. -c
플래그는 보내는 패킷 수를 나타냅니다.
$ ping 8.8.8.8 -c 4

출력에서 Google의 DNS에서 0 패킷 손실로 긍정적인 응답을 확인할 수 있습니다. 연결이 불안정한 경우 traceroute 명령을 사용하여 패킷이 삭제되거나 손실되는 지점을 확인할 수 있습니다.
$ traceroute google.com

별표는 패킷이 삭제되거나 손실되는 지점을 나타냅니다.
nslookup 명령은 도메인이나 호스트 이름과 관련된 IP 주소를 얻기 위해 DNS에 쿼리를 수행합니다. 이를 전방 DNS 조회라고 합니다.
예를 들어,
$ nslookup google.com
위 명령은 google.com 도메인과 관련된 IP 주소를 나타냅니다.
Server: 127.0.0.53 Address: 127.0.0.53#53 Non-authoritative answer: Name: google.com Address: 142.250.192.14 Name: google.com Address: 2404:6800:4009:828::200e
dig 명령은 도메인 이름과 관련된 DNS 서버를 쿼리하는 또 다른 명령입니다. 예를 들어, DNS 네임서버를 쿼리하려면 다음을 실행합니다:
$ dig google.com
4계층: 전송 계층
전송 계층은 TCP 및 UDP 프로토콜을 사용하여 데이터 전송을 처리합니다. 간단히 말해서, TCP는 연결 지향 프로토콜이고 UDP는 연결 없이 전송됩니다. 실행 중인 응용 프로그램은 포트와 IP 주소로 구성된 소켓에서 수신 대기합니다.
응용 프로그램에 필요한 TCP 포트가 차단될 수 있는 일반적인 문제점이 있습니다. 웹 서버가 실행 상태를 확인하려면 netstat 또는 ss 명령을 사용하여 웹 서비스가 포트 80에서 수신 대기 중인지 확인하십시오.
$ sudo netstat -pnltu | grep 80 OR $ ss -pnltu | grep 80

때로는 포트가 시스템에서 실행 중인 서비스에 의해 사용될 수 있습니다. 다른 서비스가 해당 포트를 사용하도록 하려면 다른 포트를 사용하도록 구성해야 할 수 있습니다.
아직 문제가 있는 경우 방화벽을 확인하고 관심 있는 포트가 차단되었는지 확인하십시오.
대부분의 문제 해결은 이 4개의 계층을 통해 진행됩니다. 세션, 표현 및 응용 계층에서는 매우 적은 문제 해결이 이루어집니다. 이는 이러한 계층이 네트워크의 기능에 덜 관여하기 때문입니다. 그러나 이러한 계층에서 무엇이 발생하는지 간단히 살펴보겠습니다.
계층 5: 세션 계층
세션 계층은 세션이라고 불리는 통신 채널을 열고 데이터 전송 중에 열린 상태를 유지합니다. 또한 통신이 종료되면 세션을 닫습니다.
레이어 6: 프레젠테이션 레이어
구문 레이어로도 알려진 프레젠테이션 레이어는 응용 프로그램 레이어에서 사용할 데이터를 합성합니다. 장치가 데이터를 암호화, 인코딩 및 압축하는 방법을 명시하여 상대편에서 잘 수신되도록 하는 것이 목표입니다.
레이어 7: 응용 프로그램 레이어
마지막으로, 우리는 최종 사용자에게 가장 가까운 응용 프로그램 레이어가 있습니다. 이 레이어는 사용자가 응용 소프트웨어와 상호 작용할 수 있도록 합니다. 응용 프로그램 레이어에는 HTTP, HTTPS, POP3, IMAP, DNS, RDP, SSH, SNMP, NTP 등과 같은 프로토콜이 풍부하게 포함되어 있습니다.
결론
Linux 시스템을 문제 해결할 때 OSI 모델을 사용한 계층적 접근 방식이 강력히 권장됩니다. 가장 아래 레이어부터 시작합니다. 이를 통해 무엇이 잘못되고 있는지 파악하고 문제를 좁혀 나갈 수 있습니다.
Source:
https://www.tecmint.com/basic-network-troubleshooting-tips/