일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 | 31 |
- SQL
- gns3
- freeradius
- Red Hat
- LACP
- 네트워크
- STP
- 오블완
- Packet Tracer
- pvst+
- ospf
- Cisco
- Network Design
- vlan
- Ansible
- 티스토리챌린지
- port aggregation protocol
- BPDU
- centos
- eigrp
- rommon mode
- 하프오픈
- 네트워크 설계
- 방화벽
- junos os
- 프로그래머스
- 네이티브 vlan
- stream 9
- 연결선 수
- pagp
- Today
- Total
Doctor Pepper
[Linux] Network에서 사용되는 주요 명령어 본문
서버와 연관된 네트워크 장애 처리에는 몇 가지 필수적인 서버 네트워크 명령어를 알아두는 것이 효과적입니다. 장애 발생 시 이를 빠르게 진단하고 해결할 수 있도록 돕는 유용한 명령어를 소개하겠습니다. 또한, HTTP 상태 코드와 작업 후 서비스 상태를 확인할 수 있는 모니터링 툴에 대한 정보도 중요하다.
1. netstat 명령
서버 네트워크 장애 처리에서 netstat 명령어는 필수적인 도구이다. 이 명령어는 시스템의 네트워크 상태를 실시간으로 점검하고, 네트워크 연결 상태를 확인하는 데 유용하다. netstat를 사용하면 서버의 열린 포트, 현재의 네트워크 연결, 소켓 상태 등을 확인할 수 있으며, 장애 발생 시 문제를 진단하는 데 중요한 정보를 제공한다.
- netstat 주요 기능
연결된 포트와 IP 주소 확인 | - netstat -an 명령어는 시스템에서 열려 있는 포트와 현재 연결된 IP 주소를 확인할 수 있게 함. 이 명령어는 ACTIVE 상태인 연결을 찾아내는데 유용함. |
소켓 정보 확인 | - netstat 명령어는 TCP/IP 프로토콜을 사용한 소켓의 상태도 점검할 수 있음. 예를 들어, netstat -tuln 명령어를 사용하면 서버에서 열린 TCP/UDP 포트를 확인할 수 있음. |
네트워크 인터페이스와 라우팅 정보 | - netstat -i 명령어는 네트워크 인터페이스에 대한 정보를 제공하고, netstat -r은 라우팅 테이블을 확인할 수 있게 함. |
세션 상태 확인 | - netstat -s 명령어는 네트워크 프로토콜별 통계를 제공함. 예를 들어, TCP 세션 수나 에러 발생 정보를 볼 수 있음. |
- 연관된 명령어 활용
ss (Socket Stat) | - netstat과 비슷하게 소켓 연결 상태를 확인하는 명령어임. - ss는 더 빠르고 정확한 정보를 제공하며, 시스템에서 열린 포트와 연결된 IP 주소를 점검하는 데 유용함. - ss -tuln 명령어는 netstat -tuln과 비슷한 결과를 얻을 수 있음. |
lsof (List Open Files) | - lsof 명령어는 시스템에서 열린 파일 정보를 제공하는 명령어임. - 네트워크 소켓 역시 파일로 다루어지므로, lsof -i 명령어를 사용하면 열린 네트워크 소켓을 확인할 수 있음. |
ifconfig / ip a | - 네트워크 인터페이스의 상태를 확인하는 명령어임. - ifconfig는 더 이상 현대적인 시스템에서 많이 사용되지 않지만, 여전히 일부 환경에서 유용함. - ip a 명령어는 네트워크 인터페이스와 IP 주소를 관리하는 데 주로 사용됨. |
네트워크 장비 캐시 정보 (Cisco 백본) |
- 네트워크 장비에서 netstat를 통해 확인한 상태 값은 Cisco 백본 장비의 캐시 플로우(cache flow) 정보와 비교할 수 있음. - 캐시 플로우는 장비가 트래픽을 처리하면서 기록하는 정보를 의미함. - 이 값을 비교하면, 장애가 발생한 구간을 추적할 수 있음. |
L4 스위치 세션 테이블 | - L4 스위치의 세션 테이블은 시스템의 네트워크 상태와 일치하는지 확인하는 데 사용할 수 있음. - netstat의 세션 상태 값과 L4 스위치의 세션 테이블을 비교하면, 특정 연결에서 발생한 문제를 더욱 정확하게 파악할 수 있음. |
(1) netstat 명령 형식
netstat [option] |
-a | 일반적 내용 외에 모든 소켓, 경로 테이블(경로 정보), 네트워크 인터페이스 정보까지도 표시 |
-i | 네트워크 인터페이스 접속 상태에 관한 정보 표시 |
-r | 경로 테이블(경로 정보) 표시 |
-n | 네트워크 주소를 숫자로 표시 |
-s | 각 프로토콜의 통계 정보 표시 |
-g | 네트워크 인터페이스의 멀티캐스트 정보를 표시 |
-rv | 라우팅 테이블의 추가 정보를 표시 |
(2) netstat -an
Server # netstat -an Active Internet connections (including servers) Proto Recv-Q Send-Q LocalAddress Foreign Address (state) tcp 0 0 *.901 *.* LISTEN tcp 0 0 172.16.10.3.56590 192.168.239.68.49236 ESTABLISHED tcp 0 0 *.1712 *.* LISTEN tcp 0 0 172.16.10.3.80 211.222.225.164.4772 ESTABLISHED tcp 0 0 *.382 *.* LISTEN tcp 0 0 *.80 *.* LISTEN |
Proto | 프로토콜을 의미하며, 사용 중인 TCP, UDP 프로토콜을 표시 |
Recv-Q | 전송받은 데이터 중 아직 처리하지 못하고 소켓 버퍼(Receive buffer)에 대기하고 있는 바이트 수를 표시 |
Send-Q | 전송됐지만(Send buffer) 아직 전송되지 못하고 소켓 버퍼에 대기 중인 바이트 수를 표시 |
Local Address | 로컬 IP 주소와 포트 번호, 콜론으로 분리 |
Foreign Address | 로컬 시스템과 통신 중인 외부 시스템 IP 주소와 포트 번호 |
State | 통신 상태를 표시 |
정상적인 TCP 통신에서는 netstat -an 명령어를 통해 SYN_SENT, SYN_RECEIVED 상태를 자주 볼 기회가 드물다. 이는 TCP의 3-way handshaking 과정이 매우 빠르게 이루어지기 때문이다. 정상적인 통신에서는 이 단계들이 순식간에 지나가며, 대부분의 경우 그 과정을 볼 수 없다. 그러나 이러한 상태가 자주 나타난다면, TCP 통신에 문제가 있을 수 있다는 신호이다. 예를 들어, 네트워크 지연, 방화벽 설정, 서버의 응답 지연 등 여러 가지 문제가 있을 수 있다. 이럴 때는 문제의 원인을 정확히 파악하기 위해 추가적인 네트워크 분석이 필요하다.
- netstat -an 명령 결과 값의 의미
LISTEN | 서버의 데몬이 떠서 접속 요청을 기다리는 상태(서버 애플리케이션에서 수동 적 열기로 연결 요청을 기다리고 있는 상태) |
SYN-SENT | 로컬의 클라이언트 애플리케이션이 원격 호스트에 연결을 요청한 상태(원격 호스트에 능동적인 개설 요청 - 수동적 열기) |
SYN-RECEIVED | 서버가 원격 클라이언트로부터 접속 요구를 받아 클라이언트에게 응답을 했지만 아직 클라이언트에게 확인 메시지는 받지 않은 상태(네트워크 통한 연결 요청 받음 - 수동적 열기) |
ESTABLISHED | 3-way handshaking이 완료된 후 서로 연결된 상태 |
FIN-WAIT1 | 능동적 닫기(Active close) 요청을 한 상태 |
CLOSE-WAIT | 수동적 닫기를 하고 있는 상태로, FIN 종결 세그먼트를 수신하고 이에 대한 확인 메시지를 전송한 상태 |
FIN-WAIT2 | 로컬에서 종결(FIN) 세그먼트를 전송했고 원격 시스템에서 이에 대한 확인 메시지를 수신했지만 원격 애플리케이션이 작업을 종료하지 않아 원격 호스트의 종결 세그먼트를 기다리는 상태 |
LAST_ACK | FIN 종결 요청을 받고 로컬에서도 회선 종결에 합의해 종결을 요청(FIN)한 상태로, 이에 대한 확인 메시지가 수신되면 회선이 종결됨 |
TIME-WAIT | 연결은 종료됐지만 분실됐을지 모를 느린 세그먼트를 위해 당분간 소켓을 열어놓은 상태 |
CLOSING | 로컬 TCP는 FIN_WAIT_1에서 설명한 대로 FIN 종결 세그먼트를 전송했고 LAST_ACK에서 설명한 대로 원격 시스템의 종결 세그먼트도 수신했지만 FIN_WAIT_1 단계에서 전송한 세그먼트에 대한 확인 메시지(ACK)를 수신하지 못한 상태로, 보통 확인 메시지가 전송 도중 분실됐다는 것을 나타냄(흔하지 않지만 주로 확인 메시지가 전송 도중 분실된 상태) |
UNKOWN | 소켓의 상태에 대해서 확인이 안 되는 경우 |
CLOSED | 완전히 종료, 가상 회선 종결 |
(3) netstat -nr
Server # netstat -nr Routing tables Destination Gateway Flags Refs Interface Pmtu 127.0.0.1 127.0.0.1 UH 0 lo0 4136 172.16.30.10 172.16.30.10 UH 0 lan1 4136 172.16.30.50 172.16.30.50 UH 0 lan2 4136 127.0.0.0 127.0.0.1 U 0 l0 0 default 172.16.30.1 UG 0 lan2 0 |
Destination | 목적지 네트워크 또는 호스트 라우팅일 경우 호스트가 됨 | |
Gateway | Destination에 기술된 목적지에 도달하기 위한 다음 홉임 | |
Flags | 라우팅의 특징을 서술하기 위해 사용됨 | |
U | UP을 의미하며, 즉 루트가 UP돼 있고 동작하고 있음을 나타냄 | |
H | Host를 의미하며, 이 루트를 통해 단지 한 대의 호스트에만 도달 가능하다는 것을 의미함. 즉, 이 라우팅 정보가 32비트 호스트 라우팅을 말함 | |
G | Gateway를 의미하며, 현재 인터페이스가 속해 있지 않는 네트워크가 목적지인 패킷이 이용하는 다음 홉을 말함 | |
D | ReDirect를 의미하며, ICMP Redirect 메시지에 의해 만들어진 루트임을 말함 | |
Ref | 라우팅이 참조된 횟수를 말함 | |
Use | 이 루트를 이용한 패킷의 수(Solaris..)를 의미함 | |
Interface | 이 루트가 이용되는 네트워크 인터페이스의 이름을 의미함 | |
Pmtu | Path MTU를 의미함 |
서버에서 외부 통신이 되지 않을 경우, 가장 먼저 확인해야 할 사항은 디폴트 라우팅 경로이다. 또한, 특정 32비트 호스트 라우팅이 설정되어 있는지 여부도 점검해야 한다. 문제 해결을 위해 서버 관리자에게 netstat 로그 자료를 요청하는 것이 필요할 수 있다.
서버 관리자 없이 인터페이스 설정과 라우팅을 추가해야 할 상황이 발생할 수 있으므로, 이를 대비해 관련 명령어를 숙지하는 것이 유용하다.
- ifconfig(인터페이스 설정과 확인)
#ifconfig | hme0 | 172.16.10.2 | netmask | 255.255.255.0 | broadcast | 172.16.10.255 |
(1) | (2) | (3) | (4) | (5) | (6) |
(1) | 인터페이스 이름(Solaris의 경우 hme의 이름을 갖는다) |
(2) | 해당 인터페이스의 IP 설정 |
(3) | netmask 명령 |
(4) | 넷마스크 값 설정 |
(5) | broadcast 명령 |
(6) | 브로드캐스트 주소 설정 |
인터페이스 설정 후 ifconfig -a 명령을 실행하여 인터페이스의 상태를 확인하면, 다음과 같은 결과를 확인할 수 있다.
# ifconfig -a lo0: flag=849<UP, LOOPBACK, RUNNING, MULTICAST> mtu 8232 inet 127.0.0.1 netmask ff000000 hme0: flags=863<UP, BROADCAST, NOTRAILERS, RUNNINGS, MULTICAST> mtu 1500 inet 172.16.10.2 netmask ffffff00 broadcast 172.16.10.255 ether 8:0:20:a4:76:45 |
설정한 인터페이스(예: hme0)가 DOWN 상태로 표시된다면, 아래와 같은 명령을 사용하여 인터페이스를 활성화시킬 수 있다.
# ifconfig hme0 up |
인터페이스를 활성화한 후, ifconfig -a hme0 명령을 사용하여 해당 인터페이스의 활성화 상태를 확인할 수 있다. 이를 통해 인터페이스가 정상적으로 작동하는지 확인할 수 있다.
- route(라우팅 추가, 삭제 명령)
#route | add | 10.10.10.0 | netmast 255.255.255.0 | 172.16.10.1 | 1 |
(1) | (2) | (3) | (4) | (5) |
(1) | add는 추가, delete는 삭제 |
(2) | 목적지 네트워크나 32비트 호스트, 디폴트 게이트웨이를 정의할 때 default 명령 사용 |
(3) | 목적지 네트워크의 netmask 값 |
(4) | 목적지 네트워크로 향하기 위한 다음 홉 IP |
(5) | 라우팅 메트릭(Routing metric) 값 |
서버의 기본 게이트웨이 설정은 다음과 같다.
# route add default 172.16.10.1 1 |
위 설정을 완료한 후, netstat -nr 명령을 실행하여 설정 내용을 확인할 수 있다. 인터페이스와 라우팅 설정은 시스템 재부팅 시 유실되므로, 설정을 저장하려면 시스템 설정 파일을 수정해야 한다. 이 부분은 시스템 관리자의 도움을 받는 것이 좋다.
또한, arp -a 명령을 사용하여 설정된 라우팅 테이블의 ARP 정보가 정확히 캐시되는지 확인하면 서버의 네트워크 설정 과정이 완료된다.
(4) netstat -i
Name | Mtu | Net/Dest | Address | Ipkts | Ierrs | Opkts | Oerrs | Collis | Queue |
lo0 | 8232 | loopback | localhost | 3012 | 0 | 3012 | 0 | 0 | 0 |
hme0 | 1500 | 10.1.1.0 | jjang | 321077 | 0 | 221307 | 0 | 0 | 0 |
Name | 네트워크 인터페이스의 이름 |
Mtu | 최대 전송 단위(바이트) |
Net/Dest | 네트워크 번호, /etc/inet/networks 파일을 참조 |
Address | 인터페이스 IP 주소, /etc/inet/hosts 파일 참조 |
Ipkts/lerrs | 입력되는 패킷의 수와 에러의 수 |
Opkts/Oerrs | 출력되는 패킷의 수와 에러의 수 |
Collis | 인터페이스상에서 발생한 충돌 프레임의 수 |
Queue | 전송하기 위해 대기하고 있는 패킷의 수(항상 0, Zero가 정상이다) |
서버의 네트워크 상황을 충돌 비율(Collision Rate)로 판단할 수 있다. 충돌 비율은 네트워크 성능에 영향을 미치는 중요한 지표 중 하나로, 충돌이 빈번하게 발생하면 네트워크 성능이 저하될 수 있다. 충돌 비율을 계산하는 방법은 다음과 같다.
충돌 비율(Collision Rate)의 상태에 따라 네트워크 성능을 평가할 수 있다. 충돌 비율이 02%이면 네트워크 상태가 양호한 것으로 간주되며, 35%이면 적당한 상태로 볼 수 있다. 그러나 5~10%의 충돌 비율은 네트워크에 문제가 발생하고 있음을 나타내며, 패킷 유실이 일어날 수 있다.
'네트워크 > 기초 지식' 카테고리의 다른 글
[Network] 네트워크 설계 및 변경 시 고려 사항 (4) | 2024.12.06 |
---|---|
[개념] 거시적 네트워크와 미시적 네트워크 (2) | 2024.11.05 |
[개념] 브로드캐스트(Broadcast), 유니캐스트(Unicast), 멀티캐스트(Multicast) (7) | 2024.10.19 |
[모델] OSI 계층별 기능(2) - 세션, 표현, 응용 계층 (10) | 2024.10.16 |
[모델] OSI 계층별 기능(1) - 물리, 데이터링크, 네트워크, 전송 계층 (2) | 2024.10.16 |