centos安裝pptp、vpn
最近換了臺IOS的手機,以前安卓用Shadowsocks(影梭)即可,剛好手裡有臺國外的VPS在掛網站, 順便搭建一個pptp的服務在IOS上使用,pptp的搭建比openvpn容易多了!
安裝步驟
- 檢查環境
- 安裝ppp和iptables
- 修改配置檔案
- 啟動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的要安裝完之後,修改配置檔案,才算是完成配置。
- 配置檔案
/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伺服器。
- 配置檔案
/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 *
- 配置檔案
/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: 執行不下去的原因)
- 配置檔案
/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張圖: