Score:1

พฤติกรรมของระบบย่อย linux neiboring ที่ไม่คาดคิดเมื่อทำงานกับบริดจ์

ธง gw

นี่เป็นคำถามเกี่ยวกับลินุกซ์ ระบบย่อยข้างเคียง และ สะพานเสมือน(ลินุกซ์ยังใหม่สำหรับฉัน ขออภัยด้วย)
ทำการทดสอบบน UBUNTU21(ชื่อ -a):
Linux dlw 5.11.0-16-generic #17-Ubuntu SMP วันพุธที่ 14 เมษายน 20:12:43 UTC 2021 x86_64 x86_64 x86_64 GNU/Linux

การกำหนดค่าเริ่มต้น

แผนภาพโทโพโลยี:

        ||=============================================||  
        ||--------------| |------||  
PC2 --- ||enx00e04c369b80| |wlp1s0||---พีซี4    
        ||--------------| |------|| 
        || PC1(อูบุนตู 21) ||       
        ||--------------| ||
PC3 --- ||enx8800669997d7| ||
        ||--------------| ||
        ||=============================================||

การ์ดทั้งหมดใน PC1 ได้รับการกำหนดค่าด้วย static ip โดยทำตามคำสั่งต่อไปนี้:
ifconfig enx00e04c369b80 192.168.0.31 เน็ตมาสก์ 255.255.255.0
ifconfig enx8800669997d7 192.168.0.32 เน็ตมาสก์ 255.255.255.0
ifconfig wlp1s0 192.168.0.33 เน็ตมาสก์ 255.255.255.0
และ âip_forwardâ ถูกปิดใช้งานโดยการเลือก /proc/sys/net/ipv4/ip_forward:
แมว /proc/sys/net/ipv4/ip_forward
0

PC2/PC3/PC4 เป็นเทอร์มินัลที่มี IP แบบคงที่และไฟร์วอลล์ถูกปิดใช้งาน

กล่าวโดยย่อ ความสัมพันธ์ระหว่าง PC1 และ PCx คือ:

--------------------------------------------- --------------------------
PC1-interfaces คงที่ ip เชื่อมโยงโดยตรงภายนอกอุปกรณ์ต่อพอร์ต
--------------- ----------- ------------------------ -----------------
enx00e04c369b80 192.168.0.31 PC2 192.168.0.17 40:8d:5c:21:db:57
enx8800669997d7 192.168.0.32 PC3 192.168.0.10 50:3e:aa:05:64:f7
wlp1s0 192.168.0.33 PC4 192.168.0.254 00:85:00:07:AA:3A

หลังจากเรียกใช้ด้วยคำสั่ง âifconfig xxx upâ การ์ดสามใบใน PC1 จะถูกแยกออกเป็นสามซับเน็ต และสามารถสื่อสารกับ PCx ที่ลิงก์โดยตรงเท่านั้น (ตรวจสอบโดย âpingâ กับ -ฉัน ตัวเลือก). โดยเฉพาะ PC2 และ PC3 และ PC4 ไม่สามารถติดต่อกันได้

วัตถุประสงค์และการดำเนินงาน

จากนั้นฉันต้องการเชื่อมต่อ PC2 และ PC3 ด้วยบริดจ์เสมือน นั่นคือเพิ่มบริดจ์ âbr0â ใน PC1 และเพิ่มอินเทอร์เฟซ enx00e04c369b80 และ enx8800669997d7 เข้าไป และ wlp1s0 ยังคงไม่เปลี่ยนแปลง

เข้าถึงได้โดย:

brctl บวกbr br0
brctl addif br0 enx00e04c369b80
brctl addif br0 enx8800669997d7
ifconfig enx8800669997d7 0.0.0.0
ifconfig enx00e04c369b80 0.0.0.0
ifconfig br0 192.168.0.30 เน็ตมาสก์ 255.255.255.0
ifconfig br0 ขึ้น

ส่งผลให้การกำหนดค่าต่อไปนี้ใน PC1:

