當然,這也是為何我會拿openvpn來架vpn-server的主因,因為,他有人家寫好的OpenVPN-auth-ldap的plugin…
主要參考網頁
網路上這方面的資料也不多,就連國外的資料也少少,一大堆人只是把問題丟上去…也沒看幾個人回應,所以參考網頁只是參考…不代表你一定得照著做
如前篇,VPN auth over LDAP也一樣有幾個重點步驟
- openvpn-auth-ldap的compile環境
- 把openvpn-auth-ldap給plugin上openvpn,還要編寫auth_ldap.conf
- testplugin auth_ldap.con的測試
- client的config修改
[1. openvpn-auth-ldap的compile環境]
這方面是我認為最麻煩的地方,先確認自己電腦是否安裝了libgcc/gcc/gcc-objc/gcc-c++[2. 把openvpn-auth-ldap給plugin上openvpn,還要編寫auth_ldap.conf]
粗體的那一個最重要,因為沒它你就不能compile openvpn-auth-ldap的config
確定安裝的套件之後,接著就是到參考網頁1下載openvpn-auth-ldap的source下來,利用[tar -zxvf]來解壓後進入該資料匣,利用以下指令
[linux/auth-ldap-2.0.3#./configure --prefix=安裝路徑 --with-openvpn=openvpn-source-file的路徑]
--prefix=安裝路徑-->你不使用這個參數也行,只是他會用他預設的路徑去安裝,但我們要有一個觀念,自己安裝的東西最好統一,比較好找
--with-openvpn=openvpn-source-file的路徑--->這個一定要有,因為它要用openvpn的一些東東(廢話),注意,他要指定的是你用來安裝openvpn的source-file路徑,不是你電腦openvpn安裝的路徑唷(就上openvpn官網抓符合的版本source下來解壓就對了)
configure結束,就可以執行[make && make install],如果你上面的東西都ok的話,應該可以幸運的結束…
不過,請注意,在make install時我發生了一個問題,openvpn-auth-ldap的安裝程式他不會去自己create指定路徑下的一些資料匣,所以,如果有發現在install時程式說什麼lib/openvpn-auth-ldap.so找不到之類的…建議,先按他提示的把資料匣先建好,再來[make install]一次…然後再到你指定安裝的路徑看一下lib/src/tools底下有沒有東西…不過基本上,我的安裝是只有在lib底下發現openvpn-auth-ldap.so,但實際上,應該src/tools中也要有東西,像src底下要有一個testplugin的程式…若沒有,就到source-file的src底下拷就行了,因為會用到
再來最後把openvpn-auth-ldap-source-file底下auth_ldap.conf拷貝到你指定的openvpn-auth-ldap路徑底下
然後把openvpn-auth-ldap安裝路徑/lib/openvpn-auth-ldap.so拷貝或做shortcut到/usr/lib/openvpn/plugin/lib/底下…就結束重點步驟1
這裡分二個小步驟:[3. testplugin auth_ldap.con的測試]
- 把openvpn-auth-ldap plugin on openvpn
只要開啟openvpn的server.conf,在檔尾加上
[plugin /usr/lib/openvpn/plugin/lib/openvpn-auth-ldap.so "/openvpn-auth-ldap install path/auth_ldap.conf"]
與
[client-cert-not-required]
就可以了,記得重啟openvpn- 編寫auth_ldap.conf
這個檔案,只有你有玩過ldap的人應該就能明白什麼東西該填什麼
只有二個重點
a. 如果你ldap不走TLS加密的話,請得,auth_ldap.conf中的TLSEnable給remark或後面用no
b. 不需要group search,就把Authorization中的Group註解,不然會影響ldap_bind
這裡十分簡單…也是測試你auth_ldap.conf有沒有寫錯的好時間[4. vpn-client的config修改]
利用重點步驟1上說的[./path/testplugin /path/auth_ldap.conf]來測試
這一點也十分簡單以上四點做完後,最好再次確認opevpn-server有沒有重新啟動…
編輯client.conf
把[cert xxx.crt]跟[key xxx.key]給disable
然後在檔尾加上[auth-user-pass]
ok的話,就可以在client端(windows xp)利用openvpn-win-gui來connect,如果你client正確的話,應該馬上就會出現一個對話視窗要你輸入使用者帳號及密碼…我做的方式是指定學校教職員工的mail帳密,如果你auth_ldap.conf設定正確的話,輸入正確的帳號密碼,應該就會by pass…
(怎麼指定是[教職員工],這就是要在auth_ldap.conf的Authorization裡,屬於people的SearchFilter中去寫判斷)
4 則留言:
感謝你的文章,想請教是不是有這樣的可能,不同群組分配不同 VPN IP ?
當然是可以的…
雖然我有一段時間沒碰了…
但印象中,client會得到的ip是依照連入的server的位置來區分的…
也就是說,如果你想用n個群組來分,基本上,你的server的config中bind的port就要有n個…
然後每一個群組就連入特定的port,這樣就可以分了…
其實我有找到資料是分配靜態 ip 的方式,我也有試過,但如果同1個群組有1個以上連線的話,就會互搶連線,所以在想有沒有辦法分配動態 ip
在http://cheaster.blogspot.tw/2009/11/openvpn-by-ssl.html
裡面的設定方式就是client是dhcp取得由vpn server放出來的ip
而且,我印象中,openvpn大部份的文章都是該client以dhcp的方式取得vpn的ip
張貼留言