1. ให้ Login เข้า Server Debian ผ่าน Putty หรือ Terminal ต่างๆ
2. ให้เปลี่ยนสิทธิ์เป็น root โดยพิมพ์ su - แล้ว Enter แล้วใส่พาสเวิร์ดของ root
3. จะได้ตามนี้ root@ชื่อเครื่อง:~#
4. อัพเดทระบบโดยพิมพ์แต่ละตัว แล้วกด Enter เพื่อทำการอัพเดท
apt-get update -y
apt-get upgrade -y
5. ทำการติดตั้ง Install OpenVPN และ EasyRSA
5.1 พิมพ์ apt-get install openvpn -y แล้ว Enter และรอให้ติดตั้งจนเสร็จ
5.2 พิมพ์ wget https://github.com/OpenVPN/easy-rsa/releases/download/v3.0.8/EasyRSA-3.0.8.tgz แล้ว Enter (รอโหลดเสร็จ)
5.3 พิมพ์ tar -xvzf EasyRSA-3.0.8.tgz แล้วกด Enter เพื่อทำการแยกไฟล์
5.4 พิมพ์ cp -r EasyRSA-3.0.8 /etc/openvpn/easy-rsa แล้วกด Enter เพื่อทำการ copy file ไปไว้ตามพาธ
6. ทำการ Build Certificate Authority
6.1 พิมพ์ cd /etc/openvpn/easy-rsa แล้วกด Enter เพื่อเข้าไปที่พาธ
6.2 พิมพ์ nano vars แล้วกด Enter เพื่อสร้างไฟล์ vars (nano คือ text editor คล้ายกับ notepad ของ Windows) แล้วเพิ่มค่าดังนี้เข้าไปในไฟล์
set_var EASYRSA "$PWD"
set_var EASYRSA_PKI "$EASYRSA/pki"
set_var EASYRSA_DN "cn_only"
set_var EASYRSA_REQ_COUNTRY "THA"
set_var EASYRSA_REQ_PROVINCE "Phayathai"
set_var EASYRSA_REQ_CITY "Phayathai"
set_var EASYRSA_REQ_ORG "PUKKY-IT CERTIFICATE AUTHORITY"
set_var EASYRSA_REQ_EMAIL "yutthaphum@pukky-it.com"
set_var EASYRSA_REQ_OU "PUKKY IT EASY CA"
set_var EASYRSA_KEY_SIZE 2048
set_var EASYRSA_ALGO rsa
set_var EASYRSA_CA_EXPIRE 7500
set_var EASYRSA_CERT_EXPIRE 365
set_var EASYRSA_NS_SUPPORT "no"
set_var EASYRSA_NS_COMMENT "PUKKY-IT CERTIFICATE AUTHORITY"
set_var EASYRSA_EXT_DIR "$EASYRSA/x509-types"
set_var EASYRSA_SSL_CONF "$EASYRSA/openssl-easyrsa.cnf"
set_var EASYRSA_DIGEST "sha256"
* ใส่ค่าให้ติดกันไม่ให้มีเว้นบรรทัดว่าง
ทำการ Save File โดยกดปุ่มที่คีย์บอร์ด Ctrl + x แล้วพิมพ์ y และกดปุ่ม Enter เพื่อทำการบันทึก
6.3 พิมพ์ ./easyrsa init-pki แล้วกด Enter จะได้ Output
Note: using Easy-RSA configuration from: /etc/openvpn/easy-rsa/vars
init-pki complete; you may now create a CA or requests.
Your newly created PKI dir is: /etc/openvpn/easy-rsa/pki
6.4 พิมพ์ ./easyrsa build-ca nopass แล้วกด Enter (Common Name = vpnserver)
จะได้ไฟล์ ca.crt
7. ทำการ Generate Server และ Key Files
7.1 พิมพ์ ./easyrsa gen-req vpnserver nopass แล้วกด Enter
จะได้ไฟล์ vpnserver.key
7.2 พิมพ์ ./easyrsa sign-req server vpnserver แล้วกด Enter
จะได้ไฟล์ vpnserver.crt
7.3 พิมพ์ ./easyrsa gen-dh แล้วกด Enter
8. ทำการ copy All Certificate และ Key Files ทั้งหมดไปไว้ตามพาธ
cp pki/ca.crt /etc/openvpn/server/
cp pki/dh.pem /etc/openvpn/server/
cp pki/private/vpnserver.key /etc/openvpn/server/
cp pki/issued/vpnserver.crt /etc/openvpn/server/
9. สร้างไฟล์ Client Certificate และ Key Files
9.1 พิมพ์ ./easyrsa gen-req vpnclient nopass แล้วกด Enter (เปลี่ยนชื่อจาก vpnclient เป็นชื่อ user ที่ต้องการได้)
จะได้ไฟล์ vpnclient.key
9.2 พิมพ์ ./easyrsa sign-req client vpnclient แล้วกด Enter (เปลี่ยนชื่อจาก vpnclient เป็นชื่อ user ตาม ข้อ 9.1)
จะได้ไฟล์ vpnclient.crt
9.3 ทำการ copy all certificate ทั้งหมดไปไว้ที่ /etc/openvpn/client/ โดยพิมพ์
cp pki/ca.crt /etc/openvpn/client/
cp pki/issued/vpnclient.crt /etc/openvpn/client/
cp pki/private/vpnclient.key /etc/openvpn/client/
10. ตั้งค่าไฟล์ OpenVPN Server โดยพิมพ์ nano /etc/openvpn/server.conf แล้วกด Enter แล้วใส่ค่าลงไปดังนี้
port 1194
proto udp
dev tun
ca /etc/openvpn/server/ca.crt
cert /etc/openvpn/server/vpnserver.crt
key /etc/openvpn/server/vpnserver.key
dh /etc/openvpn/server/dh.pem
server 10.8.0.0 255.255.255.0
push "redirect-gateway def1"
push "dhcp-option DNS 8.8.8.8"
push "dhcp-option DNS 8.8.4.4"
duplicate-cn
cipher AES-256-CBC
tls-version-min 1.2
tls-cipher TLS-DHE-RSA-WITH-AES-256-GCM-SHA384:TLS-DHE-RSA-WITH-AES-256-CBC-SHA256:TLS-DHE-RSA-WITH-AES-128-GCM-SHA256:TLS-DHE-RSA-WITH-AES-128-CBC-SHA256
auth SHA512
auth-nocache
keepalive 20 60
persist-key
persist-tun
compress lz4
daemon
user nobody
group nogroup
log-append /var/log/openvpn.log
verb 3
เสร็จแล้วกดปุ่ม Ctrl + x แล้วพิมพ์ y แล้วกด Enter เพื่อบันทึกไฟล์
10.1 พิมพ์ systemctl start openvpn@server แล้วกด Enter
10.2 พิมพ์ systemctl enable openvpn@server แล้วกด Enter
10.3 พิมพ์ ip a show tun0 แล้วกด Enter จะได้ดังรูป
11. ทำการ Enable IP Forwarding พิมพ์ nano /etc/sysctl.conf แล้วกด Enter แล้ว uncomment ตรง
net.ipv4.ip_forward = 1
กดปุ่ม Ctrl + x แล้วพิมพ์ y แล้วกด Enter เป็นการบันทึกไฟล์
12. สร้างไฟล์ client.ovpn โดยพิมพ์ nano client.ovpn แล้วกด Enter แล้วใส่ค่า ดังนี้
client
dev tun
proto udp
remote vpn-server-ip 1194
ca ca.crt
cert vpnclient.crt
key vpnclient.key
cipher AES-256-CBC
auth SHA512
auth-nocache
tls-version-min 1.2
tls-cipher TLS-DHE-RSA-WITH-AES-256-GCM-SHA384:TLS-DHE-RSA-WITH-AES-256-CBC-SHA256:TLS-DHE-RSA-WITH-AES-128-GCM-SHA256:TLS-DHE-RSA-WITH-AES-128-CBC-SHA256
resolv-retry infinite
compress lz4
nobind
persist-key
persist-tun
mute-replay-warnings
verb 3
กดปุ่ม Ctrl + x แล้วพิมพ์ y แล้วกด Enter เป็นการบันทึกไฟล์
*หมายเหตุ ตรง remote vpn-server-ip 1194 ให้แก้ไขตรง vpn-server-ip เป็น Public IP ของฝั่ง Server OpenVPN
หลังจากขั้นตอนด้านบนแล้วให้นำไฟล์ตามด้านล่างไปใช้งาน OpenVPN Client ต่างๆ ได้
client.ovpn
ca.crt
vpnclient.crt
vpnclient.key
13. กำหนดค่า IP Route ที่ Server OpenVPN เพื่อเวลา client access vpn เข้ามาแล้วให้สามารถใช้งานทรัพยากรต่างๆ ได้
iptables -t nat -A POSTROUTING -s 10.8.0.0/24 -o eth0 -j MASQUERADE
iptables -P INPUT ACCEPT
iptables -P FORWARD ACCEPT
iptables -P OUTPUT ACCEPT
iptables -I FORWARD -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT
*หมายเหตุ eth0 คือชื่อ ehternet card ของ local lan ซึ่งแต่ละเครื่องจะไม่เหมือนกัน ต้องดูที่ขา Local Lan โดยใช้คำสั่ง ip a show แล้วกำหนด network id ของวง network นั้น
สามารถนำไปใช้กับโปรแกรม OpenVPN Client ตามระบบต่างๆ ดังนี้
1. For Apple IOS Apple
2. For Android Android
3. For Mac tunnelblick
4. For Windows Openvpn
ที่มา - rosehosting