ทำไมไคลเอนต์ Tailscale บน Linux จึงเพิกเฉยต่อเส้นทางซับเน็ตที่ประกาศ
ตาราง 52 คือเบาะแส: ไคลเอนต์ Tailscale บน Linux ติดตั้งเส้นทางซับเน็ตที่ประกาศหลังจาก --accept-routes เท่านั้น และการอนุมัติอุปกรณ์เป็นด่านแยกต่างหาก
คุณอยู่บนแล็ปท็อป Linux, tailscale status แสดงรายการเครื่องอื่น และ NAS ที่ 10.80.0.25 ก็ยังหมดเวลาอยู่ tailnet สุขภาพดี เราเตอร์ซับเน็ตออนไลน์ และไม่มีอะไรในเอาต์พุตของไคลเอนต์บอกว่าทำไม LAN ที่อยู่เบื้องหลังจึงเข้าถึงไม่ได้ คำอธิบายด้านล่างเคลื่อนจากอาการนั้นออกไปด้านนอก: แฟล็กบนไคลเอนต์นี้ จากนั้นการประกาศบนเราเตอร์ จากนั้นการอนุมัติ จากนั้นนโยบาย และจากนั้นจึงเป็นปลายทางเอง ทุกด่านล้มเหลวด้วยการหมดเวลาเดียวกัน ลำดับจึงสำคัญกว่าคำสั่ง
สิ่งที่ไคลเอนต์ Linux ปฏิเสธที่จะติดตั้ง
ไคลเอนต์ Tailscale บน Linux ไม่ยอมรับเส้นทางซับเน็ตที่ประกาศเว้นแต่คุณจะขอ ด้วยการตั้งค่านั้น ไคลเอนต์จะเข้าร่วม tailnet และเข้าถึงที่อยู่ของเพียร์ ขณะที่ทุกคำนำหน้าที่เราเตอร์ประกาศยังคงไม่ได้ใช้ ค่าเริ่มต้นเป็นเจตนา และนั่นคือเหตุผลที่อาการดูเหมือนเราเตอร์เสียไม่ใช่การตัดสินใจในเครื่อง
มีสองสิ่งที่แตกต่างกันถูกเรียกว่าการกำหนดเส้นทางที่นี่ และมีเพียงอย่างเดียวที่เป็นของคุณ เราเตอร์ประกาศคำนำหน้าเข้า tailnet เครื่องของคุณตัดสินใจว่าจะติดตั้งหรือไม่ ความล้มเหลวในฝ่ายใดฝ่ายหนึ่งให้การหมดเวลาเดียวกัน การเดาจึงเสียเวลาครึ่งวัน ค้นหาว่าฝ่ายใดปฏิเสธก่อนที่คุณจะแก้ไขอะไร
เปิดการยอมรับเส้นทางสำหรับเครื่องนี้
ตั้งค่าการตั้งใจบนไคลเอนต์ แล้วดูว่าอะไรเปลี่ยนไปแทนที่จะถือว่าคำสั่งได้ผล รูปแบบปัจจุบันใช้การตั้งค่าโดยไม่ต้องทำขั้นตอนเข้าสู่ระบบซ้ำ ซึ่งสำคัญเมื่อคุณอยู่กลางเซสชัน
sudo tailscale set --accept-routes
tailscale status
ip route show table 52
Tailscale ติดตั้งเส้นทางที่ยอมรับไว้ในตารางของตัวเองบน Linux คำนำหน้าที่ปรากฏในตาราง 52 จึงเป็นหลักฐานโดยตรงว่าไคลเอนต์นี้ติดตั้งการประกาศ หากช่วงของคุณไม่อยู่ในตารางนั้น ให้หยุด: ปัญหาเป็นเรื่องในเครื่อง และการทำงานบนเราเตอร์เท่าใดก็ไม่เปลี่ยน
ไคลเอนต์รุ่นเก่าแสดงการตั้งใจเดียวกันเป็นแฟล็กของคำสั่งเข้าสู่ระบบ ดังนั้น sudo tailscale up --accept-routes คือทางเลือกสำรองเมื่อ tailscale set หายไป ใช้มันแทนการแก้ไขเส้นทางด้วยมือ เพราะเดมอนเขียนตารางของตัวเองใหม่และการแก้ไขของคุณจะหายไปเมื่อเชื่อมต่อใหม่ครั้งถัดไป ตรวจสอบเวอร์ชันก่อนคัดลอกคำสั่งจากโพสต์เก่า
ตรวจสอบการประกาศและการอนุมัติแยกกัน
บนเราเตอร์ซับเน็ต คำนำหน้าต้องถูกประกาศ และเคอร์เนลต้องส่งต่อแพ็กเก็ตระหว่างอินเทอร์เฟซ การประกาศโดยไม่ส่งต่อทำให้คุณได้เส้นทางที่อนุมัติแล้วซึ่งทิ้งทราฟฟิกอย่างเงียบ ๆ และนี่คือการตั้งค่าที่ทำครึ่ง ๆ กลาง ๆ ที่พบบ่อยที่สุด
sudo tailscale up --advertise-routes=10.80.0.0/24
sysctl net.ipv4.ip_forward
ip -br addr
เปรียบเทียบคำนำหน้าที่ประกาศกับที่อยู่ที่คุณพยายามเข้าถึงจริง ทีละอักขระ เราเตอร์ที่ประกาศ 10.70.0.0/24 ไม่ได้บอกอะไรเกี่ยวกับ NAS ที่ 10.80.0.25 และความไม่ตรงกันนี้มองไม่เห็นในเอาต์พุตสถานะใด ๆ เพราะตัวเลขทั้งสองดูน่าเชื่อถือพอ ๆ กัน รายงานเส้นทางเสียส่วนใหญ่จบที่นี่ แก้ไขการประกาศก่อนที่คุณจะแตะอะไรที่อยู่ปลายทาง
การอนุมัติคือด่านถัดไป และข้ามได้ง่ายเมื่อเราเตอร์ถูกกำหนดค่าจากเชลล์ ต้องเปิดการประกาศสำหรับอุปกรณ์นั้นในคอนโซลผู้ดูแลระบบก่อนที่เครื่องอื่นจะใช้ได้ การยอมรับเส้นทางบนไคลเอนต์ไม่ได้อนุมัติสิ่งใดและไม่ได้แทนที่ กฎการเข้าถึง ใด ๆ
ทดสอบที่อยู่ส่วนตัวก่อนชื่อโฮสต์
การเชื่อมต่อที่สำเร็จไปยังที่อยู่ tailnet ของเราเตอร์เองพิสูจน์ว่า tailnet ทำงาน ซึ่งคุณรู้อยู่แล้ว การทดสอบที่มีประโยชน์คือบริการที่คุณต้องการจริง โดยทดสอบกับที่อยู่ส่วนตัวก่อน เพื่อให้ความล้มเหลวของ DNS ไม่สามารถปลอมเป็นความล้มเหลวของการกำหนดเส้นทางได้
tailscale ping 10.80.0.1
ping -c 2 10.80.0.25
nc -vz 10.80.0.25 445
getent hosts nas.internal.example
หากที่อยู่ตอบแต่ชื่อโฮสต์ไม่ตอบ คุณมีปัญหาการแปลงชื่อ และควรเลิกปฏิบัติต่อมันเป็นปัญหาเส้นทาง หากทั้งสองไม่ตอบ ให้ย้อนกลับไปหนึ่งส่วนและยืนยันว่าการประกาศครอบคลุมที่อยู่นั้น ความล้มเหลวทั้งสองดูเหมือนกันจากแอปพลิเคชันและแก้ไขในที่ต่างกัน
การตรวจสอบในเครื่องหนึ่งอย่างคุ้มค่าก่อนที่คุณจะโทษ tailnet เมื่อ LAN ปัจจุบันของคุณใช้คำนำหน้าเดียวกับซับเน็ตระยะไกล เคอร์เนลจะเลือกเส้นทางที่เชื่อมต่อโดยตรง และทราฟฟิกจะไม่ออกจากเครื่อง นี่คือสิ่งที่เกิดขึ้นเมื่อบ้านและสำนักงานเลือก 192.168.1.0/24 ทั้งคู่
ทำไมแฟล็กไคลเอนต์ไม่ใช่การตั้งค่าเราเตอร์
สิ่งเหล่านี้เป็นบทบาทต่างกันที่มีข้อกำหนดต่างกัน และการคัดลอกแฟล็กไคลเอนต์ไปยังเราเตอร์คือวิธีที่ tailnet ที่ทำงานได้เกิดลูป เครื่องที่ประกาศเส้นทางต้องการการส่งต่อ กฎไฟร์วอลล์ที่อนุญาตทราฟฟิกที่ส่งต่อ และการตัดสินใจว่าจะประกาศคำนำหน้าใด ไม่มีสิ่งใดในนี้ที่ --accept-routes บอกเป็นนัย
เอกสารของเราเตอร์ซับเน็ต เตือนไม่ให้เปิดการยอมรับเส้นทางบนเราเตอร์สำรองที่ประกาศคำนำหน้าเดียว เพราะโหนดสแตนด์บายอาจดันทราฟฟิกที่เป็นอยู่ในเครื่องออกไปผ่านโหนดที่ใช้งานอยู่ หากคุณใช้คู่ HA ให้ถือว่านี่เป็นข้อจำกัดการออกแบบไม่ใช่เชิงอรรถ และตัดสินใจว่าโหนดใดเป็นเจ้าของคำนำหน้าก่อนอนุมัติทั้งสองเครื่อง บนเราเตอร์เดียว คำเตือนเดียวกันนี้ให้อ่านเป็นการเตือนว่าการยอมรับเป็นของไคลเอนต์ ไม่ใช่ของเครื่องที่ประกาศ บันทึกไว้ว่าด่านใดถูกปิด
สำหรับไคลเอนต์ทั่วไป ลำดับจบที่การทดสอบแอปพลิเคชันที่ล้มเหลวในตอนเริ่ม สำหรับเราเตอร์ ให้ทบทวนการส่งต่อ การประกาศ การอนุมัติ และไฟร์วอลล์ตามลำดับนั้น เพราะสิ่งที่ขาดเป็นอันแรกสร้างการหมดเวลาแบบเดียวกับที่คุณเริ่มต้น