Score:1

เครือข่ายนักเทียบท่าหมดเวลาเมื่อใช้บริดจ์

ธง vn

ฉันกำลังทำงานบนเซิร์ฟเวอร์เฉพาะ âกับเวอร์ชัน Ubuntu 20.04.3 ทล (เคอร์เนล 5.4.0-96-ทั่วไป) และนักเทียบท่า 20.10.7 สร้าง 20.10.7-0ubuntu5~20.04.2. ระบบเป็นการติดตั้งใหม่

ฉันมี ไฟล์นักเทียบท่า สำหรับหนึ่งในบริการของฉัน ซึ่งดึงไลบรารีบางส่วนเข้ามาด้วย ฉลาด และ ไปรับ. หนึ่งในคอนเทนเนอร์ระดับกลางมักจะล้มเหลวในการเชื่อมต่ออินเทอร์เน็ตโดยมีข้อผิดพลาด DNS หรือ TCP Timeout คอนเทนเนอร์ใดที่ล้มเหลวจะเป็นการสุ่มอย่างสมบูรณ์

โปรดทราบว่าปัญหาไม่ได้อยู่ที่บริการใดบริการหนึ่ง ฉันพยายามสร้างบริการที่แตกต่างไปจากเดิมอย่างสิ้นเชิง ซึ่งทำงานบน NodeJS และ การติดตั้ง npm ล้มเหลวด้วยข้อผิดพลาดเดียวกัน

วันนี้ฉันมีปัญหาที่ไม่สามารถเข้าถึงคอนเทนเนอร์ Nginx ของฉันได้ การเชื่อมต่อทั้งหมดส่งผลให้เกิดข้อผิดพลาดการหมดเวลา

การเชื่อมต่อระหว่างคอนเทนเนอร์โดยใช้เครือข่ายนักเทียบท่าก็ทำงานไม่ถูกต้องเช่นกัน

วิ่ง sudo systemctl รีสตาร์ทนักเทียบท่า แก้ไขปัญหาชั่วคราว แต่ปรากฏขึ้นอีกหนึ่งหรือสองรายการตามสาย เมื่อฉันสร้างด้วย เจ้าภาพ เครือข่ายแทนที่จะเป็นเครือข่ายบริดจ์เริ่มต้น ปัญหาหมดไป ซึ่งเป็นสาเหตุที่ฉันสงสัยว่าการกำหนดค่าบริดจ์ผิดพลาด

ฉันได้ลองติดตั้ง Docker ใหม่, รีเซ็ต iptables และบริดจ์คอนฟิก, ตั้งค่าเซิร์ฟเวอร์ DNS อื่นแล้ว แต่ไม่เป็นผล ไฟล์บันทึกนักเทียบท่าไม่แสดงข้อผิดพลาด

สาเหตุของปัญหานี้คืออะไร

อัปเดต:

ฉันปิดใช้งาน UFW แล้ว แต่ไม่ประสบความสำเร็จ นี่คือดัมพ์จากบันทึก dmesg ของฉันในระหว่างการสร้างที่หมดเวลา อาจช่วยระบุสาเหตุได้:

