「/sys/class/net/eth0/iflink」がコンテナにシステム全体の情報を持つ方法

「/sys/class/net/eth0/iflink」がコンテナにシステム全体の情報を持つ方法

Kubernetes Podをtcpdumpする方法を探しています。各 Pod は仮想インターフェイスを作成するため、どのインターフェイスが実際の Pod に属するかを知ることは困難です。システム全体のインターフェイスインデックスを識別するのに役立つ方法を見つけました。デフォルトでは、ターゲットcat /sys/class/net/eth0/iflinkポッドのコンテナ内で実行でき、ホストネットワークインターフェイスインデックスが表示されます。これにより、ポッドに属する veth がわかります。

それはうまくいきますが、コンテナのネットワーク名前空間にある必要がありますが、なぜネットワークからシステム全体の情報を取得できるのかを考えました。したがって、システム全体のインデックスにアクセスできず、仮想インターフェイスの仮想「名前空間」インデックスのみを表示する必要があります。

/sys/class/net/eth0/iflinkこれがK8内のネットワークネームスペースとどのように関連しているかを説明できる人はいますか?

ベストアンサー1

このiflink値はシステム全体に適用されません。これはピアネットワークnsidの中で有効な値です。たとえば、allと表示されます(他のネットワークネームスペースのピアへのインターフェイスip link show dev eth0なので)。vethより詳しく説明すると、ピアネットワークnsidはシステム全体の値ではありません現在の(システム全体)ピアネットワークをこの(システム全体)ネットワーク名前空間に接続するネットワーク名前空間。従属インターフェイスが時々移動されるからです。

ip netns add以下は、との使用例です(また、ネットワークエントリを使用できるように、独自のマウントネームスペースに正しくip netns exec(再)マウントされます)。/sys/sys

# ip netns add n1
# ip netns add n2
# ip netns add n3
# ip netns add n4

# ip -n n1 link add name ton2 index 42 type veth peer netns n2 name eth0
# ip -n n3 link add name ton4 index 42 type veth peer netns n4 name eth0


# ip netns exec n2 cat /sys/class/net/eth0/iflink
42
# ip -n n2 link show dev eth0
2: eth0@if42: <BROADCAST,MULTICAST> mtu 1500 qdisc noop state DOWN mode DEFAULT group default qlen 1000
    link/ether 0e:27:6f:19:05:02 brd ff:ff:ff:ff:ff:ff link-netns n1
# ip netns exec n4 cat /sys/class/net/eth0/iflink
42
# ip -n n4 link show dev eth0
2: eth0@if42: <BROADCAST,MULTICAST> mtu 1500 qdisc noop state DOWN mode DEFAULT group default qlen 1000
    link/ether fe:09:53:11:84:d6 brd ff:ff:ff:ff:ff:ff link-netns n3

どちらのインターフェイスにもインデックス値が42のピアリンクがありますが、これは同じインターフェイスを表しません。 42という値の1つはton2netns n1のインデックス値、もう1つはton4netns n3のインデックス値です。最新バージョンがip linklink-nsidをip netns addピアネームスペースで指定された実際の名前で解決しない場合は、すべて次のように表示されますlink-netnsid 0(これは唯一のピアネットワークネームスペースであり、link-nsidは別途設定しない限りデフォルトで0から始まるためです) 。各ネットワーク名前空間)、再びゼロはシステム全体ではありません。

# stat -f -c %T /run/netns/n1 /run/netns/n3
nsfs
nsfs
# stat -c %i /run/netns/n1 /run/netns/n3
4026533318
4026533590

ピアの実際のシステム全体の値は、ネットワークネームスペース+インデックスです。ここでは 4026533318:42 と 4026533590:42 です。ただし、どのように作成されたかわからない場合(ip netnsここにインストールされている参照を残す)、初期ネットワーク名前空間ではない場合(この例のように)、ネットワークの命名を簡単に把握するだけです。スペースは非常に難しいかもしれません/run/netns

これについて詳しくは、次をご覧ください。この回答そうでした。

おすすめ記事