ข้ามไปยังเนื้อหา

วิธีเชื่อมต่อ VPN ผ่าน Terminal บน Linux

คู่มือสาย Terminal สำหรับ VPN บน Linux ตรวจอะไรก่อน เชื่อมได้สามแบบ กับดักการหลุดจาก SSH การคงอุโมงค์ไว้ด้วย systemd และวิธีพิสูจน์ว่าใช้งานได้

อ่าน 12 นาทีอัปเดตเมื่อ 15 ต.ค. 2569โดย XPASS Editorial Team

วิธีเชื่อมต่อ VPN ผ่าน Terminal บน Linux

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

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

เมื่อบรรทัดคำสั่งคือเครื่องมือที่ใช่

เลือก CLI เมื่อข้อใดข้อหนึ่งเป็นจริง

  • เครื่องไม่มีเดสก์ท็อป เช่น VPS, Raspberry Pi ในตู้ หรือเซิร์ฟเวอร์ที่บ้านแบบไม่มีจอ
  • คุณเชื่อมต่อผ่าน SSH ต้องการอุโมงค์สำหรับงานหนึ่งอย่างและออกให้สะอาดหลังเสร็จ
  • ต้องการเขียนสคริปต์ เช่น งานสำรองข้อมูลที่รันผ่านอุโมงค์เฉพาะเมื่ออุโมงค์มีอยู่ หรือ cron ที่คอยตรวจ
  • ต้องการเห็นทุกอย่าง ผลลัพธ์ในเทอร์มินัลแสดงทุกขั้น ดีกว่าเมนูที่บอกแค่ "ล้มเหลว"

เลือกเครื่องมือกราฟิกเมื่อคุณใช้โน้ตบุ๊กที่เปลี่ยน Wi-Fi ทั้งวัน NetworkManager ตอบสนองต่อการเปลี่ยนแปลงนั้น แต่คำสั่งเปล่า ๆ ไม่ทำ บทความเรื่อง การเพิ่ม VPN ใน NetworkManager ครอบคลุมด้านนั้น

ตรวจก่อนเชื่อมต่อ ห้าข้อ

ใช้เวลาสามสิบวินาทีตรงนี้ช่วยป้องกันปัญหาส่วนใหญ่

  1. ใครเป็นเจ้าของไฟล์ รัน ls -l wg0.conf หรือไฟล์ .ovpn ควรเป็นของคุณหรือ root และคนอื่นอ่านไม่ได้ เพราะอาจมีคีย์ส่วนตัว chmod 600 file แก้ได้
  2. มีอุโมงค์เปิดอยู่แล้วหรือไม่ ip link show type wireguard และ ip addr | grep tun ช่วยเผยของที่ค้าง อุโมงค์สองตัวชื่อเดียวกันจะชนกัน
  3. เส้นทางตอนนี้เป็นอย่างไร บันทึกผลของ ip route และ ip -6 route คุณจะนำมาเทียบภายหลังและใช้กู้คืนหากมีอะไรผิดพลาด
  4. DNS หน้าตาอย่างไร resolvectl status แสดงเซิร์ฟเวอร์ก่อนที่อุโมงค์จะเปลี่ยนอะไร
  5. มีทางเข้าที่สองไหม ถ้าอยู่บน SSH ให้แน่ใจว่าเข้าเครื่องทางอื่นได้ เช่นคอนโซลหรือเซสชันนอกแบนด์ ก่อนเริ่มอุโมงค์เต็มรูปแบบ

จดที่อยู่สาธารณะของคุณจากหน้าตรวจ IP ก่อนเชื่อมต่อ คุณต้องมีค่า "ก่อน" เพื่อเห็นความต่าง

สามวิธีเชื่อมต่อจากเทอร์มินัล

เครื่องมือ คำสั่ง เหมาะกับ ข้อควรระวัง
wg-quick sudo wg-quick up wg0 ไฟล์ WireGuard คำสั่งเดียวตั้งที่อยู่ เส้นทาง และ DNS ต้องมี resolver hook ให้บรรทัด DNS มีผล
openvpn sudo openvpn --config work.ovpn ไฟล์ .ovpn รันเบื้องหน้าและแสดงความคืบหน้า ครองเทอร์มินัลไว้ เว้นแต่รันเป็นบริการหรือ daemon
nmcli nmcli connection up work โปรไฟล์ที่เก็บใน NetworkManager แล้ว โปรไฟล์ต้องมีอยู่ก่อน

