คู่มือ
วิธีตั้งค่า VPN บน Linux
ไคลเอนต์ของผู้ให้บริการจากคลังแพ็กเกจของผู้ให้บริการเอง ทางเลือกอย่างไฟล์การกำหนดค่าที่ใช้เครื่องมือในระบบเอง รายละเอียด DNS ที่รั่วไหลบน Linux มากกว่าที่อื่น และการตรวจสอบจากเทอร์มินัล เขียนโดยอ้างอิง Ubuntu 26.04 LTS และ NetworkManager
ก่อนเริ่มต้น
คู่มือนี้ไม่ได้เลือกให้คุณ
ทุกขั้นตอนด้านล่างเหมือนกันไม่ว่าคุณจะใช้ผู้ให้บริการรายใด จึงไม่มีการระบุชื่อผู้ให้บริการไว้ที่นี่ การเลือกเป็นงานอีกส่วนหนึ่ง ซึ่งทำในทำเนียบ โดยตัดสินจากคะแนนที่เผยแพร่ ไม่ใช่จากหน้าดาวน์โหลด
ติดตั้งไคลเอนต์ จากคลังแพ็กเกจของผู้ให้บริการเอง โดยใช้คีย์ลงนามจากคำแนะนำของผู้ให้บริการเอง อย่าวางคำสั่งติดตั้งบรรทัดเดียวจากฟอรัมหรือบล็อกลงในเทอร์มินัลเด็ดขาด คำสั่งนั้นทำงานในสิทธิ์ root และคุณไม่รู้เลยว่ามันดึงอะไรมา แพ็กเกจจากคลังแพ็กเกจที่ลงนามแล้วสามารถตรวจสอบได้ แต่สคริปต์ที่ส่งต่อเข้า shell ตรวจสอบไม่ได้
ติดตั้งไคลเอนต์
บน Linux มีอยู่สองแนวทาง และทั้งสองแนวทางก็ตรงไปตรงมา ไคลเอนต์ของผู้ให้บริการเองเป็นแนวทางแรก ซึ่งมีคิลสวิตช์ ตัวเลือกเซิร์ฟเวอร์ และการจัดการ DNS มาให้ ส่วนไฟล์การกำหนดค่าที่ใช้เครื่องมือในระบบเองเป็นแนวทางที่สอง และส่วนท้ายของคู่มือนี้จะบอกว่าต้องแลกกับอะไร
- เข้าสู่ระบบเว็บไซต์ของผู้ให้บริการ และเปิดคำแนะนำสำหรับ Linux จากพื้นที่บัญชี คำแนะนำดังกล่าวจะระบุคลังแพ็กเกจ คีย์ และแพ็กเกจ ให้ทำตามเฉพาะสิ่งเหล่านั้น
- เพิ่มคลังแพ็กเกจและคีย์ของคลัง จากนั้นติดตั้งแพ็กเกจ ด้วยตัวจัดการแพ็กเกจของดิสทริบิวชัน คีย์คือสิ่งที่ทำให้ตัวจัดการแพ็กเกจปฏิเสธแพ็กเกจที่ถูกแก้ไขได้ ดังนั้นคลังแพ็กเกจที่เพิ่มโดยไม่มีคีย์จึงเป็นคลังที่คุณต้องยอมรับโดยไว้วางใจ
- เปิดใช้บริการของไคลเอนต์ เพื่อให้เริ่มทำงานเมื่อบูต ไคลเอนต์มักประกอบด้วยดีมอนที่ทำงานในสิทธิ์ root และแอปเดสก์ท็อปที่สื่อสารกับดีมอนนั้น ดีมอนเป็นผู้ดูแลอุโมงค์ และคิลสวิตช์ที่ควรทำงานตั้งแต่บูตจำเป็นต้องให้ดีมอนทำงานตั้งแต่บูตด้วย
- เข้าสู่ระบบไคลเอนต์ — จากแอปหรือจากบรรทัดคำสั่งด้วยโทเค็นที่พื้นที่บัญชีมอบให้ — แล้วตั้งชื่ออุปกรณ์ที่ไม่สามารถระบุตัวคุณได้
- ยังไม่ต้องเชื่อมต่อ เปิดการตั้งค่าก่อน การตั้งค่าสองรายการจากสามรายการด้านล่างมักปิดไว้เป็นค่าเริ่มต้นในไคลเอนต์ส่วนใหญ่
การตั้งค่าสามรายการที่ควรตรวจสอบ
เมนูของไคลเอนต์แตกต่างกัน แต่การตั้งค่าไม่แตกต่างกัน หากไม่คุ้นกับชื่อ การตั้งค่าทั้งสามรายการมีรายการอธิบายอยู่ในอภิธานศัพท์
คิลสวิตช์
บล็อกทราฟฟิกทั้งหมดเมื่ออุโมงค์หลุด แทนที่จะปล่อยให้การเชื่อมต่อกลับไปใช้เครือข่ายปกติโดยเงียบ ๆ บน Linux ฟังก์ชันนี้คือชุดกฎไฟร์วอลล์ที่ไคลเอนต์เขียนขึ้น โดยจะทิ้งทุกอย่างยกเว้นอินเทอร์เฟซของอุโมงค์และปลายทางของอุโมงค์เอง เปิดใช้ฟังก์ชันนี้ และเลือกแบบทำงานตลอดเวลาหรือแบบ lockdown หากไคลเอนต์มีให้เลือก เพื่อให้กฎมีผลตั้งแต่บูต ไม่ใช่เฉพาะขณะเชื่อมต่อ รายละเอียดหน้าที่ของสวิตช์นี้อยู่ที่หน้าของคิลสวิตช์
DNS ภายในอุโมงค์
การค้นหาชื่ออาจออกจากเครื่องนอกอุโมงค์ แม้ทุกอย่างอื่นจะอยู่ในอุโมงค์ และบน Linux นี่คือการรั่วไหลที่เกิดขึ้นบ่อยที่สุด เพราะตัวแก้ไขชื่อเป็นส่วนที่เปลี่ยนแปลงได้ บน Ubuntu ส่วนนั้นคือ systemd-resolved โดยแต่ละอินเทอร์เฟซมีตัวแก้ไขชื่อของตัวเอง และตัวที่มีเส้นทางเริ่มต้นสำหรับ DNS จะตอบทุกอย่างที่ไม่ตรงกับโดเมนที่เฉพาะเจาะจงกว่า ไคลเอนต์ควรชี้เส้นทางเริ่มต้นนั้นไปยังตัวแก้ไขชื่อของผู้ให้บริการผ่านอินเทอร์เฟซของอุโมงค์ ตั้งค่า DNS ของไคลเอนต์ให้เป็นของผู้ให้บริการเอง ไม่ใช่ของบุคคลที่สาม เพราะบุคคลที่สองที่เห็นเฉพาะการค้นหาชื่อก็คือผู้ที่เพิ่มขึ้นมาอีกหนึ่งราย รายละเอียดการเกิดการรั่วไหลอยู่ที่หน้า DNS รั่วไหล
โปรโตคอล
ใช้ค่าเริ่มต้นสมัยใหม่ต่อไป เว้นแต่มีบางอย่างทำงานผิดพลาด — หน้าโปรโตคอล ระบุว่าโปรโตคอลใดเป็นปัจจุบันและโปรโตคอลใดเป็นรุ่นเก่า หากไคลเอนต์มีตัวเลือกเก่าไว้แก้ปัญหาการเชื่อมต่อ นั่นคือการแลกเปลี่ยนที่ต้องตัดสินใจอย่างรู้ตัวแล้วจึงยกเลิกในภายหลัง ทำเนียบระบุ โปรโตคอลที่อ่อนที่สุดซึ่งผู้ให้บริการยังคงเสนอ และการเลือกโปรโตคอลนั้นด้วยตนเองก็คือการเลือกตามเครื่องหมายนั้นให้ตัวคุณเอง
ยืนยันว่าทำงานจริง
เชื่อมต่อแล้วตรวจสอบ อย่าคาดเดา การตรวจสอบจากเทอร์มินัลมีสามรายการ ตามลำดับนี้:
- ที่อยู่ของคุณเปลี่ยนแล้ว ใช้
curlเรียกบริการใดก็ได้ที่ตอบคำถามว่า “IP ของฉันคืออะไร” หรือเปิดบริการดังกล่าวในเบราว์เซอร์ แล้วตรวจสอบว่าประเทศตรงกับทางออกที่คุณเลือกip route getไปยังที่อยู่สาธารณะควรระบุอินเทอร์เฟซของอุโมงค์ ไม่ใช่อินเทอร์เฟซ Wi-Fi หรือ Ethernet - การค้นหาชื่ออยู่ภายในอุโมงค์ ใช้
resolvectl status: อินเทอร์เฟซของอุโมงค์ควรเป็นผู้ให้บริการตัวแก้ไขชื่อและเส้นทางเริ่มต้นของ DNS ส่วนตัวแก้ไขชื่อของอินเทอร์เฟซกายภาพควรไม่ได้ถูกใช้งาน การทดสอบ DNS รั่วไหลในเบราว์เซอร์เป็นการตรวจสอบอีกทางหนึ่ง และหากพบสิ่งใดที่เป็นของผู้ให้บริการอินเทอร์เน็ตของคุณ ก็หมายความว่าการตั้งค่า DNS ยังไม่มีผล - คิลสวิตช์ทำงานตามที่ระบุ ขณะมีการดาวน์โหลด ให้หยุดบริการของไคลเอนต์ด้วย
systemctl stopหรือทำให้อินเทอร์เฟซของอุโมงค์หยุดทำงานด้วยip link set … downเพื่อให้อุโมงค์หลุดโดยไม่ได้สั่งผ่านไคลเอนต์ การถ่ายโอนข้อมูลควรหยุดทันที หากยังดำเนินต่อ สวิตช์นั้นก็มีไว้ประดับเท่านั้น
ชุดการทดสอบที่ยาวกว่านี้ รวมถึงสิ่งที่แต่ละการทดสอบแสดงได้และแสดงไม่ได้ อยู่ในคู่มือแยกของเรื่องนี้
การตรวจสอบเหล่านี้ยืนยันอะไร
+ทราฟฟิกของคุณออกผ่านเซิร์ฟเวอร์ทางออกในประเทศที่คุณเลือก
+ตัวแก้ไขชื่อที่ตอบการค้นหาของคุณเป็นของผู้ให้บริการและอยู่ภายในอุโมงค์
+เมื่ออุโมงค์หลุด การเชื่อมต่อล้มเหลวแบบปิด แทนที่จะกลับไปใช้เครือข่ายปกติโดยเงียบ ๆ
สิ่งที่การตรวจสอบเหล่านี้ไม่ได้ยืนยัน
−ไม่ได้บอกอะไรเกี่ยวกับสิ่งที่ผู้ให้บริการเก็บไว้ — นั่นเป็นคำถามเกี่ยวกับเอกสาร ซึ่งมีคำตอบอยู่ในหน้าการเก็บข้อมูล
−ไม่ได้ทำให้คุณเป็นนิรนาม เบราว์เซอร์และการเข้าสู่ระบบของคุณยังเหมือนเดิม ดูสิ่งที่ VPN ไม่ได้ปกป้องคุณจาก
−การทดสอบที่ผ่านในวันนี้ไม่ใช่คำมั่นสัญญาสำหรับการอัปเดตแพ็กเกจครั้งถัดไปหรือเคอร์เนลรุ่นถัดไป
แนวทางใช้ไฟล์การกำหนดค่า และสิ่งที่ต้องแลก
ผู้ให้บริการส่วนใหญ่เผยแพร่ไฟล์การกำหนดค่าสำหรับโปรโตคอลทั่วไปสองรายการจากพื้นที่บัญชี ไฟล์ WireGuard นำเข้า NetworkManager ได้จากตัวแก้ไขการเชื่อมต่อหรือด้วย nmcli connection import และทำงานได้ดีเช่นกันภายใต้ wg-quick ส่วนไฟล์ OpenVPN นำเข้าในลักษณะเดียวกันโดยใช้ปลั๊กอิน OpenVPN คุณจะได้อุโมงค์ ปุ่มสลับอินเทอร์เฟซของระบบเอง และไม่มีสิ่งใดนอกเหนือจากที่ผู้ให้บริการใส่ไว้ในไฟล์
สิ่งที่คุณเสียไปคือส่วนที่เหลือของไคลเอนต์ ไม่มีคิลสวิตช์ เว้นแต่คุณจะเขียนกฎไฟร์วอลล์เอง ไฟล์ที่นำเข้าใน NetworkManager แล้วหลุดจะส่งทราฟฟิกกลับไปยังเครือข่ายปกติทันที ไม่มีการจัดการ DNS นอกเหนือจากบรรทัด DNS ในไฟล์ และไฟล์ที่ไม่มีบรรทัดดังกล่าวก็คือสาเหตุของการรั่วไหลในคำตอบแรกเมื่อแก้ไขปัญหา ไม่มีตัวเลือกเซิร์ฟเวอร์ แต่ละไฟล์คือทางออกหนึ่งแห่ง และการเปลี่ยนทางออกหมายถึงต้องใช้ไฟล์อื่น สร้างไฟล์จากพื้นที่บัญชีและเก็บไว้เป็นส่วนตัว ไฟล์ WireGuard มีคีย์ส่วนตัวซึ่งเป็นตัวตนของคุณต่อผู้ให้บริการ
แนวทางนี้เหมาะกับเซิร์ฟเวอร์ เครื่องที่ไม่มีหน้าจอ หรือดิสทริบิวชันที่ไคลเอนต์ไม่รองรับ สำหรับแล็ปท็อป ให้เลือกใช้ไคลเอนต์ เพราะสวิตช์ที่ไคลเอนต์มีให้คือสิ่งที่ไฟล์การกำหนดค่าไม่สามารถให้ได้
เมื่อใช้งานไม่ได้
อุโมงค์ทำงานอยู่ แต่ DNS ยังคงไปยังผู้ให้บริการอินเทอร์เน็ตของฉัน
นี่คือการรั่วไหลแบบคลาสสิกบน Linux ไฟล์การกำหนดค่าที่ไม่ได้ตั้งค่า DNS จะทำให้ systemd-resolved ใช้ตัวแก้ไขชื่อที่เครือข่ายมอบให้ ซึ่งอยู่นอกอุโมงค์ เรียกใช้ resolvectl status: อินเทอร์เฟซของอุโมงค์ควรแสดงตัวแก้ไขชื่อของผู้ให้บริการและมีเส้นทางเริ่มต้นสำหรับ DNS โดยทำเครื่องหมายด้วยเครื่องหมายบวก
เพิ่มบรรทัด DNS ลงในการกำหนดค่า หรือตั้งค่า DNS ในการเชื่อมต่อของ NetworkManager แล้วเชื่อมต่อใหม่ ไคลเอนต์ของผู้ให้บริการเองจะตั้งค่านี้ให้โดยอัตโนมัติ ซึ่งเป็นเหตุผลหนึ่งที่ควรเลือกใช้ไคลเอนต์
ทุกอย่างหยุดทำงานเมื่ออุโมงค์หลุด และนั่นน่ารำคาญ
นั่นคือคิลสวิตช์ที่กำลังทำหน้าที่ของมัน อุโมงค์ที่หลุดคือการเชื่อมต่อที่ตายแล้ว ไม่ใช่การกลับไปใช้เครือข่ายเปล่าโดยเงียบ ๆ ให้เชื่อมต่อใหม่แทนการปิดสวิตช์
หากหลุดบ่อยในเครือข่ายหนึ่งแต่แทบไม่หลุดในที่อื่น ให้เปลี่ยนโปรโตคอลหนึ่งครั้งและลองใช้ทางออกที่ใกล้กว่า หากไม่มีโปรโตคอลใดทำงานได้บนเครือข่ายนั้น เครือข่ายกำลังบล็อกทราฟฟิก VPN และคู่มือนี้ก็จบลงตรงนั้น
ไคลเอนต์ขอ sudo หรือรหัสผ่านทุกครั้ง
การสร้างอินเทอร์เฟซเครือข่ายเป็นการดำเนินการที่ต้องใช้สิทธิ์ และไคลเอนต์ที่ไม่ได้ติดตั้งบริการเบื้องหลังจะต้องขอสิทธิ์ทุกครั้ง ไคลเอนต์ส่วนใหญ่ติดตั้งบริการดังกล่าว ซึ่งประกอบด้วยดีมอนที่ทำงานในสิทธิ์ root และแอปเดสก์ท็อปที่สื่อสารกับดีมอนนั้น การแจ้งเตือนซ้ำจึงหมายความว่าบริการไม่ได้ทำงานหรือไม่ได้เปิดใช้
ตรวจสอบด้วย systemctl status และชื่อบริการจากคำแนะนำของผู้ให้บริการ แล้วเปิดใช้บริการเพื่อให้เริ่มทำงานเมื่อบูต
ที่อยู่ IPv6 ปรากฏในหน้าทดสอบ
อุโมงค์รองรับ IPv4 แต่เครื่องยังมีเส้นทาง IPv6 อยู่นอกอุโมงค์ ดังนั้นสิ่งใดก็ตามที่เลือกใช้ IPv6 จะวิ่งอ้อม VPN ผู้ให้บริการที่ไม่ส่ง IPv6 ผ่านอุโมงค์ควรปิด IPv6 บนอินเทอร์เฟซ ไคลเอนต์ที่ดีกว่าจะทำสิ่งนี้ให้
หากคุณสร้างการเชื่อมต่อจากไฟล์ ให้ปิด IPv6 ในการเชื่อมต่อของ NetworkManager หรือปิดด้วย sysctl แล้วทดสอบอีกครั้ง อุโมงค์ที่เปิดให้ตระกูลที่อยู่ที่สองใช้งานได้ก็เป็นอุโมงค์เพียงครึ่งเดียว
ขั้นตอนเดียวกัน เครื่องอื่น
แพลตฟอร์มที่เหลือ
ทุกแพลตฟอร์มมีคู่มือของตัวเอง แทนที่จะเป็นแท็บในคู่มือนี้ ขั้นตอนต่างกันทันทีที่ตัวติดตั้งเปิดขึ้นมา และหน้าเดียวที่ตอบสามแพลตฟอร์มพร้อมกันก็จะตอบไม่ได้ดีสักแพลตฟอร์มเดียว