OpenVPN ไม่เริ่มทำงาน และข้อความแสดงข้อผิดพลาดชี้ไปที่บรรทัดที่ดูเหมือนถูกต้อง: Unrecognized option or missing or extra parameter(s) in office.ovpn:42: ca ใบรับรองไม่เปลี่ยนแปลง ไฟล์เปิดได้ในโปรแกรมแก้ไข และไม่มีอะไรในพาธที่ดูผิดปกติ ตัวแยกวิเคราะห์ไม่ได้โต้แย้งชื่อตัวเลือก แต่โต้แย้งจำนวนอาร์กิวเมนต์ที่มาพร้อมกัน การตรวจสอบสี่อย่างแก้ได้เกือบทุกกรณี และควรทำตามลำดับต้นทุน

ทำไมตัวแยกวิเคราะห์จึงตำหนิตัวเลือก

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

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

ca C:\Program Files\OpenVPN\config\office-ca.crt

ใส่เครื่องหมายคำพูดรอบทุกพาธที่มีช่องว่าง

เครื่องหมายคำพูดคู่หนึ่งคู่รอบค่าคือการซ่อมทั้งหมด และ Windows ยอมรับเครื่องหมายทับ ดังนั้นการ escape จึงไม่เคยกลายเป็นส่วนหนึ่งของปัญหา แก้ตัวเลือกพาธทุกตัวในรอบเดียว เพราะตัวแยกวิเคราะห์หยุดที่ความล้มเหลวแรก และตัวถัดไปเพียงรอการรีสตาร์ตครั้งต่อไป ชุดนี้มักประกอบด้วย ca, cert, key, tls-auth และ auth-user-pass

ca "C:/Program Files/OpenVPN/config/office-ca.crt"
cert "C:/Program Files/OpenVPN/config/office.crt"
key "C:/Program Files/OpenVPN/config/office.key"

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

Select-String -Path .\office.ovpn -Pattern 'Program Files'

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

กู้การประกาศโหมดก่อนใบรับรอง

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

client
dev tun
proto udp
remote vpn.example.net 1194

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

ความเสียหายจากการเข้ารหัสดูเหมือนชื่อตัวเลือก

ไฟล์ที่บันทึกเป็น UTF-16 พร้อมเครื่องหมายลำดับไบต์จะซ่อนตัวเลือกแรกจากตัวแยกวิเคราะห์ และไบต์ที่หลงเหลืออาจเกาะกับชื่อตัวเลือกในข้อความ บันทึกไฟล์เป็น UTF-8 โดยไม่มีเครื่องหมายลำดับไบต์ จากนั้นเปิดใหม่และยืนยันว่าอักขระแรกเป็นตัวอักษรปกติ โปรแกรมแก้ไข การเปลี่ยนเส้นทางของ PowerShell และข้อความที่วางจากหน้าต่างแชต ล้วนเปลี่ยนการเข้ารหัสโดยไม่ถาม

Format-Hex .\office.ovpn | Select-Object -First 1

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

ควรตรวจอะไรก่อน และเพราะเหตุใด

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

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

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