Linuxシステムで使用されているveth
ペアに関連する質問があります。現在のホストで実行されているveth
ペアを知りたいのですが、これは、1つのLinuxコマンドを使用してペアを照会するか、いくつかのファイルで関連する構成を見つけることを意味します。
veth
ペアを作成するには、次を使用するだけでよいことを知っています。
ip link add name1 type veth name2
しかし、現在実行中のvethペアを照会するために使用できるコマンドまたはファイルが見つかりませんでした。
現在実行中のveth
ペアを見つける方法を知っている場合は、教えてください。これは私に大いに役立つでしょう。
次のethtoolコマンドを使用して、ピアifindexを取得できます。
# ethtool -S veth1
NIC statistics:
peer_ifindex: 7
ifindexは次のように表示されます:
# ip link
ピアvethインターフェイスを表示するコマンドを作成しました。
https://github.com/hariguchi/veth-peer
例
$ Sudo ip link add foo-bar type veth peer name bar-foo
[Sudo] password for XXX:
$ veth-peer foor-bar
bar-foo
$ veth-peer xxx
xxx: Link not found
$ veth-peer lo
lo is not veth.
$ Sudo ip link del foo-bar
$ veth-peer bar-foo
bar-foo: Link not found
$
私はIPネットのない古いLinuxカーネルを持っているので、必要な情報を得るためにこれをまとめました。 LXCコンテナーにSSHで接続できると仮定すると、これは役立つかもしれません。簡単なハックです8)
MY_VMS="10.0.1.1" # etc... change as needed
for A_VM in $MY_VMS
do
if [ ! -f $A_VM.list ]
then
ssh $A_VM ip link list > $A_VM.list
fi
for i in `ifconfig -a | grep "Link encap" | sed 's/ .*//g'`
do
PEER_IFINDEX=`ethtool -S $i 2>/dev/null | grep peer_ifindex | sed 's/ *peer_ifindex: *//g' `
if [ "$PEER_IFINDEX" = "" ]
then
continue
fi
PEER_IF=`grep "^$PEER_IFINDEX:" $A_VM.list | awk '{print $2}' | sed 's/:.*//g'`
if [ "$PEER_IF" = "" ]
then
continue
fi
printf "%-10s is paired with %-10s on %-20s\n" $i $PEER_IF $A_VM
done
done
この単純なスクリプトを使用すると、ペアを見つけることができます(OpenStackの場合):
#!/bin/bash
for i in `ifconfig -a |grep qv |awk -F: '{print $1}'` ;
do
echo "---------------"
echo $i
echo "Our ID: " `ip link show dev $i | grep $i | awk -F: '{print $1}'`
echo "Peer ID: " `ethtool -S $i | grep -i peer_ifindex | awk -F: '{print $2}'`
echo "---------------"
done
OpenStackではvethペア-vethインターフェース名はqv*
で始まります。