คู่มือที่เกี่ยวข้อง
ให้เซิร์ฟเวอร์ Linux และเครื่องมือบรรทัดคำสั่งผ่านเส้นทาง
อัปเดต
บน Linux มีสองทาง เลือกตามความต้องการ ถ้าจะให้ทั้งเครื่องผ่านเส้นทาง (ดึงอิมเมจ Docker บริการที่ต้องเข้าต่างประเทศ เครื่องที่ไม่มีคนเฝ้า) ใช้ OpenVPN ไฟล์ตั้งค่าหนึ่งไฟล์ใน /etc/openvpn/client/ เปิดเองตอนบูต ถ้าจะให้แค่ไม่กี่คำสั่งผ่าน (git, pip, npm, curl) ใช้ Web Proxy ใส่ที่อยู่พร็อกซีในตัวแปร http_proxy แล้วไม่ต้องเปลี่ยนอะไรอื่น Linux เดสก์ท็อปยังนำเข้าผ่านตัวจัดการเครือข่ายได้ด้วย บทความนี้อธิบายทั้งสามทาง ไฟล์ข้อมูลล็อกอิน และคำสั่งสำหรับตรวจสอบ
ทางที่หนึ่ง: ให้ทั้งเครื่องผ่านเส้นทาง (OpenVPN)
- ติดตั้งแอป Debian/Ubuntu:
sudo apt install openvpnFedora:sudo dnf install openvpnArch:sudo pacman -S openvpn - ล็อกอินเข้าเว็บแล้วดาวน์โหลดไฟล์ .ovpn ของภูมิภาคที่ต้องการจากหน้า OpenVPN ไฟล์ตั้งค่าสำหรับ Linux ไม่ได้ฝังข้อมูลล็อกอินไว้ (ตัวจัดการเครือข่ายไม่รับไฟล์ที่ฝังไว้) จึงต้องสร้างไฟล์ข้อมูลล็อกอินเอง มีสองบรรทัด คืออีเมลที่ใช้กับเว็บ แล้วตามด้วยรหัสผ่าน จากนั้นจำกัดสิทธิ์ให้มีแค่คุณอ่านได้:
chmod 600 <credentials-file> - คัดลอกไฟล์ .ovpn ไปไว้ที่ /etc/openvpn/client/<ภูมิภาค>.conf แล้วใส่พาธของไฟล์ข้อมูลล็อกอินต่อท้าย auth-user-pass ในไฟล์นั้น
- เปิดใช้งานและสั่งเริ่ม:
sudo systemctl enable --now openvpn-client@<region>ดูสถานะ:systemctl status openvpn-client@<region>ตรวจขาออก ควรขึ้นภูมิภาคที่คุณเลือก:curl -s https://ipinfo.io/country - ถ้าจะใช้ภูมิภาคอื่น ให้ดาวน์โหลดไฟล์ตั้งค่าอีกไฟล์แล้วเปิดใช้อีก unit หนึ่ง และรันทีละตัวเท่านั้น
ทางที่สอง: ให้แค่เครื่องมือบรรทัดคำสั่งผ่านเส้นทาง (Web Proxy)
เอาที่อยู่พร็อกซีจากหน้า Web Proxy ของเว็บนี้ และข้อมูลล็อกอินใส่ในตัวแปรสภาพแวดล้อมได้เลย (อักขระพิเศษในรหัสผ่านต้องเข้ารหัสแบบ URL): export https_proxy=https://user:password@proxy-address export http_proxy=$https_proxy จากนั้น curl, wget, git, pip และ npm ในเชลล์นั้นจะผ่านเส้นทาง และไม่กระทบอย่างอื่น
Docker daemon ไม่อ่านตัวแปรของเชลล์ ให้ใส่บรรทัด Environment= ใน /etc/systemd/system/docker.service.d/proxy.conf แล้วรีสตาร์ต docker ส่วน apt ให้ตั้ง Acquire::https::Proxy ใน /etc/apt/apt.conf.d/proxy.conf
ทางนี้ไม่มีการเชื่อมต่อที่จะหลุดโดยการออกแบบ ไม่ต้องใช้ root และไม่เปลี่ยนเส้นทางเครือข่าย เหมาะกับเซิร์ฟเวอร์ของบริษัท และการเร่งความเร็วดึงไฟล์อย่างเดียว ครอบคลุมเฉพาะโปรแกรมที่อ่านตัวแปรพร็อกซี
ทางที่สาม: Linux เดสก์ท็อปผ่านตัวจัดการเครือข่าย
- ติดตั้ง network-manager-openvpn-gnome (คลิกเดียวในหน้า OpenVPN ของเว็บนี้ จะเปิดศูนย์ซอฟต์แวร์ให้)
- การตั้งค่า (Settings) → เครือข่าย (Network) → VPN → “+” → นำเข้าจากไฟล์ (Import from file) เลือกไฟล์ .ovpn กรอกอีเมลที่ใช้กับเว็บและรหัสผ่าน แล้วบันทึก
- เปิดปิด VPN จากแถบด้านบนหรือถาด ถ้าอยากให้เชื่อมต่อตอนบูต ให้ติ๊ก “Automatically connect to VPN” (เชื่อมต่อ VPN อัตโนมัติ) ในการตั้งค่าของการเชื่อมต่อแบบสายหรือไร้สาย
ตรวจสอบและแก้ปัญหา
- ขาออก ค่า country ในผลลัพธ์ควรเป็นภูมิภาคที่คุณเลือก:
curl -s https://ipinfo.io - DNS อินเทอร์เฟซ VPN ควรแสดง DNS ที่เส้นทางส่งมาให้:
resolvectl statusถ้ารั่ว ให้เพิ่ม dhcp-option DNS ในไฟล์ตั้งค่า หรือใช้สคริปต์ update-systemd-resolved - AUTH_FAILED: ไฟล์ข้อมูลล็อกอินผิดหรือบัญชีหมดอายุ ถ้าเปลี่ยนรหัสผ่านแล้ว ให้แก้ไฟล์ด้วย
- TLS handshake หมดเวลา: UDP ไปยังเซิร์ฟเวอร์ผ่านไม่ได้ ให้เปลี่ยนภูมิภาคหรือเครือข่าย ถ้าเป็นคลาวด์เซิร์ฟเวอร์ ให้อนุญาต UDP ขาออกใน security group
- เซิร์ฟเวอร์ในจีนที่ต้องใช้มิเรอร์จีนแบบวิ่งตรง: พอเชื่อมต่อแล้วทุกอย่างจะออกผ่านเส้นทาง ให้ชี้ apt / pip / npm ไปที่มิเรอร์ในจีน หรือใช้ทางที่สองให้แค่บางคำสั่งผ่านเส้นทาง
สิ่งที่ควรรู้
- เครื่อง Linux นับเป็นหนึ่งอุปกรณ์ในโควตาอุปกรณ์ออนไลน์ของแพ็กเกจ (ส่วนตัว 2 ครอบครัว 4 องค์กร 8) ใช้ร่วมกับอุปกรณ์อื่นของคุณ Web Proxy ในทางที่สองก็นับตามการเชื่อมต่อเช่นกัน
- ไฟล์ตั้งค่าและไฟล์ข้อมูลล็อกอินคือบัญชีของคุณ ห้าม commit เข้า git repository หรือฝังไว้ในอิมเมจเด็ดขาด
- เปลี่ยนรหัสผ่านแล้วไฟล์ตั้งค่าเก่าใช้ไม่ได้ทันทีโดยการออกแบบ ให้แก้ไฟล์ข้อมูลล็อกอิน
- การรันเส้นทางบนคลาวด์เซิร์ฟเวอร์อยู่ภายใต้ข้อตกลงของผู้ให้บริการคลาวด์ ตัวบริการบันทึกแค่ระยะเวลาเชื่อมต่อและปริมาณข้อมูลรวม
FAQ
ทำไมไฟล์ตั้งค่าสำหรับ Linux ไม่ฝังข้อมูลล็อกอินไว้
ตัวจัดการเครือข่ายไม่รับไฟล์ตั้งค่าที่ฝังข้อมูลล็อกอิน และจะนำเข้าไม่สำเร็จ ไฟล์สำหรับ Linux จึงเว้นไว้ให้คุณกรอกเอง ถ้าใช้ systemd ให้ใส่ในไฟล์ข้อมูลล็อกอิน
ให้แค่ Docker ผ่านเส้นทางได้ไหม
ได้ ตั้งตัวแปรพร็อกซีให้ Docker daemon แยกต่างหาก (ทางที่สอง) หรือรันคอนเทนเนอร์ที่มี OpenVPN ของตัวเอง (gluetun) เพื่อให้แค่บางคอนเทนเนอร์ผ่านเส้นทาง
แล้ว ส่วนตัว (Tailscale) บน Linux ล่ะ
สคริปต์ทางการติดตั้งได้ในบรรทัดเดียว แล้วล็อกอินด้วย: tailscale up --login-server=<this site’s control server> เหมาะเมื่อเครื่องต้องเข้าถึงได้จากภายนอก หรือควรออนไลน์ค้างไว้หลังตั้งค่า ถ้าแค่อยากดึงไฟล์เร็วขึ้น OpenVPN หรือพร็อกซีง่ายกว่า
OpenWrt บนเราเตอร์ทำแบบเดียวกันไหม
ติดตั้ง luci-app-openvpn บน OpenWrt แล้วอัปโหลดไฟล์ .ovpn ทั้งเครือข่ายในบ้านจะผ่านเส้นทาง ส่วนเราเตอร์ที่ใช้เฟิร์มแวร์ของเว็บนี้ไม่ต้องทำอะไรแบบนั้น แค่ล็อกอินด้วยบัญชี