명령의 네트워킹 활동을 추적하는 방법은 무엇입니까? 들어, 패키지를 설치하거나 일부 사이트에

명령의 네트워킹 활동을 추적하고 싶습니다 .tcpdump 및 strace를 성공하지 못했습니다.

예를 들어, 패키지를 설치하거나 일부 사이트에 도달하려는 명령을 사용하는 경우 해당 네트워킹 활동 (연결하려는 사이트)을보고 싶습니다.

tcpdump를 사용 하여이 작업을 수행 할 수 있다고 생각합니다. 시도했지만 시스템의 모든 네트워킹 활동을 추적하고 있습니다. 여러 네트워킹 관련 명령을 실행하고 특정 명령 네트워킹 활동 만 추적하려고한다면 정확한 솔루션을 찾기가 어렵습니다.

그렇게 할 방법이 있습니까?

최신 정보:

네트워크 인터페이스에서 발생하는 모든 것을 추적하고 싶지 않습니다. 명령 (예 : #yum install -y vim) 네트워킹 활동을 추적하고 싶습니다. 도달하려는 사이트 등



답변

단순성을위한 netstat

netstatPID 또는 프로세스 이름 사용 및 grepping :

# netstat -np --inet | grep "thunderbird"
tcp        0      0 192.168.134.142:45348   192.168.138.30:143      ESTABLISHED 16875/thunderbird
tcp        0      0 192.168.134.142:58470   192.168.138.30:443      ESTABLISHED 16875/thunderbird

watch동적 업데이트에 사용할 수 있습니다 .

watch 'netstat -np --inet | grep "thunderbird"'

와:

  • -n: 기호 호스트, 포트 또는 사용자 이름을 판별하는 대신 숫자 주소 표시
  • -p: 각 소켓이 속한 프로그램의 PID와 이름을 보여줍니다.
  • --inet: raw, udp 및 tcp 프로토콜 소켓 만 표시합니다.

자세한 표시

당신은 당신이 시도했다 strace도구를, 그러나 당신은 옵션을 시도 않았다 trace=network? 출력이 매우 장황 할 수 있으므로 약간의 grepping이 필요할 수 있습니다. “sin_addr”을 그 리핑하여 시작할 수 있습니다.

 strace -f -e trace=network <your command> 2>&1 | grep sin_addr

또는 이미 실행중인 프로세스의 경우 PID를 사용하십시오.

 strace -f -e trace=network -p <PID> 2>&1 | grep sin_addr

답변

네트워크 네임 스페이스 를 만들어 실제 네트워크에 브리지 한 다음로 브리지를 모니터링합니다 tcpdump.


답변

sysdig 네트워크 활동을 포함하여 이에 국한되지 않고 시스템에서 실행중인 커널 또는 여러 명령의 모든 활동을 모니터링 할 수 있습니다.

출력이 클 수 있으므로 필터를 빌드해야합니다. 가장 기본적인 필터의 기본 페이지는 이해하기 쉽습니다.

또한 에서처럼 응용 프로그램 래퍼로 사용되지 않는 이점이 strace있으며 매우 강력 할 수 있습니다.

에서 Sysdig 예

네트워킹

네트워크 대역폭 사용량 측면에서 주요 프로세스 확인

sysdig -c topprocs_net

호스트 192.168.0.1과 교환 된 네트워크 데이터 표시

이진으로 :

sysdig -s2000 -X -c echo_fds fd.cip=192.168.0.1

ASCII로 :

sysdig -s2000 -A -c echo_fds fd.cip=192.168.0.1

상위 로컬 서버 포트를 참조하십시오.

설정된 연결 측면에서 :

sysdig -c fdcount_by fd.sport "evt.type=accept"

총 바이트의 관점에서 :

sysdig -c fdbytes_by fd.sport

상위 클라이언트 IP보기

확립 된 연결 측면에서

sysdig -c fdcount_by fd.cip "evt.type=accept"

총 바이트 수

sysdig -c fdbytes_by fd.cip

Apache에서 제공하지 않는 모든 수신 연결을 나열하십시오.

sysdig -p"%proc.name %fd.name" "evt.type=accept and proc.name!=httpd"

답변

wireshark를 사용하여 네트워크 인터페이스의 모든 입력 및 출력 트래픽을 스니핑 할 수 있습니다. GUI가없는 옵션이 필요한 경우 tshark를 사용할 수 있습니다.

두 옵션을 모두 사용하면 모든 네트워크 트래픽을 확인하고 저장하여 나중에 설정된 모든 연결을 분석 할 수 있습니다.