เครื่องมือเหล่านี้ไม่ควรปนกัน อย่าเริ่ม wg-quick up wg0 ในขณะที่ NetworkManager ดูแลอินเทอร์เฟซชื่อ wg0 อยู่แล้ว ให้เลือกเจ้าของหนึ่งราย หากอยากเข้าใจข้อแลกเปลี่ยนของสองโปรโตคอลเบื้องหลัง อ่าน WireGuard กับ OpenVPN และ OpenVPN อธิบาย

เปิดอุโมงค์ทีละขั้น

WireGuard ด้วย wg-quick วางไฟล์ที่ /etc/wireguard/wg0.conf แล้ว

sudo wg-quick up wg0
sudo wg show
sudo wg-quick down wg0

ผลของ wg show แสดง peer, endpoint และเวลา "latest handshake" หากไม่มีบรรทัด handshake หลังครึ่งนาที แปลว่าเซิร์ฟเวอร์ไม่ตอบ ชื่ออินเทอร์เฟซมาจากชื่อไฟล์ ดังนั้น office.conf จะได้ office

OpenVPN เบื้องหน้า รันไคลเอนต์แล้วอ่านผลลัพธ์

sudo openvpn --config ~/work.ovpn

เมื่อสำเร็จ จะจบด้วยบรรทัดบอกว่าลำดับเริ่มต้นเสร็จสมบูรณ์ กด Ctrl+C เพื่อหยุด หากข้อมูลยืนยันตัวตนอยู่ในไฟล์ ให้เพิ่ม --auth-user-pass /path/to/auth.txt และให้เฉพาะ root อ่านไฟล์นั้นได้ หากต้องการรันเบื้องหลังให้เพิ่ม --daemon และ --log /var/log/openvpn-work.log แล้วอ่านล็อก

NetworkManager จากเชลล์ หากมีโปรไฟล์อยู่แล้ว nmcli connection up work และ nmcli connection down work ก็พอ และ nmcli -p connection show work พิมพ์โปรไฟล์ทั้งหมด

เคล็ดลับสำหรับการทดลอง เปิดเทอร์มินัลที่สองแล้วรัน watch -n 2 'ip route; echo; resolvectl status | head -20' คุณจะเห็นเส้นทางและ DNS เปลี่ยนทันทีที่อุโมงค์ขึ้น

กับดัก SSH อย่าเลื่อยกิ่งไม้ที่ตัวเองนั่งอยู่

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

วิธีหลีกเลี่ยง

  1. ยกเว้นที่อยู่ของคุณเอง ก่อนเชื่อมต่อ เพิ่มเส้นทางสำหรับที่อยู่ของไคลเอนต์ SSH ผ่านเกตเวย์เดิม เช่น sudo ip route add 203.0.113.10 via 192.0.2.1 dev eth0 แทนค่าด้วยของคุณเองจากผล ip route ที่บันทึกไว้
  2. ใช้อุโมงค์แคบ ตั้ง AllowedIPs เป็นเฉพาะซับเน็ตที่ต้องการแทน 0.0.0.0/0 เส้นทางหลักจะไม่ถูกแตะ
  3. ทดสอบด้วยตัวจับเวลา เริ่มอุโมงค์พร้อม dead-man switch คือ sudo wg-quick up wg0; sleep 120; sudo wg-quick down wg0 รันจากตัวมัลติเพล็กเซอร์ของเทอร์มินัล อุโมงค์จะลงเองหากคุณเสียเซสชัน
  4. มีคอนโซลสำรอง เซิร์ฟเวอร์คลาวด์และที่บ้านควรมีทางเข้าที่ไม่พึ่งเครือข่ายที่คุณกำลังเปลี่ยน

ช่วงที่อยู่ 192.0.2.0/24 และ 203.0.113.0/24 ข้างต้นสงวนไว้สำหรับเอกสาร จึงใช้เป็นตัวอย่างได้อย่างปลอดภัย ให้ใช้ของคุณเอง

ให้ทำงานต่อหลังออกจากระบบ

อุโมงค์ที่เริ่มในเทอร์มินัลจะตายพร้อมเทอร์มินัล ใช้วิธีใดวิธีหนึ่งต่อไปนี้

  • systemd สำหรับ WireGuard sudo systemctl enable --now wg-quick@wg0 เริ่มทันทีและทุกครั้งที่บูต sudo systemctl status wg-quick@wg0 แสดงว่าทำงานอยู่ไหม ปิดด้วย sudo systemctl disable --now wg-quick@wg0
  • systemd สำหรับ OpenVPN ดิสโทรมักมียูนิตไคลเอนต์ที่อ่านไฟล์จากโฟลเดอร์ไคลเอนต์ ชื่อประมาณ openvpn-client@NAME วางไฟล์ตั้งค่าที่นั่นแล้วเปิดยูนิต ตำแหน่งที่แน่นอนขึ้นกับดิสโทร จึงควรดูหมายเหตุของแพ็กเกจ
  • tmux หรือ screen สำหรับทดสอบเร็ว ๆ รันคำสั่งเบื้องหน้าในเซสชันแล้ว detach เหมาะกับช่วงบ่ายหนึ่ง ไม่เหมาะกับสิ่งที่คุณพึ่งพา

