tcpdump 명령

용도

네트워크에서 트래픽 덤프

구문

tcpdump [ -a ] [ -A ] [ -B buffer_size ] [ -d ] [ -D ] [ -e ] [ -f ] [ -l ] [ -K ] [ -L ] [ -M secret ] [ -r file ]][ -n ] [ -N ] [ -O ] [ -p ][ -q ] [ -Q [ -V ] ] [ -R ] [ -S ] [ -t ] [ -T ][ -u ] [ -U ] [ -v ] [ -x ] [ -X ] [ -c count ][ -C file_size ] [ -F file ] [ -G rotate_seconds ] [ -i  interface ] [ -s snaplen ] [ -w file ][ -E addr ] [ -y datalinktype ] [-z command ] [-Z user ] [ expression ]

설명

tcpdump 명령은 네트워크 인터페이스에서 부울 표현식과 대응하는 패킷의 헤더를 인쇄합니다. 이 명령을 -w 플래그와 함께 실행하여 추가 분석을 위해 패킷 데이터를 파일에 저장할 수 있습니다. 또한 이 명령을 -r 플래그와 함께 사용하여 네트워크 인터페이스에서 패킷을 읽는 대신 저장된 패킷 파일에서 데이터를 읽을 수 있습니다. 모든 경우에 표현식과 일치하는 패킷만 tcpdump 명령에 의해 처리됩니다.

이 명령이 -c와 함께 실행되지 않으면 tcpdump는 SIGINT 신호(일반적으로 Ctrl-C) 또는 SIGTERM 신호(일반적으로 kill(1) 명령)로 인터럽트될 때까지 패킷 캡처를 계속합니다. tcpdump-c 플래그와 함께 실행되는 경우 SIGINT 또는 SIGTERM 신호에 의해 인터럽트되거나 지정된 패킷 수가 처리 완료될 때까지 패킷을 캡처합니다.

tcpdump 명령은 모든 패킷을 캡처한 후에 다음 개수를 리턴합니다.
"필터에 의해 수신된" 패킷
패킷이 필터 표현식과 일치되는지 여부에 상관없이 모든 패킷을 계수합니다.
"커널에 의해 삭제된" 패킷
버퍼 공간의 부족으로 인해 삭제된 패킷의 수입니다.

가용 기본요소

dst host host
패킷의 IPv4/v6 대상이 주소 또는 이름일 수 있는 호스트인 경우 참입니다.
src host host
패킷의 IPv4/v6 소스 필드가 호스트인 경우 참입니다.
host host
IPv4/v6 소스 또는 패킷의 대상이 호스트인 경우 참입니다. 위의 모든 호스트 표현식 앞에는 키워드 ip, arp, rarp 또는 ip6를 덧붙일 수 있습니다. ip host host는 다음과 같습니다.
ether proto \ip and host host
호스트가 복수의 IP 주소를 포함하는 이름인 경우 각 주소가 일치에 대해 검사됩니다.
ether dst ehost
이더넷 대상 주소가 ehost인 경우 참입니다. Ehost는 /etc/ethers에서 생성된 이름이거나 숫자일 수 있습니다(숫자 형식에 대해서는 ethers(3N) 참조).
ether src ehost
이더넷 소스 주소가 ehost인 경우 참입니다.
ether host ehost
이더넷 소스 또는 대상 주소가 ehost인 경우 참입니다.
gateway host
패킷이 호스트를 게이트웨이로 사용한 경우 참입니다. 예를 들어, 이더넷 소스 또는 대상 주소가 호스트지만 IP 소스 또는 IP 대상이 둘 다 호스트가 아닙니다. 호스트는 이름이어야 하고 머신의 host-name-to-IP-address 분석 메커니즘(호스트 이름 파일, DNS, NIC 등) 및 머신의 host-name-to-Ethernet-address 분석 메커니즘(/etc/ethers 등) 모두에 의해 찾을 수 있어야 합니다. 동일한 표현식은 host /ehost에 대한 이름 또는 번호로 사용할 수 있는 host host가 아니라 ether host ehost입니다. 이때 이 구문은 IPv6 사용 가능 구성에서 작동하지 않습니다.
dst net net
패킷의 IPv4/v6 대상 주소에 네트의 네트워크 번호가 있는 경우 참입니다.
src net net
패킷의 IPv4/v6 소스 주소에 네트의 네트워크 번호가 있는 경우 참입니다.
net net
패킷의 IPv4/v6 소스 또는 대상 주소에 네트의 네트워크 번호가 있는 경우 참입니다.
net net mask netmask
IP 주소가 고유의 넷마스크를 포함하는 네트와 일치하는 경우 참입니다. 이는 src 또는 dst로 규정될 수 있습니다. 이 구문은 IPv6 net에서는 유효하지 않습니다.
net net/len
IPv4/v6 주소가 넷마스크 len 비트인 네트와 일치하는 경우 참입니다. scr 또는 dst로 규정될 수 있습니다.
dst port port
패킷이 ip/tcp, ip/udp, ip6/tcp orip6/udp이고 포트의 대상 포트 값을 포함할 경우 참입니다. 이 포트는 숫자이거나 /etc/services에서 사용되는 이름(tcp(4P) 및 udp(4P) 참조)입니다. 이름을 사용하는 경우 포트 번호 및 프로토콜을 모두 검사합니다. 숫자 또는 모호한 이름을 사용하는 경우 포트 번호만 검사합니다(예를 들어, dst 포트 513은 tcp/login 트래픽과 udp/who 트래픽을 모두 인쇄하고 포트 도메인은 tcp/domain 및 udp/domain 트래픽을 모두 인쇄함).
src port port
패킷이 포트의 소스 포트 값을 가지는 경우 참입니다.
port port
소스 또는 패킷의 대상 포트가 포트인 경우 참입니다. 소스 포트가 포트인 tcp 패킷과 일치하는 tcp src port port에서와 같이 위의 포트 표현식 앞에는 키워드 tcp 또는 udp를 덧붙일 수 있습니다.
less length
패킷의 길이가 length 이하인 경우 참입니다. 이는 len <= length와 같습니다.
greater length
패킷 길이가 길이 이상인 경우 참입니다. 이는 len >= length와 같습니다.
ip proto protocol
패킷이 프로토콜 유형 프로토콜의 IP 패킷인 경우 참입니다. 프로토콜은 숫자이거나 names icmp, icmp6, igmp, igrp, pim, ah, esp, vrrp, udp 또는 tcp 중 하나입니다. 이러한 식별자 tcp, udp 및 icmp도 키워드이므로 백슬래시(\)를 통해(C 쉘의 경우 \\) 이스케이프되어야 함을 참고하십시오. 이 기본요소는 프로토콜 헤더 체인을 추적하지 않음을 참고하십시오.
ip6 proto protocol
패킷이 프로토콜 유형 프로토콜의 IPv6 패킷인 경우 참입니다. 이 기본요소는 프로토콜 헤더 체인을 추적하지 않음을 참고하십시오.
ip6 protochain protocol
패킷이 IPv6 패킷이고 해당 프로토콜 헤더 체인에 유형 프로토콜이 있는 프로토콜 헤더를 포함하는 경우 참입니다. 예를 들어, ip6 protochain 6는 프로토콜 헤더 체인에 TCP 프로토콜 헤더가 있는 IPv6 패킷과 일치합니다. 이 패킷은 IPv6 헤더와 TCP 헤더 사이에 인증 헤더, 라우팅 헤더 또는 홉간(hop-by-hop) 옵션 헤더 등을 포함할 수 있습니다. 이 기본요소에 의해 생성된 BPF(Berkeley Packet Filter) 코드는 복잡하고 tcpdump에서 BPF 최적화 프로그램에 의해 최적화될 수 없으므로 다소 느릴 수 있습니다.
ip protochain protocol
ip6 protochain 프로토콜과 동일합니다. 그러나 Ipv4에 사용됩니다.
ether broadcast
패킷이 이더넷 브로드캐스트 패킷인 경우 참입니다. ether 키워드는 선택사항입니다.
ip broadcast
패킷이 IPv4 브로드캐스트 패킷인 경우 참입니다. 모두 0인 브로드캐스트 규칙과 모두 1인 브로트캐스트 규칙을 모두 검사하고 캡처가 수행되고 있는 인터페이스에서 서브넷 마스크를 검색합니다.

