วิธีติดตั้งและกำหนดค่าเซิร์ฟเวอร์ OpenVPN บน Windows
OpenVPN เป็นชุดซอฟต์แวร์โอเพ่นซอร์สที่เป็นหนึ่งในโซลูชันยอดนิยมและง่ายที่สุดสำหรับการติดตั้ง VPN ที่ปลอดภัย OpenVPN ช่วยให้คุณสามารถรวมเซิร์ฟเวอร์และไคลเอนต์ (แม้ว่าจะอยู่หลัง NAT หรือไฟร์วอลล์) ให้เป็นเครือข่ายเดียว หรือเพื่อเชื่อมต่อเครือข่ายของสำนักงานระยะไกล คุณสามารถปรับใช้ส่วนเซิร์ฟเวอร์ของ OpenVPN ได้เกือบทั้งหมดในระบบปฏิบัติการที่มีอยู่ทั้งหมด รวมถึง Linux, Windows, MacOS และ *BSD คุณสามารถติดตั้งเซิร์ฟเวอร์ OpenVPN บน Windows Server 2022/20119/2016/2012R2 หรือแม้แต่บนคอมพิวเตอร์ที่ใช้เดสก์ท็อปรุ่น Windows (Windows 10 หรือ 11)
ในบทความนี้ เราจะแสดงวิธีการติดตั้งและกำหนดค่าเซิร์ฟเวอร์ OpenVPN บนคอมพิวเตอร์ที่ใช้ Windows 10 ตั้งค่าไคลเอ็นต์ OpenVPN บนอุปกรณ์ Windows เครื่องอื่น และสร้างการเชื่อมต่อ VPN ที่ปลอดภัย
OpenVPN เป็นที่นิยมอย่างมากในกลุ่ม SOHO เพื่อให้เข้าถึงพนักงานทางไกลได้: คุณไม่จำเป็นต้องซื้อฮาร์ดแวร์พิเศษใดๆ ใบอนุญาตในการสร้างเซิร์ฟเวอร์ VPN ที่ใช้ Windows Server เปิดเผยพอร์ต RDP ไปยังอินเทอร์เน็ต และสามารถป้องกัน RDP ได้อย่างง่ายดาย การโจมตีด้วยกำลังดุร้าย
จะติดตั้งบริการเซิร์ฟเวอร์ OpenVPN บน Windows ได้อย่างไร
ดาวน์โหลดตัวติดตั้ง OpenVPN MSI สำหรับเวอร์ชัน Windows ของคุณจากเว็บไซต์อย่างเป็นทางการ (https://openvpn.net/community-downloads/) ในกรณีของเรา นี่คือ OpenVPN-2.5.7-I602-amd64.msi (https://swupdate.openvpn.org/community/releases/OpenVPN-2.5.7-I602-amd64.msi ).
เรียกใช้การตั้งค่าและเลือก บริการ OpenVPN เพื่อติดตั้ง หากคุณต้องการให้เซิร์ฟเวอร์ OpenVPN เริ่มต้นโดยอัตโนมัติ คุณต้องไม่ติดตั้ง OpenVPN GUI
OpenVPN 2.5 (และใหม่กว่า) รองรับไดรเวอร์ WinTun จากนักพัฒนา WireGuard ไดรเวอร์นี้เร็วกว่าไดรเวอร์ TAP OpenVPN เริ่มต้น เราแนะนำให้ติดตั้งไดรเวอร์ Wintun แทน TAP-Windows6
ติดตั้ง สคริปต์การจัดการใบรับรอง EasyRSA OpenSSL
เสร็จสิ้นการติดตั้ง
ตามค่าเริ่มต้น OpenVPN จะถูกติดตั้งไว้ที่ C:\Program Files\OpenVPN
เมื่อการติดตั้งเสร็จสิ้น คุณจะเห็นอะแดปเตอร์เครือข่ายใหม่ Wintun Userspace Tunnel อแด็ปเตอร์นี้ถูกปิดใช้งานหากบริการ OpenVPN ไม่ได้ทำงานอยู่
สร้างคีย์การเข้ารหัส OpenVPN และใบรับรอง
OpenVPN ใช้การเข้ารหัส OpenSSL ซึ่งหมายความว่าต้องใช้คีย์และใบรับรอง RSA3 เพื่อสร้างการเชื่อมต่อเครือข่ายระหว่างไคลเอ็นต์และเซิร์ฟเวอร์ VPN
เปิดพรอมต์คำสั่งและไปที่ไดเร็กทอรี easy-rsa:
cd "C:\Program Files\OpenVPN\easy-rsa"
สร้างสำเนาของไฟล์:
copy vars.example varsเปิดไฟล์ vars ในโปรแกรมแก้ไขข้อความ ตรวจสอบเส้นทางไปยังโฟลเดอร์ทำงานของ OpenVPN และ EaseRSA
อย่าลืมแก้ไขตัวแปร EASYRSA_TEMP_DIR ดังที่แสดงด้านล่าง:
set_var EASYRSA_TEMP_DIR "$EASYRSA_PKI/temp"คุณสามารถกรอกข้อมูลในฟิลด์ใบรับรอง (ไม่บังคับ):
set_var EASYRSA_REQ_COUNTRY "DE"
set_var EASYRSA_REQ_PROVINCE "BY"
set_var EASYRSA_REQ_CITY "MUN"
set_var EASYRSA_REQ_ORG "WOSHUB-Com"
set_var EASYRSA_REQ_EMAIL "admin@a-d.site"
set_var EASYRSA_REQ_OU "IT dept"กำหนดวันหมดอายุของใบรับรอง:
set_var EASYRSA_CA_EXPIRE 3650
set_var EASYRSA_CERT_EXPIRE 825บันทึกไฟล์และเรียกใช้คำสั่ง:
EasyRSA-Start.batต้องรันคำสั่งต่อไปนี้ทั้งหมดในเชลล์ EasyRSA:
เริ่มต้น PKI:
./easyrsa init-pkiคุณควรเห็นข้อความนี้:
init-pki complete; you may now create a CA or requests.
Your newly created PKI dir is: C:/Program Files/OpenVPN/easy-rsa/pki
จากนั้นสร้าง root CA:
./easyrsa build-caป้อนรหัสผ่าน CA สองครั้ง:
CA creation is complete and you may now import and sign cert requests.คำสั่งด้านบนได้สร้าง:
ใบรับรองหลักของผู้ออกใบรับรอง:
C:\Program Files\OpenVPN\easy-rsa\pki\ca.crtรหัสผู้ออกใบรับรอง: C
:\Program Files\OpenVPN\easy-rsa\pki\private\ca.key
จากนั้นสร้างคำขอใบรับรองและคีย์สำหรับเซิร์ฟเวอร์ OpenVPN ของคุณ:
./easyrsa gen-req server nopassเครื่องมือจะสร้างสองไฟล์:
ความต้องการ:
C:/Program Files/OpenVPN/easy-rsa/pki/reqs/server.reqคีย์:
C:/Program Files/OpenVPN/easy-rsa/pki/private/server.keyลงนามในคำขอออกใบรับรองเซิร์ฟเวอร์โดยใช้ CA ของคุณ:
./easyrsa sign-req server serverยืนยันข้อมูลโดยพิมพ์ใช่
จากนั้นป้อนรหัสผ่าน CA สำหรับรูท CA ของคุณ
ไฟล์ server.crt จะปรากฏในโฟลเดอร์ ออก (
C:\Program Files\OpenVPN\easy-rsa\pki\issued\server.crt).
จากนั้นคุณสามารถสร้างคีย์ Diffie-Hellman (ใช้เวลานาน):
./easyrsa gen-dhเพื่อให้การป้องกันเพิ่มเติมสำหรับเซิร์ฟเวอร์ VPN ของคุณ ขอแนะนำให้เปิดใช้งาน tls-auth คุณลักษณะนี้อนุญาตให้ใช้ลายเซ็น HMAC ในการจับมือ SSL/TLS ซึ่งจะเป็นการเริ่มต้นการตรวจสอบความสมบูรณ์เพิ่มเติม แพ็คเก็ตที่ไม่มีลายเซ็นดังกล่าวจะถูกทิ้งโดยเซิร์ฟเวอร์ VPN สิ่งนี้จะป้องกันคุณจากการสแกนพอร์ตเซิร์ฟเวอร์ VPN, การโจมตี DoS, บัฟเฟอร์ SSL/TLS ล้น ฯลฯ
สร้างคีย์ tls-auth:
cd C:\Program Files\OpenVPN\bin
openvpn --genkey secret ta.keyนี้
C:\Program Files\OpenVPN\bin\ta.keyไฟล์จะปรากฏขึ้น ย้ายไปที่โฟลเดอร์ C:\Program Files\OpenVPN asy-rsa\pki
จากนั้นคุณสามารถสร้างคีย์สำหรับไคลเอ็นต์ OpenVPN ของคุณได้ ลูกค้าแต่ละรายที่เชื่อมต่อกับเซิร์ฟเวอร์ VPN ของคุณต้องมีคู่คีย์ของตัวเอง
มีหลายวิธีในการสร้างคีย์ OpenVPN และแจกจ่ายให้กับลูกค้า
ในตัวอย่างด้านล่าง เราจะสร้างคีย์ไคลเอนต์บนเซิร์ฟเวอร์และป้องกันด้วยรหัสผ่าน (วลีรหัสผ่าน PEM):
./easyrsa gen-req testuser1
./easyrsa sign-req client testuser1คัดลอกไฟล์คีย์ (
C:\Program Files\OpenVPN\easy-rsa\pki\private\testuser1.key) ไปยังคอมพิวเตอร์ไคลเอ็นต์เพื่อบอกรหัสผ่านแก่ผู้ใช้ (เสียง, อีเมล, SMS) ลูกค้าสามารถปิดใช้งานการป้องกันด้วยรหัสผ่านสำหรับคีย์:
openssl rsa -in "C:\Program Files\OpenVPN\easy-rsa\pki\private\testuser1.key"-out "C:\Program Files\OpenVPN\easy-rsa\pki\private\testuser1_use.key"หากคุณต้องการสร้างคีย์ที่ไม่มีการป้องกันด้วยรหัสผ่าน คุณต้องเรียกใช้คำสั่ง:
./easyrsa gen-req testuser2 nopassคุณสามารถสร้างคีย์และใบรับรองจำนวนเท่าใดก็ได้สำหรับผู้ใช้บนเซิร์ฟเวอร์ VPN ของคุณ สร้างคีย์และใบรับรองสำหรับไคลเอนต์อื่นด้วยวิธีเดียวกัน
คุณสามารถเพิกถอนใบรับรองไคลเอ็นต์ที่ถูกบุกรุกได้:
cd C:\Program Files\OpenVPN\easy-rsa
EasyRSA-Start.bat
./easyrsa revoke testuser2ดังนั้นเราจึงสร้างชุดคีย์และใบรับรองสำหรับเซิร์ฟเวอร์ OpenVPN ตอนนี้คุณสามารถกำหนดค่าและเรียกใช้บริการ VPN ของคุณได้แล้ว
ไฟล์การกำหนดค่าเซิร์ฟเวอร์ OpenVPN สำหรับ Windows
คัดลอกเทมเพลตไฟล์การกำหนดค่าสำหรับเซิร์ฟเวอร์ OpenVPN:
copy "C:\Program Files\OpenVPN\sample-config\server.ovpn" "C:\Program Files\OpenVPN\config-auto\server.ovpn"เปิด server.ovpn ในโปรแกรมแก้ไขข้อความและทำการตั้งค่าของคุณ ฉันใช้การกำหนดค่า OpenVPN ต่อไปนี้:
# Specify a port, a protocol and a device type
port 1194
proto udp
dev tun
# Specify paths to server certificates
ca "C:\\Program Files\\OpenVPN\\easy-rsa\\pki\\ca.crt"
cert "C:\\Program Files\\OpenVPN\\easy-rsa\\pki\\issued\\server.crt"
key "C:\\Program Files\\OpenVPN\\easy-rsa\\pki\\private\\server.key"
dh "C:\\Program Files\\OpenVPN\\easy-rsa\\pki\\dh.pem"
# Specify the settings of the IP network your VPN clients will get their IP addresses from
server 10.24.1.0 255.255.255.0
# If you want to allow your clients to connect using the same key, enable the duplicate-cn option (not recommended)
# duplicate-cn
# TLS protection
tls-auth "C:\\Program Files\\OpenVPN\\easy-rsa\\pki\\ta.key" 0
cipher AES-256-GCM
# Other options
keepalive 20 60
persist-key
persist-tun
status "C:\\Program Files\\OpenVPN\\log\\status.log"
log "C:\\Program Files\\OpenVPN\\log\\openvpn.log"
verb 3
mute 20
windows-driver wintunบันทึกไฟล์
OpenVPN ให้คุณใช้ทั้งโปรโตคอล TCP และ UDP ในตัวอย่างนี้ เราเรียกใช้ OpenVPN บนพอร์ต UDP 1194 ขอแนะนำให้ใช้ UDP เนื่องจากเหมาะสมที่สุดสำหรับทั้งประสิทธิภาพและความปลอดภัย
อย่าลืมเปิดพอร์ตในไฟร์วอลล์สำหรับหมายเลขพอร์ต OpenVPN ที่คุณระบุไว้บนไคลเอนต์และบนเซิร์ฟเวอร์ คุณสามารถเปิดพอร์ตใน Windows Defender โดยใช้ PowerShell
กฎไฟร์วอลล์สำหรับเซิร์ฟเวอร์ OpenVPN:
New-NetFirewallRule -DisplayName "AllowOpenVPN-In" -Direction Inbound -Protocol UDP -LocalPort 1194 -Action Allowกฎสำหรับลูกค้า:
New-NetFirewallRule -DisplayName "AllowOpenVPN-Out" -Direction Outbound -Protocol UDP -LocalPort 1194 -Action Allowจากนั้นเรียกใช้บริการ OpenVPN และเปลี่ยนประเภทการเริ่มต้นเป็นอัตโนมัติ ใช้คำสั่ง PowerShell เพื่อเปิดใช้งานบริการ:
Set-Service OpenVPNService -startuptype automatic -passthru
Get-Service OpenVPNService| Start-Serviceเปิดกล่องโต้ตอบการเชื่อมต่อเครือข่าย (
ncpa.cpl) และตรวจสอบให้แน่ใจว่าเปิดใช้งานอแด็ปเตอร์เสมือน OpenVPN Wintun แล้ว ถ้าไม่ใช่ ให้ตรวจสอบไฟล์บันทึก
C:\Program Files\OpenVPN\log\server.logหากคุณเห็นข้อผิดพลาดต่อไปนี้ในบันทึกเมื่อเริ่มต้น OpenVPN:
Options error: In C:\Program Files\OpenVPN\config-auto\server.ovpn:1: Maximum option line length (256) exceeded, line starts with…เปลี่ยนอักขระขึ้นบรรทัดใหม่เป็น Windows CRLF (ใน Notepad++ เลือกแก้ไข -> การแปลง EOL -> Windows CR LF) ใน server.ovpn บันทึกไฟล์และรีสตาร์ท OpenVPNService
การกำหนดค่า OpenVPN นี้อนุญาตให้ไคลเอนต์ระยะไกลเข้าถึงทรัพยากรเซิร์ฟเวอร์เท่านั้น คอมพิวเตอร์และบริการอื่น ๆ ในเครือข่ายท้องถิ่นของเซิร์ฟเวอร์ไม่พร้อมใช้งานสำหรับไคลเอนต์ระยะไกล ในการอนุญาตให้ไคลเอนต์ OpenVPN เข้าถึง LAN ภายใน ให้เปิดใช้งานตัวเลือก IPEnableRouter ในรีจิสทรี (เปิดใช้งานการกำหนดเส้นทาง IP ใน Windows รวมถึงการกำหนดเส้นทางระหว่างเครือข่าย Hyper-V และอนุญาตให้คุณใช้การส่งต่อพอร์ต):
reg add "HKLM\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters" /v IPEnableRouter /t REG_DWORD /d 1 /fเพิ่มเส้นทางไปยังเครือข่าย IP ในพื้นที่ของคุณไปยังไฟล์การกำหนดค่าเซิร์ฟเวอร์:
push "route 10.24.1.0 255.255.255.0"
push "route 192.168.31.0 255.255.255.0"หากจำเป็น ให้กำหนดที่อยู่เซิร์ฟเวอร์ DNS ให้กับไคลเอ็นต์:
push "dhcp-option DNS 192.168.31.10"
push "dhcp-option DNS 192.168.31.11"หากคุณต้องการเปลี่ยนเส้นทางคำขอของไคลเอ็นต์ทั้งหมด (รวมถึงทราฟฟิกอินเทอร์เน็ต) ไปยังเซิร์ฟเวอร์ OpenVPN ของคุณ ให้เพิ่มตัวเลือก:
push "redirect-gateway def1"ตัวเลือกเหล่านี้อธิบายกรณีที่พิจารณาก่อนหน้านี้: สูญเสียการเชื่อมต่ออินเทอร์เน็ตหลังจากเชื่อมต่อกับ VPN และ ไม่มีการแก้ไข DNS เมื่อเชื่อมต่อกับ VPN
การกำหนดค่าไคลเอนต์ OpenVPN บน Windows
สร้างไฟล์การกำหนดค่าเทมเพลตสำหรับไคลเอนต์ VPN (ตามเทมเพลต client.ovpn) บนเซิร์ฟเวอร์ของคุณด้วยการตั้งค่าต่อไปนี้ (ชื่อไฟล์คือ testuser1.ovpn):
client
dev tun
proto udp
remote your_vpn_server_address 1194
resolv-retry infinite
nobind
persist-key
persist-tun
ca ca.crt
cert testuser1.crt
key testuser1.key
remote-cert-tls server
tls-auth ta.key 1
cipher AES-256-GCM
connect-retry-max 25
verb 3ระบุที่อยู่ IP สาธารณะหรือชื่อ DNS ของเซิร์ฟเวอร์ OpenVPN ของคุณในคำสั่ง ระยะไกล
ดาวน์โหลดและติดตั้ง OpenVPN Connect สำหรับ Windows (https://openvpn.net/downloads/openvpn-connect-v3-windows.msi)
จากนั้นคัดลอกไฟล์ต่อไปนี้จากเซิร์ฟเวอร์ของคุณไปยังคอมพิวเตอร์ที่ติดตั้งไคลเอนต์ OpenVPN:
- ca.crt
- testuser1.crt
- testuser1.key
- dh.pem
- ta.key
- testuser1.ovpn
นำเข้า
*.ovpnไฟล์โปรไฟล์และพยายามเชื่อมต่อกับเซิร์ฟเวอร์ VPN ของคุณ
หากคุณตั้งค่าถูกต้อง คุณจะเห็นภาพด้านล่าง:
ตรวจสอบบันทึกการเชื่อมต่อ OpenVPN บนไคลเอนต์:
C:\Program Files\OpenVPN Connect\agent.logMon Jul 17 08:09:30 2022 proxy_auto_config_url
Mon Jul 17 08:09:31 2022 TUN SETUP
TAP ADAPTERS:
guid='{25EE4A55-BE90-45A0-88A1-8FA8FEF24C42}' index=22 name='Local Area Connection'
Open TAP device "Local Area Connection" PATH="\\.\Global\{25EE4A55-BE90-45A0-88A1-8FA8FEF24C42}.tap" SUCCEEDED
TAP-Windows Driver Version 9.24
ActionDeleteAllRoutesOnInterface iface_index=22
netsh interface ip set interface 22 metric=1
Ok.
netsh interface ip set address 22 static 10.24.1.10 255.255.255.252 gateway=10.24.1.5 store=active
IPHelper: add route 10.24.1.1/32 22 10.24.1.5 metric=-1ลูกค้าเชื่อมต่อกับเซิร์ฟเวอร์ VPN สำเร็จและได้รับที่อยู่ IP 10.24.1.10
ตอนนี้ตรวจสอบบันทึก OpenVpn ที่ฝั่งเซิร์ฟเวอร์ (
C:\Program Files\OpenVPN\log\openvpn.log). ที่นี่ คุณจะเห็นด้วยว่าไคลเอ็นต์ที่มีใบรับรอง testuser1 เชื่อมต่อกับเซิร์ฟเวอร์สำเร็จแล้ว
2022-07-17 08:09:35 192.168.13.20:55648 [tesuser1] Peer Connection Initiated with [AF_INET6]::ffff:192.168.13.20:55648
2022-07-17 08:09:35 tesuser1/192.168.13.20:55648 MULTI_sva: pool returned IPv4=10.24.1.10, IPv6=(Not enabled)
2022-07-17 08:09:35 tesuser1/192.168.13.20:55648 MULTI: Learn: 10.24.1.10 -> testuser1/192.168.13.20:55648
2022-07-17 08:09:35 tesuser1/192.168.13.20:55648 MULTI: primary virtual IP for tesuser1/192.168.13.20:55648: 10.24.1.10











