เป็นไปได้ไหมที่จะรับ 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 docker container พร้อมอินเตอร์เฟส 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 ทั้งหมดในเนมสเปซทั้งหมดหรือไม่
ฉันสงสัยว่าทำไมมันเป็นไปไม่ได้ที่จะเห็น MAC ทั้งหมดของอินเตอร์เฟส macvlan เฉพาะ และ
—
Dmitry Perfilyev
ip -n
ไม่ทำงานเนื่องจากว่างเปล่าของ/var/run/netns
และฉันสามารถมีอินเตอร์เฟซย่อย macvlan ภายในนักเทียบท่าบางคนไม่ได้ ดังนั้นdocker network inspect
ไม่เลือกที่ดีที่สุด ฉันต้องการมีวิธีทั่วไปมากที่สุดในการแสดงรายการ MAC ทั้งหมดของ macvlan เฉพาะในเนมสเปซทั้งหมด (ในนักเทียบท่าหรือไม่)
เพราะฉันถือว่ามันไม่ได้ "โดยเฉพาะอย่างยิ่ง inerface macvlan" มันเป็นอินเตอร์เฟซโหลใน namespaces
—
dirkt
macvlan0
แตกต่างกันซึ่งทั้งหมดเกิดขึ้นจะมีชื่อ ดังนั้นคุณต้องทำซ้ำสิ่งเหล่านี้ไม่ทางใดก็ทางหนึ่ง ฉันไม่ได้พยายามเข้าถึงเนมสเปซของนักเทียบท่ามาก่อนคุณอาจต้องใช้เครื่องมือนักเทียบท่าเพื่อทำงานip
ในเนมสเปซนั้น
ip
ใน namespaceip -n your_namespace addr show
นี้เช่น ไม่สนุก. มีอะไรผิดปกติdocker network inspect docker-net
แทน?