root@dlw:/home/dlw# ifconfig
br0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
        inet 192.168.0.30 netmask 255.255.255.0 ออกอากาศ 192.168.0.255
        inet6 fe80::a4d0:5bff:fe4a:8f76 คำนำหน้าlen 64 scopeid 0x20<ลิงค์>
        อีเธอร์ a6:d0:5b:4a:8f:76 txqueuelen 1000 (อีเธอร์เน็ต)
        แพ็คเก็ต RX 440 ไบต์ 20303 (20.3 KB)
        ข้อผิดพลาด RX 0 หลุด 0 โอเวอร์รัน 0 เฟรม 0
        แพ็กเก็ต TX 41 ไบต์ 5530 (5.5 KB)
        ข้อผิดพลาด TX 0 หลุด 0 โอเวอร์รัน 0 พาหะ 0 ชนกัน 0

enx00e04c369b80: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
        อีเธอร์ 00:e0:4c:36:9b:80 txqueuelen 1000 (อีเธอร์เน็ต)
        แพ็คเก็ต RX 684 ไบต์ 34203 (34.2 KB)
        ข้อผิดพลาด RX 0 หลุด 0 โอเวอร์รัน 0 เฟรม 0
        แพ็กเก็ต TX 100 ไบต์ 8901 (8.9 KB)
        ข้อผิดพลาด TX 0 หลุด 0 โอเวอร์รัน 0 พาหะ 0 ชนกัน 0

enx8800669997d7: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
        อีเธอร์ 88:00:66:99:97:d7 txqueuelen 1000 (อีเธอร์เน็ต)
        แพ็คเก็ต RX 298 ไบต์ 35266 (35.2 KB)
        ข้อผิดพลาด RX 0 หลุด 4 โอเวอร์รัน 0 เฟรม 0
        แพ็กเก็ต TX 487 ไบต์ 32918 (32.9 KB)
        ข้อผิดพลาด TX 0 หลุด 0 โอเวอร์รัน 0 พาหะ 0 ชนกัน 0

แท้จริง: flags=73<UP,LOOPBACK,RUNNING> mtu 65536
        inet 127.0.0.1 เน็ตมาสก์ 255.0.0.0
        inet6 ::1 คำนำหน้าlen 128 scopeid 0x10<host>
        วนซ้ำ txqueuelen 1,000 (วนกลับในเครื่อง)
        แพ็คเก็ต RX 5235 ไบต์ 423013 (423.0 KB)
        ข้อผิดพลาด RX 0 หลุด 0 โอเวอร์รัน 0 เฟรม 0
        แพ็กเก็ต TX 5235 ไบต์ 423013 (423.0 KB)
        ข้อผิดพลาด TX 0 หลุด 0 โอเวอร์รัน 0 พาหะ 0 ชนกัน 0

wlp1s0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
        inet 192.168.0.33 netmask 255.255.255.0 ออกอากาศ 192.168.0.255
        inet6 fe80::ea0b:12c0:2ebf:b5c6 คำนำหน้า 64 scopeid 0x20<link>
        อีเธอร์ 84:5c:f3:52:98:60 txqueuelen 1,000 (อีเธอร์เน็ต)
        แพ็คเก็ต RX 23040 ไบต์ 22183801 (22.1 MB)
        RX ผิดพลาด 0 หลุด 53 โอเวอร์รัน 0 เฟรม 0
        แพ็กเก็ต TX 8987 ไบต์ 994399 (994.3 KB)
        ข้อผิดพลาด TX 0 หลุด 0 โอเวอร์รัน 0 พาหะ 0 ชนกัน 0
root@dlw:/home/dlw# แสดง brctl
ชื่อบริดจ์ รหัสบริดจ์ อินเทอร์เฟซที่เปิดใช้งาน STP
br0 8000.a6d05b4a8f76 ไม่มี enx00e04c369b80
                            thx8800669997d7
root@dlw:/home/dlw# ls /sys/class/net/br0/brif/
enx00e04c369b80 enx8800669997d7

บริดจ์ br0 ทำงานตามปกติโดย âpingâ ซึ่งกันและกันใน PC2 และ PC3

คำถาม

แต่คำถามของฉันคือ PC2 สามารถเข้าถึง PC1âs wlp1s0 (โดย ping)

ปิง 192.168.0.33
PING 192.168.0.33 (192.168.0.33) 56(84) ไบต์ของข้อมูล
64 ไบต์จาก 192.168.0.33: icmp_seq=1 ttl=64 เวลา=1.05 ms
64 ไบต์จาก 192.168.0.33: icmp_seq=2 ttl=64 เวลา=1.05 ms

