Linux 성능 최적화 (7)-네트워크 트래픽 모니터링 도구

하나, iftop

1. iftop 소개

iftop 명령은 네트워크 카드의 실시간 트래픽 (네트워크 세그먼트 지정 가능), 역방향 IP 해상도 및 디스플레이 포트 정보를 모니터링하는 데 사용할 수 있습니다.
온라인 설치 : yum install iftop

2. Iftop 명령

iftop -h | [-nNpblP] [-u unit] [-i interface] [-f filter code] [-F net/mask] [-G net6/mask6]
-h : 도움말 정보보기
-i : 모니터링 네트워크 카드 지정
-b : 트래픽 히스토그램을 표시하지 않음
-B : 트래픽 을 바이트 단위로 표시 (기본 비트)
-n : 호스트 이름을 확인하지 않고 IP를 직접 표시
-N : 아니요 포트 서비스 분석 및 포트 번호 직접 표시
-F : 특정 네트워크 세그먼트의 인 / 아웃 트래픽 표시
-m 제한 : 대역폭의 상한 설정, 접미사로 K, M, G 사용 가능
iftop -b -n -N -F 192.168.0.0/24
Linux 성능 최적화 (7)-네트워크 트래픽 모니터링 도구
TX : 트래픽 전송
RX : 트래픽 수신
TOTAL : 총 트래픽
누적 : 누적 총 유량
피크 : 피크 유량
: 각각 지난 2 초, 10 초, 40 초의 평균 유량을 나타냅니다.

3. Iftop 대화 형 명령

h를 눌러 도움말 표시 여부를 전환합니다.
n을 눌러 로컬 IP 또는 호스트 이름
을 표시하도록 전환합니다. s를
눌러 로컬 컴퓨터 의 호스트 정보를 표시할지 여부를 전환합니다. d를 눌러 원격 대상 호스트의 호스트 정보를 표시할지 여부를 전환합니다.
t를 눌러 표시 형식을 2 줄 / 1 줄 /로 전환합니다. 전송 트래픽 만 표시 / 수신 트래픽 만 표시
N을 눌러 포트 번호 또는 포트 서비스 이름
표시로 전환합니다. S를
눌러 로컬 컴퓨터 의 포트 정보를 표시할지 여부를 전환합니다. D를 눌러 원격 대상 호스트의
포트 정보를 표시할지 여부를 전환합니다. p를
눌러 포트 정보를 표시할지 여부를 전환합니다. P를 누릅니다. 일시 중지 / 계속 표시
로 전환 b를 눌러 평균 유량 그래프 표시 여부를 전환합니다.
B를 눌러 평균 유량
2 초 또는 10 초 또는 40 초로 계산 하도록 전환합니다. T를
눌러 각 연결의 총 유량을 표시할지 여부를 전환합니다. l을 눌러 화면 필터 기능을 열고 필요한 값을 입력합니다. 필터링 된 문자의 경우
L을 눌러 디스플레이 화면 상단의 눈금을 전환합니다. 눈금이 변경되고 흐름 그래프 막대가 변경됩니다.
j 또는 k를
눌러 화면에 표시된 연결 기록을 위아래로 스크롤합니다. 1 또는 2 또는 3을 눌러 오른쪽에 디스플레이를 표시합니다. 트래픽 데이터의 세 열은
<로컬 이름 또는 왼쪽의 IP에 따라 정렬됩니다.>를 누르면 원격 대상 호스트의 호스트 이름 또는 IP에 따라 정렬됩니다.
o를 눌러 고정 여부를 전환하여 현재 연결 만 표시합니다.
f를 눌러 필터 코드를 편집합니다
. 셸 명령을 사용하여
q를 눌러 모니터링을 종료합니다.

二 、 netstat

1. netstat 소개

netstat는 IP, TCP, UDP 및 ICMP 프로토콜과 관련된 통계 데이터를 표시하는 데 사용되며 일반적으로 컴퓨터의 각 포트의 네트워크 연결을 확인하는 데 사용됩니다.

2, netstat 명령

netstat [-vWeenNcCF] [<Af>] -r         
netstat {-V|--version|-h|--help}
netstat [-vWnNcaeol] [<Socket> ...]
netstat { [-vWeenNac] -I[<Iface>] | [-veenNac] -i | [-cnNe] -M | -s [-6tuw] } [delay]

