ฉันมีโฮสต์ Proxmox พร้อมเคอร์เนล 5.15.19-2-pve
มีอินเทอร์เฟซ bond0 ที่ทำจาก eth2 และ eth3 ซึ่งรับทราฟฟิกที่ติดแท็ก vlan
ฉันสร้างสะพาน vmbr666 ที่มีลักษณะดังนี้:
# / etc / เครือข่าย / อินเทอร์เฟซ:
อัตโนมัติ vmbr666
คู่มือการใช้ไอเฟซ vmbr666 inet
บริดจ์พอร์ตบอนด์0
ปิดสะพาน
บริดจ์-fd 0
bridge-vlan-aware ใช่
บริดจ์-วิดีโอ 2-4094
mtu 9220
#การแสดงbrctl
vmbr666 8000.5a0a13a9dd29 ไม่มีพันธะ 0
แตะ151034i1
# ip -d ลิงก์ sh dev vmbr666
66: vmbr666: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 9220 สถานะ qdisc noqueue UP โหมด DEFAULT กลุ่มเริ่มต้น qlen 1000
ลิงค์/อีเธอร์ 5a:0a:13:a9:dd:29 brd ff:ff:ff:ff:ff:ff ความสำส่อน 0 minmtu 68 maxmtu 65535
บริดจ์ forward_delay 0 hello_time 200 max_age 2000 ageing_time 30000 stp_state 0 ลำดับความสำคัญ 32768 vlan_filtering 1 vlan_protocol 802.1Q bridge_id 8000.5a:a:13:a9:dd:29 dedicated_root 8000.5a:a:13:a9:dd:29 root_port 0 root_pathology_change 0 topology_change_detected 0 hello_timer 0.00 tcn_timer 0.00 topology_change_timer 0.00 gc_timer 251.81 vlan_default_pvid 1 vlan_stats_enabled 0 vlan_stats_per_port 0 group_fwd_mask 0 group_address 01:80:c2:00:00:00 mcast_snooping 1 mcast_router 1 mcast_query_use_ifaddr 0 mcast_querier 0 mcast_hash_elasticity 16 mcast_hash_max 4096 mcast_last_member_count 2 mcast_startup_query_count 2 mcast_last_member_interval 100 mcast_membership_interval 26000 mcast_querier_interval 25500 mcast_query_interval 12500 mcast_query_response_interval 1000 mcast_startup_query_interval 3124 mcast_stats_enabled 0 mcast_igmp_version 2 mcast_mld_version 1 536 gso_max_segs 65535
โปรดทราบว่า vlan_filtering
เป็น 1
.
ถ้าฉัน tcpdump -enlvvv
ใน bond0 ฉันเห็นการรับส่งข้อมูลสำหรับ VLAN42 ถ้าฉันเปิด tcpdump vmbr666
หรือ แตะ151034i1
ฉันไม่เห็นการรับส่งข้อมูลสำหรับ VLAN42 (ไม่แม้แต่การออกอากาศหรือมัลติคาสต์แม้ว่าฉันจะเห็นการรับส่งข้อมูลการออกอากาศของ VLAN อื่น ๆ บางตัวก็ตาม) คำถาม: ทำไมไม่?
ผลลัพธ์ที่เกี่ยวข้องจาก แสดงบริดจ์ -c vlan
:
bond0 1 PVID ขาออกที่ไม่ได้ติดแท็ก
2-99
tap151034i1 1 PVID ขาออกที่ไม่ได้ติดแท็ก
2-99
vmbr666 1 PVID ขาออกที่ไม่ได้ติดแท็ก
อย่างที่ฉันพูด ฉันเห็นทราฟฟิกสำหรับ VLAN อื่นๆ บนอินเทอร์เฟซเหล่านี้ทั้งหมด รวมถึงแท็ก เช่น
15:03:35.293420 00:50:56:b1:24:0c > ff:ff:ff:ff:ff:ff, ethertype 802.1Q (0x8100), ความยาว 64: vlan 49, p 0, ethertype ARP (0x0806) , Ethernet (len 6), IPv4 (len 4), Request who-has 10.76.155.200 บอก 10.76.155.51 ความยาว 46
ทีนี้มาเพิ่ม vlan 42 ให้กับ vmbr666
อินเทอร์เฟซเพื่อดูว่ามันสร้างความแตกต่างหรือไม่:
# สะพาน vlan เพิ่ม vid 42 dev vmbr666 ด้วยตนเอง
# สะพาน -c vlan แสดง dev vmbr666
พอร์ต vlan-id
vmbr666 1 PVID ขาออกที่ไม่ได้ติดแท็ก
42
ใน tcpdump -enlvvv -i vmbr666
ฉันยังไม่เห็นอะไรที่เกี่ยวข้องกับ vlan42 มีเพียง VLAN อื่น ๆ (เช่น 49 และ 50)
มาสร้างอินเทอร์เฟซย่อยสำหรับ vlan42 กันเถอะ แตะ151034i1
แบบนี้:
ลิงค์ ip เพิ่มลิงค์ tap151034i1 ชื่อ ประเภทการทดสอบ โปรโตคอล vlan 802.1q id 42 reorder_hdr บน gvrp บน mvrp บน loose_binding ปิด; ลิงค์ ip ตั้งค่าการทดสอบ dev
วิ่ง tcpdump -enlvvv -ฉันทดสอบ
ฉันไม่เห็นการจราจรเลย
มี vmbr42
ซึ่งอาจรบกวน (แต่ถ้าใช่ จะรบกวนทำไม):
vmbr42 8000.9a0f54fe1040 ไม่มีพันธะ 0.42
fwpr103p0
fwpr104p0
fwpr105p0
fwpr151034p0
แตะ102i0
ใน ip -d ลิงก์ sh
:
31: vmbr42: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 สถานะ qdisc noqueue UP โหมด DEFAULT กลุ่มเริ่มต้น qlen 1000
ลิงค์/อีเธอร์ 9a:0f:54:fe:10:40 brd ff:ff:ff:ff:ff:ff ความสำส่อน 0 minmtu 68 maxmtu 65535
บริดจ์ forward_delay 0 hello_time 200 max_age 2000 ageing_time 30000 stp_state 0 ลำดับความสำคัญ 32768 vlan_filtering 0 vlan_protocol 802.1Q bridge_id 8000.9a:f:54:fe:10:40 dedicated_root 8000.9a:f:54:fe:10:40 root_port 0 root_path_change 0 โทโพโลยี topology_change_detected 0 hello_timer 0.00 tcn_timer 0.00 topology_change_timer 0.00 gc_timer 53.08 vlan_default_pvid 1 vlan_stats_enabled 0 vlan_stats_per_port 0 group_fwd_mask 0 group_address 01:80:c2:00:00:00 mcast_snooping 1 mcast_router 1 mcast_query_use_ifaddr 0 mcast_querier 0 mcast_hash_elasticity 16 mcast_hash_max 4096 mcast_last_member_count 2 mcast_startup_query_count 2 mcast_last_member_interval 100 mcast_membership_interval 26000 mcast_querier_interval 25500 mcast_query_interval 12500 mcast_query_response_interval 1000 mcast_startup_query_interval 3124 mcast_stats_enabled 0 mcast_igmp_version 2 mcast_mld_version 1 536 gso_max_segs 65535
โปรดทราบว่า vlan_filtering
เป็น 0
.
วิ่ง tcpump -enlvvv
บน vmbr42
หรือ แตะ102i0
ซึ่งเป็นหนึ่งในสมาชิก แสดงทราฟฟิก VLAN42 โดยไม่มีแท็ก ไม่ใช่เรื่องน่าประหลาดใจ
ไม่มี ebtables
หรือ aptables
กฎ.
ฉันเดาว่าฉันไม่เข้าใจการทำงานร่วมกันระหว่างการเป็นสมาชิก VLAN และอินเทอร์เฟซบริดจ์ใน Linux
คำถามเชิงทฤษฎี:
- การเพิ่ม VLAN ให้กับอินเทอร์เฟซบริดจ์มาสเตอร์มีผลอย่างไร
ตัวเอง
คำหลักใน บริดจ์ vlan เพิ่ม
?
- การสร้างอินเทอร์เฟซย่อย VLAN ของอินเทอร์เฟซสมาชิกบริดจ์มีผลอย่างไร
- หากฟิสิคัลอินเทอร์เฟซมีอินเทอร์เฟซย่อย VLAN และเพิ่มไปยังบริดจ์ เฟรมใดสำหรับ VLAN นั้นควรจะมองเห็นได้บนบริดจ์อื่นๆ ที่อินเทอร์เฟซฟิสิคัลเดียวกันเป็นสมาชิกอยู่ ถ้าไม่ ทำไมไม่?
- อะไรคือความแตกต่างจากมุมมองทางทฤษฎีและทางปฏิบัติ ระหว่างการสร้างอินเทอร์เฟซย่อย VLAN ของอินเทอร์เฟซทางกายภาพและการเชื่อมโยงสิ่งเหล่านั้น และในทางกลับกัน การเปิดใช้งาน
vlan_filtering
บนสะพานและใช้ บริดจ์ vlan pvid ที่ไม่ได้ติดแท็ก
เพื่อให้ส่วนต่อประสานสมาชิกบางส่วนใน VLAN เฉพาะ?
- คุณสามารถผสมสองแนวทางนี้ได้หรือไม่?
แก้ไข: ลบสิ่งที่แสดงในความคิดเห็นที่ไม่เกี่ยวข้องออก และเพิ่มคำถามเชิงทฤษฎีเพื่อหวังว่าจะช่วยจัดโครงสร้างคำตอบได้ดีขึ้น