- February 19, 2022
- 3:56 pm
วิธีติดตั้ง VPN Server ด้วย OpenVPN
OpenVPN Server เป็นโปรแกรมฟรี (open-source แบบ SSL) ที่ใช้สร้างเครือข่ายส่วนตัวเสมือน หรือที่เรียกกันว่า Virtual Private Network (VPN) เพื่อปกป้องข้อมูลและใช้ซ่อนตัวตนของผู้ใช้งานสำหรับการใช้งานบน Internet เมื่อมีการเชื่อมต่อ VPN ที่ปลอดภัยผ่านเซิร์ฟเวอร์ส่วนตัว (Private Server) การใช้งานรับ-ส่งข้อมูลผ่าน Internet จะถูกเข้ารหัสทำให้บุคคลที่สามไม่สามารถเปิดดูรายละเอียดของข้อมูลได้ คู่มือนี้จะเป็นการติดตั้ง OpenVPN บน Ubuntu 20.04 server
สิ่งที่ต้องเตรียมก่อนติดตั้ง
- Ubuntu 20.04 server (Create Cloud Server)
- User root หรือ User ที่ไม่ใช่ root ที่มีสิทธิ์ใช้ sudo
ติดตั้ง OpenVPN และ EasyRSA
ขั้นตอนแรกคุณต้องทำการ Update server ของคุณ
sudo apt-get update
และติดตั้ง OpenVPN
sudo apt-get install openvpn
เนื่องจาก OpenVPN เป็น VPN SSL ดังนั้นจะต้องติดตั้ง easy-rsa เพื่อให้ออกใบรับรอง SSL ให้กับ Server ได้
sudo apt-get install easy-rsa
ตั้งค่าผู้ออกใบรับรอง (Set up a Certificate Authority)
เราต้องใช้ easy-rsa template เพื่อสร้างผู้ออกใบรับรองให้กับ OpenVPN โดยการคัดลอกไปยัง Directory ใหม่
make-cadir ~/openvpn-ca
เข้าไปยัง Directory ที่สร้างขึ้น
cd openvpn-ca
จากนั้นให้เปิดไฟล์ vars โดยใช้โปรแกรมเปิดไฟล์เช่น nano , vi หรือโปรแกรมอื่นๆ
nano vars
ค้นหาข้อความตามด้านล่างนี้ ให้ทำการลบ # ออกจากด้านหน้าบรรทัด และแก้ไขข้อมูลให้เป็นของคุณ
#set_var EASYRSA_REQ_COUNTRY "US" #set_var EASYRSA_REQ_PROVINCE "California" #set_var EASYRSA_REQ_CITY "San Francisco" #set_var EASYRSA_REQ_ORG "Copyleft Certificate Co" #set_var EASYRSA_REQ_EMAIL "[email protected]" #set_var EASYRSA_REQ_OU "My Organizational Unit"
หลังจากแก้ไขแล้ว รายละเอียดข้อมูลควรมีลักษณะคล้ายตัวอย่างด้านล่างนี้
set_var EASYRSA_REQ_COUNTRY "TH" set_var EASYRSA_REQ_PROVINCE "Bangkok" set_var EASYRSA_REQ_CITY "Bangkok" set_var EASYRSA_REQ_ORG "My Example Company" set_var EASYRSA_REQ_EMAIL "[email protected]" set_var EASYRSA_REQ_OU "IT"
เมื่อแก้ไขข้อมูลเรียบร้อยแล้วให้ทำการ Save และปิดไฟล์
ขั้นตอนต่อไป ใน Directory “openvpn-ca” จะมี script สำหรับคำสั่งต่างๆ และการสร้างผู้ออกใบรับรองของ easyrsa ดังนั้นเราจะรันคำสั่ง inti-pki เพื่อเตรียม key สำหรับ Server
./easyrsa init-pki Note: using Easy-RSA configuration from: ./vars init-pki complete; you may now create a CA or requests. Your newly created PKI dir is: /user/openvpn-ca/pki
สร้าง CA เพื่อสร้างไฟล์ ca.crt และ ca.key ที่จะต้องนำมาประกอบกันให้เป็นไฟล์ SSL
./easyrsa build-ca nopass
ในระหว่างการสร้าง CA คุณจะต้องใส่ชื่อทั่วไปสำหรับผู้ออกใบรับรองของคุณ (เช่น hostname หรือ server name) หรือ Enter เพื่อใช้ชื่อเริ่มต้น
If you enter '.', the field will be left blank. ----- Common Name (eg: your user, host, or server name) [Easy-RSA CA]:
สร้างคีย์สำหรับเซิร์ฟเวอร์ (Server public/private keys)
เมื่อคุณสร้าง CA เสร็จแล้ว จะต้องสร้าง Server Certificate และ Key ที่ใช้คู่กัน โดยรันคำสั่งด้านล่าง โดยในคู่มือนี้จะใช้ชื่อเป็น openvpnserver คุณสามารถแทนที่เป็นชื่ออื่นที่ง่ายกว่าได้เพราะต้องใช้ในการอ้างอิง
./easyrsa gen-req openvpnserver nopass
คำสั่งนี้จะเป็นการสร้าง Private Key ใหม่และไฟล์คำขอใบรับรอง (CSR)
./easyrsa gen-dh
การดำเนินการนี้อาจใช้ระยะเวลากว่าจะเสร็จสมบูรณ์ เมื่อคำสั่งรันเสร็จแล้วให้สร้างลายเซ็น HMAC ที่เพิ่มความสามารถในการตรวจสอบความสมบูรณ์ของใบรับรอง TLS
openvpn --genkey --secret ta.key
ขั้นตอนสุดท้าย ให้คัดลอกคีย์ openvpnserver, dh และ hmac ที่สร้างขึ้นไปยัง Directory OpenVPN
sudo cp ~/openvpn-ca/pki/private/openvpnserver.key /etc/openvpn/ sudo cp ~/openvpn-ca/ta.key /etc/openvpn/ sudo cp ~/openvpn-ca/pki/dh.pem /etc/openvpn/ sudo cp ~/openvpn-ca/pki/ca.crt /etc/openvpn/
สร้างคีย์สำหรับ Client (Public/Private Keys)
กลับไปที่ไดเร็กทอรี CA ด้วย cd และรันคำสั่ง easyrsa ด้วย gen-req ด้วยชื่อง่ายๆ สำหรับ Client ของคุณ
cd ~/openvpnca/ ./easyrsa gen-req client nopass
กด Enter เพื่อยืนยันชื่อ หากคุณต้องการสร้างผู้ใช้ที่ป้องกันด้วยรหัสผ่าน ให้ลบ nopass ออก
กำหนดค่าสำหรับ OpenVPN Server (Config the OpenVPN Server)
เมื่อเราสร้างผู้ออกใบรับรอง SSL เรียบร้อยแล้ว จะต้องมา Config Server เพิ่ม
ขั้นแรก copy และ extract ไฟล์ sample OpenVPN config ไปยัง Directory เริ่มต้น
gunzip -c /usr/share/doc/openvpn/examples/sample-config-files/server.conf.gz | sudo tee /etc/openvpn/server.conf
เปิดไฟล์ /etc/openvpn/server.conf และแก้ไขค่าบางส่วน โดยใช้คำสั่ง nano , vi หรือโปรแกรมเปิดไฟล์อื่นๆ
sudo nano /etc/openvpn/server.conf
ให้ลบ # (comment) ออกจากบรรทัดต่อไปนี้
push "redirect-gateway def1 bypass-dhcp" user nobody group nogroup push "dhcp-option DNS 208.67.222.222" push "dhcp-option DNS 208.67.220.220" tls-auth ta.key 0
เปลี่ยน User เพื่อ listen user ที่ไม่ได้รับสิทธิ์ root
user openvpn
ต่อมา ตรวจสอบความถูกต้องของข้อมูลว่า OpenVPN ชี้ไปที่ไฟล์ .crt และ .key ได้ถูกต้องตามค่าที่คุณกำหนดไว้ ตามในคู่มือนี้จะเป็น openvpnserver
ca ca.crt cert openvpnserver.crt key openvpnserver.key # This file should be kept secret
ทำการ Save และออกจากไฟล์
ขั้นถัดไป เพื่อให้ Client สามารถเชื่อมต่อ Internet ของ OpenVPN Server ของคุณได้ จะต้องแก้ไขไฟล์ /etc/sysctl.conf
sudo nano /etc/sysctl.conf
ลบ # (comment) ออกจากบรรทัดด้านล่างนี้
net.ipv4.ip_forward=1
ทำการ Save และออกจากไฟล์ จากนั้นให้ทำการ Apply เพื่อเปลี่ยนแปลงค่า
sysctl -p
เริ่มใช้งาน (Start the OpenVPN Server)
sudo systemctl enable openvpn@server sudo systemctl start openvpn@server
เพื่อให้สามารถเข้าถึง Internet และการรับส่งข้อมูลโดยตรง จะต้องตั้งค่า Network Address Translation (NAT) ด้วยคำสั่งต่อไปนี้
sudo iptables -t nat -A POSTROUTING -s 10.8.0.0/16 -o eth0 -j MASQUERADE
การติดตั้งและกำหนดค่า OpenVPN Server เสร็จเรียบร้อยแล้ว เริ่มใช้งาน OpenVPN Server ของคุณได้เลย
- Categories:
- Manual
- Cloud VPS App Plus +
- Ubuntu
หมวดหมู่ที่น่าสนใจ
- Account Settings
- AI
- Alibaba Cloud
- AWS Amazon Web Services
- Campaign
- CentOS/AlmaLinux
- Cloud
- Cloud Backup
- Cloud Communication
- Cloud Server Management
- Cloud Solution
- Cloud Solution for Government
- Cloud Solutions by Industry
- Cloud VPS App Plus +
- Cloud VPS DirectAdmin
- Cloud VPS Plesk
- Cyber Security
- Database Server
- DDoS
- Digital Transformation
- Direct Mail
- Directadmin
- Domainname
- Ecommerce
- Generative AI
- Getting Started
- Google Cloud
- Google G Suite
- Huawei Cloud
- IT News
- Linux Server
- Manual
- Microsoft Azure
- News
- On-premise
- Promotion
- Recommend Solution (Enterprise)
- Server
- SMS
- THAI DATA CLOUD Platform
- Ubuntu
- Ubuntu
- VPS Server
- Web Design
- Web Hosting
- Web Hosting (DirectAdmin)
- Web Hosting (Plesk)
- Web Technologies
- Windows Server
- Wordpress
- Zimbra
- เรื่องราวความประทับใจ
- โซลูชันสำหรับธุรกิจการผลิตและยานยนต์
- โซลูชันสำหรับธุรกิจการศึกษา
- โซลูชันสำหรับธุรกิจการเงิน
- โซลูชันสำหรับธุรกิจขนส่งและกระจายสินค้า
- โซลูชันสำหรับธุรกิจค้าปลีก
- โซลูชันสำหรับธุรกิจท่องเที่ยว
- โซลูชันสำหรับธุรกิจบริการสุขภาพและโรงพยาบาล
- โซลูชันสำหรับธุรกิจประกันภัย
- โซลูชันสำหรับธุรกิจพลังงานและสาธารณูปโภค
- โซลูชันสำหรับธุรกิจสื่อสารมวลชนและเอ็นเตอร์เทนเมนท์
- โซลูชันสำหรับธุรกิจอสังหาริมทรัพย์
- โซลูชันสำหรับธุรกิจเทคโนโลยี