CentOS7中PPTP的配置


最近做各種vpn,記錄一下pptp的流程

 

1.准備
#yum install -y perl ppp iptables //centos默認安裝了iptables和ppp
 
2.安裝pptpd

 

#yum install pptpd

3. 修改配置文件

3.1 配置文件/etc/ppp/options.pptpd

#cp /etc/ppp/options.pptpd /etc/ppp/options.pptpd.bak
#vi /etc/ppp/options.pptpd

將如下內容添加到到options.pptpd中(如果需要使用代碼來啟動進程方式,需要修改name,這個name和chap-secets文件中的第二項對應):

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服務器

 

3.2 配置文件/etc/ppp/chap-secrets

#cp /etc/ppp/chap-secrets   /etc/ppp/chap-secrets.bak
#vi /etc/ppp/chap-secrets

chap-secrets內容如下:

# Secrets for authentication using CHAP
# client server secret IP addresses
myusername pptpd mypassword *

 PS:

//myusername是你的vpn帳號

pptpd和options.pptpd中的name對應

mypassword是你的vpn的密碼

*表示允許任何ip連接該pptp vpn

我這里根據這個格式,假設我的vpn的帳號是ksharpdabu,密碼是 sky。那么,應該如下:

ksharpdabu pptpd sky *

 

3.3 配置文件/etc/pptpd.conf

#cp /etc/pptpd.conf     /etc/pptpd.conf.bak
#vi /etc/pptpd.conf

修改下面

connection 100 #最大連接數
localip 192.168.9.1 #vpn服務占用的ip
remoteip 192.168.9.11-30 //表示vpn客戶端獲得ip的范圍

3.4 配置文件/etc/sysctl.conf

#vi /etc/sysctl.conf //修改內核設置,使其支持轉發

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

保存修改后的文件

#/sbin/sysctl -p

4. 啟動pptp vpn服務和iptables

#service pptpd start

經過前面步驟,我們的VPN已經可以撥號登錄了,但是還不能訪問任何網頁。

最后一步就是添加iptables轉發規則了,輸入下面的指令:

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

#/sbin/service iptables start //啟動iptables

#iptables -t nat -A POSTROUTING -p tcp --syn -s 192.168.9.0/24 -j TCPMSS --set-mss 1356 #這里主要是解決pptp無法訪問https站點的問題,還有一種方法是連接后修改ppp0的mtu值,但是每次都需要手動修改太麻煩了

#iptables -t nat -A POSTROUTING -s 192.168.9.0/24 -j SNAT --to-source 207.210.83.140 #添加轉發規則

//注意:

        需要注意的是,“192.168.9.0/24”是根據之前的配置文件中的“localip”網段來改變的(這個網段是用戶自定義的 ),比如你設置的 “10.0.0.1”網段,則應該改為“10.0.0.0/24”

    to-source 的值寫外網網卡的ip地址即可

 
#/etc/init.d/iptables save //保存iptables的轉發規則

#/sbin/service iptables restart //重新啟動iptables

 

5. 重啟pptp vpn

#service pptpd restart

客戶端如何撥號登陸vpn,我就不寫了,大家可以自行google

 

6. 設置pptp vpn 開機啟動

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

#chkconfig iptables on //開機啟動iptables

 

7. 過程中遇到的問題 

之前pptp測試都是好的,可是在其他環境部署的時候出現了問題

LCP: timeout sending Config-Requests
Jun  3 14:52:05 localhost pppd[29491]: Connection terminated.
Jun  3 14:52:05 localhost pppd[29491]: Modem hangup
Jun  3 14:52:05 localhost pppd[29491]: Exit.
Jun  3 14:52:05 localhost pptpd[29490]: GRE: read(fd=6,buffer=7fc6156eb480,len=8196) from PTY failed: status = -1 error = Input/output error, usually caused by unexpected termination of pppd, check option syntax and pppd logs
Jun  3 14:52:05 localhost pptpd[29490]: CTRL: PTY read or GRE write failed (pty,gre)=(6,7)
Jun  3 14:52:05 localhost pptpd[29490]: CTRL: Client 192.168.1.112 control connection finished

往上各種說法,可能情況不同

基本上是:

1. 注釋pptpd.conf中的logwtmp(版本不匹配的原因)

2. 注釋options.pptpd中的require-mschap-v2和require-mppe-128

嘗試后都沒有成功,最終找到了解決方案:

是兩個內核模塊沒有在機器啟動的時候加載進來:nf_conntrack_pptp和nf_conntrack_proto_gre

原因是這樣的:

在內核版本為3.18或者更高時,模式在開機時已經加載了nf_conntrack_pptp模塊

如果低版本內核,開機沒有加載該模塊,需要手動加載modprobe nf_conntrack_pptp

iptables支持pptp gre模塊的規則過濾需要有上述模塊的支持,在沒有加載的該模塊的時候iptables都會將pptp和gre的數據包識別為invalid類型,drop掉

手動加載

# modprobe nf_conntrack_pptp

開機加載

sudo touch /etc/modules-load.d/nf_conntrack_pptp.conf
sudo echo "nf_conntrack_pptp" > /etc/modules-load.d/nf_conntrack_pptp.conf

 

希望可以幫到同樣問題的人


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM