프로세스가 탭 인터페이스에 연결되어 있는지 확인하는 방법


9

때때로 탭 인터페이스 (예 : KVM이 실행 중일 때)가있는 머신을 사용합니다. TAP 인터페이스에 어떤 프로세스가 첨부되어 있는지 어떻게 알 수 있습니까?


님이이 작업을 수행 할 수 있다고 생각 nmap하지만 정직한 방법을 잘 모르겠습니다.
Alex Chamberlain

답변:


2

이것은 궁금 해졌고 Linux 커널 소스를 보았습니다 (귀하의 질문이 Linux에 관한 것이라고 가정합니다).

답변이 예상보다 어려워 보입니다. 이 TUN / TAP API 튜토리얼 페이지는 약간의 통찰력을 제공 합니다. 기본적으로 프로그램은를 열고 새 TUN / TAP 장치를 할당하여 할당 /dev/net/tun합니다 TUNSETIFF ioctl. 모든 것이 잘되면 인터페이스가 생성되고 커널은 이름과 파일 설명자를 제공하므로 관리하는 방식입니다.

여기에는 두 가지가 있습니다.

  1. 커널은 ioctl을 보낸 프로세스의 PID를 저장하지 않습니다 struct tun_struct(TUN과 TAP는 거의 동일한 데이터 구조를 공유합니다).
  2. 프로세스는 인터페이스를 영구적으로 표시하고 파일 디스크립터를 닫은 다음 일반 네트워크 인터페이스로 사용할 수 있습니다.

실제로, 나는 2가별로 일어나지 않는다고 생각합니다. openvpn프로세스를 체크 아웃하면 lsof파일 설명자가 TAP 장치에 열려 있고 분명히 사용하고 있음을 알 수 있지만 , /dev/net/tun와 같은 일종의 멀티플렉싱 장치 /dev/ptmx이므로 lsof현재 TUN / TAP 장치를 사용하는 프로세스를 찾는 데 사용할 수 있지만 어떤 프로세스가 어떤 장치를 사용하고 있는지 알 수 없습니다.

근본적인 문제를 해결하는 데는 비스듬한 방법이 있습니다. OpenVPN 의 경우 OpenVPN 구성 파일의 기본 이름을 포함하는보다 설명적인 이름으로 tunX/ tapX장치의 이름을 지정하는 터널 설정 스크립트를 사용 합니다. 따라서 장치로 /etc/openvpn/foo.conf연결됩니다 vpn-foo. 그런 다음 OpenvVPN 프로세스를 사용중인 인터페이스와 상관시킬 수 있습니다. 그러나 아직 QEmu / KVM으로이 작업을 수행 할 필요는 없습니다.


확인. "멀티플렉싱"/ dev / net / tun이 프로세스에 어떤 탭 인터페이스가 정확하게 부착되어 있는지 알지 못할 것이라고 생각했습니다.
user368507

5

각 파일 디스크립터는 / proc / pid / fdinfo / num 엔트리를 가지고 있습니다 :

# cat /proc/24332/fdinfo/28
pos:    0
flags:  0104002
mnt_id: 18
iff:    tap0123acdc-66

따라서 인터페이스 이름을 사용하면 다음과 같이 pid를 얻을 수 있습니다.

# egrep -l iff:.*tap0123acdc-66 /proc/*/fdinfo/* 2>/dev/null|cut -d/ -f3
24332

나를 위해 일하십시오 : qemu 프로세스 % sudo bash -c 'grep -l iff:.*vnet0 /proc/*/fdinfo/* 2>/dev/null | cut -d/ -f3' 4143 % pgrep qemu 4143 의 출력에 이름 매개 변수가 있다는 사실을 고려할 때 ps -ef, 예를 들어 qemu-system-x86_64 -enable-kvm -name debian-8pid와 인터페이스가 어떤 VM에 해당하는지 쉽게 알 수 있어야합니다.
Dmitrii S.

1

FreeBSD 또는 다른 BSD 파생물에서 :

ifconfig tap0

인터페이스에 연결된 프로세스를 표시해야합니다.

tap0: flags=8943<UP,BROADCAST,RUNNING,PROMISC,SIMPLEX,MULTICAST> metric 0 mtu 1500
    options=80000<LINKSTATE>
    ether 58:9c:fc:10:8f:2b
    groups: tap
    media: Ethernet autoselect
    status: active
    nd6 options=29<PERFORMNUD,IFDISABLED,AUTO_LINKLOCAL>
    Opened by PID 2672

어떤 OS와 버전을 사용하고 있습니까? 이 정보 (수십 개의 VPN 엔드 포인트가있는 상자를 실행)를 갖는 것이 매우 편리하지만 데비안 ifconfig은 이것을 보여주지 않습니다. 다음은, 당신을 마음 tapOpenVPN을 만든 장치 - 차이가 있어야하는 이유가 표시되지 않습니다하지만.
Alexios 2016 년

이것은 FreeBSD 또는 다른 BSD 파생물에 관한 것입니다.
kworr
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.