ตรวจสอบอินเทอร์เฟซ VPN ของ Linux ด้วย ip link ทีละชั้น
แฟล็กและตัวนับอธิบายเพียงชั้นเดียว อ่านลิงก์ก่อน จากนั้นอ่านตัวนับ แล้วจึงอ่านที่อยู่และเส้นทาง ก่อนสรุปว่าอุโมงค์เสีย
ไอคอนของไคลเอนต์บอกว่าเชื่อมต่อแล้ว อินเทอร์เฟซมีอยู่ แต่แอปพลิเคชันก็ยังเข้าถึงอะไรไม่ได้ การรวมกันแบบนี้พบได้บ่อย เพราะอินเทอร์เฟซเสมือนอาจคงอยู่ได้ในขณะที่ปลายทางไกล ที่อยู่ หรือเส้นทางของมันหายไป ip link คือเครื่องมือแรกที่ถูกต้อง และเป็นตัวที่อ่านเกินความจริงได้ง่ายที่สุดด้วย แฟล็กและตัวนับอธิบายเพียงชั้นเดียว ส่วนชั้นที่อยู่เหนือขึ้นไปล้มเหลวแยกจากกัน มันยังเป็นเครื่องมือที่ผู้คนอ้างถึงเมื่อต้องการพิสูจน์ว่าอุโมงค์ทำงานอยู่ ซึ่งเป็นข้อกล่าวอ้างที่มันพิสูจน์เองไม่ได้เลย
อ่านอินเทอร์เฟซก่อนอ่านไอคอน
เริ่มจาก ip -details link show dev tun0 ตามที่อธิบายไว้ในคู่มือ ip-link โดยแทนชื่ออินเทอร์เฟซตามธรรมเนียมด้วยอินเทอร์เฟซที่ไคลเอนต์ของคุณถืออยู่จริง แฟล็ก ชนิด MTU และเอกลักษณ์ของอินเทอร์เฟซเป็นข้อสังเกตที่มีประโยชน์ ถ้อยคำบอกสถานะของอินเทอร์เฟซเสมือนไม่จำเป็นต้องทำงานเหมือนสัญญาณตัวพาของสายเคเบิลจริง ดังนั้นให้ถือว่า UP เป็นคำกล่าวเกี่ยวกับอินเทอร์เฟซ ไม่ใช่เกี่ยวกับอุโมงค์
ความแตกต่างนั้นอธิบายกรณีที่สับสนที่สุด นั่นคืออินเทอร์เฟซที่ยังคงอยู่ขณะที่ฝั่งไกลกำลังเชื่อมต่อใหม่หรือเข้าถึงไม่ได้
การตั้งค่าคงอยู่สามารถรักษาลิงก์ไว้ได้เพื่อให้การเชื่อมต่อใหม่ไม่ต้องสร้างมันขึ้นมาใหม่ ซึ่งหมายความว่าการมีอยู่ไม่ใช่สุขภาพ
เพิ่มตัวนับและคำขอที่ควรใช้ตัวนับนั้น
ใช้มุมมองสถิติที่รองรับคือ ip -s link show dev tun0 แล้วบันทึกจำนวนแพ็กเก็ตและไบต์ในทั้งสองทิศทาง จากนั้นสร้างคำขอที่ไม่เป็นอันตรายซึ่งควรวิ่งผ่านอินเทอร์เฟซนี้ แล้วเปรียบเทียบทิศทางที่เกี่ยวข้อง คำขอที่ใช้เส้นทางตรงของแอปพลิเคชันอื่นจะไม่ขยับตัวนับเหล่านั้น และนั่นคือจุดประสงค์ของการทดสอบ
หากตัวนับขาออกเพิ่มขึ้นแต่ตัวนับขาเข้าไม่เพิ่ม แพ็กเก็ตออกไปแล้วและไม่มีอะไรกลับมา นี่เป็นปัญหาที่ต่างจากอินเทอร์เฟซที่ไม่เคยส่งอะไรเลย หากตัวนับทั้งสองเพิ่มขึ้นแต่แอปพลิเคชันยังล้มเหลว แสดงว่าความผิดอยู่เหนืออินเทอร์เฟซขึ้นไป ซึ่งเป็นความคืบหน้าไม่ใช่ทางตัน
อ่านค่าสองครั้ง ครั้งหนึ่งก่อนและครั้งหนึ่งหลัง แทนที่จะเชื่อภาพนิ่งเพียงภาพเดียว
ที่อยู่และเส้นทางเป็นคนละขั้นตอน
ลิงก์สามารถมีอยู่ได้โดยไม่มีพรีฟิกซ์ ไม่มีการกำหนดค่าตัวแปลงชื่อ หรือไม่มีเส้นทางที่แอปพลิเคชันต้องการ ตรวจที่อยู่ด้วย ip address show dev tun0 จากนั้นดูว่าเส้นทางใดที่ปลายทางจะเลือกด้วย ip route get สำหรับเป้าหมายจริง ข้อสังเกตสามข้อนั้นตอบคำถามสามข้อที่ต่างกัน และมีเพียงข้อสุดท้ายที่เกี่ยวกับการส่งต่อ
สำหรับ IPsec นโยบายความปลอดภัยและสถานะสมาคมความปลอดภัยก็อาจสำคัญด้วย และไม่ใช่ทุกการออกแบบ IPsec ที่ปรากฏเป็นอินเทอร์เฟซ tun ธรรมดา การตามหาอุปกรณ์ tun ที่ไม่เคยจะมีอยู่เป็นวิธีเร็วที่สุดที่จะสรุปผิด
บันทึกชื่อที่แน่นอน เนมสเปซ และเวลากำกับทุกเอาต์พุตที่คุณเก็บไว้ เพราะชื่อที่ดูเหมือนกันในคอนเทนเนอร์อื่นหรือในเซสชันที่กู้คืนมาแสดงถึงบริบทที่ต่างกันโดยสิ้นเชิง
อย่าลบสิ่งที่คุณยังไม่ได้ระบุตัวตน
อินเทอร์เฟซที่ไม่คุ้นเคยไม่ได้เก่าโดยอัตโนมัติ ระบุเจ้าของก่อนจะลบอะไร และใช้ขั้นตอนรื้อถอนที่ไคลเอนต์ระบุไว้หรือการกำหนดค่าที่จัดการเมื่อต้องการลบจริง ๆ การลบอุโมงค์ที่ทำงานอยู่เพื่อดูว่าจะเกิดอะไรขึ้นเป็นการทดสอบที่ตอบคำถามที่ไม่มีใครถาม
หากอินเทอร์เฟซเป็นของรันไทม์คอนเทนเนอร์หรือเนมสเปซเครือข่ายที่คุณไม่ได้สร้าง เจ้าของอยู่ห่างเพียงคำสั่งเดียวและควรหาให้เจอก่อน
ข้อควรระวังนั้นใช้กับ ip link set down ด้วย ซึ่งดูเหมือนย้อนกลับได้และบ่อยครั้งไม่ใช่
การตรวจสอบควรทิ้งอะไรไว้ให้คุณ
การตรวจสอบที่ดีจบลงด้วยข้อเท็จจริงสี่ข้อ คือชื่ออินเทอร์เฟซและเนมสเปซ แฟล็กและ MTU ของมัน ส่วนต่างของตัวนับจากคำขอจริง และเส้นทางกับที่อยู่ที่แอปพลิเคชันต้องการจริง เมื่อเขียนสิ่งเหล่านี้ลงไป ขั้นต่อไปก็ชัดเจนและเป็นของชั้นใดชั้นหนึ่ง ถ้าไม่มีสิ่งเหล่านี้ การเปลี่ยนแปลงทุกครั้งหลังจากนั้นเป็นการเดาพร้อมแผนย้อนกลับ
เปรียบเทียบข้อเท็จจริงสี่ข้อนั้นกับสี่ข้อเดียวกันจากเซสชันที่ทำงานได้ หากชื่ออินเทอร์เฟซและเนมสเปซตรงกันแต่ส่วนต่างของตัวนับเป็นศูนย์ คำขอไม่เคยไปถึงอุโมงค์ หากส่วนต่างของตัวนับอยู่ในเกณฑ์ดีแต่เส้นทางชี้ไปที่อื่น อุโมงค์ก็ปกติดี แต่การกำหนดเส้นทางไม่ใช่ การเปรียบเทียบนั้นคือสิ่งที่เปลี่ยนกองเอาต์พุตให้เป็นข้อตัดสินใจ
เก็บเอาต์พุตไว้กับตั๋ว เพราะการเปรียบเทียบในภายหลังมีประโยชน์ก็ต่อเมื่อคุณเห็นว่าอะไรเปลี่ยนไป
จากนั้นปิดวงจรด้วยการทดสอบแอปพลิเคชันอีกครั้ง เพราะอินเทอร์เฟซไม่เคยเป็นสิ่งที่ผู้ใช้สนใจ