หากบริการต้องเริ่มหลังเครือข่ายพร้อม ให้ตรวจว่ายูนิตรอ network-online target บนเครื่องที่บูตเร็วกว่า Wi-Fi อุโมงค์ที่เริ่มเร็วเกินไปจะล้มเหลวและค้างอยู่อย่างนั้น

พิสูจน์ว่าใช้งานได้

อย่าเชื่อความเงียบ ทำสี่ข้อตรวจนี้

ip route get 1.1.1.1
sudo wg show
resolvectl query example.org
curl -s https://example.org -o /dev/null -w "%{http_code}\n"
  1. ip route get แสดงว่าทราฟฟิกไปยังที่อยู่ภายนอกใช้อินเทอร์เฟซใด สำหรับอุโมงค์เต็มรูปแบบควรเป็นอินเทอร์เฟซ VPN
  2. wg show ควรรายงาน handshake ล่าสุดและตัวนับการส่งข้อมูลที่เพิ่มขึ้น
  3. resolvectl query แสดงว่าลิงก์ใดตอบการค้นหา DNS เหตุผลว่าทำไมสำคัญ อ่านได้ใน DNS ทำงานอย่างไร บนเว็บไซต์ Cloudflare Learning หากคำตอบมาจากลิงก์ Wi-Fi แปลว่าการค้นหาชื่อข้ามอุโมงค์ไป
  4. curl ยืนยันว่าทราฟฟิกเว็บปกติใช้ได้

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

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

ตัดการเชื่อมต่อและเก็บกวาด

การปิดควรทำให้เครื่องกลับมาเหมือนตอนเริ่ม

  1. หยุดอุโมงค์ sudo wg-quick down wg0 กด Ctrl+C สำหรับ OpenVPN เบื้องหน้า หรือ sudo systemctl stop สำหรับบริการ
  2. เทียบ ip route กับสำเนาที่บันทึกไว้ เส้นทางใดที่ยังค้างจากอุโมงค์ลบได้ด้วย sudo ip route del
  3. ตรวจ resolvectl status รายการ DNS ของอุโมงค์ควรหายจากลิงก์หลัก
  4. ลบเส้นทางชั่วคราวที่เพิ่มเพื่อ SSH
  5. ลบข้อมูลยืนยันตัวตนที่สร้างไว้ทดสอบ เช่นไฟล์ auth ในโฟลเดอร์บ้าน

หากแครชทิ้งอินเทอร์เฟซไว้ sudo ip link delete wg0 ลบออกได้

แก้ปัญหาตามข้อความที่เห็น

สิ่งที่เห็น ปกติหมายถึง ลองทำ
RTNETLINK answers: Operation not permitted ไม่ได้รันเป็น root เติม sudo
Cannot find device "wg0" อินเทอร์เฟซยังไม่ขึ้นหรือชื่อไม่ตรงกับไฟล์ ตรวจชื่อไฟล์ รัน ip link
Error: Unknown device type เคอร์เนลหรือเครื่องมือไม่มี WireGuard ติดตั้ง wireguard-tools ตรวจเคอร์เนล
TLS Error: TLS key negotiation failed แพ็กเก็ตไปไม่ถึงเซิร์ฟเวอร์ OpenVPN ตรวจที่อยู่ พอร์ต และนาฬิกา
ไม่มี handshake คีย์ผิด endpoint ผิด หรือพอร์ตถูกบล็อก ตรวจคีย์สาธารณะและ endpoint ลองเครือข่ายอื่น
เชื่อมต่อแล้วแต่ DNS ล้มเหลว บรรทัด DNS ถูกเมิน ตรวจ resolver hook ใช้ resolvectl status
เซสชันค้างหลังเชื่อมต่อ เส้นทางหลักย้าย รีบูตหรือเข้าทางคอนโซล ใช้คำแนะนำ SSH ข้างต้น

รายการตรวจที่กว้างกว่าใน VPN เชื่อมต่อไม่ได้ ก็ใช้ได้ที่นี่เช่นกัน

สรุป

