wie Sie die MAC aller MACvlan-Subinterfaces erhalten

377
Dmitry Perfilyev

Ist es möglich, alle MAC / IPs für die Macvlan-Schnittstelle zu erhalten? Ich habe eine Macvlan-Schnittstelle:

[root@srv ~]# ip a .................. 2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000 link/ether 52:54:00:e7:e6:10 brd ff:ff:ff:ff:ff:ff ...................... 4: macvlan0@eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UNKNOWN qlen 1 link/ether 52:54:00:e7:e6:11 brd ff:ff:ff:ff:ff:ff inet 1.1.0.6/24 brd 1.1.0.255 scope global macvlan0 valid_lft forever preferred_lft forever 

und ich habe 16 docker-container mit macvlan-schnittstellen

[root@srv ~]# docker ps | grep 'Up ' |wc 16 166 3512 [root@srv ~]#   [root@srv ~]# docker network inspect docker-net ............ "Driver": "macvlan", ............ "Containers": { "17ee78a594720836674448a244432e549ca4b78592e24767b2c6d052b783bd8e": { ...... "MacAddress": "02:42:0a:64:00:f9", "IPv4Address": "1.1.0.249/24", }, "1d910302d5fb83e478a0a5d70e0e566d89127916d9788cc61f6356502e14eb4e": { ........ "MacAddress": "02:42:0a:64:00:ad", "IPv4Address": "1.1.0.173/24", }, "2943fe549df8fd052d9f6ca74f720c11f7c7342d597d72a5287977d29c6f196f": { "MacAddress": "02:42:0a:64:00:eb", "IPv4Address": "1.1.0.235/24", }, 

wie kann ich ALLE subinterfaces für macvlan0 auflisten?

ip netns - nichts zeigen

lsns -t net - 16 Netzwerk-Namensräume des Dockers anzeigen

arp -an zeigt <16 Arps und einige Arps von anderen Hosts (1.1.0.1.1.1.0.253.1.1.0.254)

[root@srv ~]# arp -an ? (1.1.0.1) at 00:00:0c:07:ac:1e [ether] on macvlan0 ? (1.1.0.198) at 02:42:0a:64:00:c6 [ether] on macvlan0 ? (1.1.0.238) at 02:42:0a:64:00:ee [ether] on macvlan0 ? (1.1.0.253) at 7c:69:f6:d0:9a:81 [ether] on macvlan0 ? (1.1.0.172) at 02:42:0a:64:00:ac [ether] on macvlan0 ? (1.1.0.254) at 7c:69:f6:ba:a3:81 [ether] on macvlan0 ? (1.1.0.173) at 02:42:0a:64:00:ad [ether] on macvlan0 ? (1.1.0.234) at 02:42:0a:64:00:ea [ether] on macvlan0 ? (1.1.0.174) at 02:42:0a:64:00:ae [ether] on macvlan0 ? (1.1.0.235) at 02:42:0a:64:00:eb [ether] on macvlan0 ? (1.1.0.249) at 02:42:0a:64:00:f9 [ether] on macvlan0 ? (1.1.10.1) at 52:54:00:0e:84:51 [ether] on eth1 [root@srv ~]# 

Ich verstehe, dass sich alle macvlan0-Interfaces in unterschiedlichen Netz-Namespaces befinden und anscheinend ip link show macvlan0 showkeine Subinterfaces in verschiedenen Namespaces anzeigen können. Gibt es noch einen anderen Befehl, um alle IPs und MACs in allen Namespaces abzurufen?

0
Sie müssen über jeden Namespace iterieren und "ip" in diesem Namespace ausführen, z. B. "ip -n your_namespace addr show". Kein Spaß. Was ist los mit `docker network inspect docker-net`? dirkt vor 5 Jahren 0
Ich frage mich, warum es nicht möglich ist, alle MACs einer bestimmten Macvlan-Schnittstelle zu sehen. Und `ip -n` funktionieren nicht, weil` / var / run / netns `leer ist. Ich kann einige Macvlan-Subinterfaces im Docker haben, andere nicht. Daher ist das Docker-Netzwerk nicht die beste Wahl. Ich möchte den allgemeinsten Weg haben, alle MACs eines bestimmten macvlan in allen Namespaces aufzulisten (im Docker oder nicht) Dmitry Perfilyev vor 5 Jahren 0
Da ich davon ausgehe, dass es sich nicht um ein "bestimmtes macvlan-Inerface" handelt, handelt es sich um ein Dutzend Schnittstellen in verschiedenen Namespaces, die zufällig den Namen "macvlan0" tragen. Sie müssen also alle diese Schritte auf die eine oder andere Weise durchlaufen. Ich habe noch nicht versucht, auf Docker-Namespaces zuzugreifen. Möglicherweise benötigen Sie die Docker-Tools, um "ip" in diesem bestimmten Namespace auszuführen. dirkt vor 5 Jahren 0

0 Antworten auf die Frage