วิธีรับ macvlan subinterfaces 'MAC ทั้งหมด


0

เป็นไปได้ไหมที่จะรับ 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 ทั้งหมดในเนมสเปซทั้งหมดหรือไม่


คุณจำเป็นต้องย้ำกว่าแต่ละ namespace และเรียกใช้ipใน namespace ip -n your_namespace addr showนี้เช่น ไม่สนุก. มีอะไรผิดปกติdocker network inspect docker-netแทน?
dirkt

ฉันสงสัยว่าทำไมมันเป็นไปไม่ได้ที่จะเห็น MAC ทั้งหมดของอินเตอร์เฟส macvlan เฉพาะ และip -nไม่ทำงานเนื่องจากว่างเปล่าของ/var/run/netnsและฉันสามารถมีอินเตอร์เฟซย่อย macvlan ภายในนักเทียบท่าบางคนไม่ได้ ดังนั้นdocker network inspectไม่เลือกที่ดีที่สุด ฉันต้องการมีวิธีทั่วไปมากที่สุดในการแสดงรายการ MAC ทั้งหมดของ macvlan เฉพาะในเนมสเปซทั้งหมด (ในนักเทียบท่าหรือไม่)
Dmitry Perfilyev

เพราะฉันถือว่ามันไม่ได้ "โดยเฉพาะอย่างยิ่ง inerface macvlan" มันเป็นอินเตอร์เฟซโหลใน namespaces macvlan0แตกต่างกันซึ่งทั้งหมดเกิดขึ้นจะมีชื่อ ดังนั้นคุณต้องทำซ้ำสิ่งเหล่านี้ไม่ทางใดก็ทางหนึ่ง ฉันไม่ได้พยายามเข้าถึงเนมสเปซของนักเทียบท่ามาก่อนคุณอาจต้องใช้เครื่องมือนักเทียบท่าเพื่อทำงานipในเนมสเปซนั้น
dirkt
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.