[758001.967161] นักเทียบท่า 0: พอร์ต 1 (vethd0c7887) เข้าสู่สถานะการปิดกั้น
[758001.967165] นักเทียบท่า 0: พอร์ต 1 (vethd0c7887) เข้าสู่สถานะปิดใช้งาน
[758001.967281] อุปกรณ์ vethd0c7887 เข้าสู่โหมดสำส่อน
[758002.000567] IPv6: ADDRCONF(NETDEV_CHANGE): veth7e3840a: ลิงก์พร้อมใช้งาน
[758002.000621] IPv6: ADDRCONF(NETDEV_CHANGE): vethd0c7887: ลิงก์พร้อมใช้งาน
[758002.000644] นักเทียบท่า 0: พอร์ต 1 (vethd0c7887) เข้าสู่สถานะการปิดกั้น
[758002.000646] docker0: พอร์ต 1(vethd0c7887) เข้าสู่สถานะการส่งต่อ
[758002.268554] นักเทียบท่า 0: พอร์ต 1 (vethd0c7887) เข้าสู่สถานะปิดใช้งาน
[758002.269581] eth0: เปลี่ยนชื่อจาก veth7e3840a
[758002.293056] นักเทียบท่า 0: พอร์ต 1 (vethd0c7887) เข้าสู่สถานะการปิดกั้น
[758002.293063] นักเทียบท่า 0: พอร์ต 1 (vethd0c7887) เข้าสู่สถานะการส่งต่อ
[758041.497891] นักเทียบท่า 0: พอร์ต 1 (vethd0c7887) เข้าสู่สถานะปิดใช้งาน
[758041.497997] veth7e3840a: เปลี่ยนชื่อจาก eth0
[758041.547558] นักเทียบท่า 0: พอร์ต 1 (vethd0c7887) เข้าสู่สถานะปิดใช้งาน
[758041.551998] อุปกรณ์ vethd0c7887 ออกจากโหมดสำส่อน
[758041.552008] นักเทียบท่า 0: พอร์ต 1 (vethd0c7887) เข้าสู่สถานะปิดใช้งาน
sb9 avatar
cn flag
sb9
เพียงแค่เดาสุ่ม .. แต่ถ้าคุณสามารถตรวจสอบบริการไฟร์วอลล์ของคุณด้วยและดูว่ามีข้อผิดพลาดใด ๆ หรือไม่และปิดการใช้งานและลองอีกครั้งหากจำเป็น เนื่องจากเมื่อเร็ว ๆ นี้ฉันประสบปัญหาที่คล้ายคลึงกันในความละเอียด DNS ของคลัสเตอร์ kubernetes ซึ่งต้องปิดใช้งานบริการไฟร์วอลล์ทั้งหมด
vn flag
@sb9 ฉันมีบันทึก `dmesg` ที่บอกว่า UFW บล็อกการเชื่อมต่อสะพานบางส่วน ฉันปิดใช้งาน UFW อย่างสมบูรณ์และรีสตาร์ทนักเทียบท่า แต่นักเทียบท่าของฉันยังคงหมดเวลา :(
sb9 avatar
cn flag
sb9
ตกลง .. โปรดลองตรวจสอบด้วยอิมเมจ dnsutil และทำ nslookup สำหรับ FQDN ใด ๆ จากภายในคอนเทนเนอร์และจากโฮสต์และดูว่าผลลัพธ์แสดงเหมือนกันหรือไม่ นักเทียบท่าเรียกใช้ -it tutum/dnsutils nslookup.dll docker run -it tutum/dnsutils ขุด คุณเปิดใช้งาน selinux บนเครื่อง Ubuntu ของคุณหรือไม่ หากคุณสามารถตรวจสอบได้ ให้ปิดการใช้งานและรีสตาร์ทเครื่องของคุณ ไม่แน่ใจว่าอาจทำให้เกิดปัญหาใด ๆ
vn flag
@sb9 ขอโทษที่ตอบช้า ฉันมีความเครียดเกิดขึ้น ฉันตรวจสอบแล้วว่า selinux ถูกปิดใช้งานในเครื่องของฉัน ฉันได้ลองรีสตาร์ทแล้ว แต่นั่นก็ไม่ได้ช่วยอะไรเช่นกัน ฉันทำการทดสอบตามที่คุณเสนอ นี่คือผลลัพธ์ของฉัน: https://pastebin.com/u3RTgxww - ดูเหมือนว่าจะใช้ได้กับคอนเทนเนอร์เพียงอันเดียวหลังจากรีสตาร์ท
vn flag
@sb9 ฉันขุดคุ้ยเล็กน้อยและพบว่าหลังจากคำขอแรก เครือข่าย `docker0` ของฉันสูญเสียที่อยู่ IPv4 ดังนั้นจึงไม่สามารถรับแพ็กเก็ตได้อีกฉันยืนยันสิ่งนี้โดยใช้ `sudo ifconfig docker0 172.17.0.1` ซึ่งแก้ไขปัญหาได้ชั่วคราว
Score:1
ธง ar

หากคุณมีสิ่งเหล่านี้ dmesg:

[15300.615904] เพื่อนบ้าน: arp_cache: เพื่อนบ้านล้นโต๊ะ!

ลองสิ่งนี้:

sudo sysctl -w net.ipv4.neigh.default.gc_thresh3=30000
sudo sysctl -w net.ipv4.neigh.default.gc_thresh2=20000
sudo sysctl -w net.ipv4.neigh.default.gc_thresh1=10000
vn flag
ขอบคุณ แต่ฉันไม่พบข้อความดังกล่าวใน `dmesg` ของฉัน
Score:0
ธง vn

ในที่สุดหลังจากขุดค้นไปรอบ ๆ ฉันพบปัญหา:

ของฉัน นักเทียบท่า0 เครือข่ายกำลังสูญเสียที่อยู่ IPv4 หลังจากคำขอแรกสิ้นสุดลง ดังนั้นจึงไม่สามารถสื่อสารกับอินเทอร์เน็ตส่วนที่เหลือได้

ความคิดเห็นเกี่ยวกับปัญหานี้ใน GitHub แก้ไขปัญหาให้ฉันได้ในที่สุด: โมบี้#40217: ของฉัน systemd-เครือข่าย กำลังจัดการ นักเทียบท่า0 เครือข่าย และมีการทริกเกอร์การตรวจสอบการสูญหายของผู้ให้บริการ ซึ่งทำให้เกิดขึ้น เครือข่าย เพื่อลบ IPv4 การทำเครื่องหมาย นักเทียบท่า0 และ br-* เครือข่ายที่ไม่มีการจัดการในที่สุดทำให้ทุกอย่างทำงานได้อย่างถูกต้อง

โพสต์คำตอบ

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