-a,-all : 연결에있는 모든 소켓을 표시합니다.
-A <네트워크 유형> 또는-<네트워크 유형>이 네트워크 유형의 연결에서 관련 주소를 나열합니다.
-c,-continuous : 네트워크 상태를 지속적으로 나열합니다.
-C, --cache : 라우터 구성의 캐시 정보를 표시합니다.
-e, --extend : 네트워크의 기타 관련 정보를 표시합니다.
-F,-fib : FIB를 표시합니다.
-g, --groups : 다중 방송 기능에 대한 그룹 구성원 목록을 표시합니다.
-h, --help : 온라인 도움말.
-i, --interfaces : 네트워크 카드 목록을 표시합니다.
-l, --listening : 모니터링중인 서버의 소켓을 표시합니다.
-M 또는 --masquerade는 위장 된 네트워크 연결을 보여줍니다.
-n 또는 --numeric 도메인 이름 서버를 통하지 않고 직접 IP 주소를 사용합니다.
-N 또는 --netlink 또는 --symbolic 네트워크 하드웨어 주변 장치의 심볼릭 링크 이름을 표시합니다.
-o 또는 --timers는 타이머를 표시합니다.
-p 또는 --programs 사용중인 소켓의 프로그램 식별 코드 및 프로그램 이름을 표시합니다.
-r, --route : 라우팅 테이블을 표시합니다.
-s, --statistics : 네트워크 작업 정보의 통계표를 표시합니다.
-t,-tcp : TCP 전송 프로토콜의 연결 상태를 표시합니다.
-u,-udp : UDP 전송 프로토콜의 연결 상태를 표시합니다.
-v, --verbose : 지원되지 않는 주소 계열을 봅니다.
-V,-version : 버전 정보를 표시합니다.
-w, --raw : RAW 전송 프로토콜의 연결 상태를 표시합니다.
-x,-unix :이 매개 변수의 효과는 "-A unix"매개 변수를 지정하는 것과 동일합니다.
--ip,-inet :이 매개 변수의 효과는 "-A inet"매개 변수를 지정하는 것과 동일합니다.

3. netstat의 공통 명령

netstat -a
모든 포트
netstat -at
나열 모든 TCP 포트
netstat -au
나열 모든 UDP 포트
netstat -l
는 수신 대기 포트만 표시
netstat -lt
모든 수신 TCP 포트만
netstat -lu
나열 모든 수신 UDP 포트만
netstat -lx
나열 모든 수신 포트만 나열 UNIX
netstat -s
는 모든 포트에 대한 통계를 표시 통계
netstat -st
는 TCP 포트를 표시합니다.
netstat -su
UDP 포트
netstat -pt
출력 정보 표시 통계 PID 및 프로세스 이름
netstat -r
은 핵심 라우팅 정보를 보여줍니다.
netstat -ap | grep ssh
포트 파인더는
netstat -an | grep ':80'
지정된 포트에서 실행되는 프로세스를 찾기
netstat -ntu | grep :80 | awk '{print $5}' | cut -d: -f1 | awk '{++ip[$1]} END {for(i in ip) print ip[i],"\t",i}' | sort -nr
위해 서비스 포트 의 특정 포트에서 실행되는 프로세스를 찾아
netstat -nt | grep -e 127.0.0.1 -e 0.0.0.0 -e ::: -v | awk '/^tcp/ {++state[$NF]} END {for(i in state) print i,"\t",state[i]}'
TCP 의 IP 주소를 연결하기 위해 다양한 상태 목록
netstat -anpo | grep "php-cgi" | wc -l
보기 phpcgi 프로세스 수, 닫는 경우 기본값은 충분하지 않음을 나타냅니다.
netstat -nat | grep "192.168.1.15:22" |awk '{print $5}'|awk -F: '{print $1}'|sort|uniq -c|sort -nr|head -20
가장 많이 연결된 서비스 포트의 IP 주소
netstat -nat |awk '{print $6}'|sort|uniq -c|sort -rn
Linux 성능 최적화 (7)-네트워크 트래픽 모니터링 도구
보려면 SYN_SENT 를 추가해야합니다. 클라이언트는 연결 설정을 요청하기 위해 SYN을 보내고 상태는 SYN_SENT로 설정됩니다. SYN_RECV : 서버는 클라이언트의 SYN을 확인하기 위해 ACK를 전송하는 동시에 클라이언트에 SYN을 전송하며 상태는 SYN_RECV로 설정됩니다.
ESTABLISHED : 열린 연결을 대신하여 두 당사자가 데이터 교환을 할 수 있거나 이미 진행 중입니다.
FIN_WAIT1 : 종료 응용 프로그램을 적극적으로 닫아 close를 호출하고 FIN 요청을 보내 연결을 적극적으로 닫고 FIN_WAIT1 상태로 들어갑니다.
CLOSE_WAIT : FIN을 수신 한 후 패시브 클로징 엔드 TCP는 FIN 요청에 대한 응답으로 ACK를 전송하고 CLOSE_WAIT 상태로 들어갑니다.
FIN_WAIT2 : ACK를받은 후 FIN-WAIT-2 상태로 들어갑니다. LAST_ACK : 파일의 끝이 일정 시간 동안 수동적으로 닫히면 파일 끝을 수신 한 응용 프로그램은 CLOSE를 호출하여 연결을 닫고 FIN을 보내고 상대방의 ACK가 LAST-ACK가 될 때까지 기다립니다.
TIME_WAIT : 액티브 클로징 엔드에서 FIN을 수신 한 후 TCP는 ACK 패킷을 보내고 TIME-WAIT 상태로 들어갑니다.
CLOSING : 원격 TCP가 연결 중단을 확인하기를 기다리는 중
CLOSED : ACK 패킷을 수신 한 후 Passive Closing End가 CLOSED 상태가되고 연결이 종료됩니다.
알 수 없음 : 알 수없는 소켓 상태입니다.

세, tcpdump

1. tcpdump 소개

tcpdump는 시스템을 통과하는 트래픽 데이터 패킷을 캡처 및 분석하는 데 사용되는 명령 줄 도구로, 일반적으로 네트워크 장애 분석 도구 및 보안 도구로 사용됩니다.

2, tcpdump 명령

tcpdump [-aAbdDefhHIJKlLnNOpqStuUvxX#] [ -B size ] [ -c count ] [ -C file_size ] [ -E algo:secret ] [ -F file ] [ -G seconds ] [ -i interface ] [ -j tstamptype ] [ -M secret ] [ --number ] [ -Q|-P in|out|inout ] [ -r file ] [ -s snaplen ] [ --time-stamp-precision precision ] [ --immediate-mode ] [ -T type ] [ --version ] [ -V file ] [ -w file ] [ -W filecount ] [ -y datalinktype ] [ -z postrotate-command ]
[ -Z user ] [ expression ]

-a : 네트워크 및 브로드 캐스트 주소를 이름으로 변환합니다.
-c 개수 : 캡처 된 데이터 패킷의 수
-e : 연결 수준의 파일 헤더를
표시합니다. -f : 네트워크 주소를 숫자로 표시합니다.
-F 표현식 파일 : 표현식이 포함 된 파일을 지정합니다.
-i 인터페이스 : 데이터 패킷 캡처를위한 네트워크 카드 장치를 지정합니다.
-l : 표준 출력 열의 버퍼를 사용합니다.
-n : 호스트의 네트워크 주소를 이름으로 변환하지 않습니다.
-N : 도메인 이름을 나열하지 않습니다.
-O : 패킷 인코딩을 최적화하지 않음
-q : 고속 출력 모드, 몇 가지 전송 프로토콜 정보 만 나열됩니다.
-r 패킷 파일 : 지정된 파일에서 패킷 데이터를 읽습니다.
-s 데이터 패킷 크기 : 각 데이터 패킷의 크기를 설정합니다.
-S : 상대 값이 아닌 절대 값을 사용하여 TCP 연결 번호를 나열합니다.
-t : 타임 스탬프를 표시하지 않습니다.
-tt :
형식이 지정 되지 않은 타임 스탬프를 표시합니다. -T 패킷 유형 : 표현식에 지정된 데이터 패킷이 설정된 데이터 패킷 유형으로 변환되도록합니다.
-v : 명령 실행 프로세스를 자세히 표시합니다.
-vv : 명령 실행 프로세스를 더 자세히 표시합니다.
-x : 16 진수 코드를 사용하여 데이터 패킷 데이터를 나열합니다.
-w 데이터 패키지 파일 : 데이터 패키지 데이터를 지정된 파일에 씁니다.

tcpdump  -enfN -r test.cap
tcpdump -r test.cap

3. tcpdump에 대한 공통 명령

tcpdump -i wlp3s0 tcp port 80

tcpdump -i wlp3s0 dst host 192.168.0.104
wlp3s0 네트워크 카드 의 TCP 프로토콜 80 포트 데이터 패킷을 잡고 대상 호스트가 wlp3s0 네트워크 카드의 192.168.0.104 인 데이터 패킷을 가져 옵니다 .

추천

출처blog.51cto.com/9291927/2594136