ZeroTier ขึ้น ONLINE แต่ ACCESS_DENIED: แก้ที่ไหน?
ONLINE อธิบายการติดต่อกับโครงสร้างพื้นฐานระดับราก; ACCESS_DENIED อธิบายการเป็นสมาชิกของเครือข่ายหนึ่ง การแก้ไขอยู่ฝั่งคอนโทรลเลอร์
ZeroTier รายงาน ONLINE ในระดับบริการและ ACCESS_DENIED ในระดับเครือข่าย และสองสิ่งนี้ไม่ใช่ความขัดแย้ง อย่างแรกเป็นคำกล่าวเกี่ยวกับเส้นทางระหว่างไคลเอนต์ของคุณกับโครงสร้างพื้นฐานการประสานงาน อย่างที่สองเป็นคำกล่าวเกี่ยวกับรายชื่อสมาชิกของเครือข่ายหนึ่ง อ่านแยกกันแล้วการรวมกันจะบอกคุณอย่างชัดเจนว่าควรไปดูที่ไหน
ONLINE วัดอะไร
คำสั่งสถานะรายงานว่าบริการภายในเครื่องมีเส้นทางที่ใช้งานได้ไปยังเซิร์ฟเวอร์รากที่ประสานการค้นหาเพียร์หรือไม่ มันไม่พูดอะไรเกี่ยวกับเครือข่ายใดเครือข่ายหนึ่ง และไม่พูดอะไรว่าคอนโทรลเลอร์อนุมัติอุปกรณ์นี้แล้วหรือไม่ ดังนั้นการติดตั้งใหม่บนการเชื่อมต่อที่ทำงานได้จะรายงาน ONLINE ทันที ก่อนที่ใครจะอนุญาตมันที่ไหนก็ตาม
มอง ONLINE เป็นคำกล่าวเกี่ยวกับท่อส่ง และมองสถานะรายเครือข่ายเป็นคำกล่าวเกี่ยวกับการเป็นสมาชิก การใช้สิ่งหนึ่งอธิบายอีกสิ่งหนึ่งคือจุดที่ความสับสนส่วนใหญ่เริ่มต้น
ACCESS_DENIED ขอให้คุณทำอะไร
ในเครือข่ายส่วนตัว คอนโทรลเลอร์เก็บรายชื่อสมาชิก โหนดที่ไม่อยู่ในรายชื่อนั้น หรืออยู่ในรายชื่อแต่ไม่ได้รับอนุญาต จะได้รับ ACCESS_DENIED พร้อมไม่มีการตั้งค่าใดๆ นอกเหนือจากการจับมือพื้นฐาน การแก้ไขอยู่ฝั่งคอนโทรลเลอร์และต้องใช้ที่อยู่ของโหนดไม่ใช่ชื่อเครื่อง ดังนั้นจับคู่ที่อยู่ในผลลัพธ์ของไคลเอนต์กับรายการสมาชิกแล้วอนุญาตรายการนั้น
การติดตั้งไคลเอนต์ใหม่เป็นก้าวแรกที่ผิด เพราะการติดตั้งใหม่นำตัวตนใหม่มา และการอนุญาตเดิมไม่ใช้กับมันอีกต่อไป หากเครือข่ายเป็นสาธารณะ สถานะเดียวกันชี้ไปที่เงื่อนไขอื่น ดังนั้นถามเจ้าของคอนโทรลเลอร์ว่าเครือข่ายเป็นส่วนตัวหรือไม่ก่อนขออนุมัติ คำถามเดียวนี้กำหนดส่วนที่เหลือของการสนทนา
ข้อความสถานะคือทางแยก ไม่ใช่คำตัดสิน
แต่ละสถานะทำให้การตรวจสอบถัดไปแคบลง และการอ่านทั้งหมดเป็นข้อความล้มเหลวเพียงข้อความเดียวคือสิ่งที่เปลี่ยนการแก้ไขสองนาทีให้เป็นบ่ายทั้งบ่ายของการติดตั้งใหม่ NOT_FOUND หมายความว่าตัวระบุที่คุณพิมพ์ไม่มีอยู่ในคอนโทรลเลอร์นั้น ดังนั้นคำถามเรื่องสมาชิกภาพยังไปไม่ถึง REQUESTING_CONFIGURATION หมายความว่าโหนดไปถึงคอนโทรลเลอร์แล้วและกำลังรอการตั้งค่าที่ไม่มา ซึ่งชี้ไปที่เส้นทางไม่ใช่การอนุญาต OK หมายความว่าสมาชิกภาพและการตั้งค่าพร้อมแล้ว ดังนั้น คำถามถัดไปคือที่อยู่ที่ได้รับจัดสรร แล้วจึงเป็นบริการเอง
สองคำสั่งแยกทั้งหมดนี้ออกจากกัน และทั้งคู่อ่านไคลเอนต์เดียวกัน เอกสารอ้างอิง ZeroTier CLI แสดงรายการสตริงสถานะรายเครือข่ายที่ทั้งสองคืนค่า คำสั่งแรกคือมุมมองของบริการและคำสั่งที่สองคือรายเครือข่าย:
zerotier-cli status
zerotier-cli listnetworks
เก็บข้อความสถานะไว้เมื่อคุณขอความช่วยเหลือจากผู้ดูแลระบบ คำสั่ง join ภายในเครื่องที่พิมพ์การยืนยันพิสูจน์เพียงว่าคำขอได้รับการยอมรับภายในเครื่อง ซึ่งเป็นข้อเท็จจริงที่ต่างจากการได้รับการรับเข้า
สมาชิกภาพเป็นของตัวตน
คอนโทรลเลอร์รู้จักไฟล์ตัวตนของไคลเอนต์ ดังนั้นการคัดลอกการตั้งค่าไปยังเครื่องอื่นหรือล้างตัวตนระหว่างการติดตั้งใหม่จะสร้างสมาชิกที่คอนโทรลเลอร์ไม่เคยเห็น นั่นคือเหตุผลว่าทำไม การลบระเบียนสมาชิกจึงต่างจากการเพิกถอนการอนุญาต โหนดที่ได้รับอนุญาตและยังทำงานอยู่จะพยายามต่อไป และระเบียนที่ถูกลบแทนที่จะถูกเพิกถอนสามารถกลับมาเป็นคำขอใหม่จากที่อยู่เดิมได้
เมื่อคุณปลดระวางอุปกรณ์ ให้เพิกถอนการอนุญาตก่อนและยืนยันว่ารายการสะท้อนสถานะนั้นก่อนที่คุณจะลบสิ่งใด ลำดับคือความแตกต่างระหว่างการลบที่สะอาดกับการกลับเข้าร่วมอย่างลึกลับ
ตรวจสอบหลังการเปลี่ยนแปลง
อ่านรายการเครือข่ายใหม่แทนที่จะอ่านคำสั่งที่ทำให้เกิดการเปลี่ยนแปลง สี่คำถามครอบคลุมผลลัพธ์ และข้อใดข้อหนึ่งอาจผิดในขณะที่ข้ออื่นดูถูกต้อง:
zerotier-cli listnetworks
ip -br addr show
ping -c 2 10.147.20.5
ip route get 10.147.20.5
คำสั่งแรกพิมพ์สมาชิกภาพและที่อยู่ที่ได้รับจัดสรรสำหรับแต่ละเครือข่าย และคำสั่งที่สองแสดงว่าอินเทอร์เฟซได้รับที่อยู่นั้นจริงหรือไม่ สองคำสั่งสุดท้ายพิสูจน์ว่าเพียร์ในเครือข่ายตอบสนองและอินเทอร์เฟซใดรับส่งข้อมูล จดไว้ว่าคำสั่งใดตอบคำถามใด เพื่อให้คนถัดไปเริ่มจากหลักฐานไม่ใช่จากความจำ
หากสมาชิกภาพคือ OK และที่อยู่มีอยู่แต่เพียร์ไม่ตอบสนอง ปัญหาได้ย้ายไปที่การกำหนดเส้นทางหรือนโยบายของเพียร์เอง เอาข้อความสถานะออกจากการสนทนานั้น เพราะมันทำหน้าที่ของมันเสร็จแล้ว ระเบียนสมาชิกภาพและเส้นทางเป็นหัวข้อแยกกัน และยิ่งแยกออกจากกันเร็วเท่าไร การสืบสวนก็ยิ่งสั้นลงเท่านั้น