การทำให้ openvpn มีถาม user และ password ปกติแล้ว ระบบ openvpn เป็น ระบบที่มาจาก linux ดังนั้น มันจึง มีความสมบูรณ์ มาแล้ว โดยหากทำ แบบ ถาม user และ password จะ สามารถทำได้ง่าย โดยจะมี script มาให้แล้ว มีชื่อว่า auth-pam.pl ซึ่งสามารถเรียกใช้ที่ฝั่ง server ได้ ดังนี้ จาก ไฟล์ etc/openvpn/server.conf จะมีบรรทัดที่เรียกใช้คือ auth-user-pass-verify ./auth-pam.pl via-file โดยจะไปเรียก ใช้ ไฟล์ auth-pam.pl มาเพื่อ ตรวจสอบ user และ password แล้ว ส่งผลกลับมา เป็น 0 หรือ 1 หาก สำเร็จ 0 หรือ ไม่สำเร็จ 1 ดังนั้น แล้ว หากมาทำบน windows xp หรือ windows 7 เราจะ ต้องสร้าง file นี้ขึ้นมาใหม่ เอง ซึ่ง ผมจะตั้งชื่อว่า verify.bat ที่ฝั่ง SERVER ดังข้างล่างคือ file verify.bat @echo off set datafile="c:ovpndata.txt" set outfile="c:ovpnout.txt" set n_user=%username% %password%; c:WindowsSystem32find /n "%n_user%" %datafile% > %outfile% rem --> ระวัง c:WindowsSystem32find <-- for /f "skip=1" %%a in (c:ovpnout.txt) do set line2=%%a if "%line2%"=="----------" exit 1 exit 0 rem ----> failure (1) or success (0) โดยถูกเรียก จาก บรรทัด ใน ไฟล์ script server.ovpn คือ auth-user-pass-verify C:ovpnverify.bat via-env โดยที่ ไฟล์ ทั้งหมดได้เก็บที่ c:ovpn ในเครื่อง windows 7 ฝั่ง server สำหรับ file เต็มของ server.ovpn คือดังข้างล่าง dev tun ca ca.crt cert server.crt key server.key dh dh1024.pem server 192.168.10.0 255.255.255.0 push "route 192.168.7.0 255.255.255.0" script-security 3 auth-user-pass-verify C:ovpnverify.bat via-env client-to-client keepalive 10 120 comp-lzo max-clients 10 persist-key persist-tun status openvpn-status.log verb 6 mute 20 นอกจากนี้ ยังมีคำสั่ง script-security 3 ซึ่งมีผลอย่างมากคือ จะเป็นคำสั่ง ให้ มีการไปเรียกใช้ bat ไฟล์ จากภายนอก มาใช้งานได้ คือทำให้สามารถ ไปเรียกใช้ verify.bat มาใช้งานได้ และ ยังส่ง ค่าตัวแปร ไปให้ยัง bat ไฟล์ verify.bat อีกด้วย คือ ส่งค่ามาที่ username และ password โดยทำให้เรา สามารถนำ verify.bat มาตรวจสอบ ชื่อ และ รหัสผ่าน ได้ โดยจะนำไปเปรียบ เทียบ กับ ชื่อ และ รหัสผ่าน ได้ที่ ไฟล์ data.txt โดยที่ ไฟล์นี้ จะเป็น เท็กไฟล์ ที่มีชื่อ และ รหัสผ่าน เก็บภายใน และ ปิดท้ายด้วย ; เซมิโคลอน ดังข้างล่าง ข้อมูล username และ password ใน data.txt a12345678 a12345678; aaa aaa; bbb bbb; ccc ccc; ddd ddd; super vpn; ทั้งนี้เมื่อ verify.bat ถูกเรียกมาใช้ จะไปสร้าง out.txt ซึ่งมาจากคำสั่ง find ดังนั้น ต้องหาที่อยู่ของ โปรแกรม find ให้ดี ว่าอยู่ที่ใด ในที่นี้ ผมใช้ windows 7 จะอยู่ที่ c:WindowsSystem32find และ ใน out.txt จะมีข้อมูลดังข้างล่างคือ ---------- C:OVPNDATA.TXT [1]a12345678 a12345678; ซึ่งในบรรทัดล่าง จะมี username และ password คือ a12345678 บันทึก ไว้ แสดงว่า username และ password ที่ป้อนกับใน data.txt ตรงกัน หากไม่ ตรงกัน จะไม่มีชื่อใดๆ แสดง มีบรรทัดขีดลบ บนเพียงบรรทัดเดียว เท่านั้น รูปข้างล่าง คือ ไฟล์ ที่เก็บใน c:ovpn โดยที่ out.txt จะลบทิ้งได้เพราะจะสร้าง ขึ้นมาใหม่เมื่อมี่การ login เข้ามาจากฝั่ง client ในฝั่ง CLIENT ที่ฝั่งเครื่องลูกๆ จะมีบรรทัดที่เพิ่มพิเศษเข้ามาคือ auth-user-pass โดย คำสั่งในบรรทัดนี้ จะทำให้ มี เมนูถาม username และ password ขึ้นมา ให้ผู้ใช้ login เข้ามา โดยจะมีลูกเล่นเพิ่มมาในฝั่ง client ง่ายๆ กรณีที่ ไม่อยากพิมพ์ ชื่อ ผู้ใช้ และ รหัสผ่าน ทุกครั้งสามารถทำเป็น text file เพิ่มต่างหากได้ด้วย รูปข้างล่างคือ script ของ openvpn ฝั่ง client เช่น ชื่อ clientxp4.ovpn ที่ได้ระบุ ให้ถาม user และ password ด้วย auth-user-pass แล้ว client proto udp dev tun remote 192.168.7.223 1194 resolv-retry infinite nobind persist-key persist-tun ca ca.crt cert xp4.crt key xp4.key comp-lzo verb 3 auth-nocache auth-user-pass ns-cert-type server nobind keepalive 10 120 mute 20 auth-user-pass แบบ อ่าน ชื่อ user และ password จาก ไฟล์ ง่ายๆ เพียงเติม ชื่อไฟล์ต่อท้าย auth-user-pass ดังตัวอย่าง script บางส่วนข้างล่าง .... cert xp4.crt key xp4.key comp-lzo verb 3 auth-nocache auth-user-pass c:openvpnpw.txt ns-cert-type server nobind keepalive 10 120 ... นั้นคือ ให้ไปอ่าน ไฟล์ pw.txt ที่เก็บไว้ที่ c:openvpn โดยที่ ไฟล์ pw.txt จะ เก็บ ข้อมูล 2 บรรทัด คือ ชื่อ username และ password ดังตัวอย่าง รูป ข้างล่าง แต่เมื่อ ลอง connect จริง ดู จะพบ ERROR คือ Sorry, 'Auth' password cannot be read from a file. ดังรูปข้างล่าง ซึ่งไม่ได้เป็นที่เราทำผิดใดๆ เพียงแต่ การ compile ตัว โปรแกรม openvpn มันไม่ถูกต้อง มันต้องมี การใช้ option เพิ่ม ในการ compile ให้ ถูกต้องด้วย คือ option --enble-password-save แล้ว เราต้องมา compile openvpn กันใหม่ หรือ ? คงจะเรื่องยาว ไม่จบ แล้ว เรื่องยาวแน่นอน แค่ไม่ต้องใส่ user กับ password มันยุุ่งยากจัง มาถึงตรงนี้ ก็ต้อง ใช้ อาจารย์ กรู กันแล้ว มาลองอาจารย์ กัน สิ่งที่พบคือ เราไม่ ต้อง compile ใดๆ แล้ว มันมี คนอื่นๆ เขา compile ใหม่ให้แล้ว สามารถ download มาใช้ ได้เลย ซึ่งไฟล์ที่ผม พบ คือ openvpn-2.1.3-passwordsave-install.exe ตัวนี้ ลองหาจาก google จะพบดังรูปข้างล่าง จะ download ตัวไหน ก็ได้ แต่ระวัง virus ด้วย แล้วกัน ครับ ผมได้ไปเอามาจาก web //wired.s6n.com/vpn พบว่าสามารถใช้งานได้ ดี โดย uninstall ตัวเก่า ออกไปก่อน แล้ว ลงตัว ใหม่ คือ openvpn-2.1.3-passwordsave-install.exe แทน พบว่าใช้ได้ดี ครับ สามารถ connect ได้ โดยไม่ถาม user และ password รวมถึง ไม่มี error คือ Sorry, 'Auth' password cannot be read from a file มาก่อนกวน เราด้วย ครับ ผมได้ลองเปลี่ยน password ใน ไฟล์ pw.txt ให้ผิดๆ ไปพบว่า มันไม่สามารถที่จะ login เข้าไปได้ แสดงว่า ปกติดี มากๆ บทความนี้ ก็มาถึงท้ายแล้วครับ ขอสวัสดี ครับ |