歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
Linux教程網 >> Linux基礎 >> Linux技術 >> Linux系統上PPTP協議VPN服務器架設方法

Linux系統上PPTP協議VPN服務器架設方法

日期:2017/3/1 17:33:52   编辑:Linux技術

VPN服務常用的協議一般有兩種:
PPTP——PPTP(點對點隧道協議)是一個很好的,輕量級的VPN協議,高速提供基本的在線安全。 PPTP是內建於各種桌面和移動設備,並有128位加密功能。相比L2TP速度更快。

L2TP——附帶IPsec(IP安全)的L2TP(第2層隧道協議)是非常安全的協議,其內置於多種桌面和移動設備。L2TP/IPsec采用256位加密, 但額外的安全開銷比PPTP需要更多的CPU使用率。

我們在這篇文章中要講的便是PPTP的VPN架設,點對點隧道協議 (PPTP) 是由包括微軟和3Com等公司組成的PPTP論壇開發的一種點對點隧道協,基於撥號使用的PPP協議使用PAP或CHAP之類的加密算法,或者使用 Microsoft的點對點加密算法MPPE。其通過跨越基於 TCP/IP 的數據網絡創建 VPN 實現了從遠程客戶端到專用企業服務器之間數據的安全傳輸。PPTP 支持通過公共網絡(例如 Internet)建立按需的、多協議的、虛擬專用網絡。PPTP 允許加密 IP 通訊,然後在要跨越公司 IP 網絡或公共 IP 網絡(如 Internet)發送的 IP 頭中對其進行封裝。

PPTP是一個比較簡單的VPN構建方式,但是很難找到比較全的說明文檔。因此,記錄一篇說明文檔,詳細記錄架設VPN服務器以及總結一些其他比較容易遇到的問題。

安裝PPTP
基本上安裝pptp是比較簡單的了,比如在我的CentOS6.4 x64上,只需要兩個命令:

復制代碼代碼如下:
rpm -i http://poptop.sourceforge.net/yum/stable/rhel6/pptp-release-current.noarch.rpm
yum -y install pptpd

如果是Ubuntu的話,更加簡單了:

復制代碼代碼如下:
apt-get install pptpd


配置IP地址
基本上程序的安裝是全自動完成的了,下面需要進行一些簡單的配置,編輯/etc/pptpd.conf ,在最後加入IP地址配置:

復制代碼代碼如下:
localip 10.0.0.1
remoteip 10.0.0.100-200

上面的IP地址是可以隨便填的,ABC三類的內網地址都可以,主要兼顧其他地方的IP配置,不要出現IP沖突就可以了,後面的remoteip,默認從第一個10.0.0.100開始分配給客戶,localip表示分配給服務器的內部網關地址。

配置客戶端DNS
要配置客戶端的dns,首先要確定配置文件,查看/etc/pptpd.conf中指定的option文件,如果沒有指定,那就默認是/etc/ppp/pptpd-options,下面是我的默認配置文件,因此要修改/etc/ppp/pptpd-options.pptpd

20151120115326516.jpg (536×91)

在配置文件中加上:

復制代碼代碼如下:
ms-dns 202.96.128.86
ms-dns 202.96.128.166

這裡配置成客戶端所在地的DNS就好了。

配置VPN賬號
然後是創建VPN的賬號,賬號保存在/etc/ppp/chap-secrets,我們打開編輯這個文件,按下面的格式加入自己的賬號以及密碼,依次為:賬號,協議,密碼,ip地址。

20151120115353174.jpg (429×143)

這裡的ip地址如果明文表示靜態分配,如果填*就表示動態分配。

啟動服務
配置完畢,可以啟動服務並且加入啟動項了

復制代碼代碼如下:
service pptpd restart
chkconfig pptpd on

查看一下服務器是否在1723上面監聽了
20151120115433824.jpg (711×38)

配置系統轉發
現在的VPN服務可以連上,但是不能通過VPN服務器進行轉發,也就是不能夠上網或者訪問其他服務器等,需要開啟系統轉發和NAT。編輯系統配置文件/etc/sysctl.conf,設置如下值為1

復制代碼代碼如下:
net.ipv4.ip_forward = 1

如果未來ipv6普及了,估計應該就是改ipv6了,修改完畢之後要馬上生效,使用命令

復制代碼代碼如下:
sysctl -p

配置防火牆轉發

復制代碼代碼如下:
iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE



復制代碼代碼如下:
iptables -t nat -A POSTROUTING -s 10.0.0.0/24 -o eth0 -j SNAT --to 115.115.115.115

其中第一種比較簡單,自動偽裝ip,第二種的10.0.0.0/24指的是VPN虛擬內網,而115.115.115.115代表外網地址,進行NAT。如果VPN服務器是用來代理上網的,僅有上面的配置會出現訪問網站緩慢的情況,需要手動修改一下轉發包的mss

復制代碼代碼如下:
iptables -A FORWARD -p tcp --syn -s 10.0.0.0/24 -j TCPMSS --set-mss 1356

這樣就不會出現打不開網頁的問題了,最後可以保存一下防火牆。

復制代碼代碼如下:
iptables-save


常見的問題
619錯誤
很多人在撥VPN的時候卡在驗證用戶名和密碼,然後會出現619的錯誤,這種錯誤90%以上是由於客戶端到服務器的網絡中有設備不支持GRE協議或NAT-T造成的,最常見的是由於客戶端的路由器等不支持造成的,在更換以後立馬能撥上VPN。而這種錯誤在服務端的日志也有體現。例如

復制代碼代碼如下:
LCP: timeout sending Config-Requests

下面是雙方加解密不一致的:

復制代碼代碼如下:
LCP terminated by peer (^O^XH-^@<M-Mt^@^@^@^@)

pptp需要用到的端口
pptp使用到的端口只有一個,那就是1723,網上有很多誤人子弟的文章還說要開47端口,真是坑爹,因為GRE協議號是47,並不代表需要開47端口,因此如果是要映射端口的話,1723就完全夠了,不要信網上的某些教程,如果使用了iptable來作為防火牆,需要加入規則

復制代碼代碼如下:
iptables -A INPUT -p tcp --dport 1723 -j ACCEPT
iptables -A INPUT -p 47 -j ACCEPT

如果是在內網中,需要網關轉發,那麼網關需要如下配置:

復制代碼代碼如下:
iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 1723 -j DNAT --to SERVER_IP
iptables -t nat -A PREROUTING -i eth0 -p 47 -j DNAT --to SERVER_IP

Copyright © Linux教程網 All Rights Reserved