프로세스의 네트워크 연결 표시


25

프로세스의 연결을 표시하는 방법이 있습니까? 그런 것 :

show PID

하는 show이 작업을 수행하는 명령이며, PID프로세스의 PID입니다. 원하는 출력은 프로세스의 모든 연결 (실시간)로 구성됩니다. 예를 들어, 프로세스가 173.194.112.151 에 연결하려고 하면 출력은 173.194.112.151입니다.

Firefox의보다 구체적인 예 :

show `pidof firefox`

firefox를 사용하여 처음에는 google.com , 그 다음 unix.stackexchange.com , 마지막으로 192.30.252.129로 이동 합니다. 브루어를 닫을 때 출력은 다음과 같아야합니다.

google.com
stackexchange.com
192.30.252.129

(브라우저의 경우 다른 출력 관련 연결이 많기 때문에이 출력은 현실적이지 않지만 이것은 단지 예일뿐입니다.)


어떤 유닉스 변종에서? 대부분이 작업을 수행하는 도구가 있지만 다른 도구가 있습니다.
질 'SO-정지 존재 악마'

따라서 본질적으로 모든 연결에 대한 로그를 원하십니까?
Sergiy Kolodyazhnyy

tcpdump 또는 Wireshark가 그 일을해야한다고 생각합니다.
Sergiy Kolodyazhnyy


@Gilles Ubuntu 14.04.3 LTS
ᴜsᴇʀ

답변:


23

찾고 있습니다 strace! 내가 발견 askubuntu에이 대답을 하지만, 유닉스 유효입니다 :

새 프로세스를 시작하고 모니터링하려면

strace -f -e trace=network -s 10000 PROCESS ARGUMENTS

알려진 PID로 기존 프로세스를 모니터링하려면

strace -p $PID -f -e trace=network -s 10000

그렇지 않은 경우 Linux에만 해당 되는 경우 격리 된 네트워크 네임 스페이스에서 프로세스를 실행하고 wireshark를 사용하여 트래픽을 모니터링 할 수 있습니다 . 아마도 strace로그를 읽는 것보다 더 편리 할 것입니다 .

  • 테스트 네트워크 네임 스페이스를 만듭니다.

    ip netns add test
    
  • 한 쌍의 가상 네트워크 인터페이스 (veth-a 및 veth-b)를 만듭니다.

    ip link add veth-a type veth peer name veth-b
    
  • veth-a 인터페이스의 활성 네임 스페이스를 변경하십시오.

    ip link set veth-a netns test
    
  • 가상 인터페이스의 IP 주소를 구성하십시오.

    ip netns exec test ifconfig veth-a up 192.168.163.1 netmask 255.255.255.0
    ifconfig veth-b up 192.168.163.254 netmask 255.255.255.0
    
  • 테스트 네임 스페이스에서 라우팅을 구성하십시오.

    ip netns exec test route add default gw 192.168.163.254 dev veth-a
    
  • ip_forward를 활성화하고 생성 한 네임 스페이스에서 들어오는 트래픽을 전달하는 NAT 규칙을 설정하십시오 (네트워크 인터페이스 및 SNAT ip 주소를 조정해야 함).

    echo 1 > /proc/sys/net/ipv4/ip_forward
    iptables -t nat -A POSTROUTING -s 192.168.163.0/24 -o YOURNETWORKINTERFACE -j SNAT --to-source YOURIPADDRESS
    

    (원하는 경우 MASQUERADE 규칙을 사용할 수도 있습니다)

  • 마지막으로, 새로운 네임 스페이스에서 분석하려는 프로세스와 wireshark도 실행할 수 있습니다.

    ip netns exec test thebinarytotest
    ip netns exec test wireshark
    

    veth-a 인터페이스를 모니터링해야합니다.


2
strace실제로 Linux 커널에만 적용되므로 모든 유닉스 계열 운영 체제에 유효하지는 않습니다. 내가 이해하는 것처럼 BSD와 비슷한 시스템에는 유사한 유틸리티 (DTrace와 트러스)가 있습니다. 어쨌든 좋은 대답 (그렇게 공감 된). Stack Exchange에 오신 것을 환영합니다.
Anthony G-Monica에 대한 정의

대답은 올바른 방향을 가리키는 것으로 보이지만, 검사하는 동안 출력 을 해석 하는strace 데 문제가 있습니다 git fetch. OP의 요청에 따라 출력에 일부 URL이 포함될 것으로 기대했습니다. 누군가 도울 수 있습니까?
andreee

14

시험

lsof -i -a -p `pidof firefox`

그것은 부분적으로 작동합니다 : 프로세스의 현재 연결 중 일부를 인쇄하지만 자동으로 닫힙니다. 일부 프로그램의 경우 출력은 다음 경고 lsof: WARNING: can't stat() fuse.gvfsd-fuse file system /home/user/.gvfs Output information may be incomplete.
일뿐입니다

-r1매초마다 출력을 반복하고 -w경고를 억제하는 옵션 을 추가 할 수 있습니다 .
alxrem

2
여기에는 특정 시점의 연결 만 표시되며 프로세스 수명 동안 발생한 모든 연결이 나열되지는 않습니다. 이 명령을 루프에 넣어도 수명이 짧습니다.
질 'SO-정지 존재 악마'

질문자는 수명 동안 연결을 보도록 요청하지 않았습니다. 로 해석 할 수 (in real-time)있습니다 from the point in time of tracking and forward.
llua

8

다른 접근 방식이 있습니다.

ss -nap | grep $(pidof firefox)

샘플 출력 :

tcp    ESTAB      0      0          192.168.0.222:49050    216.58.218.164:443    users:(("firefox",3280,69))
tcp    ESTAB      0      0          192.168.0.222:48630    198.252.206.25:443    users:(("firefox",3280,106))
tcp    ESTAB      0      0          192.168.0.222:44220     216.58.217.38:443    users:(("firefox",3280,140))
tcp    ESTAB      0      0          192.168.0.222:52690    54.240.170.181:80     users:(("firefox",3280,107))
tcp    ESTAB      0      0          192.168.0.222:48744    198.252.206.25:443    users:(("firefox",3280,87))
tcp    ESTAB      0      0          192.168.0.222:48811    198.252.206.25:443    users:(("firefox",3280,73))

1
여기에는 특정 시점의 연결 만 표시되며 프로세스 수명 동안 발생한 모든 연결이 나열되지는 않습니다. 이 명령을 루프에 넣어도 수명이 짧습니다.
질 'SO-정지 존재 악마'

5

로도 시도 할 수 있습니다 netstat -p. 매뉴얼 페이지에서 :

netstat-네트워크 연결, 라우팅 테이블, 인터페이스 통계, 가장 무도회 연결 및 멀티 캐스트 멤버쉽 인쇄

네트워킹 연결 만 표시하려면을 사용하십시오 netstat -tup. 프로세스 PID를 보려면 루트 여야합니다.

netstat시스템에 없는 경우 ss거의 정확한 구문을 가진을 가질 수 있습니다 . 그런 다음 ss -tup(루트로) 사용할 수 있습니다 .


1
여기에는 특정 시점의 연결 만 표시되며 프로세스 수명 동안 발생한 모든 연결이 나열되지는 않습니다. 이 명령을 루프에 넣어도 수명이 짧습니다.
Gilles 'SO- 악마 그만해

1
netstat -p | grep 파이어 폭스 | grep tcp
Philip Kirkbride

@Gilles 즉, 특정 시점에서 연결을보고자하는 사람에게는 훌륭한 답변입니다. 최근에 나의 경우와 마찬가지로.
Jose Antonio Reinstate Monica
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.