2007年5月10日 星期四

終於搞定PPTP VPN了

其實PPTP的server和 client早就設定好了,只是一直覺得windows上的routing table很奇怪,心裡的懷疑終於證實了。client在 client的 network所使用的ip subnetwork不能和server端的一樣,不然windows當然無法設定那些ip的routing是在local,那些ip的routing要經由vpn出去。

不過PPTP沒有加密,還是有安全上的考慮。如果能想辦法讓openvpn的client設定簡化到一般user能使用的程式,我就把pptp換掉。雖然說openvpn己經比IPSec容易設定的多了,但對light user來說,還是有點難度。

By the way, windows的pptp client可以選擇要求加密,那linux的server端要怎麼設定呢?不知道Poptop的pptpd有沒有支援。

雖然都是照著manual設定的,還是順便記錄一下好了

PPTP Server
Enviroment Linux2.6 CentOS4.x
1.安裝 ppp server

2.安裝pptpd

3.安裝lzo

要和windows client配合,需要MPPE
4.安裝dkms

5.安裝mppe dkms driver kernel_ppp_mppe
(pppd, pptpd, dkms, mppe 都可從poptop的project裡 download)

6.檢查kernel module是否正常載入
modprobe ppp-compress-18 && echo success
show出success就表示己正常載入

7.修改/etc/pptpd.conf
ppp用的可以是server同一subnetwok domain,也可以不一樣,如果不一同domain需注意routing設定。最重要的是client的subnetwork domain不要和server的一樣,真的沒辦法時,可能要手動調整 client的routing table,以確保packet會正確的走到vpn的通道

8.在/etc/ppp/chap-secrets設定登入帳號。如果不想和己有的帳號系統配合使用,可以考慮再加裝FreeRADIUS。

9.設定開機載入kernel module
在 modprobe.conf裡加入
alias tty-ldisc-3 ppp_async
alias tty-ldisc-14 ppp_synctty
alias ppp-compress-18 ppp_mppe
alias ppp-compress-21 bsd_comp
alias ppp-compress-24 ppp_deflate
alias ppp-compress-26 ppp_deflate
alias net-pf-47 ip_gre
如果你的pptp使用的ip subnetwork跟server local的不一樣,當然也別忘enable IP forwarding。
10.
如果有firewall也別忘了打開firewall
PPTP使用TCP 1723 及 IP Protocol GRE(47)


Windows Client
windows 2000以上己內建PPTP client的支援,可直接使用 windows的client

參考資料
http://kiwi.csie.chu.edu.tw/blog/archives/14
http://poptop.sourceforge.net/dox/

沒有留言: