명령의 네트워크 활동을 추적하는 방법은 무엇입니까?

명령의 네트워크 활동을 추적하는 방법은 무엇입니까?

명령의 네트워크 활동을 추적하고 싶은데 tcpdump 및 strace를 시도했지만 성공하지 못했습니다.

예를 들어, 패키지를 설치하거나 사이트에 액세스를 시도하는 명령을 사용하는 경우 해당 네트워크 활동(액세스하려는 사이트)을 확인하고 싶습니다.

제 생각에는 tcpdump를 사용하여 이 작업을 수행할 수 있을 것 같습니다. 시도해 보았지만 내 시스템의 모든 네트워크 활동을 추적하고 있습니다. 네트워크 관련 명령을 여러 개 실행하고 특정 명령 네트워크 활동만 추적하고 싶다면 그 시점에서 정확한 솔루션을 찾기가 어려울 것입니다.

이를 수행할 수 있는 방법이 있습니까?

고쳐 쓰다:

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

답변1

단순화를 위해 netstat

netstatPID 또는 프로세스 이름을 찾으려면 및 grep을 사용하십시오 .

# 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? 출력이 매우 장황할 수 있으므로 grep을 수행해야 할 수도 있습니다. grep "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

답변2

새로 만들게요네트워크 네임스페이스, 실제 네트워크에 브리지 한 다음 모니터링 브리지를 사용하십시오 tcpdump.

답변3

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

출력이 클 수 있고 필터를 작성해야 하기 때문에 가장 기본적인 필터에 대한 기본 페이지는 이해하기 매우 쉽습니다.

또한 에서와 같이 애플리케이션 래퍼로 사용되지 않는다는 장점도 있으며 strace매우 강력할 수 있습니다.

~에서시스템 마이닝 예시

네트워킹

가장 높은 네트워크 대역폭을 사용하는 프로세스 보기

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 

아파치가 제공하지 않는 모든 들어오는 연결을 나열합니다.

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

답변4

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

두 옵션 모두를 사용하면 모든 네트워크 트래픽을 보고 나중에 이루어진 모든 연결을 분석하기 위해 저장할 수 있습니다.

관련 정보