1. 程式人生 > >CentOS 7 配置 VPN 撥號(PPTP)

CentOS 7 配置 VPN 撥號(PPTP)

最近的一個專案,需要與遠端伺服器進行內網間通訊,所以決定採用vpn方式,現將實現方法整理如下:

1. 確保已安裝如下三個軟體包
ppp.x86_64
pptp.x86_64
pptp-setup.x86_64
2. 建立vpn連線:

pptpsetup --create vpn_yqjq_ip8 --server [ip地址] --username [使用者名稱] --password [密碼] --start

其中 start 表示建立完立即連線vpn
3. 將pon、poff命令複製到 sbin下,並賦予執行許可權

cp /usr/share/doc/ppp-2.4
.5/scripts/pon /usr/sbin/ cp /usr/share/doc/ppp-2.4.5/scripts/poff /usr/sbin/ chmod +x /usr/sbin/pon /usr/sbin/poff

4. EAP 報錯
將下面欄位新增到/etc/ppp/options檔案中(root使用者許可權可更改)

refuse-pap
refuse-eap
refuse-chap
refuse-mschap
require-mppe

5. 新增路由
a) 撥號成功後需要新增預設路由才能訪問網路。
b) 在/etc/ppp/ 目錄下新建 ip-up.local 指令碼,新增內容如下:

#!/bin/bash
route add default dev $1

該指令碼會由pptp撥號後自動呼叫,並且會有輸入引數,這裡的 $1 表示撥號成功後獲取的介面名稱,比如“ppp0”(所以無需寫死)
6. 掉線重連
a) 思路是使用job來執行指令碼判斷當前連線是否存活
b) 在/etc/ppp/peers/目錄下新建 auto-dial.sh 內容如下:

#!/bin/bash

if ! ping -Q 2 -c 2 -t 2 192.168.1.136; then
   su - root -c "poff"
   sleep 60
   su - root -c "pon vpn_yqjq_ip8"
echo "`date '+%Y-%m-%d %T'` VPN ReConnect !" >> /etc/ppp/peers/log.txt else echo "`date '+%Y-%m-%d %T'` VPN Good !" >> /etc/ppp/peers/log.txt fi

通過ping來判斷,先關閉連線(遇到過處於連線狀態,但網路不通的情況),等待1秒後,再開啟連線,並做日誌輸出。
c) 加入計劃任務:
i. 確保crond服務已經啟動
ii. 使用命令 crontab -e 新增如下規則:

*/2 * * * * /etc/ppp/peers/auto-dial.sh

表示每2分鐘檢查一下是否需要重撥。
iii. 可以使用 crontab -l 檢視配置,/var/log/cron 檢視日誌