1. 程式人生 > >centos安裝pptp、vpn

centos安裝pptp、vpn

最近換了臺IOS的手機,以前安卓用Shadowsocks(影梭)即可,剛好手裡有臺國外的VPS在掛網站, 順便搭建一個pptp的服務在IOS上使用,pptp的搭建比openvpn容易多了!

安裝步驟

  1. 檢查環境
  2. 安裝ppp和iptables
  3. 修改配置檔案
  4. 啟動pptp vpn服務和iptables

檢查環境

先檢查vps是否滿足配置pptp vpn的環境。因為有的openvz的vps被母雞給禁用了。其實,你在配置前最好向vps的客服發TK,可能客服會幫你開通vpn或者客服那裡會給你他們自己定製的vpn一鍵安裝包也有可能,我的機器是Linode KVM架構的。

伺服器版本:CentOS release 6.5 (Final) 核心版本:

這裡說一下,如果你的linux核心版本 等於或高於 2.6.15 ,核心集成了MPPE。可以用下面命令進行測試核心是否支援

modprobe ppp-compress-18 && echo ok

返回 ok 說明測試通過。但是返回報錯 FATAL: Module ppp_mppe not found. ,也不能說不支援,因為modprobe命令是去 /lib/modules/uname -r` 找模組,但是很多時候,這個目錄下是空的。所以這個命令沒什麼太大用處。 於是有人又提出一個命令,通過檢視核心編譯的配置檔案config.gz:

zgrep MPPE /proc/config.gz

返回CONFIG_PPP_MPPE=y 或 =m說明核心已經編譯了MPPE,通過測試。但是呢,這個命令其實也沒什麼用,因為有的vps空間商會不會備份config.gz檔案。所以,config.gz檔案都沒有,這命令也是廢了。 所以,最後建議直接使用下面的指令:

cat /dev/net/tun

如果這條指令顯示結果為下面的文字,則表明通過:

cat: /dev/net/tun: File descriptor in bad state

上述任意一個命令測試通過,就能安裝pptp。否則就只能考慮openvpn。

確認自己的vps能夠支援pptp vpn 或其他型別的vpn。最好的方法是直接問vps空間商,因為沒有人比他們更清楚了。沒準人家還會提供vpn一鍵安裝包呢!!! 有部分的vps需要發tk,讓vps空間商的技術客服為你的VPS開啟TUN/TAP/PPP功能了,而有部分vps控制面板上提供開啟TUN/TAP/PPP功能的按鈕,自己就能手動開啟。

Centos 6.4核心版本在2.6.15以上,都預設集成了MPPE和PPP,因此下面檢查可以忽略:

rpm -q ppp //查詢當前系統的ppp是否預設集成了,以及ppp的版本

檢查PPP是否支援MPPE 用以下命令檢查PPP是否支援MPPE:

strings '/usr/sbin/pppd' | grep -i mppe | wc –lines

如果以上命令輸出為”0”則表示不支援;輸出為”30”或更大的數字就表示支援,MPPE(Microsoft Point to Point Encryption,微軟點對點加密)。

安裝ppp和iptables

接著是安裝配置pptp vpn的相關軟體,安裝ppp和iptables。

1. 安裝ppp和iptables

PPTPD要求Linux核心支援mppe,一般來說CentOS安裝時已經包含了,centos預設安裝了iptables和ppp

yum install -y perl ppp iptables

2.安裝pptpd

剛才用了yum安裝了ppp,但是這裡有個問題,幾乎大部分的人都會在這裡遇到ppp和pptpd不相容的錯誤。 因為yum安裝ppp,總是安裝最新版本的ppp,而由於安裝的ppp的版本不同,那麼就需要安裝對應版本的pptpd才行。

安裝pptpd的方法是直接用yum安裝,讓電腦自動選擇對應的版本:

先加入yum源:

rpm -Uvh http://poptop.sourceforge.net/yum/stable/rhel6/pptp-release-current.noarch.rpm

然後用yum安裝pptpd:

yum install pptpd

64位安裝的時候如果出現:

warning: pptpd-1.3.4-2.rhel5.x86_64.rpm: Header V3 DSA/SHA1 Signature, key ID 862acc42: NOKEY
error: Failed dependencies:
ppp = 2.4.4 is needed by pptpd-1.3.4-2.rhel5.x86_64
原因是pptpd與PPP不相容,那麼,此時用#yum list installed ppp 命令檢視ppp版本,極有可能ppp是2.4.5版本的。所以,我們要下載pptp 1.4.0版本才行,而且這裡是64位的系統。下載pptpd-1.4.0-1.el6.x86_64.rpm安裝即可。這就是我說的出現版本不相容的問題,當ppp版本和pptpd版本不相容時候,就會出現類似的錯誤。
這裡我分享下pptpd 下載地址;
64位pptpd-1.4.0-1.el6.x86_64.rpm的下載地址:http://www.pipipan.com/file/18457333
32位pptpd-1.4.0-1.el6.i686.rpm版本下載地址:http://www.400gb.com/file/54124192
看到有人建議用–nodeps –force 這個引數,我個人不建議,這個引數可能以後會出現奇怪的問題,但是如果實在不行,你就用吧

修改配置檔案

配置安裝好後的pptp軟體,這個不像windows那樣,安裝的過程就是配置的過程。linux的要安裝完之後,修改配置檔案,才算是完成配置。

  1. 配置檔案 /etc/ppp/options.pptpd
cp /etc/ppp/options.pptpd /etc/ppp/options.pptpd.bak
vim /etc/ppp/options.pptpd

解析:我還建議是在原配置檔案上新增內容來配置pptp ,省的不必要的麻煩和問題

將如下內容新增到到options.pptpd中:

ms-dns 8.8.8.8
ms-dns 8.8.4.4

然後儲存這個檔案。

解析:ms-dns 8.8.8.8, ms-dns 8.8.4.4是使用google的dns伺服器。

  1. 配置檔案 /etc/ppp/chap-secrets
cp /etc/ppp/chap-secrets /etc/ppp/chap-secrets.bak
vim /etc/ppp/chap-secrets

chap-secrets新增如下內容:

# 使用者名稱:myusername 密碼:mypassword
myusername pptpd mypassword *
  1. 配置檔案 /etc/pptpd.conf
cp /etc/pptpd.conf /etc/pptpd.conf.bak
vim /etc/pptpd.conf

新增下面兩行:

localip 192.168.9.1
remoteip 192.168.9.11-30 //表示vpn客戶端獲得ip的範圍

關鍵點:pptpd.conf這個配置檔案必須保證最後是以空行結尾才行,否則會導致啟動pptpd服務時,出現“Starting pptpd:”,一直卡著不動的問題,無法啟動服務,切記呀!(相關文件可以檢視:Starting pptpd: 執行不下去的原因

  1. 配置檔案 /etc/sysctl.conf

修改核心設定,使其支援轉發

vim /etc/sysctl.conf

將 net.ipv4.ip_forward = 0 改成 net.ipv4.ip_forward = 1

儲存修改後的檔案執行 /sbin/sysctl -p

啟動pptp vpn服務和iptables

啟動pptp vpn 服務。此時,就是檢驗你能夠vpn撥號成功,如果你撥號成功了,說明你的pptp vpn的安裝配置就算真正的完成了。但是此時只能登入vpn,卻不能用來上網。

開啟核心和iptables的轉發功能。這個步驟是為了讓你連上vpn之後,能夠上網,上那些yourporn,youtube之類的。這步是最關鍵的,很多人能成功撥號,登入vpn,但是卻不能上網就是因為這個步驟沒做好。這步驟完成了,你就可以盡情去國外的網站訪問了。

/sbin/service pptpd start

或者

service pptpd start

經過前面步驟,我們的VPN已經可以撥號登入了,但是還不能訪問任何網頁。最後一步就是新增iptables轉發規則了,輸入下面的指令:

啟動iptables和nat轉發功能,很關鍵:

/sbin/service iptables start //啟動iptables
/sbin/iptables -t nat -A POSTROUTING -o eth0 -s 192.168.9.0/24 -j MASQUERADE
/etc/init.d/iptables save //儲存iptables的轉發規則
/sbin/service iptables restart //重新啟動iptables

最後一步:重啟pptp vpn

service pptpd restart

出現 Setting chains to policy ACCEPT: security raw nat

解決方法:

vim /etc/init.d/iptables
    echo -n $"${IPTABLES}: Setting chains to policy $policy: "
    ret=0
    for i in $tables; do
        echo -n "$i "
        case "$i" in
+           security)
+               $IPTABLES -t filter -P INPUT $policy \
+                   && $IPTABLES -t filter -P OUTPUT $policy \
+                   && $IPTABLES -t filter -P FORWARD $policy \
+                   || let ret+=1
+               ;;
            raw)
                $IPTABLES -t raw -P PREROUTING $policy \
                    && $IPTABLES -t raw -P OUTPUT $policy \
                    || let ret+=1
                ;;

帶有+號的是新增的指令碼,修改後儲存

客戶端如何撥號登陸vpn,我就不寫了,大家可以自行google,因為系統那麼多,我不可能xp,win7,centos,mac之類的每個都寫,何況網上一大堆,只要你pptp vpn伺服器搭建好了,客戶端登陸的選擇就是簡單的事。如果這個也不知道,那我就沒法了,自己動手吧。

多餘的步驟:設定pptp vpn 開機啟動

有的人懶的重啟後手動開啟服務,所以下面我再補上開機自動啟動pptp vpn 和 iptables的命令

chkconfig pptpd on //開機啟動pptp vpn服務
chkconfig iptables on //開機啟動iptables

上2張圖:

配置PPTP

IOS訪問GoogleChrome