FreeBSD 8 設定 mpd5 PPTP VPN

以下這篇文章最主要的操作目的就是作為翻牆用,不過FreeBSD+mpd5+ipfw+ADSL的設定教學好少,所以就放出來好了XD

然後話先說在前頭,本文只分享技術,不分享實際連線,麻煩自己去架,中華電信ADSL用戶都有一個固定制的IP,只要改變撥號的帳號就可以獲得了,另外加密的封包因為讀不出來很容易被反偵測,照土八路的邏輯就是直接把這個不正確(正確不正確就跟愛台灣一樣,他說的算)的IP位置給ban掉,所以也請不要分享給其他人喔XD

另外就是PPTP可能還是有些不安全的疑慮,有些人建議用SSTP、IPSec或是OpenVPN,不過我只是做為學網VPN被切斷時的備用連線,所以沒考慮太多,以後要是有被外派到大陸的機會在來架一個比較安全的吧,不過其實說白了也只是讓ipfw多去divert封包到其他的網卡上而已…

最後一點就是,Windows機器都可以正常撥號也可以透過VPN上網,但是Linux機器和Android手機(CM mod),似乎無法透過連接VPN上網,但由於手邊沒有Linux設備,因此就不考慮了,我在想是不是mpd.conf沒設定好,如果有人有看出個端倪的話麻煩跟我講一下…

跳轉後看設定XD

本文的目的在於處理直接撥號連線到ADSL的機器,因此對外網卡可能突然會變成tun0(實際上不會,但常常搞混),對內網卡應該是ng*才對(這張卡在平常看不到,要等到別人,除了這兩張虛擬網卡之外,實際在本機運作的網卡則是re0

首先先設定rc.conf,這裡要打開mpd、ipfw、nat和設定alias給re0,如果都用192的IP最後會很混亂,在這裡設定的則是10.10.100.1給VPN Server

#alias
ifconfig_re0_alias0="inet 10.10.100.1  netmask 255.255.255.0"
#mpd+nat
mpd_enable="YES"
mpd_flags="-b"
devfs_system_ruleset="system"
natd_enable="YES"
natd_interface="re0"
#firewall
gateway_enable="YES"
firewall_enable="YES"
firewall_script="/etc/ipfw.rules"

在來可以參考這篇網誌教學(http://www.weithenn.org/cgi-bin/wiki.pl?MPD-%E5%BB%BA%E7%AB%8B_PPTP_%E7%9A%84_VPN_%E9%80%9A%E9%81%93)安裝好mpd5,然後進入mpd.conf,這時候請使用下面的設定擋,請注意,接下來提到的「對外IP」都是只ADSL撥號成功之後的IP,也就是tun0會拿到的IP

startup:
        set user 帳號 密碼 admin #admin代表這個帳號是管理員帳號
        set web self 你的對外IP 5006
        set web open

default:
        load pptp_server
##
pptp_server:
## The pptp server section has two parts, Bundle Layer and Link Layer
# Setup the PPTP bundle
        create bundle template MYVPN
# Range of addresses for PPTP DHCP clients (first IP - Last IP in DHCP pool)
        set ippool add pool1 10.10.100.50 10.10.100.90 #設定一個IP範圍給mpd發給連入的PPTP client,本範例中是發10.10.100.50-90,血淚提醒是先萬別設定成169.254.100.x
# Enable proxy-arp for routing
        set iface enable proxy-arp
        set iface idle 1800
        set iface enable tcpmssfix
        set iface route 10.10.100.1 #default route 非常重要,沒有這一條,連入的機器就不能連接外網 10.10.100.1是你把VPN Server的IP設定成什麼而定
# IP Control Protocol options
# Van Jacobson compression see note 1
        set ipcp yes vjcomp
# This is your PPTP server's IP plus a CIDR mask - See note 2
        set ipcp ranges 10.10.100.253/32 ippool pool1
# DNS server the clients will use
        set ipcp dns 168.95.1.1
# Set the WINS server address
        set ipcp nbns 10.10.100.1
# enables tunnel compression
        set bundle enable compression
# See note 3
        set bundle enable encryption
# enables microsoft point-to-point compression
        set ccp yes mppc
#40-bit MPP encryption
        set mppc yes e40
        set mppc yes e128
# Faster recovery, less secure option
        set mppc yes stateless
##
# Setup The Link Layer
        create link template MYVPN pptp
        set link action bundle MYVPN
        set link enable multilink
        set link yes acfcomp protocomp
        set link no pap chap
        set link eap accept
        set link enable chap-msv2
        set link enable chap
        set link fsm-timeout 5 #沒有這一行的話,Windows可能會一直播號失敗
        set auth enable internal #使用mpd.secret作為驗證
        set link keep-alive 10 60
        set link mtu 1460
# Set the actual IP address used by the PPTP server
        set pptp self 你的對外IP
        set link enable incoming

剩下的mpd.secret和mpd.link請回去參考剛剛貼的教學,接下來進入最重要的ipfw.rules設定XD

ipfw -q add allow tcp from me to any dst-port 1723
ipfw -q add allow tcp from any to me dst-port 1723
ipfw -q add allow udp from any to me dst-port 1723
ipfw -q add allow udp from me to any dst-port 1723
ipfw -q add allow gre from me to any
ipfw -q add allow gre from any to me
ipfw -q add allow ip from 10.10.100.0/24 to any $ks setup
ipfw -q add divert natd ip from any to any via ng*

前面六條都是處理GRE和VPN連線的問題,倒數第二條的目的在於避免VPN連線被中斷,而最後一條也是最重要的,他會把natd的封包導出去,請特別注意via ng*,這裡不可以打錯XD

如果都這樣設定玩了,重新開機之後就可以開始使用了,Windows上PPTP設定很單純,不用多做設定,只要記得輸入帳號密碼即可,如果要確認VPN連線是否成功(如果不能透過VPN上網這很簡單可以測出來),到 www.whatismyip.com 確認IP是否正確,接著再到命令提示字元輸入tracert+網址,看看hop對不對就知道了,然後如果連線成功,在BSD這邊輸入ifconfig應該會看到多了一張ng0的網卡,隨著用戶的增加ng也會增加

另外針對想要「翻牆」的人,在此可以多提一點,雖然我們已經在mpd裡設定dns了,但由於中國大陸的DNS干擾(尤其在北京),client端有可能會發生前一個視窗還可以連線到facebook,但後一個視窗就出現網路連線錯誤,這時候如果還是ping的到facebook等「惡意」網站的話,請直接到網路連線裡重新設定VPN連線用的DNS,基本上在8.8.8.8(Google 提供的DNS)等眾多開放DNS中間切換(也可以下載DNS switcher完成),就可以規避了

最後必須指出因為網路概論沒有好好學,如果有什麼不對的歡迎各方前輩指教…

廣告

發表迴響

在下方填入你的資料或按右方圖示以社群網站登入:

WordPress.com Logo

您的留言將使用 WordPress.com 帳號。 登出 / 變更 )

Twitter picture

您的留言將使用 Twitter 帳號。 登出 / 變更 )

Facebook照片

您的留言將使用 Facebook 帳號。 登出 / 變更 )

Google+ photo

您的留言將使用 Google+ 帳號。 登出 / 變更 )

連結到 %s