tcpdump는 CLI환경에서 패킷을 확인하기 위한 소프트웨어입니다.
GUI가 지원 되는 환경이라면 와이어샤크를 쓰지만 CLI환경에서는 주로 tcpdump를 많이 사용합니다.
네트워크 장비 및 보안 장비의 cli환경에서 tcpdump를 사용하는 장비들도 많습니다.
test 환경 : centos7.9
1. 패키지 설치
yum -y install tcpdump
위 명령어로 tcpdump를 설치합니다.
[root@localhost ~]# yum -y install tcpdump
Loaded plugins: fastestmirror, langpacks
Loading mirror speeds from cached hostfile
* base: mirror.anigil.com
* epel: hkg.mirror.rackspace.com
* extras: mirror.anigil.com
* updates: mirror.anigil.com
Resolving Dependencies
--> Running transaction check
---> Package tcpdump.x86_64 14:4.9.2-4.el7_7.1 will be installed
--> Finished Dependency Resolution
Dependencies Resolved
========================================================================================================
Package Arch Version Repository Size
========================================================================================================
Installing:
tcpdump x86_64 14:4.9.2-4.el7_7.1 base 422 k
Transaction Summary
========================================================================================================
Install 1 Package
Total download size: 422 k
Installed size: 1.0 M
Downloading packages:
tcpdump-4.9.2-4.el7_7.1.x86_64.rpm | 422 kB 00:00:00
Running transaction check
Running transaction test
Transaction test succeeded
Running transaction
Installing : 14:tcpdump-4.9.2-4.el7_7.1.x86_64 1/1
Verifying : 14:tcpdump-4.9.2-4.el7_7.1.x86_64 1/1
Installed:
tcpdump.x86_64 14:4.9.2-4.el7_7.1
Complete!
[root@localhost ~]#
2. 명령어 입력
tcpdump는 많은 명령어가 있지만 많이 사용하는 인터페이스에서의 패킷 캡처를 해보겠습니다.
ifconfig 를 입력하여 캡처할 인터페이스를 선택합니다.
[root@localhost ~]# ifconfig
ens192: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
inet 192.168.5.191 netmask 255.255.255.0 broadcast 192.168.5.255
inet6 fe80::a6d0:d8e3:8499:99d8 prefixlen 64 scopeid 0x20<link>
ether 00:0c:29:9f:75:18 txqueuelen 1000 (Ethernet)
RX packets 128403 bytes 172231937 (164.2 MiB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 56679 bytes 4525289 (4.3 MiB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
lo: flags=73<UP,LOOPBACK,RUNNING> mtu 65536
inet 127.0.0.1 netmask 255.0.0.0
inet6 ::1 prefixlen 128 scopeid 0x10<host>
loop txqueuelen 1000 (Local Loopback)
RX packets 0 bytes 0 (0.0 B)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 0 bytes 0 (0.0 B)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
virbr0: flags=4099<UP,BROADCAST,MULTICAST> mtu 1500
inet 192.168.122.1 netmask 255.255.255.0 broadcast 192.168.122.255
ether 52:54:00:bc:a0:dc txqueuelen 1000 (Ethernet)
RX packets 0 bytes 0 (0.0 B)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 0 bytes 0 (0.0 B)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
[root@localhost ~]#
빨간색으로 표시한 ens192 인터페이스의 패킷을 캡쳐하겠습니다.
tcpdump -i ens192
[root@localhost ~]# tcpdump -i ens192
tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
listening on ens192, link-type EN10MB (Ethernet), capture size 262144 bytes
^C22:51:51.920333 IP localhost.localdomain.ssh > 192.168.4.51.14718: Flags [P.], seq 272688883:272689091, ack 4199069358, win 261, options [nop,nop,TS val 2540445 ecr 11274648], length 208
1 packet captured
8 packets received by filter
0 packets dropped by kernel
[root@localhost ~]#
아마 위 명령어를 그대로 입력하시면 엄청나게 많은 패킷이 캡쳐될 것입니다.
우리가 원하는 패킷을 캡처하기 위해서는 port번호,소스ip,목적지ip,호스트ip 등 여러 조건으로 캡처를 합니다.
아래는 tcpdump 명령어 예시입니다.
tcpdump -i ens192 port 443 : 인터페이스 ens192로 통신하는 패킷 중 포트번호가 443인 것들을 캡처합니다.
tcpdump -i ens192 dst 8.8.8.8 : 인터페이스 ens192로 통신하는 패킷 중 목적지 ip가 8.8.8.8인 패킷들은 캡처합니다.
tcpdump -i ens192 src 192.168.5.150 : 인터페이스 ens192로 통신하는 패킷 중 소스 ip가 192.168.5.150인 패킷들을 캡처합니다.
이 외 and 및 or 조건문을 추가할 수 있습니다.
tcpdump -i ens192 dst 8.8.8.8 and src 192.168.5.150 : 인터페이스 ens192로 통신하는 패킷 중 목적지ip가 8.8.8.8인 패킷 중 소스ip가 192.168.5.150인 패킷들을 캡처합니다.
tcpdump -i ens192 dst 8.8.8.8 or src 192.168.5.150 : 인터페이스 ens192로 통신하는 패킷 중 목적지ip가 8.8.8.8인 패킷과 소스ip가 192.168.5.150인 패킷들을 캡처합니다.
tcpdump에 많은 명령어 들이 있으니 필요하신 것들을 확인하고 사용하시면 cli환경에서도 충분이 패킷 분석이 가능합니다.
3.그외 명령어
any : 모든 패킷들을 캡처
-c : 카운터 명령어, 앞에 숫자 입력 시 숫자를 입력한 만큼의 패킷만 캡처하고 tcpdump 종료 (-c 10)
-A : ASCll 로 출력
-n : 도매안 네임 미확인
tcp : tcp 패킷 캡처
udp : udp 패킷 캡처
net : 특정 네트워크 범위함 캡처 (tcpdump -i ens192 net 192.168.0.0/24)
portramge : 특정 포트 범위를 지정하여 캡처 ( tcpdump portrange 100-200)
host : 특정 호스트의 패킷 캡처 (tcpdump host 192.168.1.100)
-w : 패킷 캡처를 저장 (tcpdump -r tcpdump.txt)
-tttt : tcpdump의 타임 스태프 출력 (2022-06-27 23:13:06.791246 로 출력)
ipv6 : ipv6 패킷만 캡처
icmp : icmp 캡처
'Technical > Network' 카테고리의 다른 글
cisco db9-rj45 케이블로 알카텔 콘솔 케이블 만드는 법 (0) | 2022.08.03 |
---|---|
tracert 와 traceroute 차이 (0) | 2022.06.30 |
랜 케이블에 대하여. (0) | 2022.04.08 |
Cisco N5K (vPC) 설정 간단 가이드 (0) | 2022.04.06 |
CISCO SPAN(switch port analyzer) 설정 방법 (0) | 2022.04.04 |
댓글