tun
コマンドを使用してインターフェースを作成し、ip tuntap add mode tun
コマンドを使用して管理の開始を強制すると、ip link set dev tun1 up
インターフェース自体は常に「物理的に」停止します。
root@A58:~# ip link show dev tun1
46: tun1: <NO-CARRIER,POINTOPOINT,MULTICAST,NOARP,UP> mtu 1500 qdisc pfifo_fast state DOWN mode DEFAULT qlen 500
link/none
root@A58:~#
そのインターフェイスに接続されているアプリケーションがないため、これは意味があります。しかし、tun0
私のシステムには「物理的に」起動されたシステムもあります。
root@A58:~# ip link show dev tun0
45: tun0: <POINTOPOINT,MULTICAST,NOARP,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UNKNOWN mode DEFAULT qlen 100
link/none
root@A58:~#
tun0
このインターフェイスにどのプロセスが接続されているかを調べる方法はありますか?私ps -ef | grep tun0
も運がなかったlsof | grep tun0
。
ベストアンサー1
カーネルはこの情報を公開していないようです。したがって、カーネルのデバッグなしではこれを知ることはできないようです。あなたができる最善の方法は、次のように開いているすべてのプロセスまたはデバイスを一覧tun
表示tap
することです。
lsof /dev/net/tun
tun
これにより、範囲が狭くなりますが、システムに複数のアクティブなインターフェイスがある場合、どのプロセスがどのトンネルを管理しているかがわかりません。
tun
プロセスがインターフェイスを作成しようとすると、使用したいインターフェイスが開きます/dev/net/tun
。tun
次に、カーネルに新しいtun
インタフェース名(たとえばtun0
、tun1
などtun2
)を動的に割り当てるか、選択した名前を設定します。これはioctl
コードを使用して呼び出すことによって行われますTUNSETIFF
。したがって、通話を追跡しない限り、どの名前が割り当てられたかを知る方法はありませんioctl
。