อย่างไรก็ตาม âresponserâ จริงคือ br0 (ตรวจสอบที่อยู่ mac) แต่ไม่ใช่ wlp1s0 สิ่งนี้ได้รับการตรวจสอบโดยแพ็กเก็ตที่บันทึกใน PC2 โดยใช้ wireshark:

23 2021-09-30 10:56:17.231255 Tp-LinkT_05:64:f7 ออกอากาศ ARP 42 ใครมี 192.168.0.33? บอก 192.168.0.10
0000 ff ff ff ff ff ff 50 3e aa 05 64 f7 08 06 00 01
0010 08 00 06 04 00 01 50 3e aa 05 64 f7 c0 a8 00 0a
0020 00 00 00 00 00 00 c0 a8 00 21
24 2021-09-30 10:56:17.231999 a6:d0:5b:4a:8f:76 Tp-LinkT_05:64:f7 ARP 60 192.168.0.33 อยู่ที่ a6:d0:5b:4a:8f:76
0000 50 3e aa 05 64 f7 a6 d0 5b 4a 8f 76 08 06 00 01
0010 08 00 06 04 00 02 a6 d0 5b 4a 8f 76 c0 a8 00 21
0020 50 3e aa 05 64 f7 c0 a8 00 0a 55 55 55 55 55 55
0030 55 55 55 55 55 55 55 55 55 55 55 55
25 2021-09-30 10:56:17.232010 192.168.0.10 192.168.0.33 ICMP 74 0xc634 (50740) Echo (ping) request id=0x0002, seq=20474/64079, ttl=128 (ตอบกลับใน 26)
0000 a6 d0 5b 4a 8f 76 50 3e aa 05 64 f7 08 00 45 00
0010 00 3c c6 34 00 00 80 01 00 00 c0 a8 00 0a c0 a8
0020 00 21 08 00 fd 5f 00 02 4f ฟ้า 61 62 63 64 65 66
0030 67 68 69 6a 6b 6c 6d 6e 6f 70 71 72 73 74 75 76
0040 77 61 62 63 64 65 66 67 68 69
26 2021-09-30 10:56:17.232711 192.168.0.33 192.168.0.10 ICMP 74 0x8d96 (36246) Echo (ping) reply id=0x0002, seq=20474/64079, ttl=64 (request in 25)
0000 50 3e aa 05 64 f7 a6 d0 5b 4a 8f 76 08 00 45 00
0010 00 3c 8d 96 00 00 40 01 6b af c0 a8 00 21 c0 a8
0020 00 0a 00 00 05 60 00 02 4f ฟ้า 61 62 63 64 65 66
0030 67 68 69 6a 6b 6c 6d 6e 6f 70 71 72 73 74 75 76
0040 77 61 62 63 64 65 66 67 68 69

ในทางกลับกัน การจับแพ็กเก็ต icmp ใน PC1 แสดงว่า wlp1s0 ไม่ได้รับแพ็กเก็ต icmp แต่ br0 ทำ:

root@dlw:/home/dlw# tcpdump -i wlp1s0 -XXXX icmp
tcpdump: เอาต์พุต verbose ถูกระงับ ใช้ -v หรือ -vv สำหรับการถอดรหัสโปรโตคอลแบบเต็ม
กำลังฟัง wlp1s0, ประเภทลิงก์ EN10MB (Ethernet), ขนาดการจับภาพ 262144 ไบต์
^ซี
0 แพ็คเก็ตถูกจับ

