ฉันพยายามคิดเรื่องนี้มาระยะหนึ่งแล้ว ตอนนี้ฉันกำลังเสี่ยงโชคอยู่ที่นี่...
ฉันมี VM บางตัวที่ควรสื่อสารกับที่ไม่ใช่ VM มี 2 กรณีการใช้งาน
อย่างแรกคือ BareMetal Machines บนเครือข่ายย่อยที่เราเตอร์ภายนอกนั่งอยู่ อย่างที่สองคือเครื่องที่อยู่ด้านนอกและด้านหลังเกตเวย์ที่เราเตอร์ภายนอกชี้ไป
ดังนั้นเราจึงมีเส้นทางเชื่อมต่อสองเส้นทางนี้:
VM --> เกตเวย์เราเตอร์ภายนอก --> อินเทอร์เน็ตเกตเวย์ --> เกตเวย์ที่อื่น --> เครื่องอื่นบนซับเน็ตนี้
VM --> เกตเวย์เราเตอร์ภายนอก --> อินเทอร์เน็ตเกตเวย์ --> เครื่องเปล่าบนซับเน็ตนี้
เพื่อให้เห็นภาพมากยิ่งขึ้น: เราเตอร์ภายนอกจะมีเกตเวย์เช่นที่ 10.5.1.10 และเซิร์ฟเวอร์ที่จะเข้าถึงอยู่ที่ 10.5.1.80
จนถึงตอนนี้ทุกอย่างเรียบร้อยดี แพ็กเก็ตไหล แต่ไม่ทั้งหมด และที่นี่มันแปลกไปและฉันกำลังค้นหาสาเหตุ
ดังนั้น VM เหล่านี้จึงเรียกใช้ kubernetes และควรเชื่อมต่อกับเครื่องเปล่าอื่นๆ บนเครือข่ายย่อยนั้น เครือข่ายที่ใช้งานคือผ้าดิบ ดังนั้นแพ็กเก็ต BGP จึงถูกถ่ายโอนสิ่งที่แปลกคือแพ็กเก็ตเหล่านั้นไปไม่ถึงเครื่อง Baremetal แต่ทำได้ดีกับเครื่องที่อยู่นอกเครือข่ายย่อยของเราเตอร์ภายนอก ดังนั้นฉันจึงดูข้อมูลและสังเกตว่าแพ็กเก็ตหายไปแล้วบนไฮเปอร์ไวเซอร์ของ VM พวกเขายังคงมองเห็นได้บนอุปกรณ์ประปา แต่หลังจากนั้นพวกเขาก็หายไป
เห็นได้ชัดว่ามีบางอย่างกรองแพ็กเก็ตเหล่านั้นออก คำถามยังคงอยู่ในขณะนี้คือ: ทำไม? ฉันมีการกำหนดค่าบางอย่างผิด ฉันเข้าใจอะไรผิดหรือเปล่า หรือมีวิธีทำให้การตั้งค่าทั้งหมดกลืนแพ็กเก็ตเหล่านั้นหรือไม่ ฉันมีปัญหานี้ btw ยังมีแพ็กเก็ต vxlan ผ้าสักหลาดด้วย….
โดยทั่วไปการตั้งค่าของฉันคือ: openstack ผ่าน kolla, openvswitch, เครือข่ายภายนอกถูกตั้งค่าเป็นเครือข่ายแบบแบน
ฉันตรวจสอบกฎ iptable แล้ว แต่ไม่มีกฎสำหรับซับเน็ตเลย และตามที่อธิบายไว้ก่อนหน้านี้ แพ็กเก็ตที่ไม่ได้กำหนดเส้นทางไปยังเครือข่าย 10.5.0.0/16 แต่เป็นเช่น เครือข่าย 10.50.0.0/16 ซึ่งอยู่นอกศูนย์ข้อมูลนี้ และ openvswitch/openstack ไม่รู้จัก ดังนั้นสิ่งนี้จึงต้องเกี่ยวข้องกับเครือข่ายภายนอกที่กำหนดค่าใน 10.5.0.0/16 ซึ่งเป็นการลบแพ็กเก็ตเหล่านั้นอย่างผิดกฎหมาย
ข้อมูลเพิ่มเติม:
นี่คืออินเทอร์เฟซของ VM ที่แสดงโดย ovs-vctl
พอร์ต qvo503122c8-15
ป้ายกำกับ: 1
อินเตอร์เฟส qvo503122c8-15
วาง tcpdump บนนั้น
tcpdump -i qvo503122c8-15 -vvv | เกรป บีจีพี
tcpdump: กำลังฟัง qvo503122c8-15, ประเภทลิงก์ EN10MB (Ethernet), ขนาดการจับภาพ 262144 ไบต์
ผลลัพธ์ไม่มีอะไรแน่นอน แต่การสื่อสารโดยทั่วไปสามารถมองเห็นได้ที่นั่น มองไปที่อุปกรณ์หลัก พวกเขายังคงอยู่
tcpdump -i qbr503122c8-15 -vvv | เกรป บีจีพี
tcpdump: กำลังฟัง qbr503122c8-15, ประเภทลิงก์ EN10MB (Ethernet), ขนาดการจับภาพ 262144 ไบต์
10.5.3.44.53969 > 10.15.0.91.bgp: ค่าสถานะ [S], cksum 0x17b7 (ไม่ถูกต้อง -> 0x0748), seq 607368, ชนะ 64860, ตัวเลือก [mss 1410,sackOK,TS val 2138674293 ecr 0,nop,wscale 7] , ความยาว 0
10.5.3.44.41505 > 10.15.0.92.bgp: ค่าสถานะ [S], cksum 0x17b8 (ไม่ถูกต้อง -> 0x572f), seq 103292561, ชนะ 64860, ตัวเลือก [mss 1410,sackOK,TS val 2567404423 ecr 0,nop,wscale 7] , ความยาว 0
10.5.3.44.53969 > 10.15.0.91.bgp: ค่าสถานะ [S], cksum 0x17b7 (ไม่ถูกต้อง -> 0xff67), seq 607368, ชนะ 64860, ตัวเลือก [mss 1410,sackOK,TS val 2138676309 ecr 0,nop,wscale 7] , ความยาว 0
10.5.3.44.49645 > 10.15.0.91.bgp: ค่าสถานะ [S], cksum 0x17b7 (ไม่ถูกต้อง -> 0xb20c), seq 137205467, ชนะ 64860, ตัวเลือก [mss 1410,sackOK,TS val 2138677277 ecr 0,nop,wscale 7] , ความยาว 0
10.5.3.44.49787 > 10.15.0.92.bgp: ค่าสถานะ [S], cksum 0x17b8 (ไม่ถูกต้อง -> 0x9dee), seq 608997803, ชนะ 64860, ตัวเลือก [mss 1410,sackOK,TS val 2567406383 ecr 0,nop,wscale 7] , ความยาว 0
สำหรับการเปรียบเทียบ นี่คือเครื่องเดียวกัน VM ที่แตกต่างกันก็มีปัญหาเดียวกันและแพ็กเก็ตเหล่านั้นก็หายไป แต่ในกรณีนี้มีบางเครื่องที่อยู่นอกศูนย์ข้อมูลเดียวกัน และเข้าถึงได้ดีบนเครือข่ายย่อย แพ็กเก็ตที่บันทึกที่นี่จะไม่หายไป:
tcpdump -ฉัน qbr2d9b68d1-b7: -vvv | เกรป บีจีพี
tcpdump: กำลังฟัง qbr2d9b68d1-b7:, ประเภทลิงก์ EN10MB (Ethernet), ขนาดการจับภาพ 262144 ไบต์
192.168.1.3.58395 > 10.5.0.177.bgp: ค่าสถานะ [P.], cksum 0x0961 (ถูกต้อง), seq 2080765188:2080765207, ack 2634444892, ชนะ 505, ตัวเลือก [nop,nop,TS val 3871674789 ecr 1623 ความยาว 1628], : บีจีพี
10.5.0.177.bgp > 192.168.1.3.58395: ค่าสถานะ [.], cksum 0xcc82 (ไม่ถูกต้อง -> 0x44c4), seq 1, ack 19, ชนะ 502, ตัวเลือก [nop,nop,TS val 2568187609 ecr 3871674789], ความยาว 0
สิ่งหนึ่งที่ฉันเห็นในตอนนี้: tcpdump ตัวที่สองแสดงว่า VM สื่อสารกับภายนอกผ่านที่อยู่ของตัวเอง ในขณะที่คนอื่น ๆ พยายามสื่อสารกับไอพีลอย แพ็กเก็ต IP แบบลอยดูเหมือนจะถูกกรองออก