как получить MAC всех подинтерфейсов macvlan

332
Dmitry Perfilyev

Можно ли получить все MAC / IP-адреса для интерфейса macvlan? У меня есть интерфейс Macvlan:

[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 

и у меня есть 16 док-контейнеров с интерфейсами Macvlan

[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", }, 

как я могу перечислить ВСЕ подинтерфейсы для macvlan0?

ip netns - ничего не показывать

lsns -t net - показать 16 чистых пространств имен докера

arp -an показывает <16 arps и некоторые arps с других хостов (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 ~]# 

Я понимаю, что все интерфейсы macvlan0 находятся в разных сетевых пространствах имен и, по-видимому, ip link show macvlan0 showне могут отображать подынтерфейсы в разных пространствах имен. Но есть ли другая команда, чтобы получить все ip и MAC во всех пространствах имен?

0
Вам нужно перебрать каждое пространство имен и запустить `ip` в этом пространстве имен, например,` ip -n your_namespace addr show`. Не смешно. Что не так с `докерской сетью, вместо этого проверяет docker-net`? dirkt 5 лет назад 0
Интересно, почему невозможно увидеть все MAC определенного интерфейса Macvlan. И `ip -n` не работает, из-за пустого` / var / run / netns` И у меня могут быть некоторые подинтерфейсы macvlan внутри докера, некоторые нет. Так что `проверка сети докерства` не лучший выбор. Я хочу иметь самый общий способ перечислить все MAC конкретного macvlan во всех пространствах имен (в докере или нет) Dmitry Perfilyev 5 лет назад 0
Поскольку я предполагаю, что это не «конкретный интерфейс macvlan», это дюжина интерфейсов в разных пространствах имен, которые все имеют имя `macvlan0`. Так что вам нужно перебирать все это, так или иначе. Я не пытался получить доступ к пространствам имен докеров, вам могут понадобиться инструменты докеров для запуска `ip` в этом конкретном пространстве имен. dirkt 5 лет назад 0

0 ответов на вопрос