プロセスの接続を表示する方法はありますか?そんな感じ:
show PID
ここで、show
はこれを行うコマンドであり、PID
はプロセスのPIDです。必要な出力は、プロセスのすべての接続(リアルタイム)で構成されています。たとえば、プロセスが173.194.112.151に接続しようとすると、出力は173.194.112.151
。
Firefoxのより具体的な例:
show `pidof firefox`
そして、Firefoxでは、最初にgoogle.com、次にnix.stackexchange.com、最後に192.30.252.129に移動します。ブラウザーを閉じると、出力は次のようになります。
google.com
stackexchange.com
192.30.252.129
(他の多くの関連する接続があるため、ブラウザーではこの出力は現実的ではありませんが、これは単なる例です。)
strace
を探しています!私は askubuntuのこの回答 を見つけましたが、それはUnixで有効です:
新しいプロセスを開始して監視するには:
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インターフェイスを監視する必要があります。
試す
lsof -i -a -p `pidof firefox`
ここに別のアプローチがあります:
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))
netstat -p
でも試すことができます。 manページから:
netstat-ネットワーク接続、ルーティングテーブル、インターフェース統計、マスカレード接続、およびマルチキャストメンバーシップを出力します
ネットワーク接続のみを表示するには、netstat -tup
を使用します。プロセスPIDを表示するには、rootである必要がある場合があります。
システムにnetstat
がない場合は、ほぼ正確な構文のss
がある可能性があります。次に、ss -tup
を(ルートとして)使用できます。