OpenVPN Connect กับ OpenVPN GUI: Windows เก็บโปรไฟล์ไว้ที่ไหน
ไคลเอนต์ Windows สองแบบ สองโมเดลโปรไฟล์: GUI แสดงไฟล์ .ovpn จากโฟลเดอร์ ส่วน Connect เก็บคลังนำเข้า จากนั้นลบหรือนำเข้าให้ถูกต้อง
บน Windows คำถามที่ว่า "โปรไฟล์ OpenVPN ของฉันอยู่ที่ไหน" มีคำตอบต่างกันสองแบบ และการเลือกผิดทำให้เสียเวลาครึ่งวัน OpenVPN GUI ของชุมชนถือว่าโฟลเดอร์คือรายการโปรไฟล์ ไฟล์ .ovpn ทุกไฟล์ในโฟลเดอร์ที่กำหนดจะปรากฏในเมนูถาดระบบ และไฟล์ที่ถูกลบออกจากโฟลเดอร์นั้นก็จะหายไป ส่วน OpenVPN Connect ทำงานจากคลังนำเข้า จึงเก็บโปรไฟล์ที่คุณลบออกจากดิสก์ไว้ และไม่สนใจไฟล์ที่คุณคัดลอกเข้าไป การเปรียบเทียบด้านล่างคือสิ่งที่ฉันใช้ตัดสินใจว่าจะเปิดโฟลเดอร์ไหนก่อนจะแตะต้องอะไร
รายการโฟลเดอร์กับการเก็บคลังนำเข้า
GUI ของชุมชนจะไล่รายชื่อไฟล์ตอนเริ่มทำงาน โดยอ่านไดเรกทอรีการกำหนดค่าเพียงแห่งเดียวที่เลือกไว้ตอนติดตั้ง และไฟล์ .ovpn ที่อยู่ในนั้นก็คือโปรไฟล์ ปิดไคลเอนต์ คัดลอกไฟล์เข้าโฟลเดอร์นั้น เปิดใหม่ แล้วรายการก็จะอยู่ในเมนู
Connect สร้างรายการจากบันทึกที่เขียนไว้ตอนนำเข้าแทน ดังนั้นไฟล์ที่คัดลอกมาจะมองไม่เห็น ขณะที่โปรไฟล์ที่นำเข้าจะอยู่รอดแม้ลบไฟล์ดาวน์โหลดต้นฉบับแล้ว ความต่างเพียงข้อนี้เองที่อธิบายรายงานส่วนใหญ่ว่าไคลเอนต์สองตัวเก็บโปรไฟล์ไว้คนละที่ เพราะมันเป็นเช่นนั้นจริง
GUI ของชุมชน: โฟลเดอร์ไหนที่ใช้งานจริง
มีสองโฟลเดอร์ที่สำคัญ การติดตั้งสำหรับผู้ใช้คนเดียวอ่าน %USERPROFILE%\OpenVPN\config ส่วนการติดตั้งสำหรับผู้ใช้ทุกคนอ่าน C:\Program Files\OpenVPN\config หรือเส้นทาง x86 เมื่อไคลเอนต์เป็น 32-bit ถ้าโปรไฟล์ปรากฏเฉพาะบัญชี Windows บัญชีเดียว แสดงว่าอยู่ในโฟลเดอร์สำหรับผู้ใช้คนเดียว และอีกบัญชีจะไม่มีวันเห็นมัน
อย่าเดาเส้นทางจากตัวติดตั้ง GUI รับอาร์กิวเมนต์ --config_dir และจำไดเรกทอรีที่ใช้เริ่มต้นไว้ ดังนั้นทางลัดอาจชี้ไปที่อื่นโดยสิ้นเชิง ตรวจสอบเป้าหมายของทางลัดและช่อง Start in หรือการตั้งค่า GUI ก่อนสร้างไฟล์ใด ๆ
การลบคือการลบไฟล์ ปิด GUI ก่อนเพื่อไม่ให้เก็บรายการไว้ในหน่วยความจำ ลบ .ovpn พร้อมไฟล์ใบรับรองหรือคีย์ที่เก็บไว้ข้าง ๆ แล้วจึงเปิดไคลเอนต์อีกครั้ง
โฟลเดอร์สำหรับผู้ใช้ทุกคนต้องลบด้วยสิทธิ์ที่สูงขึ้น การลบที่ไม่ทำอะไรเลยอย่างเงียบ ๆ ที่นั่นคือ UAC ไม่ใช่บั๊กของไคลเอนต์
Connect: คลังนำเข้าและกับดัก AppData สองชั้น
บิลด์ 2.x และ 3.x ปัจจุบันเก็บโปรไฟล์ไว้ใต้ %APPDATA%\OpenVPN Connect\profiles บิลด์ราว 2.5 ใช้ %ProgramFiles(x86)%\OpenVPN Technologies\OpenVPN Client\etc\profile แทน ซึ่งเป็นเหตุให้คำตอบในฟอรัมเก่าและใหม่ดูขัดแย้งกัน เครื่องที่อัปเกรดในที่ยังอาจมีทั้งสองแบบ
เส้นทางเพี้ยนเมื่อเล่าต่อ %AppData% แปลงเป็น AppData\Roaming อยู่แล้ว ดังนั้นการเขียน %AppData%\Roaming\OpenVPN Connect\profiles จะขยายเป็น AppData\Roaming\Roaming และชี้ไปที่ไหนก็ไม่รู้ ใช้ตัวแปรหรือเส้นทางตามจริง อย่าใช้ทั้งสองผสมกัน
ลบผ่านไคลเอนต์: เปิด Profiles ใช้ไอคอนดินสอ เลือก Delete การทำเช่นนี้จะลบทั้งบันทึกและสำเนาที่เก็บไว้พร้อมกัน การลบโฟลเดอร์ขณะ Connect ทำงานอยู่อาจทิ้งบันทึกที่ไม่เปิดอะไรเลย ซึ่งเป็นข้อร้องเรียน "profile still shows up" ในอีกรูปแบบหนึ่ง
สำเนาที่นำเข้าคือสำเนาที่ไคลเอนต์เรียกใช้ การแก้ไข .ovpn ที่เหลืออยู่ใน Downloads ไม่เปลี่ยนอะไร เพราะ Connect อ่านสำเนาที่เก็บไว้ของตัวเอง หากต้องการเปลี่ยน remote หรือ cipher ให้แก้โปรไฟล์ภายในไคลเอนต์ หรือ แก้ไขไฟล์แล้วนำเข้าใหม่
ทำไมโปรไฟล์ที่ลบแล้วจึงกลับมา
สาเหตุปกติคือการติดตั้งไคลเอนต์ตระกูลเดียวกันสองชุด GUI สำหรับผู้ใช้คนเดียวและ GUI สำหรับผู้ใช้ทุกคนมีไดเรกทอรีการกำหนดค่าแยกกัน ดังนั้นการลบจากชุดหนึ่งจึงปล่อยอีกชุดไว้สมบูรณ์ และถาดยังแสดงชื่ออยู่ Programs and Features คือที่ที่คุณยืนยันว่าทั้งสองติดตั้งอยู่หรือไม่
สาเหตุที่สองคือโปรไฟล์ที่ไม่เคยอยู่ในโฟลเดอร์ที่คุณตรวจสอบ การเปิด .ovpn หนึ่งครั้งจากแชร์เครือข่ายหรือโฟลเดอร์ Downloads อาจคัดลอกไปยังไดเรกทอรีการกำหนดค่าสำหรับผู้ใช้คนเดียว และโปรไฟล์ Connect ที่นำเข้าจะมีอยู่เฉพาะใน AppData ก่อนแก้ไขอะไร ให้ค้นหาชื่อไฟล์ใต้ %USERPROFILE% และ %APPDATA% โฟลเดอร์โปรไฟล์มักเก็บคีย์ส่วนตัวไว้ข้าง .ovpn ดังนั้นอย่าวางโฟลเดอร์ลงในตั๋วหรือแชทเพื่อพิสูจน์ว่าคุณลบโปรไฟล์ไหน ให้ระบุชื่อไฟล์และเวลาที่แน่นอนแทน
บิลด์ GUI เก่ายังเก็บการตั้งค่าไคลเอนต์ไว้ในรีจิสทรีด้วย หากถาดยังแสดงชื่อหลังจากไฟล์หายไปและมีการติดตั้งเพียงชุดเดียว ให้รีสตาร์ตไคลเอนต์หนึ่งครั้งและตรวจสอบไดเรกทอรีการกำหนดค่าของทางลัดอีกครั้งก่อนจะคิดแตะคีย์รีจิสทรี
สองอุโมงค์พร้อมกัน: อะแดปเตอร์ก่อน แล้วจึงเป็นเส้นทาง
GUI เก็บการเชื่อมต่อได้หลายรายการ หนึ่งรายการต่ออะแดปเตอร์เสมือน เพิ่มอะแดปเตอร์จากรายการเมนู Start ที่ติดตั้ง TAP-Windows6 แล้วยืนยันจำนวนใน Network Connections เพราะสองอุโมงค์พร้อมกันต้องใช้อะแดปเตอร์สองตัว และทั้งคู่ควรได้รับที่อยู่โดยอัตโนมัติ การกำหนดเส้นทางคือขีดจำกัดที่ยากกว่า โปรไฟล์สองอันที่เปลี่ยนเส้นทางทราฟฟิกทั้งหมดจะแย่งเส้นทางเริ่มต้น และมีเพียงอันเดียวที่เป็นเจ้าของได้ คุณจึงพบความล้มเหลวเป็นระยะแทนที่จะได้อุโมงค์ที่ทำงานสองอัน เก็บอุโมงค์เต็มหนึ่งอันและให้อันที่สองเป็นโปรไฟล์ split-tunnel ที่ผลักเฉพาะซับเน็ตของตัวเอง
ช่วงส่วนตัวที่ทับซ้อนกันแก้ไม่ได้ด้วยการเพิ่มอะแดปเตอร์ หากเซิร์ฟเวอร์ทั้งสองแจก 10.8.0.0/24 อุโมงค์ที่สองจะชนกันในระดับที่อยู่ และการกำหนดค่าไคลเอนต์เท่าไรก็แยกออกจากกันไม่ได้
ชื่ออะแดปเตอร์บอกว่าคุณกำลังดูอะไรอยู่ Get-NetAdapter ใน PowerShell แสดงรายชื่ออะแดปเตอร์ TAP-Windows และอะแดปเตอร์ Wintun ตามชื่อ ซึ่งเร็วกว่าการนับไอคอนใน Network Connections เมื่ออุโมงค์ขึ้นบนอะแดปเตอร์ผิดตัว
การเริ่มโปรไฟล์ที่ตั้งชื่อจากสคริปต์
GUI รับชื่อโปรไฟล์โดยอิงกับไดเรกทอรีการกำหนดค่าของตัวเอง ตัวเรียกใช้จึงมีลักษณะเช่นนี้: "C:\Program Files\OpenVPN\bin\openvpn-gui.exe" --connect "myvpn.ovpn" เส้นทางแบบเต็ม หรือโปรเซสที่เริ่มในไดเรกทอรีทำงานอื่น จะล้มเหลวอย่างเงียบ ๆ ซึ่งเป็นเหตุให้ทางลัดที่ใช้ดับเบิลคลิกได้พังภายใต้ Task Scheduler
ตั้งไดเรกทอรีทำงานแทนการหวังเอาเอง ในตัวเรียกใช้ AutoHotkey นั่นคือ SetWorkingDir, C:\Program Files\OpenVPN\config ใน Task Scheduler นั่นคือช่อง Start in ของการกระทำ การส่ง --config_dir ด้วยเส้นทางเดียวกันทำให้ตัวเรียกใช้ไม่ขึ้นกับทั้งสองอย่าง
ก่อนจบ ให้ส่งออกโปรไฟล์ บันทึกอะแดปเตอร์ ซับเน็ต และซับเน็ตที่มันกำหนดเส้นทาง และเก็บใบรับรองของลูกค้าแต่ละรายไว้ในโฟลเดอร์ย่อยของตัวเอง จากนั้นยืนยันว่าโฟลเดอร์เป็นของไคลเอนต์ที่คุณเรียกใช้จริง และลบผ่านไคลเอนต์เมื่อไคลเอนต์นั้นมีคลังนำเข้า ลำดับเช่นนี้เองที่ป้องกันไม่ให้โปรไฟล์เดิมปรากฏขึ้นอีกหลังรีบูตครั้งถัดไป