Score:0

การกำหนดเส้นทางทำงานไม่ถูกต้องเมื่อเชื่อมต่อ NIC สองตัว

ธง jp

เรากำลังเรียกใช้เซิร์ฟเวอร์ด้วยการ์ด NetXtreme BCM5720 2 พอร์ต Gigabit Ethernet PCIe พอร์ตนี้มีสองพอร์ต ซึ่งแต่ละพอร์ตจะแม็พกับรหัสฟิสิคัลและชื่อโลจิคัลที่แตกต่างกัน

sudo lshw -คลาสเครือข่าย
  *-เครือข่าย:0               
       คำอธิบาย: อินเตอร์เฟสอีเธอร์เน็ต
       ผลิตภัณฑ์: NetXtreme BCM5720 2 พอร์ต Gigabit Ethernet PCIe
       ผู้จัดจำหน่าย: Broadcom Inc. และบริษัทสาขา
       รหัสทางกายภาพ: 0
       ข้อมูลรถบัส: pci@0000:04:00.0
       ชื่อตรรกะ: eno1
       รุ่น: 00
       อนุกรม: b8:cb:29:97:26:61
       ขนาด: 1Gbit/s
       ความจุ: 1Gbit/s
       ความกว้าง: 64 บิต
       นาฬิกา: 33MHz
       ความสามารถ: pm vpd msi msix pciexpress bus_master cap_list rom อีเธอร์เน็ตทางกายภาพ tp 10bt 10bt-fd 100bt 100bt-fd 1000bt 1000bt-fd การเจรจาอัตโนมัติ
       การกำหนดค่า: การเจรจาอัตโนมัติ=เปิดออกอากาศ=ใช่ ไดรเวอร์=ไดรเวอร์ tg3 เวอร์ชัน=3.137 ดูเพล็กซ์=เฟิร์มแวร์แบบเต็ม=FFV21.81.3 bc 5720-v1.39 ip=192.168.1.211 เวลาแฝง=0 ลิงก์=ใช่ มัลติคาสต์=ใช่ พอร์ต=ความเร็วคู่บิด=1Gbit/ ส
       ทรัพยากร: irq:17 หน่วยความจำ:91930000-9193ffff หน่วยความจำ:91940000-9194ffff หน่วยความจำ:91950000-9195ffff หน่วยความจำ:91d00000-91d3ffff
  *-เครือข่าย:1
       คำอธิบาย: อินเตอร์เฟสอีเธอร์เน็ต
       ผลิตภัณฑ์: NetXtreme BCM5720 2 พอร์ต Gigabit Ethernet PCIe
       ผู้จัดจำหน่าย: Broadcom Inc. และบริษัทสาขา
       รหัสทางกายภาพ: 0.1
       ข้อมูลรถบัส: pci@0000:04:00.1
       ชื่อตรรกะ: eno2
       รุ่น: 00
       อนุกรม: b8:cb:29:97:26:62
       ขนาด: 1Gbit/s
       ความจุ: 1Gbit/s
       ความกว้าง: 64 บิต
       นาฬิกา: 33MHz
       ความสามารถ: pm vpd msi msix pciexpress bus_master cap_list rom อีเธอร์เน็ตทางกายภาพ tp 10bt 10bt-fd 100bt 100bt-fd 1000bt 1000bt-fd การเจรจาอัตโนมัติ
       การกำหนดค่า: การเจรจาอัตโนมัติ=เปิดออกอากาศ=ใช่ ไดรเวอร์=ไดรเวอร์ tg3 เวอร์ชัน=3.137 ดูเพล็กซ์=เฟิร์มแวร์แบบเต็ม=FFV21.81.3 bc 5720-v1.39 ip=192.168.3.201 เวลาแฝง=0 ลิงก์=ใช่ มัลติคาสต์=ใช่ พอร์ต=ความเร็วคู่บิด=1Gbit/ ส
       ทรัพยากร: irq:18 หน่วยความจำ:91900000-9190ffff หน่วยความจำ:91910000-9191ffff หน่วยความจำ:91920000-9192ffff หน่วยความจำ:91d40000-91d7ffff

ดังที่แสดงโดยเอาต์พุต พวกมันจะได้รับ IP บนเครือข่ายย่อยที่แตกต่างกัน

ซับเน็ต 192.168.3 หันออกด้านนอก ในขณะที่ 192.168.1 เป็นแบบภายในเท่านั้น เราได้กำหนดค่าการส่งต่อพอร์ตในเราเตอร์ของเรา เพื่อให้การรับส่งข้อมูลขาเข้าไปยังพอร์ต 80 และ 443 ไปที่ 192.168.3.201 จุดประสงค์คือการเรียกใช้เว็บแอปพลิเคชันบนเซิร์ฟเวอร์นั้น ในขณะที่เปิด ssh ทิ้งไว้บนเครือข่ายภายในเพื่อการบำรุงรักษา

งานนี้ ... บางส่วน

เพื่อทดสอบเราเรียกใช้อิมเมจนักเทียบท่า nginx ที่เป็นค่าเริ่มต้น

นักเทียบท่ารัน -d -p 192.168.3.201:80:80 -p 192.168.3.201:443:443 --restart=unless-stopped nginx:latest

ในขั้นต้น เราไม่สามารถเข้าถึงเว็บอินเตอร์เฟสจากภายนอกได้ อย่างไรก็ตาม หากเราดึงสายอีเธอร์เน็ตไปที่ eno0 มันก็ใช้งานได้ในทันที สิ่งที่ทำให้ฉันสับสนจริงๆ คือมันยังคงทำงานต่อไปเมื่อเสียบปลั๊ก eno0 กลับเข้าไปใหม่

