บันทึกระบบภายในเครื่องเผยอะไรเกี่ยวกับการเชื่อมต่อ VPN
ระบบปฏิบัติการบันทึกการเริ่มบริการ การเปลี่ยนอะแดปเตอร์ และความล้มเหลวของเส้นทางที่แอปไม่เคยเขียนลงไป อ่านหน้าต่างช่วงสั้น ๆ หนึ่งช่วงแล้วเชื่อมโยงเข้าด้วยกัน
เดสก์ท็อปทุกเครื่องเก็บบันทึกของตัวเองว่ามีอะไรเกิดขึ้นกับ VPN และไฟล์ส่งออกของแอปมักเป็นส่วนที่ไม่ครบถ้วนที่สุดในบรรดาบันทึกเหล่านั้น ตัวจัดการบริการบันทึกว่า unit เริ่มทำงานเมื่อใด เคอร์เนลบันทึกว่าอินเทอร์เฟซปรากฏขึ้นเมื่อใด และสแตกเครือข่ายบันทึกว่าเส้นทางถูกนำไปใช้ไม่ได้เมื่อใด ไม่มีกลไกใดรู้ว่าไคลเอนต์ตั้งใจอะไร และไคลเอนต์ก็ไม่รู้ว่าเคอร์เนลทำอะไรกับคำขอของตน
การอ่านบันทึกเดียวแยกจากกันชวนให้ได้ข้อสรุปที่ผิด อ่านสองรายการจากนาทีเดียวกัน แล้วลำดับจะปรากฏชัด
สามกลไกกับสามคำศัพท์
บน Linux บันทึก systemd ดักข้อความวงจรชีวิตของ unit จาก wg-quick@wg0 หรือปลั๊กอิน VPN ของ NetworkManager และบัฟเฟอร์วงแหวนของเคอร์เนลพาข้อความอินเทอร์เฟซและการกำหนดเส้นทาง บน Windows บันทึกเหตุการณ์แบ่งเรื่องราวให้ผู้ให้บริการระบบ WLAN และการเข้าถึงระยะไกล แต่ละรายมีตัวระบุของตัวเอง บน macOS บันทึกแบบรวมพาข้อความที่จำกัดขอบเขตในระบบย่อย ซึ่ง Console แบบกราฟิกแสดงเพียงบางส่วน
คำศัพท์เหล่านี้แปลกันไม่ได้ ตัวระบุเหตุการณ์ของแพลตฟอร์มหนึ่งไม่มีความหมายบนอีกแพลตฟอร์มหนึ่ง และภาพหน้าจอของกล่องโต้ตอบ Windows ก็ไม่ได้พิสูจน์อะไรเกี่ยวกับ unit ของ Linux
สิ่งที่ทั้งสามมีร่วมกันคือเวลา แหล่งที่มา และระดับความรุนแรง และทั้งสามสิ่งนี้ทำให้การเชื่อมโยงระหว่างบันทึกของไคลเอนต์กับบันทึกของระบบปฏิบัติการเป็นไปได้ ความพร้อมใช้งานก็ต่างกันด้วย คอนเทนเนอร์ที่ไม่มีบันทึก อิมเมจ Windows ที่ถูกตัดทอน หรือระดับบันทึกที่ลดลงตอนสร้าง อาจซ่อนชั้นข้อมูลทั้งหมดไว้
| Facility | What it records | What it cannot show |
|---|---|---|
| systemd journal | Unit start and stop, helper output, exit status | Whether packets actually reached the peer |
| Kernel and netlink | Interface creation, address assignment, route changes | Why the client asked for that configuration |
| Windows event log | Provider-specific connection and adapter events | Anything the provider chose not to log |
บรรทัดที่เชื่อมต่อได้พิสูจน์อะไรและไม่ได้พิสูจน์อะไร
เหตุการณ์เริ่มบริการบันทึกว่า unit ภายในเครื่องถูกสั่งให้เริ่มและไม่ได้จบลงทันที มันไม่ได้บันทึกการจับมือที่เสร็จสมบูรณ์ กุญแจคู่สัญญาที่ถูกต้อง หรือเส้นทางที่ใช้งานได้ การมองบรรทัดนั้นเป็นหลักฐานของอุโมงค์คือการอ่านผิดที่พบบ่อยที่สุดของบันทึกเหล่านี้ บรรทัดนี้พิสูจน์เจตนาและสถานะของโพรเซส และไม่พิสูจน์อะไรเลยเกี่ยวกับการเข้าถึงได้
สถานะการส่งต่อเป็นการสังเกตแยกต่างหาก และมาจากตารางเส้นทาง ไม่ใช่จากบันทึกใด ๆ
เหตุการณ์อะแดปเตอร์อธิบายความล้มเหลวแบบเงียบได้ อินเทอร์เฟซขึ้นมา ที่อยู่ถูกกำหนด และเส้นทางไม่เคยถูกติดตั้งเพราะกฎนโยบายปฏิเสธ ในลำดับนั้นทุกบรรทัดที่มองเห็นดูปกติในขณะที่ไม่มีอะไรถูกกำหนดเส้นทาง และวิธีเดียวที่จะเห็นได้คือเปรียบเทียบเวลาของบันทึกกับตารางเส้นทางในขณะเดียวกัน เก็บบันทึกลำดับเหตุการณ์ของไคลเอนต์ไว้ข้างทั้งสอง เพราะไคลเอนต์เป็นแหล่งเดียวที่รู้ว่าตนขออะไร สองข้อเท็จจริงที่ต้องการควบคู่กันแทบไม่เคยอยู่ในบรรทัดเดียวกัน
การเชื่อมต่อใหม่ในภายหลังเขียนทับส่วนที่น่าสนใจของภาพนี้ ดังนั้นให้เก็บหน้าต่างไว้ตั้งแต่ความล้มเหลวครั้งแรก ไม่ใช่หลังลองสามครั้ง
เชื่อมโยงหน้าต่างช่วงสั้น
บันทึกเวลาที่ลองพร้อมเขตเวลา แล้วดึงช่วงไม่กี่นาทีรอบ ๆ เวลานั้น ข้อผิดพลาดแรกในช่วงมักเกิดขึ้นก่อนบรรทัดตัดการเชื่อมต่อที่ตั๋วสนับสนุนอ้างถึง
journalctl -u wg-quick@wg0 --since "today 09:00" --until "today 09:20" ip route show table all | grep wg0 log show --last 20m --predicate 'subsystem == "com.apple.network"'
แต่ละคำสั่งตอบคำถามคนละส่วน คำสั่งแรกให้วงจรชีวิต คำสั่งที่สองให้สถานะการส่งต่อ คำสั่งที่สามให้ระบบย่อยเครือข่ายของ macOS บน Windows ให้กรองบันทึกระบบตามชื่อผู้ให้บริการแทนการเลื่อนทั้งช่อง และส่งออกเฉพาะเหตุการณ์ที่ตรงกัน
เก็บข้อความที่ตัดตอนมาให้เล็กพอที่ผู้อ่านจะติดตามได้ หน้าต่างยี่สิบนาทีที่มีเหตุการณ์เกี่ยวข้องสี่รายการสนับสนุนข้อสรุปได้ ส่วนการส่งออกทั้งวันที่มีหลายพันบรรทัดไม่สนับสนุนอะไรเลย
บันทึกเหล่านี้หยุดอยู่ตรงไหน
บันทึกภายในเครื่องบรรยายอุปกรณ์ ไม่ใช่เส้นทาง พวกมันแสดงไม่ได้ว่าผู้ให้บริการเก็บอะไรไว้ ระบุเซสชันเข้ากับบัญชีหรือไม่ หรือปลายทางเห็นอะไร คำแถลงของผู้ให้บริการว่าไม่เก็บบันทึกไม่ได้บอกอะไรเกี่ยวกับระบบปฏิบัติการบนแล็ปท็อปของคุณ และเหตุการณ์ภายในเครื่องก็ไม่ได้พิสูจน์อะไรเกี่ยวกับบันทึกย้อนหลังของผู้ให้บริการ
พวกมันยังพาข้อมูลส่วนบุคคลมากกว่าที่คาดไว้ ชื่อผู้ใช้ ชื่อโฮสต์ พาธที่เมานต์ และตัวระบุอุปกรณ์ ปรากฏในข้อความระบบทั่วไปแม้ไม่มีเนื้อหาการท่องเว็บ ลบข้อมูลเหล่านั้นก่อนแนบสิ่งใดเข้ากับตั๋ว และเก็บต้นฉบับไว้ภายใต้การควบคุมการเข้าถึงตามปกติ
บนอุปกรณ์ที่ได้รับการจัดการ ให้ขอข้อความที่ตัดตอนมาจากฝ่ายไอทีแทนการพยายามลบบันทึกขององค์กร เป้าหมายการวินิจฉัยคือคำถามแคบ ๆ หนึ่งข้อที่ตอบได้จากสองแหล่ง ไม่ใช่ประวัติทั้งหมดของเครื่อง