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

สององค์ประกอบ เส้นทางแพ็กเก็ตเดียว

เคอร์เนลเขียนแพ็กเก็ต IP ลงในอุปกรณ์ และโปรแกรมอ่านจากตัวอธิบายไฟล์ ในทิศทางกลับกันโปรแกรมเขียนแพ็กเก็ตกลับและเคอร์เนลกำหนดเส้นทางราวกับว่ามันมาถึงอินเทอร์เฟซจริง TUN พา IP ขณะที่ TAP พาเฟรมอีเทอร์เน็ต การอ่านแพ็กเก็ตที่ขอบเขตนั้นแสดงการจัดเฟรม และอุปกรณ์มีไว้เพื่อสิ่งนี้โดยเฉพาะ

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

สร้างอุปกรณ์ แล้วสังเกตขอบเขต

จงสร้างอุปกรณ์อย่างตั้งใจเมื่อทดสอบขอบเขต อุปกรณ์แบบถาวรอยู่รอดเกินกระบวนการที่สร้างมัน ซึ่งมีประโยชน์สำหรับการทดลองและกลายเป็นแหล่งความสับสนทั่วไปในภายหลัง ตรวจสอบแฟล็กและเจ้าของก่อนโทษ VPN

sudo ip tuntap add dev tun9 mode tun user alice
ip -d link show tun9

รายละเอียดของลิงก์แสดงชนิดอุปกรณ์และเจ้าของที่ผูกอยู่ หากไม่มีโปรเซสใดเปิดค้างไว้ แพ็กเก็ตที่เขียนลงไปจะไม่ไปไหน อุปกรณ์ที่ไม่มีโปรเซสผูกอยู่ดูปกติในรายการลิงก์ได้แม้ไม่ได้ส่งอะไรผ่านเลย

สิ่งที่ชื่ออินเทอร์เฟซรับประกันไม่ได้

ชื่ออินเทอร์เฟซไม่ได้บอกอะไรเกี่ยวกับการเข้ารหัสหรือการพิสูจน์ตัวตน โปรแกรมอาจห่อแพ็กเก็ตด้วย TLS ด้วยโปรโตคอลของตัวเอง ด้วย IPsec หรือไม่ห่อเลย การเลือก TUN แทน TAP เปลี่ยนการจัดเฟรมที่ขอบเขต ไม่ใช่การออกแบบความปลอดภัย การเลือกการจัดเฟรมเป็นเรื่องจริง และเล็กกว่าคำถามด้านความปลอดภัยมาก

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

จับคู่การแก้ไขกับขั้นที่ล้มเหลว

แยกขั้นของความล้มเหลวเมื่อมีสิ่งเสียหาย อุปกรณ์ที่หายไป ข้อผิดพลาดเรื่องสิทธิ์ และการเข้าสู่ระบบที่ถูกปฏิเสธให้หลักฐานและการแก้ไขที่ต่างกัน อ่านสถานะภายในเครื่องก่อน จากนั้นอ่านบันทึกของโปรแกรมเอง จากนั้นอ่านมุมมองของคู่ปลายทาง อ่านทั้งสามก่อนจะเปลี่ยนอะไร

ip -d link show tun0
journalctl -u openvpn-client@corp --since '10 min ago'

หากอุปกรณ์มีอยู่และมีโปรเซสถือไว้ ขอบเขตภายในเครื่องทำงานและปัญหาอยู่ไกลออกไป หากอุปกรณ์หายไป การตรวจสอบข้อมูลรับรองใด ๆ ก็ไม่ช่วย ขั้นที่คุณเรียกชื่อได้คือขั้นที่คุณทดสอบได้ เอกสาร TUN/TAP อธิบายขอบเขตและแบบจำลองของอุปกรณ์

บทความที่เกี่ยวข้อง