![명령의 네트워크 활동을 추적하는 방법은 무엇입니까?](https://linux55.com/image/114845/%EB%AA%85%EB%A0%B9%EC%9D%98%20%EB%84%A4%ED%8A%B8%EC%9B%8C%ED%81%AC%20%ED%99%9C%EB%8F%99%EC%9D%84%20%EC%B6%94%EC%A0%81%ED%95%98%EB%8A%94%20%EB%B0%A9%EB%B2%95%EC%9D%80%20%EB%AC%B4%EC%97%87%EC%9E%85%EB%8B%88%EA%B9%8C%3F.png)
명령의 네트워크 활동을 추적하고 싶은데 tcpdump 및 strace를 시도했지만 성공하지 못했습니다.
예를 들어, 패키지를 설치하거나 사이트에 액세스를 시도하는 명령을 사용하는 경우 해당 네트워크 활동(액세스하려는 사이트)을 확인하고 싶습니다.
제 생각에는 tcpdump를 사용하여 이 작업을 수행할 수 있을 것 같습니다. 시도해 보았지만 내 시스템의 모든 네트워크 활동을 추적하고 있습니다. 네트워크 관련 명령을 여러 개 실행하고 특정 명령 네트워크 활동만 추적하고 싶다면 그 시점에서 정확한 솔루션을 찾기가 어려울 것입니다.
이를 수행할 수 있는 방법이 있습니까?
고쳐 쓰다:
나는 네트워크 인터페이스에서 일어나는 모든 일을 추적하고 싶지 않습니다. 명령(예: #yum install -y vim) 네트워크 활동을 추적하고 싶습니다. 도달하려는 사이트와 같은 것입니다.
답변1
단순화를 위해 netstat
netstat
PID 또는 프로세스 이름을 찾으려면 및 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를 사용할 수 있습니다.
두 옵션 모두를 사용하면 모든 네트워크 트래픽을 보고 나중에 이루어진 모든 연결을 분석하기 위해 저장할 수 있습니다.