วันพฤหัสบดีที่ 20 กรกฎาคม พ.ศ. 2566

ติดตั้ง OpenVPN Server บน Debian 12 และการ Configuration

 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

ไม่มีความคิดเห็น:

แสดงความคิดเห็น