09.07 基於 Debian 6.x 搭建 PPTP


生活在一個擁有龐大局域網的國度,對 VPN 的需求是越來越大了,老是買吧不划算,自己用得特別多,還要跟那些用 VPN 玩美服的小屁孩一起堵,於是果斷決定在 Linode 的一臺閒置 VPS 上搭建一個。其中各種艱辛啊,Google 找回來的搭建方案又無數種,個個說法不一,又找遍基友們實踐,最終終於把這個方案折騰出來了。(PS:Linode 是某朝重點關照對象,在使用 VPN 時要自行承受 IP 被 Ban 的風險。)

這臺 VPS 是 Debian 6.0 系統的,Plan 是 Linode 1024,首先我們 SSH 登陸到終端,更新源

apt-get update

先來安裝配置最基本的 PPTP 和 L2TP,PPTP 採用 pptpd,L2TP 採用 xl2tpd。

apt-get install ppp pptpd xl2tpd libpcap-dev

安裝好之後先來配置 pptpd。

mv /etc/ppp/pptpd-options /etc/ppp/pptpd-options.bak

touch /etc/ppp/pptpd-options

nano /etc/ppp/pptpd-options

name pptpd
refuse-pap
refuse-chap
refuse-mschap
require-mschap-v2
require-mppe-128
proxyarp
nodefaultroute
lock
nobsdcomp
ms-dns 8.8.8.8
ms-dns 8.8.4.4

mv /etc/pptpd.conf /etc/pptpd.conf.bak

touch /etc/pptpd.conf

nano /etc/pptpd.conf

option /etc/ppp/pptpd-options
debug
logwtmp
localip 10.0.22.1
remoteip 10.0.22.9-250

pptpd 弄好之後配置 xl2tpd,文件位於 /etc/xl2tpd/xl2tpd.conf

mv /etc/xl2tpd/xl2tpd.conf /etc/xl2tpd/xl2tpd.conf.bak
touch /etc/xl2tpd/xl2tpd.conf
nano /etc/xl2tpd/xl2tpd.conf
[global]
ipsec saref = no
[lns default]
ip range = 10.0.23.10-10.0.23.255
local ip = 10.0.23.1
refuse chap = yes
refuse pap = yes
require authentication = yes
ppp debug = yes
pppoptfile = /etc/ppp/options.xl2tpd
length bit = yes

然後再將 xl2tpd 附加到 ppp 中

mv /etc/ppp/options.xl2tpd /etc/ppp/options.xl2tpd.bak

touch /etc/ppp/options.xl2tpd

nano /etc/ppp/options.xl2tpd

require-mschap-v2
refuse-mschap
ms-dns 8.8.8.8
ms-dns 8.8.4.4
asyncmap 0
auth
crtscts
lock

hide-password
modem
debug
name l2tpd
proxyarp
lcp-echo-interval 30
lcp-echo-failure 4

配置完成之後就來搭建 IPSec。IPSec 的實現方案有很多,我們通常使用更加方便的 OpenSwan,直接使用 apt-get 安裝即可,網上很多資料都說要自己編譯,我編譯了 N 個 Version 都是有問題的!後來直接安裝反而成功了。

apt-get install openswan

安裝的時候會出現一個窗口問你是否使用 X.509 證書驗證,這個用不著,NO!安裝完成後就可以開始配置。

mv /etc/ipsec.conf /etc/ipsec.conf.bak

touch /etc/ipsec.conf

nano /etc/ipsec.conf

version 2.0
config setup
nat_traversal=yes
virtual_private=%v4:10.0.0.0/8,%v4:192.168.0.0/16,%v4:172.16.0.0/12
oe=off
protostack=netkey
conn L2TP-PSK-NAT
rightsubnet=vhost:%priv
also=L2TP-PSK-noNAT
conn L2TP-PSK-noNAT
authby=secret
pfs=no
auto=add
keyingtries=3
rekey=no
ikelifetime=8h
keylife=1h

type=transport
left=
leftprotoport=17/1701
right=%any
rightprotoport=17/%any
dpddelay=30
dpdtimeout=120
dpdaction=clear
基於 Debian 6.x 搭建 PPTP / L2TP IPSec VPN

這裡要特別特別注意,IPSec 對格式很敏感,少了縮進或者少了個空行它都不行。Why you so diao?必須按照格式輸入,我也提供樣本下載,直接按自己實際情況修改就好了。

接著要配置自己的 IPSec 預共享密鑰。

nano /etc/ipsec.secrets

%any: PSK""
**這裡要空出一行**

要注意的是這個文件必須有一個空行,沒有不行,我在這裡糾結好久了。

配置好之後終端執行命令設置轉發。

echo 1 > /proc/sys/net/ipv4/ip_forward
for each in /proc/sys/net/ipv4/conf/*
do
echo 0 > $each/accept_redirects
echo 0 > $each/send_redirects
done

執行後重啟 IPSec 並驗證成果

/etc/init.d/ipsec restart

ipsec verify

結果應該如下圖,除了最後一個是 Disabled 以外其餘均 OK,如果有其他選項 Failed 或者 Disabled 那就要檢查下究竟上面哪一步有問題了。

基於 Debian 6.x 搭建 PPTP / L2TP IPSec VPN

最後,為了達到我們代理上網的目的,還要在 iptables 中轉發一次,執行以下命令。

iptables -t nat -A POSTROUTING -j MASQUERADE

最後重啟一次 xl2tpd 和 IPSec.

/etc/init.d/xl2tpd restart

/etc/init.d/ipsec restart

然後就可以添加我們的 VPN 賬號,進行撥號測試了。

echo "vpntest * password *" >> /etc/ppp/chap-secrets

撥號測試成功!

基於 Debian 6.x 搭建 PPTP / L2TP IPSec VPN

但轉發設置在重啟之後就會失效,需要重新設置,所以我們要將設置加入到自啟動。Debian 6.0 的真正自啟動是 /etc/init.d/rc.local,並不是/etc/rc.local,開始我也是出錯在這裡,將下面的內容添加到 rc.local 文件末端就可以。

#VPN
/sbin/iptables -t nat -A POSTROUTING -j MASQUERADE
echo 1 > /proc/sys/net/ipv4/ip_forward
for each in /proc/sys/net/ipv4/conf/*
do
echo 0 > $each/accept_redirects
echo 0 > $each/send_redirects
done
/etc/init.d/pptpd restart
/etc/init.d/xl2tpd restart
/etc/init.d/ipsec restart
###

保存,大功告成。


分享到:


相關文章: