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

ไฟล์อธิบายช่วงเวลาหนึ่ง ไม่ใช่สัญญา

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

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

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

อ่านขั้นตอนที่ล้มเหลวก่อนแตะการตั้งค่า

ข้อความแสดงข้อผิดพลาดบอกว่าข้อสมมติใดพัง และแต่ละข้อสมมติมีการแก้ไขที่ต่างกันโดยสิ้นเชิง การแก้รหัสลับเมื่อชื่อโฮสต์แก้ไม่ได้แล้วทำให้เสียเวลาบ่ายหนึ่งและไม่ได้สอนอะไรใคร

What happensThe assertion that brokeSupported response
Name never resolvesThe host still exists under that nameGet a current endpoint from the operator
TCP connect times outThe listener is on that port and reachableCheck the current published port, then the local network
TLS or key exchange failsThe peer presents the expected identityCompare the certificate, not the cipher list
Authentication rejectedThe account is still validGet credentials reissued or stop using the service
dig +short vpn.example.net
curl -sS -o /dev/null -w 'connect=%{time_connect} tls=%{time_appconnect}\n' --max-time 8 https://vpn.example.net:443/
openssl s_client -connect vpn.example.net:443 -servername vpn.example.net -brief </dev/null

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

การเปลี่ยนแปลงใบรับรองและตัวตนคือสิ่งที่เงียบ

ความล้มเหลวส่วนใหญ่ประกาศตัวเอง การเปลี่ยนแปลงตัวตนไม่ประกาศ เพราะไคลเอนต์ที่ปักหมุดชื่อใบรับรองจะปฏิเสธใบรับรองใหม่ที่ดีสมบูรณ์ด้วยข้อความที่หลายคนอ่านว่าเป็นบั๊ก อุโมงค์ปกติดี การปักหมุดล้าสมัย

มองหาตัวเลือกด้านตัวตนก่อนสรุปอะไร:

grep -nE '^(remote|proto|auth|verify-x509-name|tls-crypt|key-direction|ca) ' profile.ovpn
openssl x509 -in profile-ca.crt -noout -subject -dates

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

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

มีเพียงผู้ให้บริการเท่านั้นที่เผยแพร่สิ่งทดแทนที่ถูกต้องได้

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

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

curl -sS -o current.ovpn https://example.org/nodes/current.ovpn
sha256sum current.ovpn profile.ovpn
grep -nE '^(remote|proto) ' current.ovpn

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

ปลดระวางรายการเก่าและบันทึกว่าเกิดอะไรขึ้น

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

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

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

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