以MPD實作PPPoE環境的VPN

部分使用者在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

來達到相同目的。

*參考資料

  1. http://www.dellroad.org/mpd/
  2. http://www.freebsd.org

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。