캡처가 수행되고 있는 인터페이스에 넷마스크가 없는 것과 같은 이유로 캡처가 수행되고 있는 인터페이스의 서브넷 마스크가 사용 불가능한 경우 이 검사는 올바르게 작동하지 않습니다.

ether multicast
패킷이 이더넷 멀티캐스트 패킷인 경우 참입니다. ether 키워드는 선택사항입니다. 이는 ether[0] & 1 != 0의 약식형입니다.
ip multicast
패킷이 IP 멀티캐스트 패킷인 경우 참입니다.
ip6 multicast
패킷이 IPv6 멀티캐스트 패킷인 경우 참입니다.
ether proto protocol
패킷이 ether 유형 프로토콜인 경우 참입니다. 프로토콜은 숫자이거나 이름 ip, ip6, arp, rarp, atalk, aarp, decnet, sca, lat, mopdl, moprc, iso, stp, ipx 또는 netbeui 중 하나입니다. 이러한 식별자도 키워드이므로 백슬래시(\)를 통해 이스케이프되어야 함을 참고하십시오.
FDDI(예: `fddi protocol arp'), 토큰 링(예: `tr protocol arp') 및 IEEE 802.11 무선 LAN(예: `wlan protocol arp')의 경우, 대부분의 프로토콜에 대한 프로토콜 ID는 802.2 논리적 링크 제어(LLC) 헤더에서 가져옵니다. 이 헤더는 일반적으로 FDDI, 토큰 링 또는 802.11 헤더 위에 계층화됩니다. FDDI, 토큰 링 또는 802.11에서 대부분의 프로토콜 ID를 필터링하는 경우 tcpdump는 캡슐화된 이더넷에 대해 0x000000의 OUI(Organizational Unit Identifier)를 사용하여 SNAP 형식으로 LLC 헤더의 프로토콜 ID 필드만 검사하며 패킷이 0x000000의 OUI를 사용하는 SNAP 형식인지 여부는 검사하지 않습니다. 예외는 다음과 같습니다.
iso
tcpdump는 LLC 헤더의 DSAP(Destination Service Access Point) 및 SSAP(Source Service Access Point) 필드를 검사합니다.
stp 및 netbeui
tcpdump는 LLC 헤더의 DSAP를 검사합니다.
atalk
tcpdump는 0x080007의 OUI와 AppleTalk etype을 포함하는 SNAP 형식 패킷을 검사합니다.
이더넷의 경우 tcpdump는 해당 프로토콜 대부분의 이더넷 유형 필드를 검사합니다. 예외는 다음과 같습니다.
iso, sap 및 netbeui
tcpdump가 FDDI, 토큰 링 및 802.11에 대해 수행한 대로 802.3 프레임을 검사한 다음 LLC 헤더를 검사합니다.
atalk
tcpdump가 FDDI, 토큰 링 및 802.11에 대해 수행한 대로 이더넷 프레임의 AppleTalk etype과 SNAP 형식 패킷을 모두 검사합니다.
aarp
tcpdump가 이더넷 프레임 또는 OUI가 0x000000인 802.2 SNAP 프레임에서 AppleTalk ARP etype을 검사합니다.
ipx
tcpdump가 이더넷 프레임의 IPX etype, LLC 헤더의 IPX DSAP, IPX의 LLC 헤더 캡슐화가 없는 802.3 및 SNAP 프레임의 IPX etype을 검사합니다.
decnet src host
DECNET 소스 주소가 호스트인 경우에 참이며, 이 주소는 10.123 양식의 주소이거나 DECNET 호스트 이름일 수 있습니다. [DECNET 호스트 이름 지원은 DECNET을 실행하도록 구성되는 Ultrix 시스템에서만 사용 가능합니다.]
decnet dst host
DECNET 대상 주소가 호스트인 경우 참입니다.
decnet host host
DECNET 소스 또는 대상 주소가 호스트인 경우 참입니다.
ifname interface
패킷이 지정된 인터페이스로부터 발생한 것으로 로그된 경우 참입니다.
on interface
ifname 수정자와 동의어입니다.
rnr num
패킷이 지정된 PF 규칙 번호와 대응하는 것으로 로그된 경우 참입니다(OpenBSD의 pf(4)에 의해 로그된 패킷에만 적용됨).
rulenum num
rnr 수정자와 동의어입니다.
reason code
패킷이 지정된 PF 이유 코드로 로그된 경우 참입니다. 알려진 코드는 match, bad-offset, fragment, short, normalize 및 memory입니다(OpenBSD의 pf(4)에 의해 로그된 패킷에만 적용됨).
action act
패킷이 로그될 때 PF가 지정된 조치를 취했을 경우 참입니다. 알려진 조치는 pass 및 block입니다(OpenBSD의 pf(4)에 의해 로그된 패킷에만 적용됨).
netbeui
ip, ip6, arp, rarp, atalk, aarp, decnet, iso, stp, ipx.