root@dlw:/home/dlw# tcpdump -i br0 -XXXX icmp
tcpdump: เอาต์พุต verbose ถูกระงับ ใช้ -v หรือ -vv สำหรับการถอดรหัสโปรโตคอลแบบเต็ม
กำลังฟัง br0, ประเภทลิงก์ EN10MB (Ethernet), ขนาดการจับภาพ 262144 ไบต์
20:28:32.496062 IP 192.168.0.10 > dlw: คำขอ echo ของ ICMP, id 2, seq 20555, ความยาว 40
    0x0000: a6d0 5b4a 8f76 503e aa05 64f7 0800 4500 ..[J.vP>..d...E.
    0x0010: 003c c665 0000 8001 f2df c0a8 000a c0a8 .<อี............
    0x0020:0021 0800 fd0e 0002 504b 6162 6364 6566 .!......PKabcdef
    0x0030:6768 696a 6b6c 6d6e 6f70 7172 7374 7576 ghijklmnopqrstuv
    0x0040:7761 6263 6465 6667 6869 wabcdefghi
20:28:32.496109 IP dlw > 192.168.0.10: ICMP echo reply, id 2, seq 20555, ความยาว 40
    0x0000: 503e aa05 64f7 a6d0 5b4a 8f76 0800 4500 P>..d...[J.v..E.
    0x0010: 003c e53f 0000 4001 1406 c0a8 0021 c0a8 .<.?..@......!..
    0x0020: 000a 0000 050f 0002 504b 6162 6364 6566 ........PKabcdef
    0x0030:6768 696a 6b6c 6d6e 6f70 7172 7374 7576 ghijklmnopqrstuv
    0x0040:7761 6263 6465 6667 6869 wabcdefghi

นอกจากนี้ wlp1s0 ไม่สามารถเข้าถึง PC2 ในทางกลับกัน:

dlw@dlw:~$ ปิง 192.168.0.10 -I wlp1s0
PING 192.168.0.10 (192.168.0.10) จาก 192.168.0.33 wlp1s0: 56(84) ไบต์ของข้อมูล
^ซี
--- สถิติ ping 192.168.0.10 ---
ส่งแพ็กเก็ต 6 แพ็กเก็ต ได้รับ 0 แพ็กเก็ต สูญเสียแพ็กเก็ต 100% เวลา 5121 มิลลิวินาที

dlw@dlw:~$ ปิง 192.168.0.254 -I wlp1s0
PING 192.168.0.254 (192.168.0.254) จาก 192.168.0.33 wlp1s0: 56(84) ไบต์ของข้อมูล
64 ไบต์จาก 192.168.0.254: icmp_seq=1 ttl=64 เวลา=4.48 ms
64 ไบต์จาก 192.168.0.254: icmp_seq=2 ttl=64 เวลา=4.81 ms
^ซี
--- สถิติ ping 192.168.0.254 ---
ส่ง 2 แพ็กเก็ต ได้รับ 2 แพ็กเก็ต สูญเสียแพ็กเก็ต 0% เวลา 1002ms
rtt นาที/เฉลี่ย/สูงสุด/mdev = 4.477/4.645/4.813/0.168 มิลลิวินาที
dlw@dlw:~$ ^ซี

ตารางเส้นทาง ตาราง arp และ fdb ใน PC1 มีดังต่อไปนี้:

root@dlw:/home/dlw# เส้นทาง -n
ตารางเส้นทางเคอร์เนล IP
เกตเวย์ปลายทาง Genmask ตั้งค่าสถานะการอ้างอิงเมตริก ใช้ Iface
169.254.0.0 0.0.0.0 255.255.0.0 คุณ 1,000 0 0 wlp1s0
192.168.0.0 0.0.0.0 255.255.255.0 U 0 0 0 br0
192.168.0.0 0.0.0.0 255.255.255.0 คุณ 600 0 0 wlp1s0
root@dlw:/home/dlw# arp -a
? (192.168.0.17) ที่ 40:8d:5c:21:db:57 [ether] บน enx00e04c369b80
? (192.168.0.17) ที่ 40:8d:5c:21:db:57 [ether] บน br0
? (192.168.0.10) ที่ 50:3e:aa:05:64:f7 [ether] บน br0
root@dlw:/home/dlw# brctl showmacs br0
พอร์ตไม่มี mac addr อยู่ในเครื่องหรือไม่ ตัวจับเวลาอายุ
  1 00:e0:4c:36:9b:80 ใช่ 0.00
  1 00:e0:4c:36:9b:80 ใช่ 0.00
  1 40:8d:5c:21:db:57 ไม่ 65.37
  2 50:3e:aa:05:64:f7 ไม่ 24.93
  2 88:00:66:99:97:d7 ใช่ 0.00
  2 88:00:66:99:97:d7 ใช่ 0.00

ตาราง arp และเส้นทางใน PC2 คือ:

arp -a
192.168.0.17 40-8d-5c-21-db-57
192.168.0.30 a6-d0-5b-4a-8f-76
192.168.0.33 a6-d0-5b-4a-8f-76
192.168.0.255 ff-ff-ff-ff-ff-ff
224.0.0.2 01-00-5e-00-00-02
224.0.0.22 01-00-5e-00-00-16
224.0.0.251 01-00-5e-00-00-fb
224.0.0.252 01-00-5e-00-00-fc
255.255.255.255 ff-ff-ff-ff-ff-ff

เส้นทาง -n
ตารางเส้นทางเคอร์เนล IP
เกตเวย์ปลายทาง Genmask ตั้งค่าสถานะการอ้างอิงเมตริก ใช้ Iface
255.255.255.255 0.0.0.0 255.255.255.255 U 0 0 0 eth0
224.0.0.0 0.0.0.0 240.0.0.0 คุณ 0 0 0 eth0
0.0.0.0 192.168.0.10 255.255.255.255 คุณ 0 0 0 eth0
192.168.0.255 0.0.0.0 255.255.255.255 คุณ 0 0 0 eth0
192.168.0.0 0.0.0.0 255.255.255.0 คุณ 0 0 0 eth0
192.168.0.10 0.0.0.0 255.255.255.255 คุณ 0 0 0 eth0

ตอนนี้ âปัญหาâ มีความชัดเจนเล็กน้อย:
เมื่อ PC2 ping 192.168.0.33 ให้ถามก่อนว่า 192.168.0.33 อยู่ที่ใดโดยการออกอากาศ arp แพ็กเก็ตนี้จะไปถึงระบบย่อยที่อยู่ใกล้เคียงของ PC1 เนื่องจาก wlp1s0 มี IP 192.168.0.33 PC1 ตอบสนอง arp นี้ออกอากาศด้วย wlp1s0âs mac แต่อย่างใด แพ็คเก็ตการตอบสนอง arp นี้ âSender macâ และ ether-header âSource macâ ถูกแก้ไข เป็น br0 (นี่คือสิ่งที่ทำให้ฉันสับสน)

หลังจากได้รับการตอบกลับ arp PC2 ส่งข้อความ ICMP ด้วย Dest (Destination) mac เป็น br0 และ Dest ip เป็น wlp1s0 ตัวจัดการ icmp ของ PC1 (สมมติว่าทำงานในเลเยอร์ 3) ตอบสนอง แต่ระบบย่อยเส้นทางใช้เมตริกต่ำ â192.168.0.0 0.0.0.0 255.255.255.0 U 0 0 0 br0â และส่งแพ็กเก็ตไปยัง br0 (ถ้าจำไม่ผิด).

ดังนั้นความสับสนของฉันคือ เหตุใดระบบย่อยที่อยู่ใกล้เคียงของ Linux จึงตอบสนองการออกอากาศ arp นี้แม้แต่ PC2 และ wlp1s0 ก็ไม่เชื่อมโยงในเลเยอร์ 2 และการไหลของความละเอียด arp เป็นอย่างไร(ขออภัยฉันไม่คุ้นเคยกับรหัสการใช้งานระบบย่อยเพื่อนบ้านของ Linux จนถึงตอนนี้)

โพสต์คำตอบ

คนส่วนใหญ่ไม่เข้าใจว่าการถามคำถามมากมายจะปลดล็อกการเรียนรู้และปรับปรุงความสัมพันธ์ระหว่างบุคคล ตัวอย่างเช่น ในการศึกษาของ Alison แม้ว่าผู้คนจะจำได้อย่างแม่นยำว่ามีคำถามกี่ข้อที่ถูกถามในการสนทนา แต่พวกเขาไม่เข้าใจความเชื่อมโยงระหว่างคำถามและความชอบ จากการศึกษาทั้ง 4 เรื่องที่ผู้เข้าร่วมมีส่วนร่วมในการสนทนาด้วยตนเองหรืออ่านบันทึกการสนทนาของผู้อื่น ผู้คนมักไม่ตระหนักว่าการถามคำถามจะมีอิทธิพลหรือมีอิทธิพลต่อระดับมิตรภาพระหว่างผู้สนทนา