部分使用者在UNIX-like環境下對於架設VPN Server的選擇都是PoPToP 因為他出來的時間比較久,但最近已經鮮少更新、而且效能不彰;看過GSLin長輩的經驗分享,決定使用以netgraph為基礎的mpd來實作。
*緣起
最近呆在學校的時間越來越多,以往透過家中NAT主機存取自己機器的資源的方式已經不敷使用;
恰好前一陣子立文學弟 (lwhsu) 找我幫忙測試PoPToP PPTP VPN Server,於是乎有了自己架設VPN的念頭
*軟體環境
MPD是Multiple PPP Daemon的意思他同時也支援PPTP、PPPoE等連線模式。
軟體可以從Sourceforge取得、或是經由FreeBSD的ports
*安裝
cd /usr/ports/net/mpd make install clean
*情境
Server 對外的 IP : 203.204.204.204 Server 對內的 IP : 192.168.0.10 配發給 Client 的 IP : 192.168.100.100
*設定
共有四個設定檔:
mpd.conf(主要設定檔)、mpd.links(連接介面基本設定)、mpd.secret(密碼檔)、mpd.script(針對各種device對談模式的script)。
mpd.conf
default: load vpn0 vpn0: new -i ng0 vpn0 vpn0 set ipcp ranges 192.168.100.10/32 192.168.100.100/32 load pptpsame pptpsame: set iface disable on-demand set iface enable proxy-arp set iface idle 0 set link yes pap set link yes chap set link keep-alive 10 60 set ipcp dns 192.168.0.10 set timeout 600
mpd.links
vpn0: set link type pptp set pptp self 203.204.204.204 set pptp enable incoming set pptp disable originate
mpd.secret
kmd "thisisatest" mike "iwanthotdog" john "nottheripper"
*注意事項
別忘了在/etc/rc.conf裡設定
gateway_enable="YES"
並重新開機,否則Server將無法正確封包路由。 或是你可以立即下達
sysctl -w net.inet.ip.forwarding=1
來達到相同目的。
*參考資料