다음에 대한 약어입니다.

ether proto p
여기서, p는 위의 프로토콜 중 하나입니다.

lat, moprc, mopdl

다음에 대한 약어입니다.
ether proto p
여기서, p는 위의 프로토콜 중 하나입니다. tcpdump는 현재 이러한 프로토콜을 구문 분석하는 방법을 알지 못한다는 점을 참고하십시오.
vlan [vlan_id]
패킷이 IEEE 802.1Q VLAN 패킷인 경우 참입니다. vlan_id가 지정된 경우 지정된 vlan_id가 있는 패킷만 참입니다. 패킷이 VLAN 패킷이라는 가정 하에 표현식에서 발생한 첫 번째 vlan 키워드가 표현식의 나머지 부분에 대한 오프셋 암호 해독을 변경하는 점을 참고하십시오.
tcp, udp, icmp
다음에 대한 약어입니다.
ip proto p or ip6 proto p
여기서, p는 위의 프로토콜 중 하나입니다.
iso proto protocol
패킷이 프로토콜 유형 프로토콜의 OSI 패킷인 경우 참입니다. 프로토콜은 숫자이거나 names clnp, esis 또는 isis 중 하나입니다.
clnp, esis, isis
다음에 대한 약어입니다.
  • iso proto p
여기서, p는 위의 프로토콜 중 하나입니다.
l1, l2, iih, lsp, snp, csnp, psnp
IS-IS PDU 유형의 약어입니다.
vpi n
가상 경로 식별자가 n인 Solaris의 SunATM에 대해 패킷이 ATM 패킷인 경우 참입니다.
vci n
가상 채널 식별자가 n인 Solaris의 SunATM에 대해 패킷이 ATM 패킷인 경우 참입니다.
lane
패킷이 Solaris의 SunATM에 대해 ATM 패킷이고 ATM LANE 패킷인 경우 참입니다. 패킷이 LANE 에뮬레이트된 이더넷 패킷이거나 LANE LE 제어 패킷이라는 가정 하에 표현식에서 발생한 첫 번째 lane 키워드가 표현식의 나머지 부분에서 수행되는 테스트를 변경하는 점을 참고하십시오. lane이 지정되지 않은 경우 테스트는 패킷이 LLC 캡슐화된 패킷이라는 가정 하에 수행됩니다.
llc
패킷이 Solaris의 SunATM에 대해 ATM 패킷이고 LLC 캡슐화된 패킷인 경우 참입니다.
oamf4s
패킷이 Solaris의 SunATM에 대해 ATM 패킷이고 세그먼트 OAM F4 플로우 셀(VPI=0 & VCI=3)인 경우 참입니다.
oamf4e
패킷이 Solaris의 SunATM에 대해 ATM 패킷이고 엔드-투-엔드 OAM F4 플로우 셀(VPI=0 & VCI=4)인 경우 참입니다.
oamf4
패킷이 Solaris의 SunATM에 대해 ATM 패킷이고 세그먼트 또는 엔드-투-엔드 OAM F4 플로우 셀(VPI=0 & (VCI=3 | VCI=4))인 경우 참입니다.
oam
패킷이 Solaris의 SunATM에 대해 ATM 패킷이고 세그먼트 또는 엔드-투-엔드 OAM F4 플로우 셀(VPI=0 & (VCI=3 | VCI=4))인 경우 참입니다.
metac
패킷이 Solaris의 SunATM에 대해 ATM 패킷이고 메타 신호 회로(VPI=0 & VCI=1)에 있는 경우 참입니다.
bcc
패킷이 Solaris의 SunATM에 대해 ATM 패킷이고 브로드캐스트 신호 회로(VPI=0 & VCI=2)에 있는 경우 참입니다.
sc
패킷이 Solaris의 SunATM에 대해 ATM 패킷이고 신호 회로(VPI=0 & VCI=5)에 있는 경우 참입니다.
ilmic
패킷이 Solaris의 SunATM에 대해 ATM 패킷이고 ILMI 회로(VPI=0 & VCI=16)에 있는 경우 참입니다.
connectmsg
패킷이 Solaris의 SunATM에 대해 ATM 패킷이고 신호 회로에 있으며 Q.2931 Setup, Call Proceeding, Connect, Connect Ack, Release 또는 Release Done 메시지인 경우 참입니다.
metaconnect
패킷이 Solaris의 SunATM에 ATM 패킷이고 메타 신호 회로에 있으며 Q.2931 Setup, Call Proceeding, Connect, Release 또는 Release Done 메시지인 경우 참입니다.
expr relop expr
relop가 >, <, >=, <=, =, != 중 하나이고 expr이 정수 상수(표준 C 구문으로 표시됨), 정규 2진 연산자[+, -, *, /, &, |], 길이 연산자 및 특수 패킷 데이터 액세서로 구성되는 관계가 유지되는 경우 참입니다. 패킷 내 데이터에 액세스하려면 다음 구문을 사용하십시오.
proto [ expr : size ]
Proto는 ether, fddi, tr, wlan, ppp, slip, link, ip, arp, rarp, tcp, udp, icmp 또는 ip6 중 하나이고 색인 조작을 위한 프로토콜 계층을 나타냅니다. (ether, fddi, wlan, tr, ppp, slip 및 link all이며 링크 계층을 참조하십시오.) tcp, udp 및 다른 상위 계층 프로토콜 유형은 IPv6가 아닌 IPv4에만 적용됨을 참고하십시오(향후 수정될 예정임). 표시된 프로토콜 계층에 관련된 바이트 오프셋이 expr에 의해 지정됩니다. Size는 선택사항이고 관심있는 필드의 바이트 수(1, 2 또는 4 및 디폴트 값)를 표시합니다. 키워드 len으로 표시되는 length 연산자는 패킷의 길이를 지정합니다.

예를 들어, ether[0] & 1 != 0은 모든 멀티캐스트 트래픽을 포착합니다. 표현식 ip[0] & 0xf !=5는 옵션을 사용하여 모든 IP 패킷을 포착합니다. 표현식 ip[6:2] & 0x1fff = 0은 프래그먼트화가 되지 않은 데이터그램 및 프래그먼트화된 데이터그램의 frag 0만 포착합니다. 이 검사는 tcp 및 udp 색인 조작에 내재적으로 적용됩니다. 예를 들어, tcp[0]는 항상 TCP 헤더의 첫 번째 바이트를 의미하고 개입하는 프래그먼트의 첫 번째 바이트를 의미하지 않습니다.

일부 오프셋 및 필드 값은 숫자 값이 아닌 이름으로 표현될 수 있습니다. 사용 가능한 프로토콜 헤더 필드 오프셋은 다음과 같습니다. icmptype(ICMP 유형 필드), icmpcode(ICMP 코드 필드) 및 tcpflags(TCP 플래그 필드).

사용 가능한 ICMP 유형 필드 값은 다음과 같습니다. icmp-echoreply, icmp-unreach, icmp-sourcequench, icmp-redirect, icmp-echo, icmp-routeradvert, icmp-routersolicit, icmp-timxceed, icmp-paramprob, icmp-tstamp, icmp-tstampreply, icmp-ireq, icmp-ireqreply, icmp-maskreq, icmp- maskreply.

사용 가능한 TCP 플래그 필드 값은 다음과 같습니다. tcp-fin, tcp-syn, tcp-rst, tcp-push, tcp-ack, tcp-urg.

기본요소 결합

소괄호로 묶인 기본요소와 연산자의 그룹입니다(소괄호는 쉘에서 특별한 의미를 가지므로 이스케이프되어야 함).
          Negation (`!' or `not').

          Concatenation (`&&' or `and').

          Alternation (`||' or `or').
부정(negation)은 가장 높은 우선순위를 갖습니다. 대체 및 병합은 우선순위가 같고 왼쪽에서 오른쪽으로 연관됩니다. 이제 juxtaposition이 아닌 explicits 및 tokens가 병합에 필요함을 참고하십시오.

키워드 없이 ID가 제공되는 경우 가장 최근 키워드가 가정됩니다. 예를 들어, not host vs and acenot host vs and host ace의 축약형이며 not ( host vs or ace )와 혼동되어서는 안됩니다.

표현식 인수는 단일 인수 또는 다중 인수로(둘 중 더 편리한 방식으로) tcpdump에 패스될 수 있습니다. 일반적으로 표현식이 쉘 메타 문자를 포함하는 경우 이를 인용 부호로 묶어 단일 인수로 패스하는 것이 더 쉽습니다. 다중 인수는 구문 분석되기 전에 공백을 사용하여 병합됩니다.

플래그

항목 설명
-a 네트워크 및 브로드캐스트 주소를 이름으로 변환하려고 시도합니다.
-A 각 패킷(해당 링크 레벨 헤더는 제외)을 ASCII로 인쇄합니다. 웹 페이지를 포착하는 데 편리합니다.
-B buffer_size 버퍼 크기를 KB 단위로 표시합니다. 더 작은 값이 허용됩니다. 버퍼 크기가 BPF에 의해 설정되는 값보다 작은 경우 실제 버퍼 크기는 무시되고 BPF(Berkeley Packet Filter)에 의해 설정되는 값이 사용됩니다. -B 옵션을 지정하지 않으면 버퍼 크기는 32,768로 디폴트 설정됩니다.
-c 개수 Count 패킷을 수신한 후 종료합니다.
-C file_size savefile에 새 패킷을 쓰기 전에 파일이 현재 file_size보다 큰지 여부를 검사하고 더 큰 경우 현재 savefile을 닫고 새 파일을 여십시오. 첫 번째 savefile-w 플래그와 그 뒤에 2부터 증가하는 번호로 이름이 지정된 후 파일을 저장하십시오. file_size의 단위는 백만 바이트입니다(1,048,576바이트가 아니라 1,000,000 바이트임).
-d 컴파일된 패킷 대응 코드를 표준 출력에 덤프한 다음 정지합니다.
-D tcpdump가 패킷을 캡처할 수 있는 시스템에서 사용 가능한 네트워크 인터페이스의 리스트를 인쇄합니다. 각 네트워크 인터페이스에 대해 번호 및 인터페이스 이름(뒤에 인터페이스에 대한 텍스트 설명이 추가될 수 있음)이 인쇄됩니다. 인터페이스 이름 또는 번호를 -i 플래그에 제공하여 캡처할 인터페이스를 지정할 수 있습니다.
-dd 패킷 대응 코드를 C 프로그램 프래그먼트로서 덤프합니다.
-ddd 패킷 대응 코드를 10진수로서(개수가 선행됨) 덤프합니다.
-e 각 덤프 행에 링크 레벨 헤더를 인쇄합니다.
-E addr addr로 주소 지정되도록 하고 보안 매개변수 색인 값 spi을 포함하는 IPsec ESP 패킷을 복호화하기 위해 spi@ipaddr algo:secret을 사용하십시오. 이 조합은 쉼표 또는 줄 바꾸기 분리를 사용하여 반복할 수 있습니다.
참고: 이제 IPv4 ESP 패킷에 대한 시크릿 설정이 지원됩니다.

알고리즘은 des-cbc, 3des-cbc, blowfish-cbc, rc3-cbc, cast128-cbc 또는 없음입니다. 디폴트는 des-cbc입니다. 패킷을 복호화하는 기능은 libcrypto가 설치되고 LIBPATH에 있는 경우에만 존재합니다.

secret은 ESP 비밀 키를 위한 ASCII 텍스트입니다. 0x가 선행되는 경우 16진 값을 읽습니다.

이 옵션은 RFC1827 ESP가 아닌 RFC2406 ESP를 가정합니다. 이 옵션은 디버깅 전용이며 참인 비밀 키로 이 옵션을 사용하는 것은 권장되지 않습니다. IPsec 비밀 키를 명령행에 표시하면 다른 사람이 ps(1) 및 다른 경우를 통해 이 비밀 키를 볼 수 있게 됩니다.

위의 구문 외에도 tcpdump 명령은 구문 파일 이름을 사용하여 지정된 파일을 읽을 수 있습니다. 이 파일은 첫 번째 ESP 패킷을 수신할 때 열리므로 tcpdump에 제공될 수 있는 특수 권한은 이미 포기되었어야 합니다.

-f 외부 IPv4 주소를 기호가 아닌 숫자로 인쇄합니다.

외부 IPv4 주소에 대한 테스트는 캡처가 수행되고 있는 인터페이스의 넷마스크 및 IPV4 주소를 사용하여 수행됩니다. 이 옵션은 해당 주소 또는 넷마스크가 사용 가능하지 않은 경우 올바르게 작동하지 않습니다.

-F file file을 필터 표현식을 위한 입력으로 사용하십시오. 명령행에 지정되는 추가 표현식은 무시됩니다.
-G rotate_seconds -w 옵션으로 지정되는 덤프 파일을 rotate_seconds초마다 회전시킵니다. -C 옵션과 함께 사용되면 size 변수에 지정된 값이 처음으로 도달될 경우 파일 이름은 file <count>의 형식을 사용합니다. 그렇지 않을 경우 rotate_seconds 변수에 지정된 값이 경과하면 tcpdump 명령이 파일을 회전시킵니다.
-iinterface interface에서 청취합니다. 지정되지 않은 경우 tcpdump는 시스템 interface 리스트에서 가장 낮은 번호가 위로 구성되는 interface(루프백 제외)를 검색합니다. 최초의 일치 항목을 선택하면 연결이 끊어집니다.

-D 플래그에 의해 인쇄되는 interface 번호는 interface 인수로 사용할 수 있습니다.

-K TCP 체크섬 계산을 하드웨어에서 수행하는 인터페이스에서는 TCP 체크섬 검증을 생략합니다. 이 플래그를 사용하지 않는 경우 모든 송신 TCP 체크섬이 잘못된 것으로 플래그 지정됩니다.
-l stdout 행이 버퍼링되게 합니다. 데이터를 캡처하는 동안 데이터를 보려는 경우 유용합니다. 예:
tcpdump -l | tee dat
  or  
tcpdump -l   >   dat & tail -f dat
-L 인터페이스에 대해 알려진 데이터 링크 유형을 나열하고 종료합니다.
-mmodule module 파일에서 SMI MIB 모듈 정의를 로드합니다. 이 옵션을 여러 번 사용하여 여러 MIB 모듈을 tcpdump에 로드할 수 있습니다.
-M TCP-MD5 옵션(RFC(Request for Comment) 2385)을 사용하여 TCP 세그먼트에서 찾은 요약을 유효화하기 위해 시크릿을 공유 시크릿로 사용합니다.
-n 호스트 주소 및 포트 번호를 이름으로 변환하는 것을 차단합니다.
-N 호스트 이름의 도메인 이름 규정 인쇄를 생략합니다. 예를 들면, tcpdumpnic.ddn.mil 대신 nic를 인쇄합니다.
-O tcpdump가 패킷 대응 코드 최적화 프로그램을 실행하지 못하도록 합니다. 이 플래그는 최적화 프로그램에서 버그가 의심되는 경우에만 유용합니다.
-p 인터페이스를 혼잡 모드로 설정하는 것을 정지합니다. 이 인터페이스가 다른 어떤 이유로 혼잡 모드일 수 있으므로 -pether host {local-hw-addr} 또는 ether broadcast에 대한 약어로 사용할 수 없습니다.
-q 빠른 출력입니다. 프로토콜 정보를 적게 인쇄하므로 출력 행이 짧아집니다.
-Q 기록된 패킷에 대해 필터링된 시스템 추적을 사용 가능하게 합니다. AIX® 추적 디먼을 실행하여 네트워크 통신 서브시스템에 관련된 선택된 시스템 이벤트를 기록할 수 있습니다.
-r file file(-w 옵션으로 작성됨)에서 패킷을 읽습니다. file이 "-"인 경우 표준 입력이 사용됩니다.
-R ESP/AH 패킷이 이전 스펙을 기반으로 하는 것으로 가정합니다.

(RFC1825에서RFC1829까지). 지정된 경우 tcpdump는 재생 방지 필드를 인쇄하지 않습니다. ESP/AH 스펙에는 프로토콜 버전 필드가 없으므로 tcpdump는 ESP/AH 프로토콜의 버전을 추정할 수 없습니다.

-S 상대적 TCP 순번이 아닌 절대적 TCP 순번을 인쇄합니다.
-s snaplen 각 패킷에서 디폴트 68바이트가 아닌 snaplen 바이트의 데이터를 스나프(Snarf)합니다. 68바이트는 IP, ICMP, TCP 및 UDP에 적합하지만 이름 서버 및 NFS 패킷의 프로토콜 정보가 절단될 수 있습니다(아래 참조). 제한된 스냅샷으로 인해 절단된 패킷은 출력에 [|proto]로 표시됩니다. 여기서, proto는 절단이 발생한 프로토콜 레벨의 이름입니다. 스냅샷의 크기를 늘릴수록 패킷을 처리하는 데 소요되는 시간의 양은 증가하고 패킷 버퍼링의 양은 효과적으로 감소함을 참고하십시오. 이로 인해 패킷이 유실될 수 있습니다. 관심있는 프로토콜 정보를 캡처하는 가장 작은 숫자로 snaplen을 제한해야 합니다. snaplen을 0으로 설정하는 것은 전체 패킷을 포착하기 위한 필수 길이를 사용하는 것을 의미합니다.
-T expression에 의해 선택된 패킷이 지정된 유형으로 해석되도록 강제 실행합니다. 현재 알려진 유형은 cnfp(Cisco NetFlow 프로토콜), rpc(원격 프로시저 호출), rtp(실시간 애플리케이션 프로토콜), rtcp(실시간 애플리케이션 제어 프로토콜), snmp(단순 네트워크 관리 프로토콜), tftp(기본 파일 전송 프로토콜), vat(비주얼 오디오 도구) 및 wb(분산된 화이트 보드)입니다.
-t 각 덤프 행에서 시간 소인의 인쇄를 생략합니다.
-tt 각 덤프 행에 형식화되지 않은 시간 소인을 인쇄합니다.
-ttt 각 덤프 행에 현재 행과 이전 행 사이의 델타(마이크로초)를 인쇄합니다.
-tttt 각 덤프 행에 날짜에 따라 진행되는 디폴트 형식의 시간 소인을 인쇄합니다.
-ttttt 각 덤프 행에 현재 행과 최초 행 사이의 델타(마이크로초)를 인쇄합니다.
-u 암호 해독되지 않은 NFS 처리를 인쇄합니다.
-U 출력이 -w 옵션을 통해 저장되도록 합니다(예: "packet- buffered"). 각 패킷이 저장될 때 패킷은 출력 버퍼가 채워질 때에만 기록되는 대신 출력 파일에 기록됩니다.
-v 약간 더 상세한 출력을 지정합니다. 예를 들어, IP 패킷에 있는 유지 시간, ID, 총 길이 및 옵션이 인쇄됩니다. 또한 IP 및 ICMP 헤더 체크섬 검증과 같은 추가 패킷 무결성 검사를 사용 가능하게 합니다.
-vv -v보다 훨씬 더 상세한 출력입니다. 예를 들어, 추가 필드가 NFS에서 인쇄되고 응답 패킷은 완전히 암호 해독됩니다.
-vvv -vv보다 훨씬 더 상세한 출력입니다. 예를 들어, telnet SB ... SE 옵션이 전부 인쇄됩니다. -X를 사용하면 Telnet 옵션도 16진으로 인쇄됩니다.
-V 소켓에서 소켓 디버그 플래그(SO_DEBUG 소켓 옵션) 및 추적 레벨을 설정합니다. 이 플래그는 -Q 플래그와 사용해야 합니다.
-w file 원시 패킷을 구문 분석하고 인쇄하는 대신 file에 기록합니다. 원시 패킷은 나중에 -r 플래그를 사용하여 인쇄할 수 있습니다. File이 "-"인 경우 표준 출력이 사용됩니다.
-x 각 패킷(해당 링크 레벨 헤더는 제외)을 16진 형식으로 인쇄합니다. 전체 패킷 또는 snaplen 바이트 중 더 작은 것이 인쇄됩니다. 이것은 전체 링크 계층 패킷이므로 채우는 링크 계층(예: 이더넷)의 경우 상위 계층 패킷이 필요한 채우기보다 짧을 때 채우기 바이트도 인쇄됩니다.
-xx 각 패킷을 해당 링크 레벨 헤더를 포함하여 16진 형식으로 인쇄합니다.
-X 각 패킷(해당 링크 레벨 헤더는 제외)을 16진 및 ASCII 형식으로 인쇄합니다. 이 플래그는 새로운 프로토콜을 분석하는 데 매우 편리합니다.
-ydatalinktype 패킷을 캡처하는 동안 사용할 데이터 링크 유형을 datalinktype으로 설정합니다.
-z command -C 또는 -G 옵션과 함께 사용하는 경우 tcpdump 명령이 savefile에서 지정된 명령을 실행하게 됩니다. 예를 들어, -z gzip 또는 -z bzip2를 지정하면 gzip 또는 bzip2 명령을 사용하여 각 savefile을 압축합니다.
참고: tcpdump 명령은 가장 낮은 우선순위를 사용하여 캡처하는 동시에 -z 명령을 실행하여 이 명령 실행이 캡처 프로세스를 방해하지 않도록 합니다.
-Z user 지정된 사용자의 시스템 권한을 사용하여 tcpdump 명령을 실행합니다.

매개변수

expressions
덤프할 패킷을 선택합니다. 표현식이 제공되는 경우 표현식이 true인 패킷만 덤프되고 그렇지 않은 경우에는 net의 모든 패킷이 덤프됩니다.
표현식은 하나 이상의 기본요소로 구성됩니다. 기본요소는 일반적으로 하나 이상의 규정자가 선행되는 ID(이름 또는 번호)로 구성됩니다. 다음과 같이 세 가지 다른 종류의 규정자가 있습니다.
  • type 규정자는 ID 이름 또는 번호가 참조하는 기본요소 유형을 나타냅니다. 가능한 값은 host, net 및 port입니다. 예를 들면, `host foo', `net 128.3', `port 20'입니다. 유형 규정자가 없는 경우 host로 가정됩니다.
  • dir 규정자는 ID로부터의 및/또는 ID로의 특정 전송 방향을 지정합니다. 가능한 방향은 src, dst, src or dst 및 src and dst입니다. dir 규정자가 없는 경우 src or dst로 가정됩니다. SLIP와 같은 일부 링크 계층 및 일부 기타 장치 유형에서는 인바운드 및 아웃바운드 규정자를 사용하여 원하는 방향을 지정할 수 있습니다.
  • proto 규정자는 특정 프로토콜에 대한 대응을 제한합니다. 가능한 프로토콜은 fddi, tr, wlan, ip, ip6, arp, rarp, decnet, tcp 및 udp입니다. proto 규정자가 없는 경우 유형과 일치하는 모든 프로토콜이 가정됩니다.

fddi is an alias for ether. 구문 분석기는 이를 "지정된 네트워크 인터페이스에 사용되는 데이터 링크 레벨"을 의미하는 것으로 처리합니다. FDDI 헤더에는 이더넷과 유사한 소스 및 대상 주소가 포함되어 있으며 종종 이더넷과 유사한 패킷 유형을 포함하므로 유사한 이더넷 필드에서와 같이 이 FDDI 필드에 대해 필터링할 수 있습니다. FDDI 헤더에는 다른 필드도 포함되어 있지만 그러한 필드에는 필터 표현식에서 이름을 붙일 수 없습니다.

fddi와 마찬가지로 trwlan은 ether에 대한 별명입니다. FDDI 헤더에 대한 이전 단락의 명령문은 토큰 링 및 802.11 무선 LAN 헤더에도 적용됩니다. 802.11 헤더의 경우 대상 주소는 DA 필드이고 소스 주소는 SA 필드이며 BSSID, RA 및 TA 필드는 테스트되지 않습니다.

위의 내용 외에도 패턴을 따르지 않는 일부 특수 '기본' 키워드가 있으며 이는 gateway, broadcast, less, greater 및 arithmetic expressions입니다. 이러한 키워드 모두 아래 설명되어 있습니다.

기본요소를 결합하기 위한 단어 and, ornot을 사용하여 더 복잡한 필터 표현식이 빌드됩니다.

환경 변수

-E 플래그가 작동하게 하려면 LIBPATH 환경 변수를 설정하거나 libcrypto 라이브러리가 /usr/lib에 있어야 합니다. 예:
ksh$ LIBPATH=/opt/freeware/lib tcpdump -E"algo:secret"

종료 상태

항목 설명
0 완료
제로가 아님 오류

보안

네트워크 인터페이스에서 패킷을 읽으려면 일반적으로 루트 전용인 /dev/bpf*에 대한 읽기 액세스 권한이 있어야 합니다. 파일에서 패킷을 읽는 데에는 파일 읽기 권한 외에 특별한 특권이 필요하지 않습니다.

RBAC 사용자 및 신뢰있는 AIX 사용자 주의사항: 이 명령은 특권 조작을 수행할 수 있습니다. 특권이 있는 사용자만 특권 조작을 실행할 수 있습니다. 권한 부여 및 특권에 대한 자세한 정보는 보안에 있는 특권 명령 데이터베이스를 참조하십시오. 이 명령과 연관된 특권 및 권한 부여 리스트는 lssecattr 명령 또는 getcmdattr 부속 명령을 참조하십시오.

예제

  1. 일몰에 도착하거나 전송되는 모든 패킷을 인쇄하려면 다음을 입력하십시오.
    tcpdump host sundown
  2. helios와 hot 또는 ace 간 트래픽을 인쇄하려면 다음을 입력하십시오.
    tcpdump host helios and \( hot or ace \)
  3. helios를 제외하고 ace와 hot 사이의 모든 IP 패킷을 인쇄하려면 다음을 입력하십시오.
    tcpdump ip host ace and not helios
  4. 로컬 호스트와 Berkeley에 있는 호스트 간 모든 트래픽을 인쇄하려면 다음을 입력하십시오.
    tcpdump net ucb-ether
  5. 인터넷 게이트웨이 snup를 통해 모든 ftp 트래픽을 인쇄하려면 다음을 입력하십시오.
    tcpdump 'gateway snup and (port ftp or ftp-data)'
    참고: 이 표현식은 쉘이 소괄호를 잘못 해석하는 것을 막기 위해 인용 부호로 묶습니다.
  6. 로컬 호스트를 소스로 하여 발생하거나 로컬 호스트를 대상으로 하는 트래픽 모두 인쇄하지 않으려면(다른 net에 있는 로컬 호스트로 게이트웨이하는 경우 로컬 net으로 지정해서는 안됨) 다음을 입력하십시오.
    tcpdump ip and not net localnet
  7. 비로컬 호스트가 포함된 각 TCP 대화의 시작 및 종료 패킷(SYN 및 FIN 패킷)을 인쇄하려면 다음을 입력하십시오.
    tcpdump 'tcp[tcpflags] & (tcp-syn|tcp-fin) != 0 and not src and d dst net localnet'
  8. 게이트웨이 snup를 통해 전송된 576바이트보다 긴 IP 패킷을 인쇄하려면 다음을 입력하십시오.
    tcpdump 'gateway snup and ip[2:2] > 576'
  9. 이더넷 브로드캐스트 또는 멀티캐스트를 통해 전송되지 않은 IP 브로드캐스트 또는 멀티캐스트 패킷을 인쇄하려면 다음을 입력하십시오.
    tcpdump 'ether[0] & 1 = 0 and ip[16] >= 224'
  10. 반향 요청/응답이 아닌(예: ping 패킷이 아닌) 모든 ICMP 패킷을 인쇄하려면 다음을 입력하십시오.
    tcpdump 'icmp[icmptype] != icmp-echo and icmp[icmptype] != icmp-e choreply'

표준 오류

모든 오류 및 경고는 stderr에 전송됩니다.

제한사항

일광 절약 시간 변경을 거치는 패킷 추적은 왜곡된 시간 소인을 제공합니다(시간 변경이 무시됨).

토큰 링 헤더에 있는 필터 표현식이 아닌 필드에 있는 필터 표현식이 소스 라우트되는 토큰 링 패킷을 잘못 처리합니다.

802.11 헤더에 있는 필터 표현식이 아닌 필드에 있는 필터 표현식이 To DS 및 From DS가 모두 설정된 802.11 데이터 패킷을 잘못 처리합니다.

ip6 proto가 헤더 체인을 추적해야 하지만 이 시점에서 추적하지 않습니다. ip6 protochain이 이 작동을 위해 제공됩니다.

tcp[0]과 같은 전송 계층 헤더에 대한 연산식은 IPv6 패킷에 대해 작동하지 않습니다. IPv4 패킷만 처리합니다.

기본 BPF 드라이버는 WPAR를 인식하지 못하므로 WPAR 환경에서 패킷 추적이 작동하지 않습니다.

파일

항목 설명
/usr/sbin/tcpdump tcpdump 명령의 위치입니다.
/usr/lib/libpcap.a  
/dev/bpf*  
/opt/freeware/lib/libcrypto.a(libcrypto.so) 선택사항입니다.