การเชื่อมต่อจากเทอร์มินัล Linux สรุปเป็นขั้นตอนสั้น ๆ ตรวจก่อนเชื่อมและบันทึกเส้นทาง ใช้เครื่องมือเดียวเปิดอุโมงค์ ปกป้องเซสชัน SSH ก่อนเปลี่ยนเส้นทางหลัก รันอุโมงค์เป็นบริการหากต้องอยู่รอดหลังออกจากระบบ พิสูจน์ว่าใช้ได้ด้วยเส้นทาง handshake DNS และการตรวจ IP แล้วเก็บกวาดภายหลัง หากอยากใช้แอปเดสก์ท็อปสำเร็จรูป หน้าดาวน์โหลด และ หน้าราคา แสดงตัวเลือก

คำถามที่พบบ่อย

เชื่อมต่อ VPN บน Linux โดยไม่มีเดสก์ท็อปได้ไหม

ได้ บนเซิร์ฟเวอร์หรือระบบขั้นต่ำ คุณเปิดอุโมงค์ด้วย wg-quick โปรแกรม openvpn หรือ nmcli โดยใช้ไฟล์ตั้งค่า ไม่ต้องมีหน้าจอกราฟิก

ทำไม SSH ค้างทันทีที่ VPN เริ่มทำงาน

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

จะให้ VPN ทำงานต่อหลังปิดเทอร์มินัลได้อย่างไร

รันเป็นบริการ systemd เช่น wg-quick@wg0 หรือยูนิตไคลเอนต์ของ openvpn แทนการรันเบื้องหน้า ตัวมัลติเพล็กเซอร์ของเทอร์มินัลก็ใช้ทดสอบได้

ดูจากเทอร์มินัลอย่างไรว่าทราฟฟิกใช้อุโมงค์

ตรวจว่ามีอินเทอร์เฟซ เส้นทางหลักชี้ไปที่อุโมงค์ WireGuard รายงาน handshake ล่าสุด และหน้าตรวจ IP แสดงที่อยู่ของอุโมงค์แทนที่อยู่ปกติของคุณ

ใช้ VPN ผ่าน CLI ต้องเป็น root ไหม

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

เกี่ยวกับผู้เขียน

Bob Kanokphon Thongdee ผู้ก่อตั้ง XPASS VPN

Bob Kanokphon Thongdee

  • ผู้ก่อตั้ง XPASS VPN
  • ผู้ร่วมก่อตั้ง eSIMonline.asia
  • ประสบการณ์ด้านการตลาดออนไลน์มากกว่า 7 ปี
  • ผู้ก่อตั้ง Cojourney Visa และ Cojourney Travel

ต้องใช้ VPN ช่วงเดินทางหรือช่วงงานยุ่ง?

XPASS ขายแพ็กเกจแบบเติมเงินตามจำนวนวัน จ่ายครั้งเดียว ไม่มีการต่ออายุอัตโนมัติ

ดูแพ็กเกจ

อ่านต่อ

คู่มือตามอุปกรณ์

วิธีตั้งค่า VPN บน Linux

ทีละขั้นตอน: ดาวน์โหลดตัวติดตั้ง VPNclient สำหรับ Linux รันจากเทอร์มินัล ล็อกอินด้วยข้อมูลจาก My Pass แล้วเชื่อมต่อ

อ่าน 6 นาที

ความปลอดภัยของ VPN

WireGuard กับ OpenVPN ต่างกันอย่างไร

WireGuard และ OpenVPN สร้างอุโมงค์เข้ารหัสเหมือนกัน แต่ต่างกันที่การออกแบบ ความซับซ้อน และความยืดหยุ่น บทความนี้เปรียบเทียบให้เข้าใจง่าย

อ่าน 9 นาที

ความปลอดภัยของ VPN

OpenVPN คืออะไร? TCP กับ UDP ต่างกันอย่างไร

อธิบาย OpenVPN ตั้งแต่วิธีสร้างอุโมงค์ เหตุผลที่ TCP กับ UDP ให้ความรู้สึกต่างกัน อะไรทำให้การตั้งค่าปลอดภัย ไปจนถึงวิธีแก้ปัญหา

อ่าน 10 นาที

ความปลอดภัยของ VPN

วิธีรีวิว VPN ด้วยตัวเอง เช็กลิสต์ทดสอบที่ทำตามได้

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

อ่าน 9 นาที

แก้ปัญหา

VPN เชื่อมต่อไม่ได้ แก้ได้ทีละขั้น

ลำดับการตรวจที่ชัดเจนเมื่อ VPN เชื่อมต่อไม่ได้ ตั้งแต่สถานะพาส ข้อมูลล็อกอิน Wi-Fi และเน็ตมือถือ สิทธิ์ของแอป ไฟร์วอลล์ แอปที่ชนกัน ไปจนถึงข้อความผิดพลาด

อ่าน 8 นาที