สิ่งนี้สามารถทำซ้ำได้อย่างมาก หลังจากรีบูตระบบจะไม่ทำงาน แต่ถอดปลั๊ก / เสียบปลั๊ก eno0 ใหม่และใช้งานได้อีกครั้ง

เราขาดอะไรไป?

การเพิ่มเอาต์พุตของเส้นทาง ip ตามคำแนะนำของ JFL ที่ rebbot;

ค่าเริ่มต้นผ่าน 192.168.1.1 dev eno1 โปรโต dhcp src 192.168.1.211 เมตริก 100 
เริ่มต้นผ่าน 192.168.3.1 dev eno2 โปรโต dhcp src 192.168.3.201 เมตริก 100 
172.17.0.0/16 dev docker0 proto kernel ขอบเขตลิงค์ src 172.17.0.1 
192.168.1.0/24 dev eno1 proto kernel ขอบเขตลิงค์ src 192.168.1.211 
192.168.1.1 dev eno1 proto dhcp ลิงค์ขอบเขต src 192.168.1.211 เมตริก 100 
192.168.3.0/24 dev eno2 proto kernel ขอบเขตลิงค์ src 192.168.3.201 
192.168.3.1 dev eno2 proto dhcp ลิงค์ขอบเขต src 192.168.3.201 เมตริก 100 

เมื่อถอดปลั๊ก eno0;

เริ่มต้นผ่าน 192.168.3.1 dev eno2 โปรโต dhcp src 192.168.3.201 เมตริก 100 
172.17.0.0/16 dev docker0 proto kernel ขอบเขตลิงค์ src 172.17.0.1 
192.168.3.0/24 dev eno2 proto kernel ขอบเขตลิงค์ src 192.168.3.201 
192.168.3.1 dev eno2 proto dhcp ลิงค์ขอบเขต src 192.168.3.201 เมตริก 100 

หลังจากเสียบปลั๊ก eno0 อีกครั้ง

เริ่มต้นผ่าน 192.168.3.1 dev eno2 โปรโต dhcp src 192.168.3.201 เมตริก 100 
เริ่มต้นผ่าน 192.168.1.1 dev eno1 โปรโต dhcp src 192.168.1.211 เมตริก 100 
172.17.0.0/16 dev docker0 proto kernel scope link src 172.17.0.1 
192.168.1.0/24 dev eno1 โปรโตเคอร์เนลขอบเขตลิงก์ src 192.168.1.211 
192.168.1.1 dev eno1 proto dhcp ลิงค์ขอบเขต src 192.168.1.211 เมตริก 100 
192.168.3.0/24 dev eno2 ลิงก์ขอบเขตเคอร์เนลโปรโต src 192.168.3.201 
192.168.3.1 dev eno2 proto dhcp ลิงค์ขอบเขต src 192.168.3.201 เมตริก 100 
JFL avatar
pk flag
JFL
คุณสามารถเพิ่มเอาต์พุตของ "ip route" ก่อนและหลังการถอดปลั๊ก / เสียบปลั๊กใหม่ได้หรือไม่?
Score:0
ธง pk
JFL

ปัญหาของคุณคือคุณได้กำหนดค่าเกตเวย์บนอินเทอร์เฟซทั้งสองดังที่แสดงโดย:

ค่าเริ่มต้นผ่าน 192.168.1.1 dev eno1 โปรโต dhcp src 192.168.1.211 เมตริก 100 
เริ่มต้นผ่าน 192.168.3.1 dev eno2 โปรโต dhcp src 192.168.3.201 เมตริก 100

ทั้งสองมีเมตริกเดียวกัน ดังนั้นระบบจึงต้องเลือกอย่างใดอย่างหนึ่ง ตัวเลือกนี้ขึ้นอยู่กับระบบปฏิบัติการที่ใช้

ไม่ว่า OS ของคุณจะใช้เกณฑ์ใดก็ตาม ระบบจะเลือกเส้นทางที่ออกไปทางอินเทอร์เฟซ eno1 เมื่อบู๊ต ดังนั้นการรับส่งข้อมูลจะไม่ถูกส่งไปยังอินเทอร์เน็ต

เมื่อคุณถอดปลั๊ก NIC จะเหลือเพียงเกตเวย์เดียว (อันที่ถูกต้อง) ดังนั้นจึงใช้งานได้

ข้อเท็จจริงที่ว่ามันยังใช้งานได้หลังจากที่คุณถอดปลั๊ก eno1 ใหม่ แสดงว่าระบบปฏิบัติการของคุณอาจใช้เส้นทางที่ "เก่าที่สุด" (คุณสามารถเห็นได้ว่าลำดับของเส้นทางทั้งสองนั้นกลับรายการหลังจากเสียบปลั๊กอีกครั้ง)

ในการแก้ไขปัญหานี้ คุณต้องลบเกตเวย์เริ่มต้นบน NIC ภายใน และถ้าจำเป็นให้แทนที่ด้วยเส้นทางไปยังเครือข่ายภายในของคุณ หากคุณไม่มีเครือข่ายภายในอื่นนอกจาก 192.168.1.X/X คุณไม่จำเป็นต้องใช้เส้นทางเหล่านั้น

เนื่องจากคุณใช้ DHCP คุณต้องลบการตั้งค่า "เราเตอร์" ออกจากขอบเขต 192.168.3.X/X หรือใช้ที่อยู่ IP แบบคงที่แทน (หากคุณต้องการออกจากตัวเลือกเราเตอร์สำหรับโฮสต์อื่น)

โพสต์คำตอบ

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