Step 1.
首先,請先安裝mysqld
然後請確定是否安裝 pam_mysql及libsasl2-2,沒有的話就安裝:
pam_mysql:
ubuntu: apt-get isntall libpam-mysql
gentoo: emerge pam_mysql
libsasl2:
ubuntu: apt-get isntall libsasl2-2
gentoo: emerge cyrus-sasl
Step 2.
安裝好以後,我們先要建立一個DB供openvpn登入用;這個DB至少要有三個欄位:帳號、密碼、active。
active這個欄位是用來標記帳號是否啟用,有這欄位的話你隨時可以啟用/停用特定帳號,在管理上的彈性會更大。
以下就先來進行資料庫部份的工作:
DB Server:localhost
DB名稱:openvpn
Table名稱:vpmauth
欄位名稱:account,password,active
DBUSER: vpnadm
DBPASSWORD: 093nVPN
以上部份都可以隨個人喜好自訂
CREATE DATABASE openvpn;
use openvpn;
CREATE TABLE `vpnauth` (
`account` char(20) NOT NULL,
`password` char(41) default NULL,
`active` int(10) NOT NULL default '1',
PRIMARY KEY (`account`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8;
GRANT all ON openvpn.* TO vpnadm@'localhost' IDENTIFIED BY '093nVPN';
flush privileges;
將以上部份複製存檔後,直接匯入mysqld就會建立資料庫及新增vpnadm這個DB帳號了。不要忘了要建立帳號以後才能用......
Step 3.
再來設定pam.d,建立一個openvpn 的 pam 對應檔:
vi /etc/pam.d/openvpn
然後輸入以下內容,記得紅字部份一樣要依你的設定進行修改:
auth sufficient pam_mysql.so user=vpnadm passwd=093nVPN host=localhost db=openvpn table=vpnauth usercolumn=account passwdcolumn=password where=active=1 sqllog=0 crypt=2
account required pam_mysql.so user=vpnadm passwd=093nVPN host=localhost db=openvpn table=vpnauth usercolumn=account passwdcolumn=password where=active=1 sqllog=0 crypt=2
註:crypt=2代表密碼是使用 mysqld的 password函式加密,所以建帳號時密碼欄位也請記得加密
Step 4.
最後,在openvpn.conf中加入以下兩行:
plugin /usr/lib/openvpn/openvpn-auth-pam.so openvpn
username-as-common-name
接下來,就可以進行client端測試了;當需要登入時自己會跳出登入訊息,要求輸入帳號跟密碼。
最後有兩點:
1. 帳號/密碼登入跟使用user key本身不衝突,可以兩者都開啟
2. 如果crypt=2無法登入,又確定DB資料無誤的話,可以把它改成crypt=1;關掉密密碼加密來試試。
==下一篇是 client-config-dir和learn-address的用法 ==

hi~看了你的openvpn的相關文章
但我安裝依然失敗,不曉得能不能加個msn幫幫忙
先說一下你失敗的log 吧~~